Guide · Roofing · Roofing company owners

Roofing marketing ROI: how to track cost per held estimate and cost per signed job

To know which roofing marketing pays, track every lead from first contact to signed job, by source. Record when it came in, how fast someone answered, whether it qualified, whether the estimate was booked and held, the quote, and the outcome. Then divide what each channel cost by the held estimates and the signed jobs it produced. Cost per lead alone hides the leads nobody answered and the estimates that never happened. For residential roofers in Houston, Avantai Labs reports booked, held, quoted and sold estimates every week: https://www.avantailabs.com/home-services/roofing/houston

Cost per signed job is what a channel cost in a period divided by the jobs it signed. Measure it by source, count the full cost, and give insurance work enough time to close before you judge a channel.

How a roofing company tracks marketing ROI

  1. Give every lead one row, with the date and time it came in and its source.
  2. Record the first-response time, whether the lead qualified, and why not when it did not.
  3. Record the booked date, whether the estimate was held, the quote and the outcome: sold, lost or pending.
  4. Each week, divide each channel's full cost by its held estimates and by its signed jobs.
  5. Judge a channel on leads from the same weeks, after insurance jobs have had time to close.

Why cost per lead is the wrong scoreboard

A cheap lead nobody answered costs more than an expensive lead that became a signed replacement. Cost per lead treats both the same. It also ignores renters, repair-only calls outside your zip codes, and booked estimates where nobody was home.

The two numbers that tell you whether marketing pays are cost per held estimate and cost per signed job, by source. They include everything between the click and the contract, including your office.

The stages to count

  • Lead: a call, form, message or booking request with a way to reach the homeowner.
  • Contacted: someone from your side reached the homeowner. Record how long it took.
  • Qualified: meets your written criteria. Owner, address in your area, the job you want, claim or retail, timing.
  • Booked: an estimate on the calendar with everyone who decides.
  • Held: the estimator was there and so was the homeowner.
  • Quoted, then signed or lost.

What to record for every lead

  • Date and time in, and the source: Local Services Ads, Google Search, referral, yard sign, door knocking, a lead vendor.
  • Time to first contact, and who made it.
  • Qualified or not, and the reason when not. Renter, out of area, repair only, just shopping.
  • Booked date, held or no-show, and the estimator.
  • Quote amount, retail or insurance, and the outcome with its date.
  • Signed job value and, if you track it, gross profit on the job.

How to know where a lead came from

  • Use a separate tracking phone number for each paid channel, so calls are tagged before anyone picks up.
  • Tag the links in your ads and on your landing pages so form leads carry their source into the sheet or the CRM.
  • Local Services Ads leads show up in their own dashboard. Copy them into the same sheet as the rest.
  • Ask every homeowner how they found you, and write the answer down even when the source looks obvious.

The weekly numbers

  • Cost per held estimate, by source: what the channel cost divided by the estimates that actually happened.
  • Cost per signed job, by source: the same cost divided by the jobs signed from that channel's leads.
  • Show rate: held estimates divided by booked ones. Low show rate is an office problem before it is a marketing one.
  • Close rate by source: signed jobs divided by held estimates.
  • Speed to first contact, and how many leads never got one.
  • Leads rejected and why. A channel that sends renters every week needs new targeting, not more budget.

How to work out ROI without fooling yourself

Count the full cost of each channel: ad spend, fees, lead purchases and the hours your team spends on it. Use gross profit on the signed jobs, not the contract value, or every channel will look like it pays.

Judge a channel on the leads that came in during the same weeks, and give them time. Insurance jobs often take longer to sign than retail ones, so a channel can look weak for weeks and then catch up. Do not compare a storm month with a quiet one.

Fix the office before you blame the channel. If estimators keep driving to leads that never fit: https://www.avantailabs.com/home-services/roofing/how-to-qualify-roofing-leads. If booked estimates do not happen: https://www.avantailabs.com/home-services/roofing/estimate-no-shows. The terms, in plain words: https://www.avantailabs.com/home-services/roofing/lead-generation-glossary

How Avantai reports it

Avantai runs the ads in your own account and logs every lead it answers: time to first contact, qualified or not and why, booked, held, quoted and sold, using the outcome your office records for each estimate. The weekly report counts each step. At day 60 you see what each step cost: ad spend plus our fee, divided by each step. We do not guarantee a number of estimates or jobs. For residential roofers in the Houston metro, Avantai runs this as a 60-day pilot on a flat monthly fee, then month to month. Ads run in your own account, and there is no volume guarantee. Details: https://www.avantailabs.com/home-services/roofing/houston

Where to go next

Questions contractors ask

How do I calculate the ROI of roofing marketing?

Take the gross profit on the jobs a channel signed, subtract the channel's full cost (ad spend, fees, lead purchases and your team's time), and divide by that cost. Do it by source, on leads from the same weeks.

What is cost per signed job?

What a marketing channel cost in a period divided by the jobs signed from the leads it sent in that period. It is the number to compare channels on, together with cost per held estimate.

Why not just compare cost per lead?

Because it ignores everything after the lead: the ones nobody answered, the ones that did not qualify, the booked estimates that were not held and the quotes that were lost. A channel with cheaper leads can cost more per signed job.

How do I track roofing leads by source?

One row per lead with the source on it. Use a separate tracking number per paid channel, tag the links on ads and landing pages, copy Local Services Ads leads from their dashboard, and ask every homeowner how they found you.

How long before I judge a roofing marketing channel?

Long enough for the leads from those weeks to be quoted and signed or lost. Insurance work often takes longer to close than retail, so judging a channel too early tends to favor the fastest closers, not the best channel.

Does Avantai report cost per signed job?

Yes, for the leads from the ads it runs. For residential roofers in the Houston metro, the weekly report counts booked, held, quoted and sold estimates, and the day-60 review shows the cost of each step, ad spend plus our fee: https://www.avantailabs.com/home-services/roofing/houston