HomePlatformRoofing service and maintenance software
Service & maintenance

Run your service book alongside your projects

Service agreements with a maintenance program that generates a due-dated maintenance schedule and bills on its own cadence, so recurring roofing revenue runs itself instead of living in a spreadsheet.

Recurring revenue shouldn't depend on someone remembering

Maintenance agreements are the steadiest revenue a commercial roofer has, and the easiest to let slip. A quarterly inspection that nobody schedules is a renewal you lose and a leak you hear about from the customer first. Most contractors track it in a spreadsheet that only works while one person keeps it current.

SitewideOps turns a signed service agreement into a running program. Define the maintenance cadence once and the system generates the occurrences, bills the agreement on its schedule, and keeps every one on a due-dated worklist that flags anything overdue, so recurring work happens on time without living in someone's head.

From agreement to recurring work

A service agreement carries the maintenance program, the billing, and the covered properties.

๐Ÿ“„

Service agreements

Set up an agreement with its covered properties, term, and a maintenance program: the contract that drives everything downstream.

๐Ÿ”

Recurring generation

Choose monthly, quarterly, semiannual, or annual and the system generates one maintenance occurrence per covered property per interval, across the agreement's term.

๐Ÿ›ก๏ธ

Idempotent, no duplicates

Regenerating never doubles up. An existing occurrence near a target date is treated as that one, so you can activate and re-run safely. Past-due targets simply arrive as overdue.

๐Ÿงพ

Recurring billing

Recurring-billing agreements draft one invoice per billing period, in advance through today, on a flat annual-value-divided-by-periods basis, and it's idempotent too.

๐Ÿ—“๏ธ

A live maintenance worklist

Generated occurrences land on a due-dated worklist under Operations, with anything past due flagged as overdue, so a scheduler sees what's coming due next and nothing slips.

๐Ÿ“ฑ

Field-ready

When you send a crew out for service work, they log time, photos, findings, and a daily report from the same offline mobile app they use on projects.

One activation click sets the program running

Activating an agreement is where it comes alive. When you activate, SitewideOps generates the maintenance occurrences from the program settings (cadence, covered properties, and term) and, for recurring-billing agreements, drafts the invoices due through today. Miss a start date or a covered property and activation stops and tells you, rather than quietly producing an empty schedule.

From there the program is self-healing. There's a Generate button on the agreement whenever you want to extend the horizon, and because generation is idempotent, running it again fills in what's missing without ever creating a duplicate occurrence or a duplicate invoice.

Service and projects, one system. Your maintenance book and your project work share the same crews, the same job costing, and the same accounting. So service isn't a bolt-on, it's part of the same operation.

Frequently asked questions

How do recurring maintenance occurrences get created?
A service agreement carries a maintenance program: monthly, quarterly, semiannual, or annual. When you activate the agreement, the system generates one occurrence per covered property per interval through the term, and a Generate button lets you extend or refresh the schedule whenever you need to.
Will regenerating the schedule create duplicates?
No. Generation is idempotent: an existing occurrence within half an interval of a target date is treated as that one, whatever its status. You can activate, re-run, and extend the horizon freely without ever doubling up. Past-due targets just arrive marked overdue.
Does it handle recurring billing on agreements?
Yes. Recurring-billing agreements draft one invoice per billing period, billed in advance through today, on a flat annual-value-divided-by-periods basis. Like occurrence generation, it's idempotent, so a near-date invoice already counts as that period's bill.
How do I see what maintenance is coming due?
Generated occurrences land on a due-dated maintenance worklist under Operations, with overdue items flagged, so one person sees every inspection and service that's coming up. Crew scheduling for jobs and projects runs on the dispatch board, and both live in the same system, so one team works service and project work side by side.
Can service run alongside long project work?
That's the point. The maintenance book and project work share the same crews, job costing, and dimensional accounting. Recurring service uses the same platform as your project work; it is just a different kind of job.

Keep exploring

Make recurring roofing revenue run itself

See how a signed service agreement turns into a scheduled maintenance worklist and billing without a spreadsheet to babysit.

Get early access Explore the platform