Shopify automatically sends core e-commerce events to GA4 — but “automatic” doesn’t mean “complete.” In most audits we run, at least one key funnel event is either missing or firing with incomplete parameters, quietly skewing attribution and conversion reports without any error showing up anywhere.
This article breaks down what Shopify actually tracks by default, what’s most commonly missing, and how to check the quality of each event.
The 5 pillar events, at a glance
| Event | What it captures | Reliable by default? |
|---|---|---|
view_item | Product page view | Yes — usually complete |
add_to_cart | Item added to cart | Mostly, but variant detail often missing |
begin_checkout | Checkout flow started | Yes, but rarely carries coupon data |
add_shipping_info / add_payment_info | Intermediate checkout steps | Often missing entirely |
purchase | Completed order | Yes — usually complete |
The standard GA4 e-commerce funnel
GA4 expects a structured sequence of e-commerce events, each with specific parameters (items, value, currency), documented in Google’s GA4 e-commerce schema. The five pillar events are:
view_item— product page viewadd_to_cart— item added to cartbegin_checkout— checkout flow startedadd_shipping_info/add_payment_info— intermediate checkout stepspurchase— completed order
If you’re using Shopify’s native integration (see our guide to connecting GA4 and Shopify), these five events fire automatically in theory. The problem is almost never their total absence — it’s the quality of the parameters they carry.
What’s tracked reliably by default
On a standard install, purchase and view_item are generally reliable: they include product ID, price, currency, and quantity. That’s enough for basic reporting (total revenue, most-viewed products).
What’s most often missing
Product variants
Shopify identifies each variant (size, color) with a distinct ID on the platform side, but the view_item event sent to GA4 doesn’t always carry that granularity — often only the parent product ID comes through. Result: no way to tell whether “Blue T-shirt, size M” converts better than “Red T-shirt, size L.” On a catalog with heavy variation (apparel, cosmetics), that’s a direct loss of insight for product optimization.
Coupon codes
The coupon parameter exists in GA4’s e-commerce schema, but Shopify’s native integration doesn’t consistently populate it across every event in the funnel. Without it, there’s no way to measure the actual impact of a promo code on conversion rate compared to non-discounted orders.
Cross-sell and upsell
If you’re using an upsell app (ReConvert, Zipify-type apps) or checkout product recommendations, these interactions almost never generate a dedicated GA4 event by default. You see total revenue increase, but can’t attribute it to the upsell specifically — making it impossible to judge whether the app justifies its cost.
add_shipping_info and add_payment_info
Both events exist in GA4’s standard schema but are often absent from Shopify’s native integration, or only partially implemented. Without them, your GA4 checkout funnel jumps straight from begin_checkout to purchase — you lose visibility into exactly where visitors abandon between starting checkout and paying, a critical data point for identifying friction (shipping costs shown too late, a missing payment method).
How to check what’s actually firing on your store
The most reliable method doesn’t rely on Shopify’s documentation (which changes) but on direct inspection:
- Open your store in private browsing, F12 → Network tab, filter on
collect. - Navigate the full funnel: product page → add to cart → checkout → payment (use Shopify Payments’ test mode to avoid generating a real order).
- For each
collectrequest, inspect the payload: look for the event name (en=) and its parameters (items,value, etc.). - Cross-check with GA4 → Admin → DebugView (enable debug mode via the GA4 Debugger extension) to see in real time what Google receives and how it’s interpreted.
If you find gaps — missing variants, empty coupon field, missing add_shipping_info — the fix almost always goes through Google Tag Manager rather than the native integration, since GTM lets you enrich each event with custom data pulled directly from the DOM or Shopify’s theme dataLayer.
Shopify’s dataLayer, your best ally
Since Online Store 2.0, Shopify themes commonly expose a dataLayer that GTM can consume to enrich events — variants, coupons, and shipping information are often available there even when GA4’s native integration doesn’t pass them through. The work then becomes mapping these variables in GTM rather than rebuilding collection from scratch.
FAQ
Why doesn’t my GA4 conversion rate match Shopify Analytics? The two tools apply different attribution rules and time windows. Shopify Analytics counts every order placed on the store; GA4 only counts sessions where tracking worked correctly (ad blockers, consent refusal, JS errors). A gap of a few percentage points is normal; above 15% signals a tracking problem.
Should I track add_shipping_info and add_payment_info even for a small store? Yes, if checkout abandonment is a concern — these are precisely the events that let you locate where visitors drop off between purchase intent and actual payment.
Do third-party Shopify apps send their own GA4 events? Rarely reliably. Most apps (upsell, reviews, wishlist) don’t integrate natively with GA4’s e-commerce schema — they usually need to be connected manually through GTM by listening to their own JS events.
Next in this series: why your GA4 revenue doesn’t match Shopify’s — the full diagnostic checklist, 8 causes ranked by frequency.
Want a full audit of your GA4 events and a dashboard that actually centralizes your Shopify data? Check out our Shopify Dashboards offer or book a free 30-minute call.