Marketing Strategy

Where Do Your Leads Actually Come From? A Tracking Setup You Can Do in an Afternoon

Most owners are guessing. Here's the tracking setup that tells you which marketing paid for itself, in about three hours of work.

By Trey Linder, Falco Marketing · July 28, 2026 · 9 min read

Ask an owner in Raleigh which marketing brought in last month’s jobs and you’ll get a story. Usually about whatever he remembers paying for. The billboard on Capital, the mailer that went out in Apex. Then you look at the data and it’s a different set of channels.

That’s a tracking problem, not a character flaw, and it’s fixable in an afternoon. Not perfectly, because attribution is never perfect and anyone telling you otherwise is selling a dashboard. But well enough to know what to cut.

The short answer

To track where your leads come from, give every marketing channel its own call tracking number, tag every link you control with UTM parameters, capture the source in a hidden form field, set up conversion actions properly in Google Ads, and reconcile all of it monthly against booked jobs. About three hours of setup, and it tells you which marketing paid for itself.

Why knowing where your leads come from is worth an afternoon

WordStream pulled 251,236 reports from 15,666 Google Ads accounts and found the average account wastes $1,127.54 a month out of $3,127.38 in spend, about 36% of the budget. Call it $3,400 a quarter, gone.

Worse: 29% of those accounts recorded zero conversions over 90 days. Most produced leads nobody counted, so the bidding algorithm had nothing to learn from and spent three months optimizing toward silence.

You cannot cut waste you cannot see.

36%
of the average Google Ads budget goes to clicks that will never convert.WordStream Google Ads Performance Study, 15,666 accounts
A shop desk with a laptop showing a call tracking dashboard beside a printed job schedule

Step 1. Name your channels once, before you touch anything

Fifteen minutes of paperwork that saves a mess in six weeks. List every way a stranger finds you, then lock a naming convention. Lowercase, no spaces, hyphens in values. `google-ads`, not `Google Ads` or `GAds`. Analytics tools read those as three channels and you’ll spend a Saturday merging rows.

Channelutm_sourceutm_medium
Google Adsgooglecpc
Meta adsfacebookpaid-social
Monthly emailmailchimpemail
Postcard QR codeeddm-julyprint
Vehicle lettering QR codevehicle-letteringprint

Caption: Set these once, tape them above your monitor.

Step 2. One tracking number per channel

The piece most owners skip, and the one that matters most, because service businesses get inquiries by phone. In legal, 61% of inquiries arrive by phone. Run an HVAC route or a roofing crew and your share is higher, not lower.

Sign up with CallRail or WhatConverts. Numbers run a few dollars a month each plus usage. Then:

  1. Buy one static 919 or 984 number per offline channel. Direct mail, vehicle lettering, the Chamber listing, yard signs. These are the numbers you print on things.
  2. Install the number swapping script in your website header. It changes the number shown on the page based on how the visitor arrived, pulling from a rotating pool. Buy enough pool numbers for peak concurrent visitors, or two people see the same number and one gets attributed wrong.
  3. Forward every tracking number to your real line, and add a whisper message so whoever answers hears “postcard” or “Google Ads” before hello.
  4. In your Google Business Profile, put a dedicated tracking number in the primary phone field and your real number in the additional field. It’s the only clean way to separate profile calls from the rest.
  5. Set the minimum duration that counts as a lead. Sixty seconds. Anything shorter is a wrong number or a hang-up.

Do not port your main number into a tracking platform

Your main number is on every invoice and every truck. Leave it alone. Tracking numbers forward to it, so if you ever leave the provider you cancel them and nothing changes.

More links than you think. Email footers, social bios, postcard QR codes, Google Business Profile posts, review request texts.

Use Google’s Campaign URL Builder. `utm_source` is who sent them, `utm_medium` is the format, `utm_campaign` is the specific push (fall-tuneup-2026, july-eddm-apex), and `utm_content` separates two versions of the same thing.

Never tag links between pages of your own site. That restarts the session and overwrites the original source with your own website, and it’s the most common way owners break their tracking.

For Google Ads, skip UTMs and confirm auto-tagging is on under Admin, account settings, auto-tagging. That appends the `gclid` parameter, which ties a click to a conversion inside the platform.

A direct mail postcard with a QR code held next to a phone showing the tagged landing page URL

Step 4. A form that remembers where the visitor came from

A form submission with no source data is a lead you can’t charge against a budget line. Hidden fields fix that. Add these to every form:

  1. `utm_source`, `utm_medium`, `utm_campaign`, `utm_content`
  2. `gclid` for Google Ads clicks
  3. `landing_page` for the first page of the visit
  4. `referrer` for the site that sent them

In Gravity Forms, add a Hidden field, open the Advanced tab, tick the box that fills it from a URL parameter, and set the Parameter Name to match exactly. WPForms does the same under Advanced with Smart Tags.

Set a first-party cookie with a 90-day life storing the first source a visitor ever arrived from, and pass it in a fifth field called `first_touch_source`. Roofing and HVAC decisions take weeks. Last click credits the search someone ran the morning they finally called and ignores the four visits before it.

Then add one visible question: “How did you hear about us?” as an optional dropdown with an “other” box. Self-reported answers are sloppy. People say “Google” when they mean the mailer that sent them to Google. But it’s the only signal you’ll ever get for word of mouth.

Step 5. Conversion actions Google can actually bid toward

Google bids toward whatever you call valuable. Tell it wrong and it optimizes hard toward the wrong thing, which is how an account spends $3,000 a month buying price shoppers.

Goals, then Conversions, then Summary, then new conversion action. For a lead form:

  1. Category: Submit lead form. Not “Other,” and never “Page view.”
  2. Value: same value for each conversion, and put a real number in. Average job value times the share of leads that book. A $9,000 roof at a 25% close rate is a $2,250 lead.
  3. Count: One. A guy who fills out your form three times in an afternoon is one lead.
  4. Click-through window 30 days, view-through 1 day, attribution model data-driven.
  5. Turn on enhanced conversions for leads so hashed contact data flows back and matches the ones you close later.

For phone calls, use your call tracking provider’s Google Ads integration instead of Google’s forwarding numbers. Two number-swapping scripts on one page fight each other. Send calls over 60 seconds as the conversion.

Then the part almost nobody does. Mark exactly one action Primary and everything else Secondary. If form fill, phone call, chat, directions click and PDF download are all Primary, the algorithm treats a PDF download as equal to a booked estimate, and it will happily buy you a thousand PDF downloads.

The payoff is offline conversion import. Store the `gclid` in your CRM with each lead, then monthly upload the ones that became signed jobs as a separate action called “Booked job.” Now Google bids toward revenue, not form fills. Most Google Ads accounts we audit have never done this, and it’s usually the biggest gain available.

Not sure your conversion tracking is even firing?

Send us read-only access for a week. You get back a one-page benchmark of your cost per lead against your industry median, plus every conversion action that’s double counting or quietly recording nothing. Two days, and you keep the document whether or not we ever speak again.

Get your free auditOr just tell us what’s going on and we’ll say where to look first.

Step 6. The one page you look at every month

Twenty minutes on the first Monday. A spreadsheet, not a dashboard. Seven columns: channel, spend, calls over 60 seconds, form fills, booked jobs, revenue, cost per booked job. One row per channel from step one.

Spend comes from each platform, leads from your call tracking dashboard and form inbox, booked jobs from your job software. Do not automate this in month one. Typing the numbers yourself is how you notice direct mail produced nine calls and every one was a price shopper.

Cost per booked job decides things. Cost per lead flatters you.

A printed one-page monthly tracking sheet with columns filled in and cost per booked job circled by hand

What this will never tell you

Two honest limits, and an agency that hides them is hiding other things too.

Branded search is not a channel, it’s an echo. Somebody sees your lettered van on Highway 55 in Holly Springs, gets home, types your company name into Google and calls the top result. Your report credits organic search, or Google Ads if you bid on your own name. The van did the work. Offline media creates demand that digital channels get paid for catching, which is why truck graphics and print get judged on total inbound call volume, not a line in a report.

Some of it happens where you can’t see it. In early 2026, 68.01% of Google searches ended without a click, up from 60.45% two years earlier. Somebody read your rating and hours in the results and dialed from there. No session, no UTM.

So compare channels against each other over time instead of treating this as a ledger. If direct mail costs $340 per booked job and Google Ads costs $180 over a quarter, that’s a decision you can make even though neither number is exact.

A phone ringing unanswered on a service counter with a whiteboard job list behind it

The leak that makes all of this pointless

Invoca analyzed more than 60 million calls and found only 61% of callers actually speak with a person when they call a business from a digital marketing source.

Four in ten calls you paid for die in a voicemail or a hold queue. Your tracking counts them as leads. Your revenue column doesn’t. So the channel looks expensive, you cut it, and the channel was never the problem.

Before you kill a channel based on your new sheet, listen to ten of its recorded calls. In Fuquay-Varina and Clayton we hit the same pattern constantly on audits: the ads are fine, the tracking is fine, and the phone rings eleven times at 4:40 on a Thursday.

Your afternoon, in order

  • A static tracking number per offline channel, plus a website pool
  • Tracking number in the GBP primary phone field, real number as additional
  • Google Ads auto-tagging confirmed on
  • Tag every link you control, and no internal links
  • Hidden utm, gclid, landing_page and first_touch_source fields on every form
  • One Primary conversion action with a real value, everything else Secondary
  • The seven-column sheet, filled in on the first Monday

Frequently asked questions

How long before this data is worth anything?

A full month before any decision, 90 days before cutting a channel. One month of data on a seasonal business tells you a story about weather, not marketing.

Do call tracking numbers hurt my local SEO?

No, as long as your real number stays listed. Tracking number in the primary phone field of your Google Business Profile, real number in the additional field. The old warnings were about replacing your number everywhere, not adding one.

What if my budget is only $1,500 a month?

Do steps one, two and four, skip the rest for now. Call tracking plus source fields on your forms gets most of the picture. The conversion action work only matters once you’re actually running ads.

Why do my Google Ads conversions never match my CRM?

They never will. Google counts a conversion on the date of the click, your CRM on the date the lead arrived, and a 30-day window puts those in different months. Compare trends, not totals.

Want a second opinion before you cut a channel?

Tell us what you’re spending and what your sheet says, and we’ll tell you which numbers we’d trust and which are lying to you. Twenty minutes. No proposal, and nobody drops you into a follow-up email sequence afterward.

Book a 20-minute callWe’re in Raleigh and we work with service businesses across the Triangle.

Benchmarks current as of July 2026. Platform menus move, but the setting names still work as search terms.

TL
Trey LinderFounder of Falco Marketing in Raleigh, North Carolina. Falco runs Google Ads, local SEO, websites, recruitment marketing and in-house design and print for service businesses across Wake, Durham, Johnston, Chatham and Harnett counties.

Not sure which of this applies to you?

Tell us what you sell and where you sell it, and we will tell you the one thing we would change first. Twenty minutes, no proposal, no follow-up sequence. If we are not the right fit we will say so on the call.

Talk to Falco