attribution
When the user wants to figure out which marketing actually drives conversions and revenue, choose or interpret an attribution model, or reconcile conflicting numbers across tools. Also use when the user mentions "attribution," "attribution model," "first-touch vs last-touch," "multi-touch," "which c
By coreyhaines31 · 19,558 installs
npx skills add coreyhaines31/marketingskills --skill attribution
Source repository · Upstream listing
Attribution
You help users answer the hardest question in marketing: which of my efforts actually caused this conversion and this revenue? Attribution is where marketers lose the most money — to channels that look good in one dashboard and terrible in another, to "direct" and "branded search" that hide the real source, and to models that quietly encode an opinion as if it were fact.
This skill has two pillars. Know which one the user needs before you dive in:
(A) Interpretation — choosing an attribution model, picking a measurement approach, and reconciling the conflicting numbers your tools report. This applies to everyone, even with zero engineering.
(B) Own your attribution (first party) — instrumenting and stitching attribution yourself when you control the site/app. This is the build track. Use it when the user says "I want to track this myself" or is hitting a conversion that lives on a domain they don't own.
Most requests start with (A). Reach for (B) only when they control the surface and want to build.
Product context: check for .agents/product marketing.md and read it if present — business type, sales cycle, and primary conversion drive almost every recommendation here.
Boundaries — what this skill does NOT own
State these up front so you don't rebuild neighboring skills:
General event tracking, tracking plans, UTM setup, GA4/GTM → analytics . Attribution assumes tracking exists . The line: analytics = "what events and how to fire them"; attribution = "how touches join to conversions and survive to revenue."
Ad platform pixels, CAPI, server side conversion tracking → conversion tracking . Attribution consumes platform reported numbers and corrects for their bias; it doesn't set up the pixels.
Pipeline stages, lead lifecycle, CRM revenue dashboards → revops . Attribution feeds pipeline data; it doesn't define stages.
Showing up in / measuring AI search → ai seo . Attribution names AI traffic as a blind spot only.
Pillar A — Interpretation
1. What attribution can and can't tell you
Set expectations before touching a number:
Attribution is directional, not truth. It's a model of causality built from incomplete data (cookies expire, sessions fragment, offline touches vanish, people research on one device and buy on another). Treat it as a strong hint, never a verdict.
Every model is an opinion. "First touch" says the first ad gets all the credit; "last touch" says the closing click does. Both are wrong in opposite directions. Choosing a model is choosing whose story to believe — say so out loud.
The attribution gap is normal, so separate outcomes from credit. The sum of channel reported conversions almost always exceeds real conversions, because every platform claims the same sale under its own attribution window and view through rules. Count real conversions once, deduplicated against one source of truth, and explain platform credit separately. The two won't tie out, and a modeled allocation never replaces the conversion ledger.
When a user demands one true number, reframe: "We can get you a defensible, consistent number and a read on which channels are trending up. A single objective truth doesn't exist — here's why, and here's what we use to make decisions anyway."
2. Attribution models
The classic rule based set plus data driven — and when each one lies. Last non direct is a last touch variant (skip the junk drawer), not a separate school of thought.
Model Credit rule Best for How it lies
First touch 100% to the first known touch Top of funnel / demand gen valuation; short cycles Ignores everything that closed the deal; over credits awareness channels
Last touch 100% to the last touch before conversion Direct response, quick e comm Over credits bottom funnel + branded search/direct; ignores what created demand
Last non direct 100% to last touch, skipping "direct" A cheap fix for direct pollution Still single touch; just moves the blind spot
Linear Equal credit to every touch Long, multi touch journeys where every step matters Treats a throwaway visit like a demo; flatters high frequency channels
Time decay More credit to touches nearer conversion Longer cycles where recency matters Under credits the top of funnel; still an assumption, not a measurement
Position based (U shaped) 40% first, 40% last, 20% middle B2B with clear "created" + "closed" moments The 40/40/20 split is arbitrary; middle touches get shortchanged
Data driven (algorithmic/Shapley) Credit from modeled marginal contribution High volume accounts with enough conversions A black box; needs volume; can't see offline/dark touches it was never fed
Platform availability note: Google Ads and GA4 retired first click, linear, time decay, and position based as selectable reporting models (2023). Those UIs offer data driven and last click (plus GA4's paid channels last click variant). Teach the full table as concepts and as models you can compute on your own event path / CRM / warehouse — not as Google dropdown options.
Rules of thumb:
Never report a single model in isolation for a long sales cycle. Show first touch and last touch side by side — the truth lives between them, and the gap between them is the insight.
Data driven attribution needs volume. Google Ads historically gated DDA behind ~3,000 ad interactions and ~300 conversions in 30 days; hard minimums are gone and DDA is the default, but Google still recommends ~ 200 conversions and ~2,000 ad interactions in 30 days for quality. Below that, DDA often collapses toward last click priors — noise dressed as science. On Google/GA4 when thin: prefer last click (or accept that DDA ≈ last click). Elsewhere (first party / CRM / warehouse): compute position based or first+last side by side.
The model matters far less than being consistent and pairing it with an out of model sanity check (Pillar A §4, self reported).
For the model math, worked examples of one journey scored six rule based ways, and Shapley explained plainly, see references/attribution models.md .
3. The three measurement paradigms
Models split credit within your tracked data. Paradigms are how you get at causality — increasingly rigorous, increasingly expensive:
Paradigm What it is Answers Needs Watch out
MTA (multi touch attribution) Stitch user level touches, apply a model "Which touchpoints appear on converting journeys?" Clean cross device user level tracking Cookie loss + privacy gut user level data; click paths systematically over weight search/direct and under weight impression channels
MMM (media/marketing mix modeling) Top down regression of spend vs. outcomes over time "What's each channel's aggregate contribution, including offline/brand?" 2–3 yrs of weekly data, spend variation Correlational; slow to react; needs real budget swings to learn
Incrementality (geo holdout, PSA, ghost ads, on/off) Controlled experiment: exposed vs. withheld "Did this channel cause lift I wouldn't have gotten anyway?" Ability to withhold; enough volume for significance The gold standard, but you can only test a few things at a time
How to choose: small budget / short cycle → good UTM + last non direct + a self reported survey beats a fancy model. Mid budget, several channels → MTA for day to day + periodic incrementality tests on your biggest line items. Large budget, offline + brand spend → MMM for the portfolio + incrementality to validate MMM's coefficients. Incrementality is the tiebreaker whenever two channels both claim the same conversions.
Decision table by budget × sales cycle × channel count, and how to read a geo holdout / PSA test (not a stats tutorial), in references/measurement paradigms.md .
4. Self reported attribution
The most underused signal, and often the most honest for long cycles and dark social. A post conversion "How did you hear about us?" survey catches what tracking structurally cannot: podcasts, word of mouth, Slack communities, a founder's tweet, "a friend told me."
When it beats tracking: long consideration cycles, high word of mouth, brand/community led, or heavy dark social (see §5). If a big slice of your journeys are "direct," you have a self reported shaped hole.
Ask at the moment of conversion (signup, first purchase, demo request) — highest recall, before memory fades.
Wording: open ended ("How did you first hear about us?") captures dark social; a short pick list is easier to quantify but pre biases the answer. Best practice: pick list of your known channels plus a free text "other/tell us more."
Treat it as a triangulation input, not gospel — recall is fuzzy and people credit the memorable touch, not the first. Discount survey share when turning it into credit (e.g. 22% recall of YouTube is evidence of awareness, not a claim that YouTube deserves 22% of conversions). Pair with incrementality / platform deltas before writing an allocation rule.
On the build side, this is a form field written to your CRM/analytics as a person property — see Pillar B and references/first party tracking.md .
5. Reconciling conflicting sources
The request behind most attribution work: "Google says 50, Meta says 40, GA says 60, my CRM says 35 — who's right?" Nobody is. Here's the framework.
Why each source systematically lies:
Source Biased toward Because
Ad platforms (Google/Meta/LinkedIn) Over counts itself Claims view through + click conversions in its own window; every platform counts the same sale; motivated to look good
GA / web analytics Last non direct click Loses cross device, loses cookie blocked users, dumps the unknown into direct
CRM Whatever the rep typed / the form captured Human entry, lead source overwrites, offline deals with no digital trail
Self reported survey The memorable touch Recall bias; under counts boring but real touches like retargeting
How to triangulate:
1. Pick one source of truth for the conversion count — usually your CRM or backend (the system where money is real). Everything else explains where those came from , they don't get to redefine how many .
2. Never sum across platforms. If Google and Meta both claim a conversion, you have one conversion with two claimants, not two conversions. De dupe against the source of truth total.
3. Read directional agreement, not absolute match. If every source says paid search is up and organic is down this quarter, that trend is trustworthy even though no two numbers match.
4. Use self reported as the tiebreaker when platforms fight over the same conversions, and incrementality when the stakes justify a test. Do not turn a platform vs GA gap into a multiplier rule (Meta claims 2× GA ≠ "double Meta") — investigate windows and view through, then ground any override in incrementality.
5. Expect and budget for the gap. Report "platforms claim N; we can verify M; the delta is over claiming + view through + untracked — here's our best allocation."
6. Operationalize triangulation as rules when you can — once you have a holdout or a trusted survey band for a channel, apply a documented channel level override on reporting (shift credit from Direct/branded into the under credited channel for the test window) rather than pretending raw MTA is truth. Details in references/measurement paradigms.md .
The output is an honest allocation with confidence levels, not a false reconciliation to the decimal.
6. The blind spots
Where conversions hide, making real channels look weak:
Direct — the junk drawer. Bookmarks and typed URLs, yes, but also stripped referrers, app to web, dark social, and any touch your tracking dropped. A large direct share can include genuine direct visits, repeat users, and measurement loss. Investigate its