Eighteen months into the AI-commerce transition, most Shopify brands are underfunding GEO for a dumb reason: their attribution model silently credits direct traffic with 100% of AI-discovered revenue. 68% of AI-referred buyers return via direct or email 1-7 days later, land outside the default last-click window, and convert without AI ever getting attribution credit. This post walks the five attribution models, names the 60/40 position-based model as the pragmatic default for GEO-forward brands, and ships a four-layer implementation stack you can hand to an engineer this week.

Why your default attribution model lies about GEO
Shopify’s default attribution is last-click. GA4’s out-of-the-box model is also last-click (officially called “data-driven” but it collapses to last-non-direct for most mid-market stores). Under last-click, a buyer who discovers you on ChatGPT on Monday, thinks about it for two days, returns by typing your URL directly on Wednesday, and checks out with a $137 order gets attributed 100% to “Direct/Other.” AI gets zero. The AI referral might not even appear in your weekly scorecard if the session was under the cookie window and you never sent it server-side.
The consequence is systematic: any brand running last-click attribution will conclude that GEO delivers near-zero revenue — even when it’s actually driving 15-25%. Budget meetings turn into “why are we spending $18k on content that doesn’t convert?” when the correct framing is “that $18k is silently driving $180k we’re crediting to direct.” Fix the attribution and the budget conversation flips.
The five attribution models, ranked
Last-click (avoid)
The default on GA4, Shopify, and most ecommerce analytics. Credits 100% of the revenue to the session where the conversion happened. For AI-discovery paths, this means direct-return visits get 100% of the credit and the AI first-touch gets zero. Do not use this model if you’re making GEO budget decisions.
First-click (diagnostic only)
The mirror image. Credits 100% of the revenue to the first recorded touch. Useful as a diagnostic for “what channels create new buyers” but over-credits GEO the same way last-click under-credits it. Run it alongside your primary model to see the full range, but don’t make budget decisions off first-click alone.
Linear / equal-split (acceptable fallback)
Splits credit equally across all recorded touches. For a two-touch path (AI discovery → direct conversion), that’s 50/50. Linear is the compromise model when finance insists on equal-weight defensibility — it’s not optimal but it’s honest, and it’s a massive improvement over last-click. If you can’t get buy-in for position-based, default to linear.
Time-decay (OK)
Weights touches by recency using an exponential decay with a configurable half-life (usually 7 days). Touches closer to conversion get more credit. For our typical 2-touch path with a 3-day gap, time-decay gives the direct last-touch ~70% and AI first-touch ~30%. Better than last-click, worse than position-based — under-credits the discovery work.
Position-based 60/40 (Surfient default)
Credits 60% to the first touch, 40% to the last touch, and splits any middle touches equally among themselves (for longer paths, the middle typically gets 10-20% total with first and last adjusted proportionally). For a 2-touch path: 60% AI, 40% direct. This is the pragmatic default for GEO-forward brands because it explicitly rewards both the discovery work (GEO) and the closing work (site experience, checkout, retention). It’s also what Google Ads and Meta use under the hood when you pick “position-based” attribution.
The four-layer implementation stack

Layer 1 — Client-side capture
The easy layer. GA4 gtag with a custom channel group that explicitly captures chatgpt.com, chat.openai.com, claude.ai, perplexity.ai, and the Google SGE referrer pattern. Shopify analytics pixel with a first_touch_source cookie stored first-party for 30 days. This is ~3 hours of work. Most brands have this layer running.
Layer 2 — Server-side enrichment
Where the work begins. Client-side cookies die on cross-device switches, after privacy mode, when the user clears cookies, and when ad-blockers strip first-party pixels. Send the same event via GA4 Measurement Protocol server-side, and store first_touch_source in Shopify’s Customer.metafields so it survives the cookie window. Surfient ingests asession_start webhook for this — roughly a day of engineering work to wire up.
Layer 3 — Identity resolution
The layer most brands skip. Capture an SHA-256 email hash at every login and checkout event. When a user logs in on their fourth session, backfill their previous three anonymous sessions (stitched by cookie key) to the same customer_id. This is what turns 2.3 typical touches into the complete pre-conversion path. Budget one engineering week if you’re on vanilla Shopify, two if you’re on Hydrogen and need to wire up your own session store.
Layer 4 — Revenue attribution
Once Layers 1-3 are live, Layer 4 is the easy part: apply the 60/40 position-based model to the stitched path on every order, surface the result in your analytics panel and in Shopify’s native reporting. Surfient does this in the citation panel alongside the AI-discovery impression data; roll-your-own with a BigQuery materialized view if you’re not using us.
- Week 1: Layer 1 live in GA4 + Shopify pixel with the custom channel group deployed.
- Week 2: Layer 2 server-side event pipeline with GA4 Measurement Protocol + Shopify metafield writes.
- Week 3: Layer 3 identity stitching on checkout + login with SHA-256 email hash backfill.
- Week 4: Layer 4 attribution model in place, 60/40 position-based by default, exposed in weekly revenue scorecard.
The conversation this unlocks in your leadership meeting
Before the four-layer stack, GEO conversations sound like: “we spent $18k on content and our AI referral revenue is $400 — why are we doing this?”
After the four-layer stack, they sound like: “we spent $18k on content and our position-based model shows $72k of revenue with AI as first-touch, 4.0x ROI in the first quarter, and that’s before the compounding benefit kicks in month 4-6. Let’s double the budget.”
Same spend. Same content. Same revenue. The only thing that changed is visibility. Ship the four layers and stop letting your attribution model lie to your CFO.