Head to head

Self-reported attribution vs analytics: one free-text field beats a server-side rebuild

The verdict

Neither is accurate; they're wrong in different directions. Analytics loses enquiries it never saw — declined consent, an expired cookie, a chat that started on a phone. A "how did you hear about us" field keeps them all and loses precision instead. Under roughly 500 enquiries a month, the field is the better instrument.

Updated 27 August 2026 · Written by the Last Agency team · See what SEO actually costs

The short version

  • Both are biased. Self-reported bias runs in directions you can name; platform bias runs in directions that change when a browser ships an update.
  • Ask it as free text. A dropdown of your own marketing channels manufactures the answer it gets back.
  • The answer analytics can never produce: "my accountant told me about you." Referral has no channel in your dashboard.
  • Google models the visitors you lost only once you're big — 1,000 denied-consent events a day. Below that, the gap is a hole, not an estimate.
  • Reconcile, don't choose. The number that matters is the ratio between the two counts, and the month it changes.

Two instruments, two different kinds of wrong

Most people frame this as data against anecdote. On a business under a few hundred enquiries a month it is the other way round.

The free-text field is the census. Every enquiry produces a row, because the field sits on the record itself. What it holds is a memory, filtered through whatever the customer thinks you want to hear.

Platform analytics is the sample. What it holds is exact — a referrer is a fact, not a recollection — but it only holds the enquiries whose sessions it managed to see, and it will not tell you what share of the total that is. Both are wrong. The only useful question is which kind of wrong you can work with.

Where each instrument fails, and in which direction.
Failure modeSelf-reported fieldPlatform analytics
Misses the enquiry entirelyAlmost never. The field lives on the record, so every enquiry has a row.Routinely. Declined consent, a blocked script, an expired cookie, an in-app browser, a phone call.
Wrong about the channelOften. "Google" covers organic, an ad, Maps and a Business Profile at once.Rarely, when it saw the session at all. A click ID is not a memory.
Direction of the errorPredictable. Over-credits brand, word of mouth, and whatever happened most recently.Predictable in mechanism, unpredictable in size. It moves when a browser or a banner changes.
Sees referral and offlineYes. It is the only instrument that does.No. A recommendation from a client's accountant has no channel to land in.
Cost to runOne form field, plus someone reading the raw text once a month.Tag work, consent plumbing, and a rebuild every time a platform changes.
Degrades over timeNo. It works the same in 2020 and in 2030.Yes, steadily, and not in your control.

What analytics loses, and why the losses keep growing

None of this is GA4 being badly built. Each loss has a boring, specific cause, and each one has grown since 2020.

Consent. A visitor who declines, or who leaves before choosing, was never recorded — there is no row to model from. Google's consent-mode modelling fills part of that hole, but only for properties large enough to qualify, which most Indian sites are not.

Cookie lifetime. Safari deletes script-written storage after seven days without a return visit, so a March research session is gone by the time the June enquiry arrives. Analytics then sees a path that genuinely is entirely direct and credits Direct — not a modelling opinion, an absent row. The mechanics are in how to attribute revenue to SEO.

Surfaces. A buyer researches on a phone, asks a colleague, then messages you on WhatsApp. Two of those three happen where no tag runs at all — see tracking WhatsApp and phone enquiries.

Assistants. Someone reads an AI answer that names you, then types your brand into the address bar. That session is Direct, and nothing anywhere in your analytics records the assistant. The customer, asked, will tell you plainly.

Where the customer's answer is wrong, and in which direction

This is the half self-reported enthusiasts skip, and it's what makes the method defensible: the biases are documented and correctable rather than mysterious. Five findings from survey methodology land straight on your enquiry form.

  • Offering a list manufactures the answer. In Pew Research Center's split-sample testing, 58% named the economy as the most important issue when it was offered as an option, against 35% who volunteered it unprompted. A dropdown of your channels does that to your lead source data.
  • Open questions surface what you didn't think to ask. In the same testing, 43% of people given the open-ended version gave an answer that appeared nowhere on the closed list. Those are the ones worth paying for.
  • Social desirability shifts answers predictably. People understate what feels unflattering. On a lead form the pressure is mild, but it's why almost nobody types "I clicked an ad".
  • Memory credits the most recent touch. The customer names the last thing they can recall, which after a long consideration period is usually a brand search or a colleague. Both instruments fail in the same direction here.
  • "Google" means four things. Organic, an ad, Maps and your Business Profile all get typed as Google. This is the ambiguity that most deserves a follow-up on the call.

How to ask it so the answer is usable

The field is cheap to add and easy to ruin. Six decisions, and the first two do most of the work.

  1. Free text, one line, no dropdown. You want the customer's string, not a click on your own assumptions.
  2. Last field, and optional. Put it after the contact details so an abandoned form still leaves you a lead. A mandatory source field buys you a column of full stops and a worse completion rate.
  3. Ask again on the call, store both answers. The typed version and the version a human gets are different, and the second usually has a name in it.
  4. Code it monthly, keep the raw string forever. Buckets go in the report. The raw text is where you find the podcast episode or the industry WhatsApp group you had no idea existed.
  5. One field that locks, one sales can write. Nobody overwrites the customer's own words, and any disagreement between the two fields is a finding rather than an error.
  6. Ask "how did you hear about us", not "where did you find us". How invites a person or an event. Where invites a place — and you get "Google" typed by people whose accountant told them.

Reconcile them, rather than picking one

The output that matters is neither number on its own. It's the ratio between them, and the month that ratio changes.

Build one sheet, monthly, one row per enquiry: the CRM record, the channel analytics assigned to that same record, and the customer's typed answer. Matching per record rather than per month is the whole trick, and it needs first-touch hidden fields on your forms to be possible at all. Then read the disagreements instead of averaging them.

  • Field says Google, analytics says Direct. The organic session happened and then expired. Count it as organic in the CRM and stop arguing with the dashboard.
  • Field says Google, analytics says Paid. Trust the platform. A click ID is a fact, and customers cannot reliably tell an ad from a result.
  • Field names a person or a company. Referral. Analytics has no channel for this and never will, and on an established Indian business it is frequently the largest single bucket.
  • Field is blank on most records. The question is mandatory, badly placed, or being asked after the sale. Fix the form, not the report.
  • The ratio jumps in one month. Check the deploy log and the consent banner version before reading it as a marketing result — GA4 and Search Console never matching is the same lesson in another pair of tools.

The volume where a real measurement build starts to pay

Both instruments cost something, and the costs scale in opposite directions. The field costs one form field plus somebody reading free text once a month, which gets worse as you grow. A build costs mostly a fixed sum up front, which gets cheaper per enquiry as you grow. The crossover sits lower than most agencies suggest and higher than most founders expect.

What to run at each enquiry volume, and why.
Monthly enquiriesWhat to runWhy
Under 50The field alone. Read the answers; don't chart them.Any percentage off this base is noise, and analytics withholds rows outright when the counts are too small to aggregate safely.
50–200The field, plus first-touch hidden fields on every form.Two days of developer time, no recurring cost, and it is what makes reconciliation possible at all.
200–500Both, reconciled monthly, with the ratio printed in the report.Enough volume for shares to be stable. Nowhere near enough for the platforms to model your gaps.
Above 500A real measurement build — and keep the field anyway.Free text stops being readable by hand, and the platform data is finally large enough to be worth repairing.

What our own field returns, and the number we won't print

We run this question on our own enquiries and hold both the typed answer and the analytics channel for the same record. So we can describe the disagreement — and there is a number we won't publish.

We take three clients a month. A percentage drawn from that base would be exactly the fake precision this page argues against: a share computed from a few dozen records moves several points when two people change their minds, and you would have no way to audit it. A number you can't check isn't evidence.

What we can say is structural. Enquiries that name a specific page or a specific person are the ones analytics files under Direct, because the session that did the work expired weeks earlier. Enquiries that name another human being — a former client, an accountant, a founder in the same industry group — have no channel at all. Neither is a measurement error you can tune away.

It also decides what we agree to be judged on. Our guarantee runs against your trailing-90-day count of qualified leads from organic search, frozen on day one and counted in your CRM rather than in analytics, precisely because a CRM count doesn't fall when a tag stops firing. What counts as a qualified lead is worth settling before that number is frozen; how the guarantee works is the rest of it.

  • More accurate on a small business? The field, comfortably. It's the only one that sees every enquiry.
  • More accurate about ad versus organic? The platform, always. Customers can't tell those apart and a click ID can.
  • Which do you actually run? Both, with the ratio printed in the report — until your volume makes the free text unreadable, and then both with a build underneath.

Sources

  1. Writing Survey QuestionsPew Research Center
  2. [GA4] Behavioral modeling for consent modeGoogle Analytics Help
  3. [GA4] About data thresholdsGoogle Analytics Help
  4. Scopes of traffic-source dimensionsGoogle Analytics Help
  5. Full Third-Party Cookie Blocking and MoreWebKit · 2020-03-24

Every source above was checked on 27 August 2026.

Related questions.

Is "how did you hear about us" data reliable?

Reliable in coverage, unreliable in precision — the opposite of your analytics. Every enquiry produces an answer, including phone calls and referrals no tag can see. The answers then skew toward brand, word of mouth and recent memory. Both those biases have a known direction, so you can correct for them.

Should the lead source question be a dropdown or free text?

Free text. Survey testing consistently shows that offering a list pulls answers toward the listed options and hides everything you didn't anticipate. A dropdown of your own marketing channels returns your own assumptions with a percentage attached. The raw string is the useful artefact, and it takes minutes to code monthly.

Why does my analytics say Direct when customers say Google?

Because the organic session that did the work has expired. Safari deletes script-written storage after seven days without a return visit, and device switches split one buyer into two users. With the earlier session gone, the path analytics can see genuinely is entirely direct, so Direct takes the credit. The customer's memory is right and the tool isn't lying either.

Should the lead source field be mandatory?

No. A required field on an enquiry form costs you completions and fills the column with full stops and single characters. Make it optional and put it last, after the contact details, so an abandoned form still leaves you a contactable lead. A partly filled honest field beats a fully filled dishonest one.

At what enquiry volume do I need proper attribution tracking?

Roughly 500 enquiries a month is where free text stops being readable by hand and the platform data becomes large enough to be worth repairing. Below 200 a month, hidden first-touch fields on your forms plus the intake question cover almost everything a build would give you, for two days of developer time and no monthly bill.

Which number do I report to the board when the two disagree?

The CRM count, with the self-reported channel attached, and the analytics figure alongside it as a cross-check. Then print the gap between them as a number rather than resolving it quietly. Reporting your own uncertainty is the cheapest credibility available, and it stops the argument recurring every quarter.

Keep reading

Next, the thing you’ll ask after this.

Last slot's open

Make this the last growth call you book.

Grab the free strategy call and walk away with a 90-day growth plan — hired or not. Or just text us. Either way, you'll know exactly how we'd win.

Guaranteed or it's free · No lock-in · Free strategy call