I build server-side order capture for AI-channel orders. A webhook takes each order as Shopify writes it, the order is classified and tagged agentic, and it is sent to GA4 through the Measurement Protocol. It goes to Meta CAPI or Google Ads only when the order carries an identifier those platforms can actually use — a click id, a matching browser id, or a hashed identifier you have consent to send. Anything else is recorded in GA4 and left out of the ad platforms, on purpose.
The classification reads what Shopify itself records about where an order came from. In the Admin API that is Order.attribution (from API version 2026-07), Order.app, Order.publication and sourceName. Shopify has deprecated channelInformation, so I don’t build on it. ChatGPT buyers pay on your own checkout, so for them the signal is the visit. The API keeps a visit’s referrer, landing page and UTM parameters in customerJourneySummary, though nobody documents how much of that survives ChatGPT’s in-app browser. What Shopify doesn’t document, as of 2 October 2026, is which values its AI channels write into these fields. On your store I read them on real AI-channel orders first, and only then fix the rules.