Skip to main content
Analytics & reporting

Why a bundle fires multiple 'Add to cart' events

If you track Add to cart events in Google Analytics, Meta (Facebook) Pixel, TikTok, or a similar tool, you may see a single bundle record several Add to cart events at once. This is expected, and it does not mean a purchase was counted twice.

Why it happens

A bundle goes into the cart as one action, but that action can create several cart lines, usually one for each product or variant in the bundle. Shopify fires one add to cart event for each cart line it creates. A bundle with a main product and a free gift creates two lines, so your pixel shows two events.

Quantity on a single line does not multiply events. A Buy 3 offer of the same variant is one cart line with a quantity of 3, and it records one event. The count follows the number of lines, not the number of units.

These events come from Shopify itself, not from a Bundlex setting. Whenever a cart request adds several lines, Shopify normally sends one event for each of them, whichever app made the request. It is normal for bundles rather than a sign that something is wrong.

What it means for your data

Your cart and orders are not affected. Customers are charged the right amount, orders are recorded once, and the per-line counting does not add extra checkout or purchase events. The extra add-to-cart events can show up in reports, audiences, or campaign rules built on that event, so keep the per-line counting in mind when reading those numbers for bundle products.

Your Bundlex reporting is unaffected, because it records whether a visitor added through the widget during their visit rather than counting cart lines. You can trust the figures on your Bundlex analytics page regardless of what the pixel shows.

How to tell expected counts from a real duplicate

There is a simple check: add the bundle, open your cart page, and count the lines it created. One event per cart line is expected. If the events clearly outnumber the lines, something else is adding them. The usual causes are:

  • The pixel is installed more than once, for example added through your theme, a tag manager, and an app at the same time, so every add can be reported more than once.
  • The Add to cart button fires twice, which can happen with a sticky add-to-cart bar or a quick-buy button that duplicates the main form.
  • Another marketing or analytics app is sending its own add-to-cart event on top of Shopify's.

To find the source:

  1. Use Meta Pixel Helper or TikTok Pixel Helper to see each provider's events fire in the browser, and GA4 DebugView (with debug mode enabled) to watch the events Google receives.
  2. Check every place a pixel can be installed: your theme code, tag manager, the Customer events section in Shopify settings, and pixels added by sales channels or other apps.
  3. Add a plain, non-bundle product to the cart. If a single item still fires more than one event, you have a general duplicate-tracking issue that is independent of bundling.

If you want a single event per bundle

The per-line events cannot be turned off, because Shopify is the one sending them. If your setup needs exactly one add-to-cart event per bundle, a developer can have your storefront publish a single bundle-level event when the add succeeds and forward it through a Shopify custom pixel (Settings, then Customer events) instead of the standard per-line events. One caveat: if your Meta or TikTok integration is already forwarding the standard events, it keeps doing so alongside the new one, so the developer also needs to adjust that integration or the combined event just becomes one more. Most stores do not need any of this, since campaigns usually optimize on the checkout and purchase events, which are not affected by the per-line counting.

Quick rule of thumb: match the number of events to the number of cart lines the bundle creates. If they line up, your tracking is working as intended. If the events clearly outnumber the lines, look for a duplicate pixel or a double-firing button rather than a Bundlex issue.

Was this article helpful?

Your feedback helps us improve our docs.

Thanks - we'll keep improving this article.

Want to chat with our team? Still have a question?

Still need help?

Our team is one click away. Send us a message and we'll get back to you.

We use a few cookies to keep this site working, measure how it is used, and power our chat widget when you open it. See our cookie policy.