The AddToCart event on Shopify
Updated
When it fires
When a shopper adds a product to the cart, including drawer and AJAX carts that never reload the page.
AddToCart is where theme-installed pixels start failing quietly. Most modern Shopify themes add to cart without a page load, and a pixel that only fires on page load has nothing to trigger on. The event that anchors your entire mid-funnel simply never arrives.
What each ad platform calls AddToCart
The same shopper action goes by a different name on every network, and sending the wrong one means the event is silently discarded rather than rejected with an error.
Parameters AddToCart should carry
content_ids- The product added.
value / currency- Line value. Powers value-based lookalikes.
contents- Array with quantity and item price.
Why AddToCart goes missing on Shopify
- Drawer and AJAX carts add items with no page navigation, so page-load-bound pixel code never runs.
- Quick-add buttons on collection pages bypass the product template entirely.
- Apps that replace the cart form with their own handler detach any listener bound to the original.
AJAX carts are the single biggest cause of missing AddToCart
Almost every Shopify theme sold in the last few years adds to cart without a page reload — a drawer slides in, a count increments, and the URL never changes. Pixel code that runs on page load has, from its own point of view, nothing happen at all.
Quick-add buttons on collection pages make it worse, because they bypass the product template entirely. A store can test AddToCart from a product page, see it fire, and conclude the setup is healthy while the majority of its real add-to-carts — the ones happening from collection grids — are invisible. Testing the collection-page quick-add path is the check that actually exposes this.
Reading the gap between Shopify and Meta
Shopify records cart additions server-side, where nothing can block them. Meta records what reached it through a browser. A gap between the two is normal and expected — roughly ten to thirty percent on a healthy setup, accounted for by ad blockers and privacy settings.
A gap of seventy or eighty percent is a different diagnosis entirely. That is not blocking; that is the event not firing on your theme’s primary cart path. The size of the discrepancy tells you which problem you have, which makes it worth checking the ratio before assuming ad blockers are to blame.
How to verify AddToCart is firing
Add a product from a collection page quick-add button, not just the product page. That is the path that usually exposes a broken AddToCart.
AddToCart questions
- Why does Shopify report more add-to-carts than Meta?
- Shopify counts server-side and cannot be blocked. Meta counts what reached it through the browser. A gap of 10–30% is normal; a gap of 80% means the event is not firing on your theme’s cart path.
- Should AddToCart fire again when quantity increases?
- Yes, with the incremental value. Suppressing it undercounts a genuine intent signal.
Go deeper
Getting the Shopify Purchase event right →Why Shopify Purchase events go missing, arrive without a value, or count twice, and how to send AddToCart, InitiateCheckout and Purchase correctly to Meta.