Case study · Commercial roofing · Alabama

$6,341 in ads. $500,000+ in roofing jobs.

One commercial roofing contractor in Alabama. One Meta ad account they own. A funnel that qualifies the property before the phone rings, and a CRM that texts the lead in seconds. Here is exactly what was built and what it produced.

$6,341.29
Lifetime ad spend
$500,000+
Roofing jobs closed
≈78x
Return on ad spend
Seconds
Lead to text on the roofer's phone

Client anonymized at their request. Spend is pulled from the ad account. Revenue is reported by the contractor from closed jobs.

The contractor

A commercial roofing company in Alabama serving Alabama and Georgia: flat and low-slope roofs on warehouses, retail, churches, and industrial buildings, with a residential lane on the side. Before this, new work came from referrals and the occasional shared lead. Referrals are great until the phone stops ringing.

The problem

The contractor had tried buying leads. The pattern was familiar: a lot of homeowners, a lot of racing other roofers to the phone, and no way to know which leads actually turned into jobs. What they needed was a predictable source of commercial opportunities that they owned outright.

What was built

Ads on the contractor's own Meta account

We set up and run the ad account in the contractor's name. The creative that has carried the account is deliberately unglamorous: a side-by-side “replace vs. coat” comparison for aging flat roofs, a square-footage callout aimed at building owners, and photos of the contractor's real crew on real membrane roofs. Ads that spoke to homeowners were tested and cut. Ads that spoke to building owners were scaled.

A funnel that qualifies before it rings

Every ad sends the prospect to a single page with one job: capture the property type, the address, what the roof needs, and when. The page confirms whether the property is a home or a business and flags commercial leads for priority. The contractor knows what the job is before they dial.

A CRM that texts the lead in seconds

The moment a form is submitted, the contractor gets a text with the name, number, property, and the exact ad, ad set, and campaign that produced the lead. Every lead also lands in a CRM they can log into. When a job closes, it traces back to the ad that started it.

The results

Lifetime spend on the account is $6,341.29. The contractor reports more than $500,000 in roofing jobs closed from leads the system produced, a return of roughly 78 times ad spend. The single best-performing ad, the replace-vs-coat comparison, is still running today, refreshed periodically with new creative variants.

Two things made the number possible, and neither is the ad platform. First, the funnel filtered residential and unqualified traffic before it reached the contractor, so estimator time went to real commercial opportunities. Second, attribution let us turn budget toward the ads that produced closed jobs, not the ads that produced the cheapest clicks.

What we would tell another roofer

Get the same system in your state

We build this for one roofing contractor per state, and we guarantee it: $100,000 in new roofing jobs in your first 60 days, or you don't pay the retainer. Alabama is taken. Most other states are still open.

Find out if your state is still open.

Claim my state

One roofer per state

Find out if your state is still open.

$100,000 in new roofing jobs in your first 60 days, or you don't pay the retainer. Free 15-minute call, straight answer on whether we'd be a fit.

See if your state is still open