A merchant opens Shopify analytics, sees Direct as the fastest-growing channel, and concludes that none of the content work is paying off.

Meanwhile ChatGPT is sending that store its best-converting traffic of the quarter, and none of it has a name.

Short answer

AI chat attribution breaks in predictable places. Some assistants send clean referrers. Some append their own UTM parameters. Some send nothing at all. And the trip through checkout can drop whatever survived that far.

So this is not one tracking trick. It is a chain of custody from the answer click to the order row, with a known failure mode at every link, and your job is to know which link broke.

What you need to know

  • You are measuring a floor, never a total. Say so in the report, or someone will treat it as gospel.
  • Direct’s growth curve is your shadow metric. It approximates what you failed to catch.
  • Verify with a real tagged test purchase. Assumptions about checkout survival are usually wrong.
  • Never retag mid-quarter. Renamed parameters orphan your history and you cannot get it back.
  • Gemini and AI Overviews are largely indistinguishable from Google organic. Do not pretend otherwise.

What does each AI surface actually send?

A mixed bag, and one worth re-verifying every quarter rather than assuming.

ChatGPT appends a utm_source identifying chatgpt.com on many outbound clicks. Perplexity generally passes a referrer and documents its agents in its crawler guide. Gemini and AI Overviews traffic arrives looking much like Google organic. And in-app browsers and privacy settings strip referrers unpredictably, dumping those sessions into Direct.

The baseline inventory, meaning which engines send what today and how to catch each one, is the groundwork laid in tracking generative AI referrals in GA4. What matters here is getting those signals all the way through checkout to revenue.

SignalWhere it appearsFailure mode
utm_source from the engineLanding page URLStripped by redirects, app browsers
Referrer headerGA4 session sourcePrivacy settings, HTTPS downgrades
Your own UTMsLinks you control in cited contentOnly covers pages you tagged
Landing page patternPages mainly cited by AICircumstantial, needs corroboration
Order attributionShopify order sourceLast-click only, loses assists

Which UTMs should you set yourself?

Tag every link you control that an AI surface might relay. Your content cited in answers, your Shop listings, your feeds, any chat-commerce integrations.

Use one stable convention. utm_source for the surface. utm_medium as something like ai_referral so reporting can group it. utm_campaign for the page family.

Then leave it alone. Retagging mid-quarter orphans your history, and there is no way to stitch it back together afterwards.

You cannot tag the engine’s own behaviour, so the convention’s real job is covering your half and staying consistent enough that the engine’s half is recognisable sitting next to it.

How does attribution survive checkout?

This is where Shopify specifics start to matter.

The session landing on your storefront carries its UTMs and referrer into GA4. Checkout continues that session. But any domain change can restart it: legacy checkout domains, headless storefronts handing off, payment redirects bouncing through a wallet or a bank.

Three defences. Keep GA4 installed through checkout via the official integration. List every cross-domain hop in GA4’s cross-domain settings. And spot-check the whole thing by running a tagged test purchase and confirming the order’s session source actually survived.

Then build a GA4 custom channel group catching your ai_referral medium plus the known engine sources, following Google’s channel group documentation. Without it, AI chat traffic keeps dissolving into Referral and Direct.

How do you report revenue per engine honestly?

By admitting up front that you are reporting a floor.

Stripped referrers mean real AI revenue is hiding inside Direct. Last-click models hand assisted conversions to whatever channel happened to close. Neither is fixable, so build the reporting around it instead.

Report per-engine revenue from your channel group as the confirmed minimum. Watch Direct’s growth curve as the shadow. And corroborate with landing-page patterns, because pages that mainly earn AI citations suddenly converting is a signal rather than a coincidence.

The full framework, with dashboards, assisted views and the floor-versus-shadow distinction, is in measuring GEO revenue in GA4.

Do not let the measurement problem become an excuse, though. Answers are composed from your indexed content, as Google’s AI features documentation describes, so attribution gaps never justify skipping the visibility work that created the traffic in the first place.

What this changes for paid budgets

Attribution is the hinge between GEO and PPC.

Once AI chat revenue is visible as a channel, even as a floor, you can compare its CAC, effectively your content cost amortised over orders, against paid search line by line. Then move budget to wherever the blended number wins.

Most stores find their AI-referred cohort converts above site average, which argues for funding the content and data work earning those citations. That budget logic is worked through in bridging PPC and AI search. Without the attribution chain, the argument never gets its numbers and loses to whoever has a dashboard.

Perplexity referrals deserve their own segment here. They are verification clicks from buyers checking an answer’s sources, and they convert accordingly. How stores earn those citations is in how luxury stores earn the Sources link in Perplexity.

App-first stores carry an extra leg: assistant referral, to web mirror, to app install, to first order. The mirror architecture making app-exclusive commerce visible to assistants at all is in making your Tapcart app visible to LLM discovery.

And attribution only tells you the conversation happened. Keeping its intent is the next step, with question themes routed into CRM properties so post-sale flows continue it. That merge architecture is in feeding conversational search data into Klaviyo flows.

Nivk.com supplies the other side of this ledger for Shopify stores. It tracks which engines cite you, for which prompts, against which competitors, so rising AI revenue in your reports can be traced back to the visibility that produced it.

Frequently asked questions

What is the best way to attribute ChatGPT traffic to Shopify orders?

Catch the engine’s utm_source and referrer in GA4. Group them in a custom channel group alongside your own ai_referral tagging. Keep GA4 alive through checkout with cross-domain settings. Then verify the whole chain with a tagged test purchase. Report whatever comes out as a confirmed floor rather than a total.

Why does AI chat traffic show up as Direct?

In-app browsers, privacy settings and redirect chains strip referrers and parameters before they reach you. Some of that loss is unavoidable. The channel group catches what survives, and Direct’s growth curve tells you roughly the size of what did not.

Should I use different UTMs per AI engine?

Same medium, different source. Put utm_medium to work grouping the channel for reporting, and let utm_source preserve the per-engine split. Keep the convention stable across quarters, because renaming parameters orphans every trend line you have built.

Does Shopify’s own order attribution capture AI referrals?

Only partly. Order source data is last-click and inherits exactly the same stripped-referrer blindness. Treat Shopify’s number as a second floor and reconcile it monthly against your GA4 channel group rather than picking whichever one you prefer.