Subscribers Only
The full article plus 21 more subscriber-only posts come with a subscription.
- 01 The cart attribute path works forward, the GA4 join path works backward; a request to upload orders from a past date onward forces the second one.
- 02 The landing field on a Shopify order only holds the entry URL of the converting session and may arrive without a query string in practice, which makes it an unreliable click ID source.
- 03 The cart token acts as the join key; it can be parsed from the checkout URL, read through the Web Pixel, or sent to GA4 as a custom dimension at add-to-cart time.
- 04 cart_token, checkout_token and token on the order payload are all different; the hash in the order confirmation URL is actually the order token, and a join built without format verification silently returns nothing.
- 05 What sets the loss ceiling for every path is the consent rate, not the join key; measure the ceiling first, then pick the method.
+ Why is there no msclkid or gclid on a Shopify order?
The Shopify order record was not designed to carry ad click identifiers. The landing field on the order only holds the entry URL of the converting session, and even when campaign parameters are present in that URL, the query string can be lost during data transfer. The supported way to bring a click ID onto the order is to read the parameter at click time and write it as a cart attribute or metafield.
+ Does the cart attribute path recover past orders?
It does not. A script that writes cart attributes only affects carts created after it goes live. When a backfill request arrives for orders from a given date onward, this path alone is insufficient; you need another source collected during that period, which in practice means GA4 data.
+ Which field should be used to match a Shopify order with GA4?
The cart token created at the checkout step is the most practical key. It appears inside the checkout URL in the GA4 page path report and is stored as the cart identifier on the order side. Because the landing URL in the same session carries the click ID, all three can be brought onto a single row. The alternative key is the order hash in the order confirmation URL.
+ What is the difference between the cart token and the checkout token?
They are identifiers belonging to different lifecycles and they appear in different formats. The token in the checkout URL and the cartToken delivered through the Admin API or Flow may not share the same representation in every store. Before building the join, place the cn value from the checkout URL next to the cart_token, checkout_token and token fields on a single test order and verify which one matches which.
+ What is this matching good for if no offline conversion upload happens?
The same matching produces measurement even without an upload. How many of the sessions carrying a click ID actually converted into an order, how large the gap is between the conversion count the platform reports and the store record, and how that gap is distributed across channels all come out of this table. It can be a sufficient input for budget decisions on its own.
+ Is there a backward time limit for uploading?
Yes. On both Microsoft Advertising and Google Ads, conversions uploaded more than 90 days after the last click are not processed. On Google, the limit drops to 63 days when enhanced conversions for leads is used. For that reason, backfill projects should check the window first and plan data preparation around that limit.