Revenue attribution assigns each sale to the marketing that produced it. That sounds like a reporting problem. It is really a disagreement problem, because on any given day Meta Ads Manager, Google Ads, Google Analytics 4 and Shopify will each hand you a different revenue number for the same store, and none of them is lying.
The question that matters is not which tool is right. It is which number you run the business on, and why. This guide covers what revenue attribution is, how it differs from sales attribution and conversion tracking, the ten models you can apply and where each one misleads you, the two settings that move your answer more than the model choice does, and how to grade channels on margin instead of revenue.
Start with the centrepiece below. One customer, one order, five attribution models, five different answers.
| Touchpoint in the journey | First Click | Last Click | Linear | Time Decay | U-Shaped |
|---|---|---|---|---|---|
| 1TikTok paid adDay 1, first discovery | $180 | $0 | $36 | $21 | $72 |
| 2Organic searchDay 3, researched the brand | $0 | $0 | $36 | $26 | $12 |
| 3Meta retargeting adDay 6, came back | $0 | $0 | $36 | $35 | $12 |
| 4Klaviyo emailDay 9, welcome flow | $0 | $0 | $36 | $46 | $12 |
| 5Branded searchDay 10, typed the name, bought | $0 | $180 | $36 | $52 | $72 |
| One $180 order, five verdicts | $180 | $180 | $180 | $180 | $180 |
Every column adds to the same $180, because the order only happened once. But TikTok earns the entire order under First Click and nothing at all under Last Click. Branded search does the reverse. If you cut TikTok because a last-click report said it produced no revenue, you cut the channel that found the customer. Figures rounded to the nearest dollar.
Revenue attribution is the practice of tying realised revenue back to the marketing touchpoints that preceded it, so spend can be judged on money rather than on clicks. It answers a narrow question: of the revenue that landed, how much should each channel, campaign and ad be credited with? Amplitude files the term under the same definition in its analytics glossary.
Two things distinguish it from the metrics sitting next to it in your dashboard. It starts from the order rather than from the ad, and it distributes credit across a journey rather than stamping a single source on a session. Shopify frames the same idea as the way to see how effective each marketing channel really is, and reports that 90% of US sales and marketing teams see a disconnect between their departments.
Attributed revenue is the output: the dollar amount a model assigns to a given channel over a given window. It is a calculated figure, not an observed one. Two honest tools running two different models on identical data will produce different attributed revenue, and both will be correct on their own terms.
Sales attribution and revenue attribution are usually the same practice under two names, and the name tells you who is asking. Sales attribution is the term used where a person closes the deal, so credit gets traced through leads, opportunities and a pipeline. Revenue attribution is the term used where the checkout closes the deal, so credit gets traced through sessions and orders.
For a Shopify brand the distinction collapses: there is no rep, the order is the conversion, and the journey is measured in days rather than quarters. That is why most of the material ranking for these terms reads oddly if you run an ecommerce store. It was written for a sales cycle you do not have.
Conversion tracking records that an event happened. Revenue attribution decides who gets paid for it. A pixel firing on a purchase is conversion tracking. Deciding that the purchase belongs 40% to the first ad and 40% to the last is attribution.
The practical difference is that conversion tracking can be complete and still useless. You can capture every order and still misallocate the entire budget, because capture is a data question and credit is a modelling question.
Attribution in ecommerce fails for two reasons that have nothing to do with the model you picked. The reporting parties are not neutral, and the underlying tracking has holes that no model can patch.
Meta, Google and TikTok each decide, using their own click and view windows, which orders they caused. They are measuring their own performance, and the measurement drives your next budget decision. Add the platforms together and the total will exceed what Shopify recorded, because the same order gets claimed more than once.
This is structural, not a bug or a setup error. A platform that counts a view as a touch and a competitor's click as irrelevant will always find itself effective. We wrote up how far that gap runs in practice in the hidden gaps in Shopify attribution.
Worth separating, because only one of them is yours to fix.
The fixable set is worth an afternoon. The structural set is the reason first-party tracking exists: a pixel running server-side inside Shopify's own environment still sees the order when the platform tag does not.
Ask four systems what yesterday's revenue was and you get four answers. Below is the shape of it for an illustrative store on an illustrative day, which is the pattern rather than any particular brand's data.
| Source | What it actually counts | Revenue | Reconciles to orders? |
|---|---|---|---|
| Meta Ads Manager | Orders Meta believes it caused, on its own click and view windowsIncludes view-through conversions | $14,200 | No |
| Google Ads | Orders Google believes it caused, counted independently of MetaOverlaps with the row above | $9,400 | No |
| Google Analytics 4 | Sessions that survived consent and stayed on one device, plus modelled estimates for the rest | $18,100 | Partly |
| Shopify | Orders that actually happenedGround truth on revenue, silent on cause | $22,600 | By definition |
| Polar Pixel | The same orders, deduplicated across every channel and split by the model you chose | $22,600 | Yes |
Meta and Google together claim $23,600 against $22,600 of real orders. They have not each invented revenue; they have both counted some of the same orders. The test of an attribution system is not how much revenue it finds, it is whether its conversion count ties back to your order count. If a brand has 1,000 orders in Shopify, a deduplicated first-party pixel shows exactly 1,000 conversions and then argues about how to split them. A platform-reported view shows more. Attribution gives the same advice from the other direction, recommending deterministic attribution over probabilistic modelling.
Worth saying plainly, because it is the most common misreading: when two attribution tools disagree, the cause is usually definitional rather than one of them being broken. Different lookback windows, different time zones, different treatment of returns, one counting sessions and the other counting orders. Compare like for like before concluding a tool is wrong.
A revenue attribution model is a rule for splitting credit among the touchpoints that qualified. Polar ships ten of them, in two groups: models that consider every touchpoint, and models that only consider paid ones.
| Model | How it splits credit | Where it misleads you |
|---|---|---|
| All touchpoints | ||
| First Click | 100% to the first interaction | Flatters discovery channels, hides everything that closed the sale |
| Last Click | 100% to the final click | Flatters branded search and email, starves the channels that created demand |
| Linear | Split evenly across every touchpoint | Treats a passing visit and a decisive one as equals |
| Time Decay | More credit the closer a touch sits to the order | Systematically underrates upper funnel work with long consideration cycles |
| U-Shaped | 40% first, 40% last, 20% shared across the middle good default | The 40/40/20 weighting is a convention, not a measurement of your store |
| Full Impact | Shapley values: each touchpoint scored on its estimated marginal contribution | Hardest to explain to a finance team, and it needs enough volume to be stable |
| Paid touchpoints only | ||
| Linear Paid | Split evenly across paid touchpoints | Ignores organic and lifecycle entirely, so paid looks like the whole business |
| Full Impact Paid | Shapley values across paid touchpoints only | Same blind spot, applied more precisely |
| Platform Overlap | 100% to the last touch of each paid platform separately | Deliberately double counts, so it will not tie to your order count |
| Platform Overlap + view-through | As above, plus Meta's self-reported view-through conversions | The only model here that is not click based |
First Click and Last Click are the two you already have, because the ad platforms and Google Analytics 4 default to variations of them. They are useful as bookends. Run both, and the spread between them tells you how much of your revenue depends on a journey rather than a single ad.
Linear, Time Decay, U-Shaped and Full Impact all spread credit across the path. U-Shaped is the honest starting point for most Shopify brands, because discovery and the closing touch genuinely do most of the work and the model says so without pretending to have measured it. Dotdigital publishes the same 40/40 split for what it calls the positional model, alongside a default five day attribution window.
Full Impact is the one worth graduating to. It uses Shapley values, borrowed from cooperative game theory, to estimate what each touchpoint added rather than applying a fixed weighting. It returns fractional conversions, so a channel can be credited with 7.28 orders, which is a feature: the fraction is the honest answer.
Paid-only models answer a narrower question: among the paid touches, what deserves credit? Useful when you are allocating a media budget and organic is not a lever you control this week.
Platform Overlap deserves a warning. It gives every paid platform full credit for its own last touch, which reproduces the double counting you see in the ad managers. That is the point of it: it exists to reconcile against what the platforms report, not to tell you the truth. Do not run a P&L off it.
If you want the longer breakdown of each model with worked ecommerce examples, we covered nine of them in marketing attribution models for Shopify brands.
The calculation itself is arithmetic. Getting the inputs right is the work.
Then divide to get the ratios you actually manage against. Attributed revenue over channel spend gives an attribution-based return on ad spend, which is a different and more defensible figure than the one in Ads Manager. The formula is trivial; the reason two teams get different answers is always step 2 or step 3, never step 4.
Most arguments about attribution are really arguments about configuration. Three settings move the numbers more than switching models does.
The lookback window sets how far before an order a touchpoint can sit and still qualify for credit. This is the single most misunderstood control in attribution, so it is worth being precise: the window changes which touchpoints are eligible, and the model changes how credit is split among the ones that qualified. They are separate decisions and they are often confused for each other.
Widen the window from 7 days to 90 and upper-funnel channels appear out of nowhere. Nothing changed in your marketing, only the eligibility rule. Pick a window that matches how long people actually take to buy your product, then leave it alone, because every change re-cuts your history.
Restricting eligibility to paid touchpoints answers "what did my media buy do" instead of "what produced this order". Both are legitimate. Reporting one and labelling it the other is how organic and lifecycle revenue quietly gets billed to Meta.
Attribute revenue on the day the order was placed, or on the day the money was recognised? Marketing tends to want the order date, finance tends to want recognition. Neither is wrong, and a report that silently switches between them will not reconcile with either team's numbers.
Some demand arrives through channels that leave no click. A practitioner recommends the product, a friend mentions it, someone hears it on a podcast, a shopper sees a connected TV spot and searches the brand a week later. A click-based model records the branded search and credits it with the whole order, which is precisely backwards.
The one-question survey after checkout is the only signal that captures channels no tracking can reach. Treated properly, an answer is not a separate report, it is a touchpoint: the response enters the customer's journey as a last touch and shows up in the channel breakdown next to paid and organic.
Surveys and pixels disagree for a reason worth understanding: surveys capture what the customer remembers, pixels capture what happened. Recall skews toward the most recent and the most memorable, so a survey over-credits the influencer and the podcast, and a pixel over-credits whatever was clicked. Run both and treat the disagreement as information.
Impressions from connected TV, direct mail and offline placements can be ingested as touchpoints rather than left out of the model. Third-party checkout providers that bypass a store's own pixel are the other common hole: those providers pass their own attribution data with the order, and it can be extracted and added to the path as the final touch.
None of this is a substitute for measuring incrementality. When the question is strategic rather than tactical (is branded search cannibalising organic, is a channel adding anything at all) the answer comes from a holdout test, not from a credit-splitting rule. Twin-geo causal lift compares matched regions with and without exposure and reports the difference at a stated confidence level. Attribution tells you who to credit. Incrementality tells you what would have happened anyway.
Revenue attribution graded on revenue alone will tell you to scale campaigns that lose money. A campaign selling heavily discounted, high-return, expensive-to-ship products can post an excellent return on ad spend and still reduce profit on every order.
The fix is to run the same attribution logic against contribution margin. Once cost of goods, shipping, fulfilment and transaction fees sit alongside the order, credit can be assigned in margin rather than in top line, at channel, campaign, ad set and ad level:
Profit on ad spend is then just return on ad spend with the margin included, and it reorders your channel ranking more often than people expect. This is also the version of the number a finance team will accept, which is the difference between an attribution report that changes a budget and one that gets argued about. NetSuite, citing Nielsen's 2025 Annual Marketing Report of around 1,400 respondents, puts the share of marketers who say they can measure media spend across digital and traditional channels together at 32%.
Attribution used to be a reporting exercise that a sceptical operator could reasonably ignore, on the grounds that the ranking of channels was roughly stable and judgement filled the gaps. That defence has expired, for a simple reason: automated systems now act on these numbers, and they have no judgement to fill the gaps with.
Budget rules, bid automation and agents making allocation decisions all consume attributed revenue as an input. Feed a platform-reported number into an automated allocator and it will keep buying the channel that claims the most credit, which is the channel with the loosest counting rules. The brands that dismissed attribution as a dashboard argument are now the ones who need it precise, because something is executing against it without being asked twice.
The same logic applies to the model choice. A rule that shifts spend on the basis of last-click revenue will converge on branded search and email, defund discovery, and then report improving efficiency while the top of the funnel empties.
A workable sequence, in order, each step useful on its own:
Choosing where the numbers come from is its own decision, and it is worth doing deliberately: we compared attribution tools on data quality, auditability and touchpoint capture rather than on feature lists. The one property to insist on is access to the raw attribution log. If you cannot audit a single order's touchpoints end to end, you are being asked to take the credit split on faith.
