Installation looks good. Maintenance "generates recurring revenue." But if inspection frequency is higher than you priced and rainfall events are absorbed — the recurring revenue is recurring losses. Here is how to find out.
A SWPPP maintenance contract looks like recurring revenue on the P&L. $3,500 per month per site times 40 sites is $140,000 per month in predictable billing. It feels profitable by definition. But if 15 of those sites require two inspections per month instead of one, and six of them generated three emergency rain event visits last quarter, the actual cost per month for those sites may be $4,200 — meaning every service month for those sites loses $700. The blended P&L never shows this. Per-site job costing does.
A site priced for monthly inspections requiring weekly inspections under its SWPPP plan is losing money on every service month. The SWPPP plan determines inspection frequency — not the original site visit estimate. When the plan requires more visits than the contract price accommodates, the difference is absorbed by the contractor unless the contract includes a frequency adjustment provision.
A significant rainfall event triggers emergency site visits under most SWPPP plans — visits that cost labor, fuel, and mobilization but are included in the base monthly contract price. In a heavy rain year, these events can add 25–35% to actual service cost on active construction sites with no corresponding billing increase. In a dry year, they do not occur. The pricing assumes average weather. Actual weather determines actual cost.
The blended P&L shows acceptable overall margin because installation work is genuinely profitable. That profitability masks the maintenance book which is underperforming — sometimes severely. The installation business is subsidizing the maintenance business and nobody sees it because the numbers are never separated.
For each new maintenance site: drive time (portal to portal from yard, at burdened labor rate), on-site inspection time (at burdened rate), average material consumed per visit (BMP replacements, inlet protection, minor repairs), and a mobilization factor for the site's distance from the yard. Multiply by expected visits per month under the SWPPP plan. That is your variable cost. Add overhead allocation and target markup. That is the minimum monthly maintenance price for that site.
Every SWPPP maintenance agreement should include a rainfall event provision — a defined rate per emergency visit triggered by measurable rainfall (typically 0.5 inch or greater in 24 hours). This converts the most unpredictable maintenance cost from an absorbed overhead item into a billable event. Most GCs and developers will accept this provision at contract execution. Almost none will accept it as a mid-contract amendment after a wet season.
SPM builds parallel job costing streams — installation by project and phase, maintenance by site and monthly billing period. Monthly reporting shows gross margin by stream side by side. After three months, the maintenance book is visible on its own. Sites running below target margin by more than 15% trigger a review — inspection frequency, rain event frequency, or pricing problem. Each has a different response at contract renewal.
Most SWPPP maintenance contracts renew annually or project-to-project. Renewal is the leverage point. Sites that were underpriced get repriced based on actual cost per visit data from the prior year. Sites that were generating emergency visit costs not covered by the contract get a rainfall event provision added. Some customers will not accept the new pricing. The ones who do not were unprofitable customers — the decision is easy once the data supports it.
This contractor did both installation and ongoing SWPPP maintenance for active construction projects. No separation in the financial system — everything blended into one P&L. Installation was running 28–32% gross margin. Maintenance was running approximately 9% — below breakeven once overhead was properly allocated to each maintenance visit. The installation book was covering the maintenance book's overhead gap silently.
After separating installation and maintenance in ControlQore, identifying the underperforming maintenance sites, repricing at renewal, and adding rainfall event billing provisions to new agreements. Same revenue. The maintenance book that had been a margin drain became a genuine profit center at correct pricing.
A free call with Josh takes 30 minutes. Bring your last P&L and current bank balance.
Schedule a Free Call →