Guide

How to Track Which Marketing Brings In Your Roofing Jobs

By Aaryan Gupta Updated October 25, 2026

Give every marketing source its own phone number and tagged web link, and log every lead in one sheet with its source and whether it signed. Each month, divide what each source cost, fees included, by the jobs it signed, and look at that figure before you renew anything. A lead price can’t stand in for it: a roofing owner on r/PPC worked out that a $200 to $300 lead closing one time in four comes to about $800 a signed job.

The owner of an $11 million roofing company posted a month of CRM figures on r/RoofingSales: about $14,000 on Google’s Local Services Ads for 11 or so jobs. That’s roughly $1,270 a job by my division, and he told readers to take his attribution lightly.

The counts behind that math can be wrong, ours included. A bug in our own site template kept a DFW roofing client’s Google Analytics at zero leads across 715 visits from August 1 to mid-September 2026. Until a test call and a test form show up where they should, assume your tracking doesn’t work.

Twenty-three form fills turned into two signed jobs for one Florida roofer

A roofing owner in northeast Florida posted his first month on Local Services Ads and Meta, about $2,000 between them: 23 form fills, 19 he counted as qualified, 8 inspections and 2 signed jobs. In month two he agreed to pay his marketer more per qualified lead, and he wonders whether that rewarded quantity over quality.

Our own Local Services Ads number is still a lead price. For the DFW roofing client above, Google set a floor of $327 a week in September 2026, about $1,400 a month, at about $109 a lead. I can’t tell you what a signed job costs there until enough of those leads reach a contract.

Google counts a tap on your call button as a call

Google defines a Business Profile’s Calls figure as the number of times a customer clicked the call button. A tap that never connects counts the same as a homeowner booking an inspection, and so does a supplier tapping it to reach your office. That explains much of the gap a marketer on r/localseo asked about: profiles showing 100 or more calls a month when the client says maybe two or three were any good.

Google also switched off Business Profile call history on July 31, 2024, so the record of who called has to come from your own phone system or a tracking number.

Search Console can look healthy while leads stay flat

Every Wednesday from August 5 to September 9, 2026, a rank tracker added about 500 impressions (times the site showed up in results) to our roofing client’s Google Search Console for one search. All of them sat at position 1, and none was clicked. In the site’s 12-month report, those tracker hits made up nearly half of all impressions and flattered its average position, so at face value the report says the site ranks well.

Aaryan on YouTubeHow to find exactly where you’re losing jobs

A DFW builder and remodeler we work with went from about 40 Search Console clicks a month in late 2025 to 833 in August 2026, while qualified leads stayed at 2 to 3 a month. Most of those clicks came from people around the country reading cost guides, and searches from people looking to hire brought 4 clicks in 90 days.

Ask anyone you pay to put calls and signed jobs by source next to the rankings. How to Hire a Roofing Marketing Company Without Getting Burned covers what else to ask.

A tracking tag can be installed and still miss every lead

Every site built from our template carried the flaw behind that zero in our client’s Google Analytics. The template loaded Google’s analytics code in a way the form and phone-link code couldn’t see, so form fills and phone taps never reached the reports, with no error anywhere. One line of code fixed it, and a test tap on the phone link confirmed the fix.

So when anyone tells you the tag is installed, us included, ask to see a test lead in the report. A test tap on the phone link and a test form on August 1, the day Analytics went on, would have caught our bug. Before you run your own test, have whoever runs your website mark form submissions and phone taps as key events, Google Analytics 4’s name for the actions that matter to a business.

Give each source its own number, in an account you own

“It’s pretty easy to track ROI, all you have to do is ask the client how they found you,” an owner on r/RoofingSales wrote in 2025. He added that it gets harder with more than one digital marketer. Keep asking anyway, in a column of its own, because a homeowner who saw your yard sign and then called from your Google profile shows up in a tracker as a Google call.

Aaryan on YouTubeDo you know which ads make your phone ring?

Give a number to each source you want to measure, such as the Google profile, the website, each mailer and each batch of yard signs. Each number forwards to your real line and labels the call with its source. We use CallRail for our clients, and as of October 2026 its plans start at $50 a month for 5 local numbers and 250 local minutes, with extra numbers at $3 each.

Local Services Ads need no tracking number, because Google logs every LSA call in its lead inbox with the caller, the length and the charge, plus a recording in the US. If you run them, get LSA verified on your real number before you change the Google profile’s number, so a tracking number stays out of Google’s identity check. Then we make the tracking number the profile’s primary and list the real number as an additional one, since Google allows a primary plus two more. That choice is my judgment: Google’s guidelines call for a number under the business’s direct control that doesn’t send callers to anyone else, and they don’t mention tracking numbers.

“Do you own them, or does your marketing company?” a roofing company manager asked on r/RoofingSales in 2024 about call tracking numbers. Settle that before a number goes on a truck or a mailer. US federal rules let a phone service’s users keep their numbers when they switch carriers, so open the tracking account in your company’s name and the numbers are yours to move.

Check the live profile after any number change. CallRail’s Google connection set a tracking number as our roofing client’s primary on September 6, 2026. Ten days later the profile still showed the real line, and CallRail had logged no real call since. We resubmitted it for Google’s review, so that profile’s call records start clean only from mid-September.

Some owners won’t use a number that isn’t theirs, which is fair if you know the cost. In September 2026 the builder above asked to have his own number on his website, so we took tracking numbers off all 242 pages and kept the one on his Google profile. Since then no website call can be traced to a page or ad, or played back, and the eleven numbers behind the site were still billing with nothing pointing at them. If you drop tracking, cancel the numbers too.

Federal law and Texas allow recording a call when one party to it consents, and Florida requires every party’s consent. Google Ads now records calls on its forwarding numbers by default, so put a recording notice on your tracking lines and ask a lawyer about your own state or province.

One sheet with a source column settles which leads are good

That builder logs every form lead in a spreadsheet with the source, the page the visitor landed on, the path they took through the site and a quality mark set by hand. Two leads in July and August 2026 came from a news site that had picked up his press release. His Google profile’s website link goes through a short redirect that tags the visit, so profile visitors show up as their own source.

Have whoever runs your website tag every link you hand out the same way, the QR code on each mailer included. Keep every tag lowercase, since Google Analytics reads “google” and “Google” as two sources.

Decide what “qualified” means before you start counting. An owner on r/RoofingSales counts only leads that booked an appointment in his CRM, “not clicks or what google ‘thinks’ a lead is.” For our roofing client, a lead is qualified when it could plausibly turn into a full replacement or an insurance claim job, and repairs and small jobs stay in the sheet as plain leads. Write your rule at the top of the sheet, and give it to any marketer you pay per qualified lead.

The sheet can overrule your sales team: one owner on r/RoofingSales said all his reps complained about HomeAdvisor leads, which still sold at a rate just below his better sources. If matching spend against sales by hand starts eating an evening, Roofing CRM Software: What It Costs and When You Need One covers the software.

Google Ads now counts only the calls its AI judges qualified as conversions, which still leaves you with a calls figure. If someone runs Google Ads for you, have them upload each signed job within 90 days of the lead’s last ad click, or 63 days under what Google calls enhanced conversions for leads. Google won’t import a later upload, so an insurance job that takes months to sign may never reach it.

Local Services Ads are moving into Google Ads as Performance Max campaigns with pay-per-lead goals, with US roofing in the first wave from August 2026. Lead history and older call recordings move across, but Google says past performance reports won’t. Google Local Services Ads for Roofers: Budget, Cost per Lead and Disputes covers the move.

Start with the sheet and a test call this week

  1. Start a lead sheet, or a lead-source field in your CRM. Give it columns for date, name, phone, source, what the caller says brought them, landing page, qualified or not, inspection date, signed or not, and job value.
  2. Put one tracking number on each paid source, from an account in your company’s name.
  3. Call each tracking number from your cell phone and check that the call shows up with its source. Then tap the phone link on your website and fill in your own web form, and find both in Google Analytics that day.
  4. If you run Local Services Ads, export the performance reports before your account moves into Google Ads.

Once your calls carry a source, run our free Google Maps heatmap: pick your Google profile and a search, and in a few minutes you’ll see your rank at 49 points around your office. Compare that map with where this month’s inspections were.

We do this for roofing companies Roofing lead generation

Compare roofing marketing agencies on price and who owns the site