Attribution Readout — 2026-10-05
The question
Four tools report 35 to 60 conversions for the same month. Which number do we trust, which model do we use, and where should the budget go? This is a fictional B2B SaaS with a 90-day sales cycle.
Source of truth
The CRM, at 35 closed deals, defines how many conversions happened. It's the only system where revenue is real. The other sources only explain where those deals came from.
There is a timing problem to fix first. With a 90-day cycle, the 35 deals closed last month were mostly sourced from touches 2–4 months ago. The ad platforms' 50 and 40 are probably mostly leads, demos, or form fills in the last 30 days. So the numbers are likely not measuring the same event in the same period. Before comparing anything, confirm what each tool counts as a "conversion":
| Source | Probably counting | Window |
|---|---|---|
| Google Ads (50) | Lead or demo-request events, including view-through | Its own attribution window |
| Meta (40) | Same, with a generous view-through window | Its own attribution window |
| GA4 (60) | Any key event, including repeat or non-deal events | Last non-direct click |
| CRM (35) | Closed-won deals | Closed last month, sourced from months earlier |
What each source says
| Source | Reports | Bias | Our read |
|---|---|---|---|
| Google Ads | 50 | Over-claims itself, with view-through and a self-serving window | Claims are inflated |
| Meta | 40 | Same bias, and likely strongest on view-through | Claims are inflated |
| GA4 | 60 | Counts more than deals, so likely lead-level or double-fired events, and sends unknowns to direct | Not a deal count |
| CRM | 35 | Depends on what reps and forms recorded | Trust for the count, not the source field |
Google and Meta together claim 90 conversions against 35 real deals. Never sum them. Overlap is certain, and some of what they claim are leads that never closed. GA4's 60 above the CRM's 35 is a sign it's counting something other than closed deals. Don't try to make these tie out. Explain the gap instead.
Model comparison
Use first-touch and position-based (U-shaped) side by side, computed from CRM or warehouse data. Do not use the GA4 or Google Ads last-click or data-driven views as the decision model.
- Last-touch will over-credit branded search and direct. Those are the final steps of a 90-day journey, not its cause.
- Data-driven attribution needs roughly 200 conversions and 2,000 interactions a month. At 35 deals, it would likely collapse toward last-click.
- First-touch shows what creates demand. Position-based (40/40/20) shows what created the opportunity and what closed it, which fits the B2B "created" and "closed" moments.
- The gap between first-touch and last-touch is itself the insight. Channels that rank much higher in first-touch are your demand creators.
Confidence and gaps
- Direct at 45% of sessions is a measurement problem, not a channel. It's probably a mix of stripped referrers, dark social, dropped UTMs, app-to-web handoffs, and people who found you elsewhere and typed your name. It most likely hides real top-of-funnel work. High confidence on this diagnosis, low confidence on the split.
- Branded search probably harvests demand that other channels, such as Meta, content, and word of mouth, created. Segment it from non-branded before judging any search spend.
- Offline touches, like sales conversations, events, and referrals, are invisible to MTA. This is where B2B tracking is weakest.
- AI search is a likely contributor to the direct and branded-search inflation. See the ai-seo skill for that.
- Sample size: 35 deals is small. One month of data can swing a lot, so look at trends over several months rather than this month's split.
Recommendation
What to trust
- The CRM for the deal count (35).
- Platform numbers only as directional trends, not as counts. If every source shows a channel rising or falling, believe the direction.
- Self-reported attribution as the tiebreaker where platforms fight over the same deals.
Which model
First-touch and position-based, side by side, on CRM data. Report the first-touch vs. last-touch gap every month.
Budget (moderate confidence, no big reallocations yet)
- Don't cut anything based on this month's last-touch view. Cutting Meta or other upper-funnel spend because it "converts less" is the classic mistake. Its effect shows up months later, as direct or branded search.
- Don't scale based on platform-reported conversions. Google and Meta claim 2.5× the real deals between them.
- Hold the total budget flat for 1–2 quarters while you fix measurement. Shift only small amounts, around 10%, toward channels that look good in both first-touch and position-based views.
- Judge channels on pipeline and revenue per dollar from the CRM, not on platform conversions. Use cohorts that match the 90-day lag, for example deals closed this month against spend from 90 days ago.
- Split branded from non-branded search. Cap branded spend if it's mostly capturing demand that already existed.
Fixes to make in the next 30 days
- Add "How did you first hear about us?" to the demo-request form. Use a pick-list plus free text, and write the answer to the CRM. This is the most direct way to see inside the 45% direct. Discount the shares you get, since recall favors memorable touches.
- Audit what each platform counts as a conversion. Align everything to a CRM-validated event such as a qualified opportunity or closed-won, and import offline conversions back to Google and Meta.
- Check UTM discipline and the referrer exclusions (OAuth, checkout, self-referrals) so direct shrinks to what it truly is.
- Write the first-touch source and a full touch path into the CRM, rolled up to the account, since one B2B deal involves several people.
- Fix the identify gap so that anonymous browsing is joined to the demo request. The analytics skill and
first-party-tracking.mdcover this.
Tiebreaker test worth running: a geo holdout or an on/off test on Meta or non-branded paid search. Because the cycle is 90 days, measure lift on pipeline created (qualified opportunities) rather than closed deals. Closed deals would take too long to read. This is what settles whether Meta and Google are both truly driving deals or just claiming them.
Bottom line: 35 is the real number. The other three are different measurements of different things, and the inflated platform counts are normal. Keep the budget stable, run first-touch and position-based together, add a self-reported question, and test incrementality before moving real money.
Real run in an isolated folder with only this skill installed. Only the Skill and Read tools were enabled, so nothing was fetched from the web and no file was written. The example is fictional. The conversion numbers are invented.
它做什么
分两条线。解读线:讲清归因能告诉你什么、不能告诉你什么(“每个模型都是一种观点”),比较首次触点、末次触点、末次非直接、线性、时间衰减、位置型和数据驱动模型各自怎么“撒谎”,并给出三种衡量方式(多触点归因、营销组合建模、增量实验)以及如何按预算和周期选择。它还涵盖“你是怎么知道我们的”这类自我报告数据、对账 Google、Meta、GA 和 CRM 数字的方法(以一个数据源为准、绝不把各平台相加、看方向而不是追求精确吻合)、盲区(直接流量、品牌词搜索、暗社交、AI 流量)以及按业务类型的默认做法。搭建线:用身份图谱做第一方归因、调用 identify()、通过 webhook 在第三方域名上拼接转化、护栏措施,以及把来源数据写进 CRM。四份参考文档讲得更深。
工作方式
先问这些数字要支撑什么决策,确定以哪个数据源为准,把各模型并排比较,最后给出一份带置信度和缺口说明的简短“归因解读”。
适合什么场景
各个看板数字对不上、又需要一个站得住脚的预算分配依据的营销人员。
低风险:纯指令文件,没有脚本,不联网、不写文件。搭建线描述了跨站追踪个人并用邮箱合并身份,工具清单里还有识别匿名 B2B 网站访客的服务。这些做法受法律规范(比如 GDPR、ePrivacy、CCPA),通常需要用户同意和隐私声明;Skill 增加了匿名性护栏,确保个人 ID 不会被带到第三方网址,但它不提供法律意见。它引用的厂商阈值(比如 Google 数据驱动归因的最低数据量)会随时间变化。部分链接指向本包不包含的工具指南。已用虚构数字试用过一次。