Your GA4 checkout funnel probably jumps straight from begin_checkout to purchase, with nothing in between. That gap is where most abandonment actually happens — and it’s the part Shopify’s default integration is least reliable about sending.
This guide covers exactly which checkout events Shopify fires out of the box, which ones you’ll need to implement yourself, and how to do it without Shopify Plus.
The four checkout events GA4 expects
GA4’s e-commerce schema defines a specific sequence for the checkout flow:
begin_checkout— the customer enters the checkoutadd_shipping_info— shipping method selectedadd_payment_info— payment details enteredpurchase— order completed
Each carries the standard e-commerce parameters (items, value, currency), plus event-specific ones: shipping_tier for shipping info, payment_type for payment info, coupon where applicable.
The value of tracking all four isn’t completeness for its own sake — it’s that each step-to-step drop-off points to a different problem. A collapse between begin_checkout and add_shipping_info usually means shipping costs are surprising people. A drop between add_shipping_info and add_payment_info points at payment method availability or trust issues.
What Shopify actually sends by default
On a standard install with the native GA4 integration:
Reliable: begin_checkout and purchase. Both fire consistently with proper e-commerce parameters.
Unreliable or absent: add_shipping_info and add_payment_info. These are often missing entirely, or fire without the parameters that make them useful (shipping_tier, payment_type).
The result is a funnel report that shows entry and exit but nothing about the middle — precisely the blind spot you needed the funnel for. We cover the broader picture of what Shopify’s integration does and doesn’t send in our guide on GA4 e-commerce events.
Implementing the missing events with Customer Events
The clean way to fill the gaps is Shopify’s Customer Events API (also called Web Pixels), available on all Shopify plans — not just Plus. This matters, because the older approach of editing checkout.liquid requires Shopify Plus and is being phased out.
In the Shopify admin, under Settings → Customer events, you can add a custom pixel that subscribes to standard checkout events and forwards them to GA4. Shopify exposes events including checkout_started, checkout_shipping_info_submitted, checkout_contact_info_submitted, payment_info_submitted, and checkout_completed.
The mapping to GA4 is straightforward:
checkout_started→begin_checkoutcheckout_shipping_info_submitted→add_shipping_infopayment_info_submitted→add_payment_infocheckout_completed→purchase
Two things to get right in the implementation:
Pass the full items array. An add_shipping_info event without items and value is nearly useless for funnel analysis — GA4 will register the step but you won’t be able to segment by product or cart value.
Include the step-specific parameters. shipping_tier (the shipping method name) and payment_type (card, PayPal, Shop Pay) are what turn these events from a checkbox into an actual diagnostic tool.
The express checkout problem
Shop Pay, PayPal Express, Apple Pay and Google Pay let customers skip most of the checkout flow. A buyer who taps Shop Pay goes almost directly to completion — meaning add_shipping_info and add_payment_info genuinely never happen for them.
This isn’t a tracking bug, but it distorts your funnel: express checkout users appear as drop-offs at every intermediate step, then reappear at purchase. If a meaningful share of your orders come through express payment, segment your funnel analysis by checkout type, or you’ll conclude your checkout is leaking when it’s actually converting well.
This is also a common reason for purchase counts exceeding begin_checkout counts, which looks impossible until you account for the paths that bypass the standard flow.
Verifying your implementation
The reliable check doesn’t rely on documentation but on direct observation:
- Enable GA4 DebugView (via the GA4 Debugger browser extension).
- Run a complete test purchase using Shopify Payments’ test mode, going through the standard checkout — not express.
- Watch DebugView for all four events firing in sequence, and inspect each one’s parameters.
- Repeat with an express payment method to see how the flow differs.
- Cross-check the network tab for duplicate firing — the double-tracking issue we cover in our GA4-Shopify connection guide affects checkout events as much as purchase.
Once implemented, give it a week before reading the funnel seriously. Checkout data on a handful of orders tells you nothing.
FAQ
Does Shopify send add_shipping_info and add_payment_info automatically? Not reliably. begin_checkout and purchase come through consistently on a standard install, but the two intermediate checkout steps are often missing or only partially implemented — which leaves a blind spot exactly where most abandonment happens.
Can I add custom checkout events without Shopify Plus? Yes, through Shopify’s Customer Events (Web Pixels) API, available on all plans. It exposes standard checkout events you can subscribe to and forward to GA4, without needing checkout.liquid access, which is Plus-only.
Why does my checkout funnel show more purchases than begin_checkout events? Almost always a tracking gap rather than a real anomaly: either begin_checkout isn’t firing on every entry path into checkout (express payment buttons like Shop Pay or PayPal often skip it), or consent blocking is dropping the earlier event while the purchase still fires server-side or after consent is granted.
Want a dashboard that ties your checkout funnel, ad spend, and real Shopify revenue into one report? Check out our Shopify Dashboards offer or book a free 30-minute call.