Self-reported attribution beats your multi-touch model. Free text kills it.

RevOps/No. 22/6 min read

Self-reported attribution beats your multi-touch model. Free text kills it.

Your multi-touch report credits the last tracked click. The podcast, the Slack thread, the referral that actually moved the buyer never left a cookie. One governed field catches what the model can’t. Free text throws it away.

All field notes

Ask your buyers one question on the form, “How did you hear about us?”, store the answer in a structured field, and it will out-report your multi-touch model on exactly the channels the model was built to miss. This isn’t a survey nicety. Self-reported attribution is the cheapest, most honest source of channel data most B2B teams already have and still refuse to collect properly.

Most teams fail it one of two ways. They don’t ask at all, so the dark funnel stays dark. Or they ask, but they collect the answer in a free-text box, which lands in the CRM as ten thousand unique snowflakes no report can group. Either way, the one field that could see what your tracking can’t ends up producing nothing. The fix is to treat it like a real property, not a comment box.

Your tracking sees clicks. Buyers move on things that don’t click.

Start with how people actually buy now. Gartner’s research finds that 75% of B2B buyers prefer a rep-free sales experience, doing most of their evaluation on their own, in channels that never touch one of your tracked links. The peer recommendation in a Slack group. The podcast on a commute. The old colleague who used you at their last company. None of it fires a pixel. Your multi-touch model can only credit what it observes, so it hands the deal to whatever tracked click happened to be last. That’s the same structural blind spot behind why your attribution report can’t see most of the deal.

Look at what your CRM does automatically. HubSpot sets the Original Traffic Source property on the first visit, and it can only file that visit into a fixed set of buckets: Organic search, Paid search, Email marketing, Organic social, Referrals, AI Referrals, Other campaigns, Direct traffic, Paid social. Notice what isn’t on that list. “A peer vouched for you in a private community” has nowhere to go, so it collapses into Direct traffic or Other campaigns, the same landfill that makes your “Direct” number a lie. And HubSpot’s own docs note that if the visitor runs an ad-blocker, the tracking cookie may never fire at all. The channel that actually moved them is invisible by design, not by accident.

Automatic tracking is a record of what your website saw. It is not a record of what the buyer experienced. Self-reported attribution is the only cheap way to capture the difference, and you capture it by asking.

Build it as a governed property, not a comment box

The entire value of self-reported attribution lives or dies on one decision: is the field a structured single-select, or is it free text? Free text feels generous and it destroys the data. “LinkedIn,” “linkedin,” “saw a post on LI,” and “a comment on someone’s LinkedIn” are four different rows that never group, the exact fragmentation that turns UTM reports into noise. If you can’t run a clean count on the field, you don’t have attribution data. You have a wall of sticky notes.

So build the field as a single-select property with a closed, finite list of values you can actually report on. A few rules make it hold.

Keep the value list short, mutually exclusive, and mapped to real channels

Six to ten values, not thirty. Each one should map to a channel you could genuinely fund or cut: referral_colleague, search_engine, social_media, podcast_webinar, community_slack, event_conference, existing_customer, and one other. Resist the urge to get granular. The goal isn’t a perfect taxonomy of the internet, it’s a set of buckets a buyer can pick from in two seconds and a report can total without a human translating it.

Give the other option a conditional free-text follow-up, but only there. That free text is a discovery input, a queue you mine each quarter to see whether a new channel has earned its own picklist value. It is never the primary field.

Ask at or after conversion, and ask once

First touch is the wrong moment. A cold visitor doesn’t know yet, and forcing the question kills the form. Ask at or just after conversion, when the buyer has decided you’re worth talking to: the demo request form, the first onboarding step, the post-sale kickoff. Store the answer on the contact in a dedicated property like self_reported_source.

Do not overwrite HubSpot’s Original Source with it. Keep both. One is what your site observed, the other is what the buyer says out loud. The gap between the two is the whole report.

Reconcile it against the tracked model, don’t replace it

Self-reported attribution isn’t a better single source of truth. Nothing is. Its job is to sanity-check the model you already run. For your closed-won deals in a quarter, put tracked Original Source next to self_reported_source, side by side. Where they agree, you can trust the number. Where self-reported says “podcast” and the tracked model says “Direct traffic,” you’ve just found pipeline your budget has been ignoring. That reconciliation is the point. One number from one model is the thing that’s been quietly lying to you.

Govern the field like you’d govern any other

A closed value list only stays clean if someone owns it. Name one owner. Document the allowed values. Review the other free-text answers quarterly and promote a value to the list only when a real channel keeps showing up. Make the field required on the forms that matter, so the answer lands on nearly every record instead of the third who felt like typing. This is unglamorous maintenance, and it’s the difference between a field that reports and a field that rots.

What good looks like

Get this right and you have a second, independent read on where pipeline actually comes from, sitting right next to the tracked one. The podcast that never fired a pixel starts showing up on real deals, so you fund it on purpose instead of cutting it because a last-touch report said it did nothing. That’s the measurement discipline underneath our Growth & Demand Generation work: instrument what you can, capture what you can’t, and put budget behind the reconciled view rather than the convenient one.

The cost of skipping it is the quarter you already know. You allocate spend against the lit slice of the journey, starve the dark-social motion that’s quietly sourcing your best deals, and show the board a clean attribution chart built on a third of the story. A model that only sees the tracked touches isn’t conservative. It’s wrong in a specific, expensive direction.

This is the data-model layer under every Marketing Operations & CRM engagement we run. Model the field properly first, then let the reporting sit on something solid. Build it in the other order and you get a tidy dashboard rendering a guess.

Not sure whether your “How did you hear about us” field is producing data or noise? That’s one of the first things we map in the free 30-minute audit. We look at what you’re collecting, how it’s structured, and where your attribution is blind, then hand you the prioritized list of fixes. Whether we work together or not.

The audit

Is your “How did you hear about us” field data or noise?

That’s one of the first things we map in the free 30-minute audit. We look at what you’re collecting, how it’s structured, and where your attribution is blind, then hand you the prioritized list of fixes. Whether we work together or not.

Book the audit →

Discover more from LSR Marketing

Subscribe now to keep reading and get access to the full archive.

Continue reading