Every intake form has the field. Every CRM has the dropdown. And every quarter, the report says most customers came from "Google" or "referral," so the owner concludes the ads are not working and cuts them.
Self-reported attribution is useful. It is also systematically wrong in a specific direction, and if you do not correct for it, you will defund the channels doing the real work.
What the customer actually remembers
A homeowner sees your truck in the neighborhood. A week later they see your ad on Facebook. A month later, the water heater fails, they search "water heater repair" on their phone, and they see your Google ad, your Maps listing, and your organic result. They click one, they call, and your office asks how they heard about you. They say "Google."
Every one of those touches contributed, and the answer captures one. Which one gets named depends on what is easiest to recall, and the last step is always easiest. "Google" absorbs credit from the truck, the Facebook ad, and the review a neighbor left. "Referral" absorbs credit from whatever made the referrer think of you.
This is not the customer's fault. It is how memory works, and it means self-reported attribution consistently overstates the last touch and understates everything earlier.
What tracked attribution gets right and wrong
Tracked attribution is what your ad platforms and analytics report: this call came from this ad, this form came from this organic search, this booking came from this email. It is precise about the click that immediately preceded the action.
It has the opposite blind spot. It cannot see the truck, the yard sign, the word of mouth, or the customer who saw the ad, remembered the name, and typed it into the address bar three days later. And each platform reports its own numbers with its own attribution rules, so adding them up double-counts. Google Ads and Meta will both claim the same customer if they both touched them.
Neither source is the truth. Each is a partial view, biased in a known direction.
Combining them
The practical approach is to collect both, keep them in the same record, and read them together.
Set up the tracking. Call tracking numbers per channel, form submissions tagged with their source, conversion tracking that records the booked job rather than just the click. Every lead lands in the CRM with a tracked source field.
Keep asking. The self-reported field stays. Train whoever answers the phone to ask an open question, "what made you call us today," rather than reading a list, and to write down what the customer actually says. "My neighbor Sarah used you, then I saw your ad" is two data points, and it is worth more than a dropdown.
Compare the two columns. When tracked source says "Google Ads" and the customer says "Google," those agree. When tracked says "Google Ads" and the customer says "referral," you have learned that a referral was closed by an ad. When tracked says "direct" and the customer says "saw your truck," you have learned something no platform can tell you.
Look at the pattern, not the individual lead. Over a quarter, if a large share of "referral" and "Google" customers also have a tracked touch from Meta, Meta is doing more than its own report shows and far more than the self-reported column shows.
Deciding where the budget goes
The goal is not a perfect attribution model. The goal is to avoid the specific mistake of cutting a channel because it never gets named.
A simple rule: never turn off a channel based on self-reported attribution alone, and never scale a channel based on its own platform report alone. Make changes when both views point the same direction, or run a real test, which for a local business usually means pausing a channel in one area for a month and watching what happens to total leads, not attributed leads.
Total leads, total booked jobs, and total revenue are the numbers that cannot be gamed by attribution. If you cut Meta and total leads drop, Meta was working, regardless of what the dropdown said. This is the reasoning behind tracking ROI without a data team: a small set of honest totals beats an elaborate model.
What this means for your CRM
Your CRM needs a tracked source field and a self-reported source field, both on the contact, both visible on the pipeline. If it has only one, or if the tracked source is not being written automatically, the whole comparison is impossible. This is a configuration problem rather than a software problem, and it is one of the first things a managed CRM build-out sorts out.
The ROI calculator is a quick way to see what a change in cost per booked job does to the year.
Frequently asked questions
Should I stop asking how people heard about us?
No. It is the only way to see offline touches. Just stop treating the answer as the whole story.
What about customers who say "I don't remember"?
That is a useful answer. Log it. A high share of "don't remember" usually means the brand is doing the work, which is a good problem.
My agency reports on platform attribution only. Is that a problem?
It is a partial view, and they should say so. Ask them to show platform-reported conversions next to CRM-recorded jobs and explain the gap.
How long does it take to see a clear pattern?
A quarter of consistent data, at minimum. A month tells you almost nothing because individual jobs are lumpy.
