Analytics
GA4 key events for ecommerce: what to mark in 2026
GA4 key events are the events you star so Analytics treats them as business outcomes, not just traffic. I am Alan Vo, a Gold Coast web developer with 18 years on Magento, Shopify and WooCommerce catalogues. In 2026 the Admin UI still says key events where a merchandiser says conversions, and that naming gap is how a store ends up bidding on add_to_cart.
Google's mark events as key events help article is the product rule I implement against. Starring is a property setting, not a second pixel. If purchase is duplicated, starring it only makes the fiction louder. Payload work still lives in GA4 ecommerce events that match real revenue. This note is which events I star, which I unstar, how counting methods change the number, and why Google Ads conversions are a different object.
What changed for GA4 key events in 2026
What changed for GA4 key events in 2026 is the split Google published between a key event and a conversion. In Conversions vs. key events, a key event is an action that matters to the business and shows up in Analytics reports. A conversion is the action you also want for Ads bidding and Ads-side reporting. The flow is event, then key event, then conversion. You do not rebuild an existing property. Historical conversion data is still readable as key event data. Google Ads conversions shared into Analytics do not carry that history.
The rename is not cosmetic on a catalogue. People still import "GA4 conversions" into Ads and then wonder why begin_checkout is an optimisation target. Google is explicit: if you create a Google Ads conversion from a non-key event, Analytics marks that event as a key event automatically.
purchase is marked as a key event by default on web and app. App-only defaults include first_open, in_app_purchase, app_store_subscription_convert and app_store_subscription_renew. Those sit in addition to the events you mark yourself. Standard properties can mark 30 events. Analytics 360 properties can mark 50.
The production trap is Ads Personalization on a linked Google Ads account. The same help page then stars add_to_cart, add_to_wishlist, begin_checkout, session_start, view_item, view_item_list and view_search_results. That is a catalogue's entire browse path plus session start. Leave it starred and key event rate looks like a carnival.
You still send the event from the storefront. Google's tag platform conversions guide is two steps for Analytics: fire the event with gtag or a GA4 Event tag, then mark it in the property. Marking without a correct purchase payload is a labelled empty box.
How GA4 key events actually work on a catalogue
How GA4 key events actually work on a catalogue is by event name, not by a parameter filter. Analytics registers a key event every time that event_name arrives. You cannot say "only when value is over 50" inside the star. If you need that, send a different event name from the theme or GTM and star that name. I almost never do that for revenue. I fix purchase instead.
Counting method is the second lever. Change the counting method of key events gives two options. Once per event (recommended) counts every firing. Once per session (legacy) counts one per session even if the event fired five times. If a thank-you reload sends purchase twice, once per event counts two. Once per session hides the second. I set purchase to once per event and I stop the second fire in the pixel, with transaction_id as the dedupe key. Once per session is the default only for key events that came from Universal Analytics goals, including automatically created GA4 properties and the goals migration tool after April 2023. Migrated Magento and WooCommerce properties from the UA era often still sit there. I read the method before I argue about conversion rate.
Value is the third lever. About default key event value says a default amount applies only when the event has no value. A $1 default on generate_lead invents revenue that then gets compared to Ads. I do not set a default on purchase or on add_to_cart.
The payload still has to be the recommended ecommerce shape. Google's measure ecommerce guide and the purchase setup tutorial want transaction_id, value, currency and an items array. Recommended events say value should be the sum of price times quantity for the items, without shipping or tax stuffed into that sum, and that currency is required if you set value. Tax and shipping are their own parameters. Starring does not rewrite the object.
On Shopify I map checkout_completed to purchase. Theme GTM never sees hosted checkout. The Customer Events path is in Shopify custom pixel for Google Tag Manager. Names have to match. On WooCommerce block checkout the thank-you is not always the old order-received body class. On Magento, a module that sends checkout_success will never fill the default purchase key event. I rename at the dataLayer.
Marking is not retroactive. Reports pick up the star from the time you set it, with up to 24 hours for standard reports. Unstarring does not rewrite history. A week of session_start as a key event poisons the month even after you turn the star off.
Production checklist for starring purchase without starring the funnel
The production checklist for starring purchase without starring the funnel is inventory, names, counting, value, Ads linkage, then a test order.
- List every event currently starred. Include defaults and anything Ads Personalization added. Screenshot the Key events tab.
- Confirm the live event name is exactly
purchase. Shopifycheckout_completed, Magento success observers and WooCommerce plugin names are mappings, not the GA4 name. - Confirm
purchasehastransaction_id,value,currency,items,taxandshipping. DebugView first, as in GA4 DebugView. - Leave
purchaseas a key event. That is the revenue outcome. - Unstar
session_start,view_item,view_item_listandview_search_resultsif Ads Personalization starred them. Those are funnel diagnostics, not outcomes. - Unstar
add_to_cart,begin_checkoutandadd_to_wishlistunless you will never import them into Ads. Carts and wishlists are not revenue. - Set
purchasecounting to once per event. Then stop duplicate thank-you fires. Do not use once per session as a bandage. - Do not set a default key event value on
purchase. If value is missing, fix the pixel. - If you need Ads bidding, create a Google Ads conversion from the
purchasekey event, with the same value and transaction id rules. Do not create Ads conversions from browse events. - Check the key event lookback window so the number you quote matches GA4 attribution for ecommerce.
- Place a test order. Confirm one
purchasein DebugView, one key event in Realtime, and the same order id in admin. Refund it. Reconcile after 48 hours against the gateway.
A Magento catalogue with layered nav and a boutique Shopify theme still have one revenue event. Magento will fire more view_item_list events. Starring those lists does not tell you which filter converts.
What breaks when GA4 key events include the whole browse path
What breaks when GA4 key events include the whole browse path is the conversion rate itself. session_start as a key event means almost every session converts. Channel comparison becomes noise. A merchandiser will ask why paid is working when the only thing that fired is a session. I have had that meeting. The screenshot of the star next to session_start ends it.
Create a Google Ads conversion from add_to_cart and Smart Bidding will hunt carts, not orders. You will see more carts. You may see fewer purchases. The conversions vs key events page is clear that a conversion is for campaign performance and bidding. Do not give bidding a browse event.
Migrated UA goals are the quiet double count. A property that still has goal_3 or order_confirmation starred alongside purchase counts the same thank-you twice. I unstar the legacy names after I prove purchase is firing.
A default value on a lead-style event that a plugin also sends on every newsletter popup invents revenue that never hit the gateway. I keep revenue on purchase only. Consent still wraps this. If analytics_storage is denied, starring cannot recover a hit that never arrived. Server-side collection can send purchase later. Do not fire client and server purchase without transaction_id dedupe. That warning is in server-side vs client-side analytics. Two measurement IDs are the other classic: a Shopify channel app plus GTM plus a Magento module will send three purchase events. Each is a key event. One owner.
How to measure whether the stars match money
How to measure whether the stars match money is to pick one outcome event and compare it to the gateway, then to Ads, with timezone and lag named out loud.
Pull seven days of paid-and-captured orders from Shopify, WooCommerce or Magento. Pull GA4 purchase event count and purchase revenue. Pull key event count for purchase only. Those two GA4 numbers should be the same if purchase is the only revenue star and counting is once per event. If key event count is lower, you are on once per session or you starred a different name. If it is higher, another event is in the blended report.
Then pull Google Ads conversion count for the action created from that key event. They will not match exactly. Consent, modelled conversions, lookback and view-through exist. Direction should agree. A 2x gap is a tag. A small gap on a Safari-heavy fashion store can be privacy. I still want the GA4 purchase event closer to the gateway than to Ads.
Use DebugView on a real checkout, including Shop Pay and express wallets. Use an exploration for one SKU from view_item to purchase. Funnel events can stay unstarred and still be in the exploration. Key events are a highlight, not the only events you collect. Watch for purchase with empty items. Starring does not fill items. The connector does.
Related work on this site
Retail conversion at scale is three Magento stores, funnels and a $2.5 million year-on-year sales increase over three years. Conversion was an operational number, not a starred browse event. Their Nibs is a Shopify rebuild with published lifts of 31 percent more conversions and 48 percent more orders. That lift was journey and theme. GA4 still had to record one purchase per order. Offporter is another Shopify catalogue where checkout measurement has to survive hosted checkout. For payload shape, use GA4 ecommerce events. For channel credit after the star is honest, use GA4 attribution. For Ads value matching, use Google Ads enhanced conversions.
FAQ
Which GA4 key events should a store mark?
The GA4 key events a store should mark start with purchase and usually end there for revenue. Funnel events stay collected. They do not need a star. If the business also lives on leads, mark generate_lead, not page_view.
Why do GA4 key events show more conversions than Shopify or Magento?
GA4 key events show more conversions than Shopify or Magento when you starred browse events, when purchase fires twice, or when a migrated UA goal still sits next to purchase. Count stars, then count purchase hits for one order in DebugView.
Are GA4 key events the same as Google Ads conversions?
GA4 key events are not the same as Google Ads conversions. A key event is the Analytics highlight. A conversion is the Ads object you bid on. Google will auto-star an event if you create an Ads conversion from it. Keep bidding on purchase.
Should add_to_cart sit in GA4 key events?
add_to_cart should not sit in GA4 key events on a live catalogue unless you are doing a time-boxed UX study and you will not import it into Ads. Ads Personalization may star it for you. Unstar it. Carts are a step. Orders are the outcome.
Keep reading
Contact if you want this kind of work on a live store.