Self-reported attribution means crediting deals to a channel based on what buyers say about how they found you, and it’s the best option a small company has when no CRM does attribution for it. I keep it in a spreadsheet with four rules: only named content channels count, only after a start date, the source stays blank when nobody knows, and the evidence column holds the buyer’s own words. The rules keep content’s share low enough that a sceptical founder believes it. Here’s every column, how each rule works, worked examples and the free template.
Without a CRM set up for attribution, content’s share of deals is whatever the most confident person in the meeting says it is. So I keep a deal tracker built on self-reported attribution, the buyer’s own account of how they found you, and I stick to four rules that stop me inflating it. It’s a spreadsheet I built for a small B2B SaaS team with no attribution setup, and the rules are what make it hold up when someone asks “says who?”

Why does content need a deal tracker at all?
Because most small companies have no system that answers “did content bring in this deal?”, and people fill the gap with opinion. HubSpot’s revenue attribution reports, for example, are Marketing Hub Enterprise only, and they ignore any deal that isn’t closed won with a contact attached. A five-person company on a starter plan isn’t getting that report.
Even good software misses most of what happens: Gartner found B2B buyers spend only 17% of their buying time meeting potential suppliers, and the rest goes on research you can’t see, like an AI answer or a colleague forwarding your comparison page. 6sense’s 2025 study found 94% of B2B buyers use LLMs while they buy, and an AI answer leaves almost no trail in analytics. I’ve covered measuring AI visibility when analytics can’t see it; the deal tracker is the sales-side half of that.
What columns does a self-reported attribution tracker need?
Fourteen, and every one exists to answer a question somebody will ask when you report content’s share:
| Column | What goes in it | Why it’s there |
|---|---|---|
| Date closed | The close date, typed as 2026-10-12 | Rule 2 runs off it, and day-month swaps wreck it |
| Month | Formula | Monthly totals on the dashboard |
| Company, Contact | Who bought | So sales can check your row against theirs |
| Status | Closed won, In progress, Lost | Only closed won counts; the rest is pipeline you watch |
| Deal type | New, Expansion, Renewal | Renewals with no new content touch don’t count |
| Value, Value (reporting) | Deal currency, then converted | One rate on the Settings tab, stated as an assumption |
| How they found us | A fixed list of channels | Rule 1 needs a closed list, never free text |
| Source detail | The specifics | “Asked ChatGPT for tools in the category” beats “AI” |
| Attribute to content | Yes, No or blank | Your judgement call, made row by row |
| Counts | Formula | Yes only if closed won, marked Yes and after the start date |
| Evidence | The buyer’s words, or where the source came from | Rule 4 |
| Notes | Everything else | Other touches, doubts, what to confirm |
The split between “Attribute to content” and “Counts” does the most work: you make the judgement in one column and a formula enforces the rules in the next, so a deal you like the look of can’t count if it closed before the start date or hasn’t closed at all.
How do the four rules stop an inflated claim?
Each rule removes one way people usually pad self-reported attribution.
Named channels only. The list has eight sources, and only four can ever count: Search, AI assistant, Website / content and LinkedIn. Referral, Outbound, Existing customer and Unknown are on the list so you can log them properly, and the formula leaves them out of the total. Decide the four before the first deal goes in, because deciding after is how “the founder mentioned our blog once” becomes content-sourced.
After the start date. Pick the day the content programme you’re judged on began, such as a site relaunch or your first week in the role. Anything closed before it doesn’t count, even if content helped, and a buyer who knew the company before that date is a No, however they came back.

Blank when unknown. If nobody knows how a buyer found you, the field stays empty until sales confirms it, and blank never counts. Guessing “probably search” feels harmless, but five guesses a quarter add up to a share nobody can check. The dashboard counts blanks among closed deals too, so a high share sitting on top of lots of blanks reads as unfinished, which it is.
The buyer’s own words. A dropdown records where someone thinks the buyer came from, and the evidence column is there to back that up or knock it down.
Where does self-reported attribution get the buyer’s own words?
Mostly from sales calls, then email threads, then forms, in that order of trust. Call recordings and transcripts are best, because people describe how they found you in passing and in detail. Signup forms are weakest, and the data backs that up: Ruler Analytics tested about 350 demo-form leads and found 72% of “how did you hear about us” answers were vague or empty, and 56% were one-word answers like “Google”.
Rand Fishkin made the deeper point about asking at all:
“Human memory is fallible. It’s incomplete and inaccurate.”
He wrote that in SparkToro’s piece on the problems with “how did you hear about us?”, and it’s why the evidence column ranks sources instead of trusting whichever one arrived first. A buyer’s own sentence on a call beats a source field typed by a rep, which beats a one-word form answer, which beats your own inference. When a row rests on a weak source, the note says so.

How do the rules play out on example deals?
Here are four made-up deals, the kind every small B2B team sees in a month, and what the tracker does with each:
| The deal | Rule that decides it | Attribute to content |
|---|---|---|
| On the discovery call, the buyer says they asked an AI assistant for tools in your category and you were in the answer. First contact was after the start date | All four pass | Yes, with the quote in Evidence |
| The buyer found your comparison page on Google last month, but they’d sat through a sales demo with you two years ago | Rule 2: the relationship predates the start date | No |
| A happy customer referred them, and they mention they’d also read your blog | Rule 1: the channel is the referral | No, blog noted in Notes |
| Closed won, nothing in the CRM, and the call never covered how they found you | Rule 3: nobody knows | Blank until sales confirms |
One Yes out of four is normal, and that’s on purpose: every No and blank is a deal someone would’ve happily counted for content in a slide, and the tracker stops anyone making that slide.

How do you handle deals with several touches?
Credit the channel the buyer names, and leave individual articles out of it. You can’t prove a single article closed a deal, so the tracker credits the content and search channel as a whole. That includes pieces written before you joined: if an old founder-written post brings a buyer in after the start date, it counts, because the channel is what you’re responsible for.
When a buyer mentions several touches, the row records the one they name as how they found you, and the others go in Notes. The exception is a relationship that predates the start date, which makes the row a No whatever happened after. Multi-touch models split credit across the touches software can see, while this tracker makes a smaller claim: the touch the buyer told you about.
How do you report from it without overstating?
Report credited closed deals and content’s share of closed revenue in the same breath as the blank count. Then report content-sourced pipeline separately and label it as pipeline. The dashboard in the template puts all of them on one screen, so nobody can quote the share without seeing the blanks.
Expect the first few reports to look small, possibly empty. B2B deals take months; Dreamdata’s benchmark puts the average B2B buying process at 211 days, so a new tracker mostly records buyers who started researching before your start date, and rule 2 throws them out. Tell leadership that before the first report goes out. I wrote about setting that timeline with leadership on day one, and this tracker is how you keep score against it. For the wider question of what to report past the MQL, there’s my piece on content marketing metrics.
At a previous company, the content operation contributed to 48% marketing-sourced pipeline in peak months, and I wrote up the method behind that 48%. That figure held up because sales agreed the definitions first, and the tracker’s rules come straight from them.
When should you move to a proper CRM setup?
Move once sales records the source on every deal without being asked, or earlier if you’re logging more deals than you can check each week or need to split budget across several paid and owned channels. At that point, set up the CRM’s source fields to match the tracker’s list, so your history carries over.

Keep the evidence column, though, even after the move, because self-reported attribution catches what tracking misses. Software can log which pages a contact visited, but it won’t hear a buyer say an AI assistant recommended you. I track that side through a fixed AI citation prompt set, and the deal tracker shows which of those citations turned into closed deals.
What would I do differently next time?
I’d get sales to sign off the channel list and the start date in writing before the first row goes in. Every argument about attribution I’ve seen was about a definition nobody wrote down, and the tracker can only enforce rules people already agreed to. I’d also ask whoever runs sales calls to add one question to every discovery call, “how did you first come across us?”, and to note the answer word for word. That moves most rows up from a form answer or my own guess to the buyer’s words on a call, and it adds about ten seconds to each call.
Download the template
The template has four tabs: How to use, Dashboard, Deals and Settings. Pink cells are yours to fill and off-white cells are formulas. Set your start date and currency rate on Settings, delete the example row, and log every deal sales closes, including the ones that won’t count.
Frequently asked questions
Self-reported attribution is crediting a deal to a marketing channel based on what the buyer says about how they found you, usually captured on a sales call, in an email or on a form. It catches sources software can’t see, like AI assistants, word of mouth and podcasts, but it’s biased by memory, so log the buyer’s exact words as evidence instead of a one-word label.
You can track content attribution without a CRM by logging every deal in a spreadsheet with its source, a Yes, No or blank judgement, and the buyer’s own words as evidence. Fix the list of content channels that can count and a start date before the first deal goes in. A formula should enforce the rules, so only closed-won deals after the start date marked Yes count.
No. A deal with an unknown source should stay blank in a content attribution tracker until sales confirms where the buyer came from, and blank should never count toward content’s total. Report how many blanks there are next to content’s share of revenue, so everyone can see when a high share rests on a few known sources.
A small company should move to CRM attribution once sales records the source on every deal without prompting, deal volume is too high to read each row’s evidence weekly, or budget needs splitting across several channels. Set the CRM’s source fields to match the spreadsheet’s list so history carries over, and keep capturing the buyer’s own words, since software can’t record what a buyer said on a call.
