Advertising attribution for contractors means connecting each booked, paid job back to the ad, search or referral that produced it. Ad platforms report their own conversions, which often include calls and form fills that would have happened anyway. Counting leads from your own forms and matching them to jobs shows which ads actually earn revenue.
Here is the pattern most owners recognize. The ad dashboard says leads are up, so the budget goes up. Three months later the crews are no busier, the calendar has the same gaps, and nobody can explain where the extra leads went. The leads were never as real as the report suggested. This article explains why that happens and how to fix it with attribution you can check yourself.
TruLata is an AI marketing platform for local service businesses, including contractors, plumbers, electricians, roofers and HVAC companies, whoever runs the marketing. It counts leads from the business's own forms and phone records rather than from an ad platform's self reported conversion column, and it shows when every number was last refreshed.
Why do ad platform numbers overstate how many jobs your ads produce?
Every ad platform grades its own homework. Google Ads, Meta and the rest each decide what counts as a conversion, how long after a click or view they will claim credit, and whether a single customer who touched two campaigns counts once or twice. None of them can see the referral from a neighbor, the truck wrap a homeowner noticed, or the repeat customer who searched your company name because they already planned to call you.
That produces three predictable distortions:
- Branded search captures demand you already earned. When a past customer types your company name into Google and clicks your ad, the platform logs a conversion. That job came from your reputation, not from the ad. Google describes Search campaigns as reaching people "at the exact moment they are actively looking" (Google Ads), and for branded terms, those people were already looking for you specifically.
- Overlapping credit across platforms. A homeowner sees a Facebook ad, later clicks a Google ad, then fills out your form. Both platforms can count that one lead. Add the two reports together and you have two leads where your inbox has one.
- Conversions that are not leads. Many accounts count button clicks, page views of the contact page, or calls under a few seconds as conversions. Those inflate the count without putting a single estimate on the schedule.
The result is a gap between what the ad report says and what your office actually received. When you raise spend based on the report, you are scaling a number that includes leads the ads did not create. That is why budgets increase but jobs do not.
What is the difference between a lead, a booked job and a paid job?
Good contractor lead attribution starts by separating three things that ad reports blur together:
A lead
A real person contacted you with a real request: a submitted form, a call long enough to be a conversation, a booking request. Spam, wrong numbers, job seekers and vendor pitches are not leads, even though platforms often count them.
A booked job
The lead turned into an estimate appointment or a scheduled service visit. This is where quality shows. Two campaigns can produce the same number of leads and very different numbers of bookings, because one attracts price shoppers outside your service area and the other attracts homeowners with an urgent problem.
A paid job
The work was completed and invoiced. This is the only number that pays your crews. Tracking ads to revenue means following the chain all the way here, not stopping at the form fill.
Platform reporting stops at the first stage, and often at something less than the first stage. Your attribution has to go two steps further.
How do you set up advertising attribution that tracks ads to actual jobs?
You do not need a data team. You need a consistent source of truth and a habit of recording outcomes. Work through these steps in order.
1. Make your own forms and phone records the source of truth
Your website form submissions and call logs are records you own. Capture the source on every submission: the landing page, the campaign parameters in the URL, and the referring channel. Use dedicated tracking numbers for each major channel so calls can be tied back too. With lead tracking counted from your own forms, the lead count you report is the lead count your office actually received, not an estimate from the platform being judged.
2. Split branded and non branded campaigns
Run your company name searches in their own campaign and report them separately. Branded results will look excellent because they capture people already looking for you. Judge your growth campaigns (service terms like "water heater repair" or "roof leak repair") on their own numbers, without branded wins propping them up.
3. Clean up what counts as a conversion
Open the conversion settings in each ad account and ask one question about every action: does this represent a person asking us for work? If not, set it as secondary or remove it. Set a minimum call duration so hang ups and robocalls stop counting. Short calls under a minute rarely contain an actual service request.
4. Ask every caller and every form how they found you
Add a "How did you hear about us?" field to forms and a matching question to your call script. Self reported source is imperfect, but it catches what tracking cannot: referrals, yard signs, repeat customers and word of mouth. When a customer says "my neighbor" and the platform claims the lead, you have found inflated credit. Our guide on how to stop crediting ads for jobs that came from referrals goes deeper on this.
5. Record the outcome of every lead
This is the step most businesses skip, and it is the one that matters. For each lead, mark whether it booked, whether it closed, and what it was worth. If you run your schedule in a field service platform, connect it so outcomes flow in rather than being typed twice. TruLata reads job and estimate data from booking platforms, for example jobs and estimates, read live from Housecall Pro.
6. Compare by campaign, monthly, against jobs
Once leads carry a source and an outcome, build one simple table per campaign: spend, leads from your own records, booked jobs, paid jobs, and revenue. Now you can see cost per booked job and revenue per campaign, which tell you far more than cost per lead.
How do you verify marketing ROI when jobs take days or weeks to close?
Marketing ROI verification is harder for contractors than for an online store because the sale does not happen on the website. A roof replacement can take weeks from first call to signed contract. A furnace install can depend on a second estimate. If you judge a campaign on last week's revenue, you will undercount campaigns that drive bigger, slower jobs.
Practical rules that hold up:
- Use a lookback that matches your sales cycle. If your typical estimate closes within a few weeks, judge each month's campaigns after those weeks have passed, not on the last day of the month.
- Tie revenue to the original lead date. A job paid in May that came from an April lead belongs to April's campaign performance.
- Watch open estimates, not just closed jobs. A campaign with many booked estimates and few closes yet may simply be early. A campaign with few booked estimates is weak no matter how patient you are.
- Accept that some jobs had several touches. A homeowner might see a social ad, search later, and call after reading reviews. Decide on one consistent rule for credit and keep it, so month to month comparisons stay fair.
Consistency matters more than perfection. A simple rule applied every month will reveal trends that a sophisticated model applied once never will.
Which ad metrics should contractors still watch, and which should they ignore?
Platform metrics are not useless. They are diagnostic, not decisive. Use them to understand why a campaign performs the way your own records show, not to decide whether it works.
Worth watching
- Search terms. The actual queries that triggered your ads show whether you are paying for "emergency plumber near me" or "plumber salary."
- Click through rate and landing page conversion rate. These explain why lead volume rises or falls.
- Ad status and delivery. Meta reviews ads before they run and notes that ads "may be reviewed again, including after they are live" (Meta Business Help Centre). A paused or rejected ad explains a sudden drop that has nothing to do with demand.
- Spend by day. Runaway spend on a weekend or an expanded match type can drain a budget before anyone notices.
Treat with caution
- Platform reported conversions and cost per conversion. Compare them against your own lead count every month. The gap is the size of the overstatement.
- Return on ad spend calculated inside the platform. Unless real job values flow back in, this figure is a modeled guess.
- Impressions and reach. Useful context, never a reason to raise a budget.
A daily look at spend and delivery catches problems early. Google Ads reporting with a daily account watch puts spend and cost per lead next to the lead count from your own forms, so the comparison is built in.
What does the gap between platform leads and real leads tell you?
Once you run both counts side by side, the difference becomes a diagnostic signal of its own.
- Small, stable gap: Your conversion settings are clean and the platform is mostly reporting real activity. Trust its trend lines more.
- Large gap on one campaign: Usually branded search, a loose conversion action, or junk traffic from a broad placement. Investigate that campaign first.
- Gap that widens as spend rises: The extra budget is buying platform conversions, not leads. This is the exact situation where budgets increase but jobs do not. Pull spend back to the level where real leads stopped growing.
- Real leads up, booked jobs flat: Lead quality or follow up is the problem, not the ads. Check response times and service area targeting before touching the budget.
That last point is easy to miss. Sometimes the ads are working and the leads die in the inbox. Attribution should tell you where the chain breaks, whether that is the ad, the landing page, the phone, or the estimate.
How often should contractors review advertising attribution?
A practical cadence for most service businesses:
- Daily (a few minutes): spend, delivery status, and new leads from your own forms and calls.
- Weekly: lead sources, booking rate by campaign, and any lead left without a recorded outcome.
- Monthly: the full table of spend, real leads, booked jobs, paid jobs and revenue by campaign, judged after your normal close window. Budget changes happen here, based on cost per booked job, not cost per platform conversion.
The reason most owners skip this is that it lives in five different logins. Each platform shows its own version of the truth, with its own date range and its own refresh timing. Bringing them onto one screen with a visible "last updated" time removes the excuse and the confusion.
Know which ads earn jobs before you raise the budget
The fix for runaway ad spend is not a new campaign. It is a lead count you own, an outcome on every lead, and a monthly comparison by campaign that ends in revenue. Do that, and budget decisions stop being a leap of faith.
TruLata was built around exactly this principle. It counts leads from your own forms, shows the freshness of every number, and puts ads, leads and job outcomes on one screen for service businesses. See how TruLata works, or open the live demo to see real attribution in action before you approve your next budget increase.





