How Bundle and Grouped Products Show Up in GA4 Purchases on Magento 2

|Dan Giura
How Bundle and Grouped Products Show Up in GA4 Purchases on Magento 2

TL;DR

The GA4 extension follows Magento's own product types, and no tracking setting changes the result. A fixed-price bundle is one GA4 item from view to purchase. A dynamic-price bundle and a grouped product are one item while shoppers look at them and different items once they add to cart, because Magento sells grouped products as separate lines [3] and dynamic bundles take their price from the components [2]. Item reports then show views on one row and sales on others. Read them that way, and judge bundle sales in Magento.

Key Takeaways

  • Check each bundle's Dynamic Price setting [2] before you read an item report: Yes means components from add to cart onward, No means one bundle line.
  • A grouped product reaches add to cart and purchase as its children, because in Magento "each product in the group is purchased as a separate item" [3].
  • view_item, view_item_list and select_item carry the bundle or grouped product itself, at the starting price Magento displays.
  • Product identifier [ SKU / ID ] and Child vs Parent don't change which items are sent.
  • For dynamic bundles and grouped products, Items viewed [4] sits on the parent row and Items purchased on the component rows.
  • If bundle performance has to read cleanly in GA4 item reports, only the fixed-price shape keeps views and sales on one row.
  • Before you set up Black Friday gift sets, place one test order with a fixed bundle, a dynamic bundle and a grouped product and read the pushes.

The four product types, event by event

This is the behavior in the current release (1.17.5), for the browser dataLayer in both editions and for the PRO server copy wherever PRO sends one:

Event Simple product Bundle, Dynamic Price = No Bundle, Dynamic Price = Yes Grouped product
view_item, view_item_list, select_item The product The bundle The bundle The grouped product
add_to_cart The product The bundle Each selected component Each child with a quantity above 0
view_cart, begin_checkout, add_shipping_info, add_payment_info The line The bundle line Each component Each child line
purchase The line One line: the bundle Each component, and no bundle line Each child line

The fixed-price bundle behaves like a simple product the whole way. The dynamic bundle and the grouped product switch identity at add to cart, so the switch comes long before the purchase and shapes every cart and checkout report too.

Two changelog entries touch this behavior. v1.15.11 (November 25, 2025) "Fixed an issue related to Bundle Products whereby not all associated Simple Products were sent via the event payload/dataLayer", and v1.17.2 (July 16, 2026) fixed a PHP 8 error in cart value calculations for Add to Cart and Remove from Cart events, "including bundle products with dynamic pricing" [1]. If you're on an older version, upgrade before you trust any component row.

A product page view sends the bundle or grouped product, at the starting price Magento shows for it: Adobe's bundle settings include a Price View option of Price Range or As Low As [2], and a grouped product's price "is derived from the price of the individual products that are included in the group" [3]. If list clicks don't reach GA4 on your theme at all, our guide to tracking select_item product list clicks on a custom Magento 2 theme covers that.

Which setting decides how a Magento 2 bundle product arrives?

Dynamic Price, on the bundle itself. Adobe describes the two modes: with Dynamic Price set to Yes and Price left blank, "a bundle product does not have its own price from the catalog, and the product price is derived from the price of the individual products included in the bundle"; with No, you "enter the Price that you want to charge for the bundle" [2].

Grouped products have no switch. Adobe calls them "simple standalone products that are presented as a group", and in the cart "each item and the quantity purchased is displayed as a separate line item" [3]. The order stores children, so GA4 gets children.

None of the extension's settings change this, and two of them sound like they might:

Setting What it does to bundles and grouped products
Product identifier [ SKU / ID ] Picks ID or SKU [1] for every line, so a component reports its own ID or SKU
Child vs Parent Leaves bundle and grouped lines as the table above shows

Your product feed sets its own identifier, and our article on product feed data vs GA4 item data covers keeping the two in agreement.

The browser behavior is the same in Standard and PRO; PRO adds the server-side copies through the Measurement Protocol, with the same lines, one of the differences laid out in GA4 Standard vs PRO on Magento 2.

How do GA4's item reports read each shape?

GA4 item reports are rows per Item ID or Item name, the values each event carries, so a product that changes identity between view and cart shows up on more than one row. Google's definitions make the split easy to read [4]:

  • Items viewed: "The number of items that the customer viewed."
  • Items added to cart: "The number of items added to a shopping cart".
  • Items purchased: "The number of units for a single item included in purchase events."
  • Item revenue: "The total revenue from items only, excluding tax and shipping, subtracted by refunds."

A fixed-price bundle keeps one row with all four filled in, the same as a simple product.

A dynamic bundle splits. Its own row collects Items viewed and stays at zero for Items added to cart, Items purchased and Item revenue. Each component's row collects the cart and purchase numbers, mixed in with every time someone bought that component on its own. Nothing on the component row separates the two kinds of sale.

A grouped product splits the same way, and its row shows views only. The difference is on Magento's side: a dynamic bundle still has its bundle line in the order, while a grouped product's children are ordinary separate lines [3], so a sale through the group looks like a direct sale of the same products in GA4.

You've probably sorted an item report by Items purchased and found a cable or a refill outselling everything with almost no views. If it's a component of a dynamic bundle, that's the split, not a tracking fault.

An item-scoped funnel that starts at the product view ends after that step for these two product types, because the item viewed never reaches the cart. The checkout steps in a GA4 checkout funnel for Magento 2 all come after the switch, so they carry the components or children throughout.

What a purchase line can't tell you

Each purchase line reports under its own product, with its own ID or SKU. Nothing on a component line marks it as part of a bundle, and nothing on a grouped child points back to the group. The purchase's value doesn't change with the line split either: it comes from the order's totals under the extension's value settings, so purchase revenue is the same however the lines are split.

So GA4 can't tell you how a dynamic bundle converts. It holds the bundle's views and, separately, a pile of component sales it has no way to attribute back to the bundle.

Where should you judge a bundle's sales?

Split the question by where the data is whole:

What you want to know Where to read it
How much interest a dynamic bundle or grouped product gets GA4, Items viewed on the parent row
How many dynamic bundles sold, and for how much Magento's own order data, where the bundle line still exists
How a fixed-price bundle performs from view to sale GA4 item reports, one row
How a component sells on its own Magento's order data; GA4 mixes standalone and bundle sales on one row

Choose the price type for pricing reasons and accept the reporting that comes with it. Switching a bundle to a fixed price only to tidy a report changes what customers pay.

PRO's Meta pixel itemizes the same purchases differently, keeping a bundle as the bundle, so Meta's product IDs won't line up with GA4's for dynamic bundles.

Check it on your own store with one test order

Build the test before you publish any Black Friday gift sets:

  1. Pick one fixed-price bundle, one dynamic-price bundle and one grouped product.
  2. In the extension's General Configuration, set Enable dataLayer frontend Preview/Debug to Yes and limit it to your own address with IP Address Restriction [1].
  3. Open each product page and read view_item: the item should be the bundle or grouped product.
  4. Add each to the cart, giving two of the grouped product's children a quantity above 0, and read the add_to_cart pushes against the table above.
  5. Check out and read the purchase items: one bundle line, the dynamic bundle's components, and two grouped children.

On PRO with the Measurement Protocol sending these events and the extension's option to disable the dataLayer for them switched on, the preview stays empty for those events; read the extension's log instead, which the DebugView, logs and preview tools walkthrough shows how to do. Since v1.17.4 (September 1, 2026), with Require Visitor Consent for Server-Side Events switched on, the server copies follow the shopper's Consent Mode v2 choice [1], so accept the cookie banner before the test order (how server-side events respect consent explains the option).

FAQ

Can I make a dynamic bundle show up as one item in GA4?

Not through the extension's settings. The split follows Dynamic Price, the setting Adobe documents [2], so the bundle has to be set to No.

Why does my bundle have views but no purchases in GA4?

It's a dynamic-price bundle or a grouped product. Its purchases are recorded on the components or children, from add to cart onward, so the bundle's own row only collects views.

Does Child vs Parent change how bundles are tracked?

Child vs Parent chooses whether GA4 gets a child or a parent product identifier [1]. In the current release that choice applies to configurable products, and bundle and grouped lines arrive the same way whichever way it's set.

Send each bundle and grouped product to GA4 in one consistent shape from add to cart through purchase, in both editions, with the Magento 2 Google Analytics 4 extension.

Sources

  1. WeltPixel Google Analytics 4 User Guide and Change Log (General configuration; change log v1.15.11, v1.17.2, v1.17.4), retrieved October 20, 2026, https://docs.weltpixel.com/GA4/User-Guide-WeltPixel-Google-Analytics-4.html
  2. Bundle product, Adobe Commerce Admin documentation, last updated October 8, 2026, retrieved October 20, 2026, https://experienceleague.adobe.com/en/docs/commerce-admin/catalog/products/types/product-create-bundle
  3. Grouped product, Adobe Commerce Admin documentation, last updated October 8, 2026, retrieved October 20, 2026, https://experienceleague.adobe.com/en/docs/commerce-admin/catalog/products/types/product-create-grouped
  4. [GA4] Analytics dimensions and metrics, Google Analytics Help, retrieved October 20, 2026, https://support.google.com/analytics/answer/9143382

Ready to upgrade your tracking?

Server-side tracking for Magento and Shopify — accurate data, better attribution, full privacy compliance.