Attribution

Ecommerce Attribution: Why Meta, Google, GA4 Never Add Up

In Enalitica's data, Meta and Google Ads reported as many conversions as stores had orders. What ecommerce attribution is, which model fits, how to reconcile.

Tilen Ledic Tilen Ledic Written by
Updated 25 min
On this page
  1. What Is Ecommerce Attribution?
  2. Attribution Models Compared on One Customer Journey
  3. Which Attribution Model Should an Ecommerce Store Use?
  4. Pixel-Based Attribution: How It Works and Where It Breaks
  5. How Google Attributes (and Why Its Number Is What It Is)
  6. How Meta Attributes (and Why Its Number Is Always the Highest)
  7. Why Meta, Google, and GA4 Numbers Never Reconcile
  8. Order-Based Attribution: Start From the Sale, Not the Session
  9. How Enalitica Makes Attribution Accurate
  10. How to Choose Your Attribution Approach
  11. What Changed in Attribution Rules in 2025 and 2026?
  12. Attribution Implementation Checklist: 7 Steps
Ecommerce Attribution: Why Meta, Google, GA4 Never Add Up

You spent €4,000 on ads last month. Meta Ads Manager says it drove €38,000. Google Ads says €19,000. GA4 shows something lower than both, and your email tool is somewhere in the mix claiming its own slice. Then you open your bank statement: the store did €52,000 in total revenue across every channel.

Add Meta and Google alone and you are already at €57,000. That is more than the entire store made, before you even count organic, email, and direct. Every order happened exactly once. So why does every platform claim it? That is the ecommerce attribution problem, and if you run an online store with real ad spend, you have lived it.

The example is illustrative, the pattern is not. Across the last 90 days in Enalitica's data, more than 10,000 orders, the conversions Meta and Google Ads reported between them added up to the stores' total order count, email, organic search and direct visits included. I ran an online store for 15 years before I started building Enalitica, and reconciling these dashboards against the actual order export was the most frustrating recurring task I had. Three tools, three numbers, none of them matching the money in the account.

Short answer. Ecommerce attribution assigns each order to the marketing touchpoints that drove it. For most stores the model matters less than the data: pick last-click or U-shaped, then fix coverage first, because a browser pixel sees only part of European customer journeys. The setup that reconciles to your bank is order-based: capture the click IDs on the order, enrich from the ad platform APIs, and give every order exactly one owner. The sections below walk through each step and link to a deeper guide where one exists; for the single P&L-level number that survives all of this, see blended ROAS and MER.

What Is Ecommerce Attribution?

Ecommerce attribution is the practice of assigning credit for a sale to the marketing touchpoints that led to it. It is marketing attribution applied to an online store: a customer sees an ad, clicks a link, reads an email, searches your brand, and eventually buys. Attribution answers a deceptively simple question: which of those touchpoints earned the order?

It matters because every budget decision depends on the answer. If you believe Google Ads drove €19,000 last month, you keep funding it. If you believe it drove €6,000, you cut it. The number determines where the next €4,000 goes. Get attribution wrong and you systematically defund the channels that quietly drive revenue while overfunding the ones that take the last click.

The complication is that attribution is not one thing. It is two separate problems that usually get tangled together:

  1. The model problem. When a journey has several touchpoints, how do you split the credit? All to the first click? All to the last? Spread evenly? This is the part most articles obsess over.
  2. The data problem. Before you can split credit, you need to know the touchpoints happened at all. In 2026, with ad blockers, cookie consent, and browser privacy, a large share of journeys are partially or fully invisible. Of nearly 12,000 orders we analysed in the last 90 days, 14.4% carried a Google click ID and 12.6% a Meta click ID; every other order had to be attributed from the session, the referrer, or nothing at all. This is the part most articles ignore, and it is the one that actually determines whether your numbers are usable.

The biggest lesson from years of doing this: the model matters far less than the data underneath it. A perfectly tuned attribution model running on data that is missing 40% of journeys is precise nonsense. The same is true in reverse: when bot traffic inflates your GA4 sessions, you are modeling an audience that was never there. We will cover both, but keep that hierarchy in mind.

Attribution Models Compared on One Customer Journey

When a customer touches five channels before buying a €100 product, the attribution model decides which touchpoint on the conversion path gets the credit. Here is the same journey scored by each common model, so you can see the difference at a glance.

The journey: Google Ad (Day 1), organic search (Day 5), Facebook ad (Day 8), email open (Day 12), direct visit and purchase (Day 14).

Ecommerce attribution models compared on one €100 customer journey across Google Ads, organic, Facebook, email, and direct, showing how first-click, last-click, linear, time-decay, and U-shaped models each split the credit differently

ModelHow credit is splitGoogle AdsOrganicFacebookEmailDirect
First-click100% to first touch€100€0€0€0€0
Last-click100% to last touch€0€0€0€0€100
LinearEqual across all€20€20€20€20€20
Time-decayMore to recent touches€5€10€15€25€45
U-shaped40% first, 40% last, 20% middle€40€7€7€7€40
Data-drivenML weights by patternVariesVariesVariesVariesVaries

Each model has a job. First-click attribution tells you which channels introduce new customers. Last-click attribution, still the default in most reporting (often as last non-direct click, which skips direct visits), tells you which channels close. Linear attribution refuses to play favorites. Time-decay favors recency, useful for short promotional cycles. U-shaped (position-based) attribution rewards the introduction and the close. Data-driven attribution hands the weighting to a machine learning model, which is the default in Google Ads and the recommended model in GA4.

Which Attribution Model Should an Ecommerce Store Use?

For most stores, U-shaped (position-based) attribution is a sensible default: it credits both the channel that introduced the customer and the one that closed the sale, and it needs no minimum volume. If you process 200+ conversions a month, data-driven attribution outperforms any fixed rule because it learns from your own patterns. The model choice is still secondary: fix your data coverage first.

Two practical limits apply. GA4 no longer offers U-shaped, linear, first-click or time-decay; since November 2023 it keeps only data-driven and last click, so a position-based view needs a tool that stores the whole journey. And Google Ads recommends at least 200 conversions and 2,000 ad interactions in 30 days before data-driven attribution has enough data to be precise.

No model is correct in the abstract. The right one depends on your sales cycle, your channel mix, and the decision you are trying to make; the deep dive is multi-touch attribution for ecommerce. All of these models assume you can see the touchpoints. That assumption is where everything falls apart.

Pixel-Based Attribution: How It Works and Where It Breaks

Almost every attribution tool you have used is pixel-based, which is really a form of event-based attribution. A tracking pixel records events (page viewed, product added, purchase completed), the tool stitches those events into sessions, sessions into journeys, and runs a model over the journey to decide which touch earned the order.

Pixels come in two flavors, and the distinction runs through this whole guide:

  • Client-side (browser) pixels. GA4 and the Meta Pixel fire JavaScript in the customer's browser. This is the lossy kind.
  • Server-side pixels. Meta's Conversions API, server-side GTM, and server-side attribution tools send events from your server instead of the browser. They sidestep most of the technical loss below.

When everyone accepted cookies and no one blocked scripts, the browser pixel worked well enough. That world is gone. Here is what eats client-side pixel data in 2026, and none of these are edge cases.

Ad blockers. Roughly 30% of internet users run an ad blocker at least some of the time (GWI, Q2 2025), and most European markets sit at or above that figure. A blocker kills GA4 and the Meta Pixel before they fire. Those customers browse, buy, and never appear in your analytics. The order is in your shop database; the journey is not.

Cookie consent. Under GDPR you must ask before setting analytics and advertising cookies. In a 2023 study of 1.2 million banner interactions, only 25% of visitors accepted all cookies and 69% closed or ignored the banner, with Germany and France rejecting most. A declined banner means the pixel never sets its cookie, so there is no cross-visit journey to attribute. Consent rates swing hard by country, which is why the same campaign looks completely different in Germany versus the US. The country-by-country breakdown shows just how wide the gap gets.

Safari ITP. Safari's Intelligent Tracking Prevention caps JavaScript-set first-party cookies at 7 days, and at 24 hours when the visitor landed with a click ID in the URL, which is exactly the Google Ads and Meta case. A customer who clicks on Monday and buys on Wednesday has already lost the cookie linking those two visits. Safari is 26% of mobile browsing worldwide, 30% in Europe and 53% in the US (StatCounter, August 2026).

iOS App Tracking Transparency. Since iOS 14.5, apps must ask before tracking, and a large share of users decline. This strips the data Meta relies on inside its own apps and forces Google to fall back from the full GCLID to privacy-safe identifiers like GBRAID and WBRAID, which most pixels never capture.

These do not happen one at a time. A single shopper can be on Safari, on an iPhone, with consent declined. The losses stack. For a European store, a browser pixel realistically sees only 30 to 50% of actual customer journeys. You are running attribution models on a third of reality and treating the output as truth.

So why not just move server-side? Partly, you should. A server-side pixel is not blocked by an ad blocker and is not purged by Safari ITP, so it recovers most of the technical loss a browser pixel suffers. If ad blockers were your whole problem, server-side tracking would mostly solve it. Consent is the exception: no compliant pixel, browser or server, captures a customer who declined. For the full comparison of where server-side helps and where it still falls short, see server-side tracking vs order-based attribution.

But going server-side does not change the deeper thing. Whether the pixel fires in the browser or on your server, an event-based tool still ends up with a pile of events and has to stitch them into a journey and model which event drove which order. That modeling step, not the ad blocker, is the real structural difference, and it is the step order-based attribution removes. However good the model, a pixel's answer to "which channel drove this order" is an informed guess, not a measurement.

How Google Attributes (and Why Its Number Is What It Is)

Google sees your store through three overlapping systems, and they do not all count the same way.

GA4 uses data-driven attribution by default. It applies machine learning across the touchpoints in a 90-day lookback window (30 or 60 days selectable) and is the only multi-touch model GA4 still offers, since first click, linear, time decay and position-based were removed in November 2023. It is genuinely better than the last-click default it replaced. But GA4 attributes events, not orders. If the purchase event does not fire (blocker, consent, a JavaScript error), the order is simply absent from the model. Your shop shows 100 orders, GA4 shows 70 purchase events, and the missing 30 never enter the attribution math at all.

Google Ads conversion tracking counts conversions inside Google's own walls. Enhanced conversions recover some of the loss by sending hashed customer data (email, phone) with the conversion, from the tag or from your server, and the GCLID ties a conversion back to the exact click. This is the cleanest of the three numbers, but it only sees Google. Organic, email, social, and direct are invisible to it.

One more reason the Google Ads column is not a count of orders: with consent mode, Google models conversions for visitors who declined cookies and puts them straight into the Conversions column. A modeled conversion is a statistical estimate of an order, not an order in your database.

The click IDs are the part worth understanding, because they are what make Google attribution recoverable. The GCLID is stamped on the ad click and stays valid for 90 days. On iOS, when a user denies tracking, Google switches to GBRAID (web to app) and WBRAID (app to web), both aggregate identifiers that never point at one user. If your tracking captures only the GCLID, every iOS-denied click silently reclassifies as organic or direct, and Google Ads looks worse than it is.

In Enalitica's data, 98.9% of orders from a Google Ads click in the last 90 days carried a gclid, 87.8% also carried a gbraid, wbraid appeared on 0.2%, and only 1.1% had gbraid or wbraid without a gclid. Google documents gbraid for iOS, yet among orders where we know the device it sat next to the gclid on 98% of Android and 81% of desktop Google orders.

Capture all three, but do not expect the iOS identifiers to rescue many orders on their own. The full guide to GCLID, GBRAID, and WBRAID covers exactly which one fires when, and how to capture them in WooCommerce covers storing them on the order.

Google's number is generally the most conservative of the big platforms. It still over-credits itself relative to reality, because it cannot see what Meta or your email did, but it is closer to the truth than the Meta dashboard.

How Meta Attributes (and Why Its Number Is Always the Highest)

Meta is not lying to you. It is reporting what it can see, under settings that are deliberately generous.

The default attribution setting for website conversions is 7-day click, 1-day engage-through and 1-day view (Meta's attribution windows). Engage-through, rolled out in 2025, credits a conversion after someone watched a video ad without clicking. The click part is reasonable: someone clicked your ad and bought within 7 days. The view part is where the inflation comes from. View-through attribution credits Meta with a conversion when someone merely saw your ad in the last 24 hours, without clicking, and then bought. They might have been heading to your store anyway, from a Google search or a bookmark. Meta saw an impression and claims the sale.

The windows have only ever shrunk. 28-day click and 28-day view left the ad set settings in January 2021, and today Meta's own settings page lists click-through of 1 or 7 days and view-through and engage-through of 1 day only; the 7-day and 28-day view windows are gone.

There is a structural reason the Meta number runs highest. Meta has no idea what Google Ads did. Google has no idea what Meta did. Neither can see your email. So when a customer touches all three before buying, all three claim the order independently. None of them is double-counting within its own walls. The double-counting happens across the walls, in your spreadsheet, when you add the dashboards together and get a number larger than your revenue.

One thing we keep seeing across our clients deserves saying here, because last-click numbers put Meta in a harsher light than it earns: when a store invests seriously in Meta, its organic and direct traffic rise with it, brand searches multiply, and orders arrive days later through channels Meta never gets credit for. We can see the lift; we cannot measure how much of it is Meta's, and neither can anyone honestly. Read the Meta row as a floor, not a verdict; the Meta halo guide explains what we see and why nobody can size it.

Meta's server-side Conversions API (CAPI) makes this more accurate, not less inflated. CAPI sends order events from your server, bypassing ad blockers and recovering iOS conversions the browser pixel misses. That is a real improvement to signal quality and bidding. It does nothing about view-through inflation or the fact that Meta still only sees Meta. If you are routing CAPI through server-side GTM, the three setup options compared here are worth reading before you build a container.

Since April 2025 Ads Manager also offers incremental attribution, a modeled estimate of the conversions that would not have happened without the ad. It is Meta grading Meta with a better rubric; it still counts nothing outside Meta.

Bad reporting and good optimization signal can coexist. Meta knows perfectly well which of its own creatives drive engagement, and CAPI helps it bid. It just cannot tell you what share of your total revenue it truly caused, because it is structurally blind to every other channel.

Why Meta, Google, and GA4 Numbers Never Reconcile

Put the three platforms side by side and the problem is obvious. The same orders get claimed multiple times, and the totals balloon past what the store actually made. We measured it on our own clients' orders instead of guessing.

More than 10,000 orders, over €700,000 of revenue, 90 days to 25 September 2026: on that slice of Enalitica's data, Meta and Google Ads between them claimed a conversion for every order the stores had. The value they reported came to about three quarters of all revenue, in stores that also sold through email, organic search and direct visits.

Bar chart of how many conversions Google Ads and Meta reported against the orders that actually carried their click ID in Enalitica's data: Google Ads reported 2.97 times as many, Meta 4.6 times as many, and together the two platforms reported as many conversions as the stores had orders in total, worth 76 percent of all revenue

Check your own month before reading on; it takes three numbers and the tool says how many orders were counted twice at the least:

Double-counting check

How much of your sales do Meta and Google claim?

Take last month. Enter the orders from your store and the purchases Meta and Google each report for the same month. Each platform counts by its own rules and neither knows what the other reported; the gap only shows up when you put them side by side.

Optional: the same in euros
Your store
1,000
Meta + Google claim
990
Meta 610Google Ads 380
99%

Nobody is lying. Four reasons for the gap

  1. Meta also counts people who only saw the ad and bought within a day, without clicking.
  2. Google counts purchases up to 30 days after a click; Meta defaults to 7. The same buyer can sit inside both windows.
  3. A buyer who clicked a Meta ad on Tuesday and a Google ad on Thursday is one sale and two conversions.
  4. Orders from your newsletter, organic search and direct visits are in your total, and the platforms still claim some of them.

Where to find the numbers

  • Store: WooCommerce: Orders, filter the month, subtract cancelled. Shopify: Analytics, Total orders. ERP: booked orders.
  • Meta: Ads Manager, set the date range to the month, Purchases column in the Totals row. Leave the default attribution setting.
  • Google Ads: Campaigns, set the date range to the month, Conversions column; with several actions, segment by conversion action and take purchase.
  • GA4: Reports, Monetization, Ecommerce purchases, or the purchase event under Events.

This tool shows how big the gap is. It cannot show which orders.

Enalitica reads the click behind every order and gives each order one channel, once. Meta's number, Google's number and your orders sit on one screen and add up to your real revenue. Setup takes 5 minutes, 14 days free, cancel anytime.

Start 14-day free trial

Everything runs in your browser; nothing you type leaves the page. Benchmark figures come from Enalitica's data, described on How we measure.

Per platform the gap is wider. Google Ads reported almost three times as many conversions as there were orders carrying a Google click ID; Meta reported 4.6 times as many as there were orders carrying a Meta click ID. Meta claimed more than its clicked orders in almost every store we measure, Google in about half.

Nobody is hiding anything here; each platform counts by its own rules, and three of those rules explain most of the gap. Google's Conversions column can include conversion actions that are not purchases. Meta counts view-through and engage-through conversions that never involved a click. And click capture misses every visitor who declined consent. So read the comparison as reported conversions versus orders carrying the click, a measured gap, not a verdict.

What the journeys rule out is the comfortable explanation that the platforms simply share customers. Across more than 6,000 customer journeys in the same window, only 1.4% of orders touched two or more ad platforms before purchase. The extra claims mostly land on orders that arrived through other channels.

Here is the illustrative store from the intro, seen from four angles in a single month:

SourceWhat it reportsWhat it is actually measuring
Meta Ads Manager€38,000Clicks plus 1-day view and engage-through, Meta only, no idea what Google did
Google Ads€19,000Clicks within Google only, blind to Meta and email
GA4€24,000Tracked purchase events only, missing blocked and non-consented orders
Bank deposit€52,000Every order that actually happened, every channel

Meta and Google together claim €57,000. The store made €52,000. The €5,000 gap is the same orders counted twice by platforms that cannot see each other. Meanwhile GA4 undercounts the real total because blocked and non-consented purchases never fired an event. You have one set of numbers that is too high and another that is too low, and neither matches the bank.

For a line-by-line walkthrough of how each platform arrives at its figure for the same orders, see how Meta, Google, and Enalitica count conversions. The short version: as long as every tool counts in its own walled garden, with no cross-channel view, the totals will never sum to your revenue. To fix that, you have to count somewhere the walls do not reach. That place is the order.

Order-Based Attribution: Start From the Sale, Not the Session

Pixel-based attribution, whether the pixel runs in the browser or on your server, starts from tracked events and tries to model its way forward to an order it believes happened. Order-based attribution flips the direction. It starts from the order (a fact in your WooCommerce or Shopify database that no ad blocker, consent banner, or browser can erase) and works backward to the marketing that drove it.

Event-based pixel attribution versus order-based attribution. The event-based side shows two pixels, a browser pixel that loses data to blockers, ITP, and consent and a server-side pixel that recovers capture, both converging on the same step of stitching events and modeling which one drove the order. The order-based side starts from the confirmed order, reads the click ID stored on it at checkout, and needs no matching or modeling to reach a known channel

The mechanics, in order:

  1. The order is the source of truth. It exists because the customer paid and you shipped. The question is never "did a conversion happen," only "what drove this specific order."
  2. Click IDs ride along on the order. When the customer lands, the tracking script reads every click ID in the URL (GCLID, GBRAID, WBRAID, FBCLID, and more) and persists it. At checkout it gets written into the order's own metadata, so the attribution is stored with the sale, not only in a browser cookie that Safari caps at 7 days.
  3. The order gets enriched. APIs to GA4, Google Ads, and Meta layer on the session journey, the exact keyword and CPC, and the campaign behind the click.
  4. A deterministic rule picks the primary channel. One order, one owner, last-click priority among valid click IDs. No two channels claim the same order in the summary.

This is what one order looks like when its journey is stored with it, in a demo store:

Enalitica customer journey for one order in a demo store: a Google Ads click on the keyword jedilni stoli hrast in the Search Dining Chairs campaign, a cart event six minutes later, an organic return three days later, then a direct visit, checkout and a 753.88 EUR purchase five days after the first click

The payoff is reconciliation. Because every channel's primary credit is mutually exclusive, the totals across channels sum to your actual shop revenue. Not 110% of it. Not 70% of it. The exact number in the bank. That is the thing pixel dashboards cannot do, because they were never counting the same thing you were.

Pixel-based attribution is an estimate. Order-based attribution is exact: for every consented order it reads the actual click that drove it, and for the orders it cannot see it says Unknown rather than guess.

Order-based attribution is not magic and it is not consent evasion. If a customer declines marketing cookies, the script does not set them and the click ID is not captured, the same as every compliant tool. Against a browser pixel it recovers the technical loss (ad blockers, Safari ITP, JavaScript that never loaded). Against a server-side pixel, which recovers that loss too, the difference is the one that survives: there is no event-to-order matching and no modeling, because the click is stored on the order itself. The honest framing is not "we see what others cannot." It is "we never have to guess our way back to an order, because the click is already on it."

For stores on WooCommerce, the platform-specific half of this story, what Woo records by itself and how to capture the rest, has its own complete WooCommerce conversion tracking guide.

The same silo problem repeats wherever a channel grades itself, and nowhere more expensively than with partner programs, where the network that measures the sale also invoices the commission; affiliate attribution without double counting applies the order-based approach there.

How Enalitica Makes Attribution Accurate

This is what I spent the last few years building, after years of doing the reconciliation by hand. Enalitica is order-based attribution for WooCommerce and Shopify stores; for Shopify we broke down separately what the order already knows about attribution and what it never will. Here is what that gives you in practice, not in marketing terms.

Every order carries its click ID. The tracking script captures eight click IDs (GCLID, GBRAID, WBRAID, DCLID, FBCLID, MSCLKID, TTCLID, LI_FAT_ID) and writes them onto the order. The two iOS identifiers (GBRAID and WBRAID) matter here: capture them and your iOS Google Ads clicks land in Google Ads instead of leaking into organic. Most pixels capture one or two click IDs. Order-based capture gets all eight, on the order, where they survive.

WooCommerce's silent attribution gap gets closed. WooCommerce's native order attribution (since 8.5, January 2024) is last-click on session cookies. A customer who arrives from a Meta ad on Day 1, closes the browser and returns directly on Day 5 checks out as Direct, because the cookies died with the first session. Enalitica persists the real marketing source in a first-party cookie (90 days on Chrome and Android, Safari's 7-day cap applies) and overrides the empty value at checkout, so the order keeps the campaign that earned it.

Direct and influenced revenue, side by side. For every channel you see two numbers. Direct revenue is orders where the channel was in the converting session, comparable to what the platform reports. Influenced (multi-touch) revenue is orders where the channel appeared anywhere in the customer journey, even if another channel closed. These are assisted conversions, counted on real orders. This is where budget decisions get real:

ChannelDirect revenueInfluenced revenueWhat you would miss with last-click only
Google Ads€15,000€28,000€13,000 in orders Google introduced but another channel closed
Organic€22,000€35,000€13,000 in orders organic supported
Email€8,000€12,000€4,000 where email was one of several touches

Look only at Google Ads' €15,000 direct and you might cut the budget. See that it touched €28,000 in orders and cutting it would quietly damage the channels that looked self-sufficient.

The direct column is the one that reconciles. In the Enalitica report every order sits in exactly one channel, so the channel rows add up to the store's real revenue for the month, not to more:

Enalitica revenue by channel for a demo store: 148 orders and 60,963 EUR of revenue split once across Google Ads, Organic, Direct, Meta Ads, Email and AI / LLM on last click, with the shares adding up to 100 percent

Profit joins the pair: POAS and MT POAS. The same two-column logic now applies to profit. Enalitica imports product costs (from Shopify, WooCommerce, your price lists or your ERP), adds shipping, payment fees and packaging, and shows POAS (profit on ad spend) next to ROAS in every campaign table: direct POAS for orders the campaign closed, MT POAS for every order it assisted. Break-even is 1.0, and the rule is to pause a campaign only when both numbers sit below it.

Keyword-level revenue, per order. Because the GCLID is on the order, Enalitica queries the Google Ads API and attaches the exact keyword, match type, and CPC. In Enalitica's data the keyword is known for about half of Google Ads orders (Performance Max, which discloses no search terms, carries about 3 in 10 of them), and in the median store around 3 in 10 keyword orders come from the store's own brand name. You open a keyword, see its orders, and click through to each one. GA4 cannot tell you which keyword drove which order. This can.

Privacy resilience where it is real. Against a browser pixel, order-based attribution survives the technical losses that flatten the data:

FactorClient-side pixel (GA4 / Meta Pixel)Order-based (Enalitica)
Ad blockersAbout 30% of visitors block the scriptOrder exists regardless; click ID survives on a hosted script
Safari ITPJS cookie capped at 7 days, 24 h after a click-ID landingSame caps apply to any script; the click ID is written on the order at checkout, and lives 90 days on Chrome and Android
WooCommerce session cookiesSource dies with the browser session, later visit shows DirectRecovered at checkout from the persisted cookie
iOS ATT (Google clicks)GCLID missing, shows as organicGBRAID / WBRAID captured
Revenue accuracyPurchase events undercountActual order totals from the shop
Non-consented ordersLostAlso lost (we do not bypass consent)

A server-side pixel (Meta CAPI, server-side GTM) recovers the technical rows above, too. What it cannot shortcut is the step underneath all of them: it still has to match events to orders and model which one drove the sale.

That last row is the honest boundary, and it stays in every comparison. Enalitica does not fabricate attribution for customers who declined tracking. They show as Direct or Unknown, the same as they would anywhere. What "accurate" means here is precise: perfect attribution on the data you are allowed to capture, with no view-through inflation and no cross-platform double-counting. One number per channel, sourced from real orders, that you can defend in a meeting.

If you have ever wondered why your reported ROAS never matches your bank account, book a demo and I will show you the gap on your own orders. The first 30 days import and enrich in a few minutes, so you see your real channel breakdown before the call ends. If you are comparing platforms, the Triple Whale alternatives guide lays out where order-based attribution fits against pixel-based attribution software, and the Northbeam alternatives guide covers the enterprise end, including MMM and incrementality tools.

How to Choose Your Attribution Approach

The right attribution setup depends on where you sell and how much you spend. When the question becomes which vendor rather than which approach, our best ecommerce attribution software guide compares ten tools on EU criteria.

Mostly US, Canada, or Australia. Consent rates are high and ad blocking skews lower in older demographics. GA4 data-driven attribution captures most of your data and is a reasonable starting point. Move to order-based when your GA4 purchase count drifts below your real order count, or when you need keyword-level ROAS.

Selling into Europe. You need order-based or server-side attribution. With a quarter of visitors accepting all cookies in the strictest markets, GA4 is missing too much to trust for budget decisions. Check the country-by-country guide to see your exposure per market.

Spending €5,000+ per month on ads. At this level a 10% swing in attribution accuracy moves real money toward or away from the right channels every month. Better data pays for itself fast.

Long or multi-session journeys. If customers visit 2-3 times before buying (normal above €50), single-touch attribution actively misleads. In Enalitica's order journeys, 25% of orders touched two or more channels, 26.5% were placed more than a day after the first touch and 7.1% more than 7 days after, which is past every window Meta still offers. You need multi-touch attribution, fed by data that survives across sessions, which means click IDs on the order rather than cookies in the browser.

What Changed in Attribution Rules in 2025 and 2026?

Attribution rules moved a lot in 2025 and 2026, mostly in the platforms' own reporting rather than in the browsers. Chrome kept its cookies, Meta rewrote its default setting twice, Google started putting modeled conversions into the main column, and the EU tabled a rewrite of cookie consent. Each of these changes a number you read every week.

  • Chrome keeps third-party cookies. Google announced on 22 April 2025 that Chrome will not deprecate them or show a new prompt, and on 17 October 2025 it retired the Attribution Reporting API, Topics and Protected Audience. The "cookieless Chrome" many guides prepared for is not coming.
  • Meta rewrote its windows. Engage-through joined the default setting in 2025, incremental attribution arrived in April 2025, and the 7-day and 28-day view windows are gone: Meta now lists 1-day view only. A Meta ROAS from 2024 and one from 2026 are not the same metric.
  • Google puts modeled conversions in the Conversions column. With consent mode, conversion modeling estimates conversions for visitors who declined cookies and reports them alongside measured ones.
  • iOS 17 strips click IDs from shared links. Apple's Link Tracking Protection removes tracking parameters such as gclid and fbclid from links opened in Mail, Messages and Safari Private Browsing; UTM parameters survive. Normal Safari browsing is not affected, and our 98.9% gclid share confirms it.
  • The EU wants fewer banners. The Digital Omnibus, tabled on 19 November 2025, would move cookie rules into the GDPR, allow one-click consent valid for six months and honour browser-level signals. Earliest entry into force is 2027, so plan for today's consent rates.

Attribution Implementation Checklist: 7 Steps

Concrete steps, ordered by impact:

  1. Compare GA4 purchase events to actual orders. Count last month's orders in your shop. Count GA4 purchase events. A gap over 15% means your pixel data is too lossy to drive budget decisions, full stop.
  2. Capture all the click IDs on the order. GCLID, GBRAID, WBRAID, and FBCLID at minimum, stored in order metadata; MSCLKID, TTCLID and LI_FAT_ID if you run those platforms. The two iOS identifiers are the ones most setups miss. Here is how to capture them in WooCommerce.
  3. Audit your UTM tagging. Inconsistent UTMs are the top cause of revenue landing in "(not set)." Pick a naming convention and enforce it across every campaign and email.
  4. Know the platform windows. Google Ads counts a GCLID click for up to 90 days (default 30). Meta's longest windows today are 7-day click and 1-day view. If you sell high-consideration products, Meta's own number is structurally cut off at day 7; the order still knows its click.
  5. Read direct and influenced revenue together. A channel with weak last-click numbers may be the top-of-funnel engine feeding everything else. Cutting it on direct alone is how you break a working funnel.
  6. Review monthly, not daily. Journeys take days to weeks to complete. Daily attribution is noise. Monthly is signal.
  7. Accept directional, reject fabricated. No tool attributes 100% of orders, because consent makes some genuinely untrackable. The goal is an honest, reconciled picture of the orders you can see, not a fantasy number that ties out to nothing.

Frequently Asked Questions

What is the difference between pixel-based and order-based attribution?

Pixel-based attribution reconstructs the journey from tracking events and models which event drove the order; a server-side pixel recovers more events but still models. Order-based attribution reads the click ID stored on the order at checkout, so there is no event-to-order matching and no modeling step. Estimate versus record.

Why is my Meta ROAS so much higher than my actual revenue?

Two reasons. First, Meta's default setting includes 1-day view and 1-day engage-through, which credit Meta when someone saw or watched an ad without clicking and then bought, even if another channel drove the visit. Second, Meta only sees Meta, so it claims the full order while Google and your email claim it too. In Enalitica's data Meta reported 4.6 times as many conversions as there were orders carrying a Meta click ID. To see the true contribution, you need a source that counts each order once across all channels.

Can I do ecommerce attribution without cookies?

Partly. Order-based attribution captures the click ID at the moment of purchase and stores it on the order, so the attribution chain is server-side and survives cookie expiration. But the initial capture still needs some client-side mechanism (a URL parameter read into a hidden field or first-party cookie) and still respects consent. There is no compliant way to attribute a customer who declined tracking. The win is recovering the consented traffic that pixels lose to technical failures, not bypassing consent.

Does GA4 give accurate ecommerce attribution?

GA4 data-driven attribution is a solid model, and for US-heavy stores with high consent it is often enough. But it attributes events, not orders: when the purchase event does not fire, that order is missing from the model entirely, and GA4 revenue runs consistently below your real total. If your GA4 purchase count is more than 15% under your shop's order count, GA4 is too incomplete to base budget decisions on by itself.

How does Enalitica reach "100% accurate" attribution?

The precise claim is perfect accuracy on the data we are allowed to capture, not attribution of every single order. For consented orders, Enalitica knows the exact click ID, keyword, campaign, and journey, and assigns each order to one primary channel with no double-counting and no view-through inflation; non-consented orders show as Direct or Unknown. "100% accurate" means the channel totals tie out to the bank, not that every order is magically attributed.

How much revenue am I misattributing right now?

For a European store running pixel-based tracking, expect 30 to 50% of customer journeys to be partially or fully invisible, split between non-consented users (genuinely untrackable) and technical losses that order-based attribution recovers. The fastest way to size your own gap is step one of the checklist: compare your GA4 purchase events to your real order count for last month. The difference is the revenue your current setup cannot explain.

Sources

The outside pages this article relies on. Links checked on 25 September 2026.

  1. the default in Google Ads (support.google.com)
  2. data-driven and last click (support.google.com)
  3. GWI, Q2 2025 (backlinko.com)
  4. 2023 study of 1.2 million banner interactions (advance-metrics.com)
  5. 7 days (webkit.org)
  6. 24 hours (webkit.org)
  7. 26% of mobile browsing worldwide (gs.statcounter.com)
  8. 30% in Europe (gs.statcounter.com)
  9. 53% in the US (gs.statcounter.com)
  10. ask before tracking (support.apple.com)
  11. 90-day lookback window (support.google.com)
  12. Enhanced conversions (support.google.com)
  13. models conversions (support.google.com)
  14. 90 days (support.google.com)
  15. GBRAID (web to app) and WBRAID (app to web) (support.google.com)
  16. Meta's attribution windows (facebook.com)
  17. Engage-through (facebook.com)
  18. January 2021 (en-gb.facebook.com)
  19. Meta's own settings page (facebook.com)
  20. incremental attribution (facebook.com)
  21. 8.5, January 2024 (woocommerce.com)
  22. 22 April 2025 (privacysandbox.google.com)
  23. 17 October 2025 (privacysandbox.google.com)
  24. Link Tracking Protection (apple.com)
  25. Digital Omnibus (europarl.europa.eu)
  26. up to 90 days (support.google.com)

Figures marked "in Enalitica's data" are aggregates from the real orders of the stores we measure, with no names and no individual orders. How we measure.

Enalitica

See your real numbers

Import 30 days of orders or leads during a 5-minute onboarding. Works for e-commerce and service businesses.

See plans and pricing