An attribution model is the rule that decides which marketing touch gets the credit for a sale. Single-touch models give it all to one touch: the first one or the last click. Multi-touch models split it: evenly (linear), toward the end (time decay), toward the ends (position-based), or by a statistical model (data-driven).
No model is true; each answers a different question. What matters more is that every sale is tied to the right click in the first place. That is what ElasticFunnels analytics does: it ties each order to the ad, campaign and page it came from.
I architected the attribution for a direct-response company during my nine years as its CTO. People spend a lot of energy arguing about which model is right, and far less checking whether each order is tied to the right click at all. Get that plumbing right first. Choosing the model is the easy part.
What marketing attribution is
Most buyers touch your marketing more than once before they buy. They see an ad, search for the brand a few days later, open an email, and buy. Marketing attribution is the job of deciding how much of that sale each touch earned, so you know where the next dollar should go.
An attribution model is the rule you use to do it. Change the rule and the same sale moves between channels, which is why two reports on the same campaign can disagree and both be "right".
The six common attribution models
Here are the models you will meet in ad platforms and analytics tools, with the question each one answers best.
| Model | Who gets the credit | Good for | Blind spot |
|---|---|---|---|
| First touch | All of it to the first interaction | Which channels find new buyers | Ignores everything that closed the sale |
| Last click | All of it to the last click before the purchase | Which channels close | Ignores how the buyer found you |
| Linear | Split evenly across every touch | Seeing the whole path | Treats a glance and a decisive click the same |
| Time decay | More to the touches closest to the sale | Short promotions and launches | Undervalues the ad that started it |
| Position-based | Most to the first and last touch, the rest to the middle | Valuing discovery and closing together | The 40/20/40 split is a convention, not a finding |
| Data-driven | Shares learned from your own conversion paths | Steering bids inside one ad platform | A black box that only sees that platform's data |
For a seller on short paid-traffic funnels, I'd read last click on real orders first and treat the other rows as a cross-check. The table is most useful for seeing what each report you're handed is quietly assuming.
Single-touch: first touch and last click
Single-touch models are easy to explain and easy to track, because you only need to know one touch. First-touch attribution gives the whole sale to the interaction that introduced the buyer. Last-click attribution gives it to the final click before the purchase. Many tools use "last non-direct click", which skips a buyer typing your address and credits the last marketing click instead.

Last click is the default in a lot of reporting because it matches how most tracking works: the click that led to the order is the one you can see. It is a fair answer for short paid-traffic funnels, where most people buy in the same visit as the ad click. It gets unfair when journeys are long and cross channels.
Multi-touch: linear, time decay and position-based
Multi-touch models share the credit. Linear gives every touch an equal share. Time decay gives more to recent touches, often with a half-life of seven days: a touch a week before the sale is worth half of one on the day.

Position-based, also called U-shaped, gives 40% to the first touch, 40% to the last and shares the remaining 20% across the middle. A W-shaped variant adds a third peak for a key middle step, such as the opt-in.

Data-driven attribution
Data-driven attribution compares the paths that led to a sale with the ones that did not, and assigns credit by how much each touch seems to change the odds. Google Ads and Google Analytics use it as the default, and Google removed first click, linear, time decay and position-based from both in 2023. It needs volume to work, and it only sees the touches that one platform can see.
A worked example: one $100 sale, six answers
A buyer clicks a Meta ad on day 1, clicks a Google search ad on day 5, and buys from an email link on day 7. Here is where the $100 goes under each model (time decay uses a seven-day half-life; amounts are rounded).
| Model | Meta ad (day 1) | Google ad (day 5) | Email (day 7) |
|---|---|---|---|
| First touch | $100 | $0 | $0 |
| Last click | $0 | $0 | $100 |
| Linear | $33 | $33 | $33 |
| Time decay | $23 | $35 | $42 |
| Position-based | $40 | $20 | $40 |
| Data-driven | Depends on the account's own conversion paths | ||
The Meta ad earned anything from $0 to $100 for the same sale. That is the whole problem in one table: the budget decision changes with the model, so pick the model on purpose.
Why ad platforms disagree with your orders
Every ad platform attributes sales to itself, inside its own window. Meta's default setting counts a purchase within seven days of a click or one day of a view. Google Ads counts it by its own model and window. If a buyer clicked both, both claim the sale. Add up the conversions every platform reports and the total is often higher than the orders you actually took.
That is not a reason to ignore the platforms: their numbers are what their bidding learns from. It is a reason to keep your own record of orders, each tied to the click that produced it, and to check the platforms against it.
Picture the buyer from the example above. Meta's report claims the $100 sale, Google Ads' report claims it, and if your email tool tracks revenue, it claims it too. Your dashboards add up to $300. Your bank account says $100, and the bank is the one I'd believe.
What every attribution model needs underneath
A model only shares out credit it can see. Before choosing one, make sure the tracking underneath connects each order to its click. This is the unglamorous part, and it's the part I care about most. At the company where I was CTO, postbacks that broke when URLs changed were one of the ways revenue leaked between our tools. It takes four things.

- UTM parameters on every ad. Source, medium, campaign, content and term, set the same way on every link.
- The ad platform's click id. fbclid, gclid, ttclid and the others, kept with the visit so the sale can be matched to the exact click.
- A join from the visit to the order. Across the funnel's pages and into the checkout, including when the order is taken on another cart.
- The sale sent back. The order posted to the ad platform server-side, with its click id, so the platform's own model learns from real purchases.
How ElasticFunnels attributes a sale
This is the part of ElasticFunnels closest to my old job. ElasticFunnels does the tracking layer, and it is plain about the model: each order is credited to the visit that bought.
- It captures the source on arrival. The five UTM parameters, plus the click ids of Google (gclid, gbraid, wbraid), Meta (fbclid), TikTok (ttclid), Microsoft (msclkid), LinkedIn, Snapchat, Pinterest, Reddit, X, Outbrain and Taboola, and the Meta browser cookies.
- It keeps them for the visit. The session holds the source it arrived with across the funnel's pages, and the order is stamped with that source and the exact click.
- It follows the buyer to other carts. When the order is taken on ClickBank, Digistore24, BuyGoods or JVZoo, the click's code rides on the cart link and the network's order notification is matched back to it.
- It sends the sale back. The order goes server-side to Meta's Conversions API, Google Ads (by gclid), TikTok and the other connected platforms, so each platform's own model learns from verified purchases.

It does not run multi-touch models. If you need linear or time-decay views across channels, use them alongside it; the order records, each tied to its click, are what those models should be checked against. The UTM report breaks revenue, sales and refunds down by source, medium, campaign, content or term, and the campaigns report pulls spend from Meta, Google, TikTok, LinkedIn and Microsoft so you can see return on ad spend when your campaign names match your UTMs. More on the analytics page, and the ROAS calculator does the break-even arithmetic.
How to choose an attribution model
- Short paid-traffic funnels: most buyers purchase in the visit that followed the ad click, so last click on real orders answers most questions. Judge split tests on those orders too.
- Long or multi-channel journeys: look at a first-touch view and a last-touch view side by side. Where they disagree is where the interesting budget questions are.
- Inside one ad platform: let its data-driven model steer bids, and feed it verified purchases server-side.
- Always: keep one source of truth for orders, and check every model against it.
If your funnels are short and paid, I wouldn't spend money on fancy modelling until the order-level tracking is clean. A sophisticated model on top of broken click data just gives you confident wrong answers with more decimal places.
Attribution is the last step of a funnel, not an add-on. How to create a sales funnel covers the steps before it.
- I'd never move budget on an ad platform's reported conversions alone. Check them against real orders first.
- Don't change the attribution model and the campaigns in the same week. You won't know which one moved the numbers.
- If the platforms together report far more sales than you took, fix the tracking before you touch a bid.
- Be wary of anyone who sells you a model as the truth. Each one answers a single question.
Attribution arguments tend to be about models, and attribution problems tend to be about plumbing. Fix the plumbing, keep your own record of orders, and treat every platform's report as a claim to be checked. The model you pick after that matters a lot less than it looked.



