SWPPP Contractor Gross Margin
Healthy gross margin for a SWPPP or erosion control contractor doing $1M–$5M is 28–38% on commercial installation work. Most operators run 15–22% — sometimes lower. The gap comes from three places: no per-site job costing so losing sites subsidize winning ones, BMP material costs absorbed into overhead instead of tracked per site, and an overhead rate calculated on busy months instead of annual utilization. A $5.2M SWPPP contractor improved from a 0.5% net margin to 30% net margin after fixing all three.
Gross margin is the percentage left after all direct project costs — labor, BMP materials, equipment, subcontractors — before overhead hits. For SWPPP and erosion control contractors, this number is harder to calculate accurately than most trades because work spans dozens of simultaneous sites, billing events are tied to inspections and rain events rather than completion milestones, and BMP material costs don't always match billing cycles cleanly. Most operators don't know their real gross margin by site. They know a blended company number — and that number hides a lot.
What the Numbers Should Look Like
The proof: A $5.2M SWPPP and erosion control contractor had no per-site job costing. Gross margin was blended and misleading. After building per-site tracking and correcting the overhead allocation, net profit went from $24K to $1.1M the following year — on $1.6M less revenue. Same trade. Same clients. Same crews. See the case study →
What Drives SWPPP Gross Margin Below Benchmark
No per-site job costing. When BMP material, labor, and equipment costs are tracked at the company level instead of the site level, losing sites are invisible. Every month, profitable sites subsidize underperforming ones. The gross margin number looks acceptable. The business is bleeding slowly.
BMP material cost timing mismatch. Silt fence, wattles, fiber rolls, and erosion blanket get ordered in bulk and deployed across multiple sites. If the cost isn't matched to the billing event at each site, it hits the P&L in the wrong period. Gross margin swings month to month for no apparent reason — actually because material costs and billing events are misaligned.
Overhead rate built on peak months. Most SWPPP contractors calculate their overhead rate during their busiest season. When work slows — and it always does — the same overhead rate is applied to lower revenue. The percentage spikes. Gross margin gets eaten. The fix is calculating overhead on 12-month annual revenue, not peak-month revenue.
Rain event work not billed promptly. Emergency rain event response is billable work. When it isn't invoiced within 24–48 hours with documentation, GCs push back or deny it. That's direct project cost with no corresponding revenue — gross margin drops on every unbilled emergency response.
How SPM Helps SWPPP Contractors Hit the Benchmark
- Per-site job costing structure built in ControlQore
- BMP material cost matched to billing events by site
- Overhead rate calculated on annual revenue
- Full-service bookkeeping and bank reconciliations
- Monthly gross margin report by site
- Everything in Core Financial
- Monthly CFO advisory meeting — portfolio review
- Site renewal pricing analysis — which sites to reprice
- Seasonal cash forecast built around your weather pattern
- Strategic accountability — you stop guessing
Pricing based on trailing 12-month revenue. No hourly billing. No scope gaps. Full pricing breakdown →