Take the Market

Pipeline arithmetic in the open, for the people who own the number.

Sections

Playbooks

Self-reported attribution: How to design the field, code the answers and reconcile them with software attribution

Self-reported attribution asks buyers how they heard about you. Design the field, code answers and reconcile them with first-touch and last-touch data.

Document
Playbook
Funnel stage
Whole funnel
Published
Written by
Take the Market Desk
Edited by
Lila Odinaev

Self-reported attribution means asking buyers how they first heard about you and recording the source they remember, not the one your tracking software logged. It closes a measurable gap. A SparkToro study reported by Recast found that 100% of visits from Slack, Discord and WhatsApp were marked as direct, and a 12-month Refine Labs study showed a 90% gap between software attribution and self-reported data.

What is self-reported attribution, and what do the numbers show?

Self-reported attribution means asking buyers how they found you and recording their answer. Storylane defines the field as a question that asks buyers, in their own words, how they first heard about you, and that captures the source the buyer remembers rather than the source your tracking software recorded.

The gap it closes is specific. A peer mentions you in a private Slack group. A week later the buyer types your URL or searches your brand name. Your analytics then credit direct traffic or brand search, and the conversation that created the demand never appears in the data.

The published figures

Three sets of numbers describe the size of that gap.

  • Dark social marked as direct. Recast reports a SparkToro study of 1,000+ visits that found 100% of all visits from TikTok, Slack, Discord, Mastodon, and WhatsApp, and 75% of visits from Facebook Messenger, were marked as "direct".
  • A 90% gap over a year. Recast also cites a Refine Labs 12-month study that showed a 90% measurement gap between software-based attribution and self-reported customer data. The gap applied to channels such as social media, podcasts and word of mouth.
  • Before and after correction. SegmentStream published a channel table comparing counts with and without self-reported reattribution (SRA). In that table, Direct / None drops from 35% to 14% as five new awareness channels appear. Google / Organic fell from 532 to 194.

Why the counts shift

SegmentStream describes brand search, organic brand and direct traffic as sponges. These channels absorb credit from every awareness channel that does not produce a click. When buyers name the real source, credit moves out of those buckets and into channels such as podcasts, YouTube and AI chat.

In our reading, this is the core problem for a pipeline owner. Software attribution over-credits demand capture and under-credits the channels that create demand. Recast makes the same argument: relying only on software reports pushes budget toward the channels that capture demand and away from the channels that create it. For the planning side of that split, see demand creation vs. demand capture.

Placement changes how much data you get. SegmentStream reports an 85-95% response rate when the question sits in registration or checkout as an optional field. Post-purchase placement gets 50-60%. The rest of this piece covers how to write the field, how to code the answers and how to reconcile them with software attribution.

Self-reported attribution vs software attribution

Software attribution and self-reported attribution answer two different questions. Refine Labs framed the split as capturing "where people first hear about a vendor or solution, versus where people first interact digitally with a vendor or solution." Neither layer is wrong. They measure different moments.

LayerWhat it recordsWhat it missesWhen it is precise (our reading)
Software attributionTrackable touchpoints such as ad clicks, organic search visits, email opens, and form submissionsPeer conversations, private shares and influence older than the lookback windowWhen the first touch really was a click, such as a paid ad seen by a buyer who had never heard of you
Self-reported attributionThe channel, content, conversation or recommendation the buyer says influenced themExact timing, sequence and touches the buyer forgotWhen the source was memorable and produced no click, such as a podcast or a colleague

One practitioner guide summed up the trade. Software attribution "only captures a fraction of the overall picture", while the self-reported layer "captures what software never will." Buyer memory has its own error: buyers may click randomly or inaccurately recall where they first heard about you.

Why long, multi-person cycles shift credit to capture

B2B buying has longer sales funnels and multiple people from the same company involved in the same sales process. Lookback windows make this worse. A brand awareness effort in Q1 might not produce a demo request until Q3, and by then the original touch has expired. In our reading, each extra stakeholder adds another device and another first exposure that software never links to the account. Credit then falls to whoever clicked last.

The attribution mirage

Refine Labs defined the mirage as what happens when a system attributes a success or failure to the wrong cause. Its scenario: a chief marketing officer (CMO) asked peers in a Slack community for advice, searched the names they gave her, and booked four demos. In that scenario, software would have credited SEO for two companies and Paid Ads for the other two. By her own account, for Companies A, B, and C the real source originates from a Slack community thread.

So in that example, three of the four search-credited demos were created somewhere else. In our reading, it is also why channels that do demand capture look stronger than the channels that create demand. See demand creation vs demand capture.

The reconciliation step follows from this. When the two layers disagree, keep both. The hybrid approach records both, the visible touchpoint (the Google search) and the invisible catalyst (the podcast). Store them as two CRM fields, "captured by" and "created by", and report them side by side.

Should the how did you hear about us field be free text or a dropdown?

Two published positions pull in opposite directions, and both have a reporting argument behind them.

The first favors structure. Babelquest's guide to HubSpot forms recommends always using a drop down box with pre-filled options over a free-text field because it makes reporting easy, and says the box should also be a mandatory field. The same guide names the cost. Answers stay coarse, so a buyer picks events or social media and you never learn which event or platform.

The second favors the buyer's own words. Storylane argues that a dropdown lists the channels you already believe in, so buyers settle on the nearest option, while free text lets them name the podcast, the person, or the community you did not know mattered. Storylane also concedes that pure free text is messy to report on and runs a hybrid on most demo forms.

A clean label still hides detail. Growth Method notes that people say "Google" when they mean a paid ad, an organic result, or something they half-remember from LinkedIn.

DesignWhat you getReporting cost (our reading)Fits (our reading)
Mandatory dropdownChannel counts ready on day oneClose to nothing to report, but new channels never surfaceTeams that only need channel-level splits
Free text onlyNamed shows, people and communitiesEvery answer is coded by hand: at 200 submissions a quarter (an example, not a benchmark), that is 200 answers to readLow-volume, high-value forms
Dropdown plus optional text boxChannel data plus detail where the buyer offers itOnly the typed answers need coding, plus a quarterly review of OtherMost demo and contact forms

How to set up the hybrid

  1. Add the text box with a seeded placeholder, for example e.g., a coworker mentioned it, saw a LinkedIn post, heard a podcast.
  2. Decide on mandatory or optional. Storylane's contact sales pattern is optional, placed after the required fields. In our reading, a required box invites throwaway answers. That is the noise this field is meant to remove.
  3. Review Other every quarter. When the same answer keeps showing up there, promote it to its own option.

It reads only the typed answers to find the named podcast or Slack group. Those named sources are what separate demand creation from demand capture in your reports.

Where the attribution question goes on the form, and whether to make it required

Storylane's view is blunt: "Placement matters more than wording." The reason it gives is that answer quality tracks buyer intent, so the same field gets careful answers on one form and junk on another.

Where to ask

Growth Method lists three common homes for the question: a question on a signup or demo form, a post-purchase survey, or a standard question your sales team asks on every first call.

PlacementSource guidanceHow we use it (our reading)
Demo request formAlways ask. Intent is highestPrimary capture point
Free trial signupAsk only if the form is already short, otherwise move it into the first in-product welcome stepWelcome step for most products
Newsletter or content downloadSkip it, because low intent produces low-effort answersSkip
First sales callAlways ask, in the first five minutesQuality check on the form answer

Recast suggests asking on lead magnet form fill, which conflicts with Storylane's advice to skip content downloads. We side with intent. A confirmation page is an option we use only as a fallback when the form field stays blank, and it should carry the same wording.

On the call, change the question. Buyers often cannot recall a first exposure, but they can tell you what made them act today. Storylane reports that a rep who asks "What made you decide to reach out today?" gets a sharper answer than the form does.

Required or optional

This is a real trade-off. Recast reports that when you make the field optional, nearly 30% of people do not fill out the form. As an example, not a benchmark: of 200 demo requests, nearly 30% skipping means about 60 records with no answer. Even when people do answer, the data is a sample, not a census that skews toward engaged buyers.

Our rule: make it required on the demo form, where the buyer expects a qualifying step. Keep it optional on contact sales, as covered earlier. Let the first call fill the gaps on both.

A plan for non-answers

Expect answers like "Google," "internet," "not sure," and the classic "I've always known about you." Storylane treats these as almost always a design failure, not proof the method is useless. Code them on purpose:

  1. Overwrite the code with the call answer and keep the original text in a second field.

A coding taxonomy for self-reported answers you can copy

SegmentStream's before-and-after channel table gives a workable starting list. It adds Word of Mouth, Podcast, TV / Radio, OOH and Influencer as channels that click data never showed, alongside YouTube, TikTok and AI chat. We adapted that list for B2B into two levels. Level 1 is the channel you report on. Level 2 is the detail that makes the answer usable: the podcast name, the event or the community.

Level 1 channelLevel 2 detail examplesCoding rule (our method)
Word of mouthcolleague, customer, investorAny named person wins, even if a place is also named
Podcastshow nameRecord the show, not the host
Eventsconference or meetup nameUse only when no person is named
AI chatChatGPT, PerplexityCode here even if a search followed
YouTubechannel or videoSeparate from Social
CommunitiesSlack group, forum, subredditName the specific group
Searchunspecified, brand termUse unspecified when only an engine is named
Brand awarenessalready knewPrior familiarity, no named source
Unclearblank, gibberishNever guess

SegmentStream treats answers like "Already knew about you," "word of mouth," and "a friend recommended you" as measures of brand strength.

Rules for ambiguous answers

  1. A person beats a place. SegmentStream's example, "My colleague Sarah mentioned you at a conference", codes to Word of mouth with the detail "colleague, conference."
  2. When two channels appear, code the first mentioned and put the second in the detail field.

The CRM property design

Build three custom contact properties in your CRM (customer relationship management system). The example below uses HubSpot.

New custom properties contain null values, unless you configured a default value during the set up.

Finalize the dropdown options before you build reports on them. Properties in use on records or in HubSpot tools such as segments or workflows are among those that cannot be edited.

Is self-reported attribution accurate?

Partly. Self-reported attribution captures what the buyer remembers, and memory is a biased sample of the journey. In our reading, the clearest public test is Dreamdata's.

What the Dreamdata test found

Dreamdata ran a test on 100 demo calls booked on its website. The form asked "How did you first hear about Dreamdata?" Once blanks and non-answers were removed, the useful answers came to 49 out of the 100 submissions. In our reading, its tracking, by contrast, joined 77 out of 100 form submissions with existing accounts, so software saw more journeys than the field could describe.

The answers were generally vague and focused on unspecified channels. Dreamdata's explanation was that buyers might write down the strongest or latest memory, which is often not the touch that brought them in. After the test, Dreamdata said it would delete the form fill option.

LeadJourney describes the same mechanism: memory keeps the most recent or most memorable touch, not the ad that started the journey weeks earlier. As a result, the channels that start journeys are systematically undercounted.

The limits, and what each one means for reporting

LimitWhat goes missingHow to read the field (our reading)
Recall biasEarly touches. Answers over-index on the last memorable touchpointTreat the answer as the trigger, not the origin
No cost dataSpend per channel. LeadJourney lists what a lead from each channel costs, based on real ad spend, among the questions a form field cannot answerPull cost from ad platforms and join it yourself
No denominatorReach. You cannot calculate reach or a conversion rate from the fieldUse it for mix, not for efficiency
No account-level multi-touch viewColleagues' touches. The field ignores touches by other stakeholders in the accountCompare against account journeys, not single leads

A worked example of the sample size

Here is an example, not a benchmark. If 200 demo requests produced useful answers at Dreamdata's rate of 49 per 100 submissions, you would have 98 codable answers. That is enough to see whether word of mouth's share of answers rises or falls quarter to quarter. It is not enough to trust any single lead's answer as its source.

Read it as a trend

We think the limits point to one rule: read the field as a trend, not as the answer for each lead. Track the share of each coded channel by month and look for movement. When one lead's answer conflicts with its tracked journey, keep both on the record and do not overwrite either one. Budget moves should rest on the trend, checked against cost and against incrementality tests where you can run them.

The weekly reconciliation table against first-touch and last-touch

The weekly table turns two attribution layers into one view. Each row is a coded self-reported channel from your taxonomy. The columns are what software recorded as first touch and last touch, split into leads that agree and leads that conflict.

The logic follows the hybrid model a88lab describes. When the two sources agree, "the software says organic search, the buyer confirms they found you through a Google search, attribution is straightforward." When they conflict, the model "doesn't pick one or discard the other. It records both", the visible touch and the stated catalyst.

The template

Copy this into a sheet. Each cell holds a count of leads for the week.

Coded self-reportLeadsFirst-touch agreesFirst-touch conflicts (top software value)Last-touch agreesLast-touch conflicts (top software value)Hybrid share (our method)
Word of mouthnnn (direct)nn (direct)conflicts ÷ leads
Podcastnnn (direct)nn (organic search)conflicts ÷ leads
Communitynnn (direct)nn (direct)conflicts ÷ leads
Paid searchnnnnnconflicts ÷ leads
Organic searchnnnnnconflicts ÷ leads
Unclear / uncodednnot scorednot scorednot scorednot scorednot scored

For channels software cannot see, such as word of mouth or podcast, "agrees" will rarely fill. That is expected. The conflict column, with the software value it lost to, is where the reassignment shows up.

The weekly routine

  1. Export the week's demo requests with the coded self-report, software first touch and software last touch.
  2. Drop uncoded answers into the last row and keep them out of the rates.
  3. Count each row against both columns.
  4. Compute two numbers per row. Match rate is agreeing leads divided by leads in that row. Hybrid share is conflicting leads divided by leads in that row.
  5. Read the conflict values. A row where most conflicts sit on "direct" is a channel your software is crediting to nobody.

A worked example

Take 200 demo requests in a week as an example input, not a benchmark. Suppose the word of mouth, podcast and community rows together hold D leads that software recorded as direct. Reassign those D leads to their stated channel in a hybrid column, keeping the direct value alongside it. The overall match rate for first touch is the sum of first-touch agrees divided by the scored leads, and the share of the week reassigned out of direct is D divided by 200.

Run it weekly so the conflicts stay small enough to read by hand. a88lab notes that some setups run on "a CRM, a custom form field, and a monthly spreadsheet review"; the weekly cadence is our choice. Watch the trend across weeks too. Software windows are short: buying cycles "don't respect your attribution tool's default 14- or 30-day window," so first-touch conflicts on long deals tend to grow, in our reading. Over time, the conflict patterns reveal "exactly where your software-only attribution is systematically wrong." Feed the hybrid shares into the demand gen budget allocator before you cut a channel that only shows up as direct.

Steps, owners, metrics and timeline for reporting the hybrid view

The playbook runs in five steps. Each one has a single owner, a written output and a check that shows the step worked before the next one starts.

StepOwnerOutputCheck that it worked
1. Field launchMarketing opsFree-text field live on every high-intent form, synced to a CRM propertyTest submissions land in the property, and blanks are visible as blanks
2. TaxonomyDemand genCoding sheet with channel codes and an unknown codeTwo people code the same sample and agree on most rows
3. Weekly codingMarketing ops, with sales developmentEvery new answer coded; vague ones confirmed on the first callNo uncoded rows older than seven days
4. Monthly hybrid reportDemand genSelf-reported pipeline by channel beside the software viewEvery opportunity in the month carries both values
5. Quarterly budget reviewDemand gen leadChannel budget changes with the evidence behind eachEach change cites both data layers

The model for step 1 is a test Refine Labs ran for 12 months. It added a mandatory free-text field to its key declared intent conversion form, and the answers were reviewed in parallel with software attribution data from Hubspot.

Step 3 gives sales development a real job. Dreamdata suggests verifying responses through follow-up questions or secondary sources. In practice, a rep asks one question on the discovery call when the form answer was coded "unknown" and updates the code.

The four metrics and their formulas

  • Response rate: submissions with a non-blank answer, divided by all submissions.
  • Uncodable share: answers coded "unknown", divided by answers received.
  • Match rate: submissions where the coded channel equals the software first-touch channel, divided by submissions that carry both.
  • Self-reported pipeline by channel: sum of opportunity amount, grouped by coded channel.

Take 200 demo submissions in a month as an example, not a benchmark. With that volume, every 2 answers coded "unknown" add one point to uncodable share, since 2 of 200 is 1%. That makes the weekly check easy to read without a dashboard.

The 90-day timeline

Days 1 to 30 cover steps 1 and 2. Days 31 to 60 add weekly coding and the first monthly report. The a88lab guide describes the entry version as a plan to pull self-reported data into a monthly report alongside your standard attribution dashboard.

Days 61 to 90 end with the first quarterly budget review. Hold budget cuts to channels that only look weak in software until a second quarter of data arrives, because a brand awareness effort in Q1 might not produce a demo request until Q3. We think a single quarter is too short to move money on match rate alone. Run the proposed shifts through the demand gen budget allocator and check the effect on pipeline velocity before they are approved.

What this page does not cover

This page does not cover how to design incrementality tests, how to join ad platform cost data to coded channels, or how to build a full multi-touch attribution model. It uses HubSpot only as an example of CRM property setup and does not evaluate attribution tools. Nothing here is financial or legal advice, and budget decisions should rest on your own data and review.

Related on Take the Market: ABM playbook for one-to-few programs: the account list, the plays, the metrics and a 90-day plan; Pipeline coverage calculator: the ratio you need from your own win rate and slippage; Demand generation calculator: reverse funnel math from a revenue target to visitors, leads, MQLs, SQLs and opportuniti.

Questions

What is self-reported attribution?
Self-reported attribution means asking buyers how they found you and recording their answer, often in their own words. It captures the source the buyer remembers rather than the source your tracking software recorded. A peer mention in a private Slack group, for example, later shows up in analytics as direct traffic or brand search, and the self-reported answer is where that conversation appears.
Should how did you hear about us be a dropdown or free text?
Babelquest recommends a mandatory dropdown because it makes reporting easy, though answers stay coarse. Storylane argues that a dropdown lists only the channels you already believe in, while free text lets buyers name the podcast, person or community. Storylane also concedes that pure free text is messy to report on. In our reading, a dropdown plus an optional text box fits most demo and contact forms, with a quarterly review of the Other answers.
How do you categorize how did you hear about us answers?
Use a two-level taxonomy. Level 1 is the reporting channel, such as word of mouth, podcast, events, AI chat, YouTube, communities, search, brand awareness and unclear. Level 2 holds the detail, such as the show or group name. Apply fixed rules: a named person beats a place, the first channel mentioned is coded and the second goes in the detail field, and unclear answers are never guessed.
How do you combine self-reported attribution with first-touch and last-touch attribution?
Build a weekly reconciliation table with one row per coded self-reported channel and columns showing whether software first touch and last touch agree or conflict. Match rate is agreeing leads divided by leads in the row, and hybrid share is conflicting leads divided by leads in the row. When the two layers disagree, keep both values on the record, for example as "captured by" and "created by" fields in your customer relationship management (CRM) system.
Is self-reported attribution accurate?
Partly. In Dreamdata's test of 100 demo calls, useful answers came to 49 of the 100 submissions, while its tracking joined 77 of 100 submissions with existing accounts. Buyers tend to report the latest or most memorable touch, so the channels that start journeys are undercounted. Read the field as a trend across months, not as the definitive source for each lead.
Where should the how did you hear about us question go on a demo form?
Storylane's guidance is to always ask on the demo request form, where buyer intent is highest, and to ask again in the first five minutes of the first sales call. SegmentStream reports an 85 to 95% response rate when the question sits in registration or checkout as an optional field. Our rule is to make it required on the demo form and keep it optional, placed after the required fields, on contact sales forms.

Sources

  1. How Did You Hear About Us? Options and Survey Design, storylane.io, 2026-09-30.
  2. ‘How did you hear about us?’ survey and the limitations of current measurement techniques - Recast, Recast, 2023-05-31.
  3. Self-Reported Reattribution for Dark Funnel Channels, SegmentStream.
  4. The Attribution Mirage, refinelabs.com.
  5. Hybrid Attribution Model for B2B SaaS: How to Measure What Your Software Can't Track, a88lab.com, 2023-05-12.
  6. B2B Marketing Attribution Guide: How to Master It in 2024 - Analytics Platform - Matomo, Analytics Platform - Matomo, 2024-05-21.
  7. HubSpot Marketing: How to use self-reported attribution in your forms, babelquest.co.uk.
  8. What Is Self-Reported Attribution? Definition & Guide | Growth Method, growthmethod.com, 2025-02-20.
  9. Create and edit properties, knowledge.hubspot.com, 2019-11-21.
  10. We tested self-reported attribution. Here’s what we learned., Dreamdata, Dreamdata, 2022-03-14.
  11. Self-Reported Attribution, Measured, LeadJourney.
  12. Self-reported attribution | Dreamdata, Dreamdata.