Your WooCommerce items Array Is Sending Google Product Data It Cannot Use

April 3, 2026
by Cherry Rose

Your GA4 purchase events are firing. Revenue numbers look reasonable. You’ve checked the thank-you page trigger, verified the transaction ID, compared the total value. Everything appears correct. But 70% of ecommerce stores have incomplete tracking configurations — and the most invisible failure point isn’t the event itself. It’s the product data inside it. Every GA4 purchase event contains an items array: the parameter block that tells Google exactly which products were in the order. If that array is sending blank categories, inconsistent IDs, or wrong prices, GA4 accepted it without complaint — and your product reports and Shopping campaigns are built on it.

The Three items Array Failure Modes

The GA4 items array is a structured block of parameters attached to every ecommerce event. For each product in an order, it should carry: item_id (the product identifier), item_name, item_category, item_variant, price, and quantity. When any of these are wrong, GA4 accepts the event and records the revenue — the failure is entirely silent.

There are three specific failure modes that affect WooCommerce stores most consistently.

Failure 1 — Blank item_category. If item_id is inconsistent between events, or item_category is missing, GA4 product reports lump products together or display blank category breakdowns (Conversios, 2025). For stores using product categories to segment performance — apparel vs accessories, supplements vs equipment — a blank item_category makes every category report structurally empty. Merchandising decisions that depend on category-level conversion rates, AOV, or ROAS become guesswork.

Failure 2 — Inconsistent item_id. When the same product sends a different item_id on add_to_cart versus purchase — which happens when browser-side plugins read the product ID from different page contexts — GA4 cannot stitch the funnel together. The product that appeared in 200 add_to_cart events doesn’t match the item_id in the purchase events that followed. Your funnel analysis breaks at the product level, and you cannot calculate product-specific cart abandonment rates.

Failure 3 — Wrong price values. Browser-side tracking reads price from the page DOM at event time — which may be the pre-discount price, the displayed price before tax, or a cached value from a previous page load. When the price in the items array doesn’t match the actual order line item price in WooCommerce, your GA4 average item revenue is wrong. Aggregate revenue may match (if the top-level value parameter is correct), but item-level revenue — the figure Shopping campaigns use — is corrupted.

You may be interested in: Your GA4 Purchase Events Are Firing. The Revenue Values Are Wrong.

How to Audit Your items Array Right Now

The audit takes five minutes and requires no developer access. Open GA4 and navigate to Reports → Monetisation → Ecommerce Purchases. Look at three things.

First, check the Item category column. If the majority of rows show a blank or “(not set)” category, your items array is not sending item_category correctly. Second, look at Item ID values — if you see numeric IDs that don’t match your WooCommerce product IDs or SKUs, the plugin is reading from the wrong source. Third, compare Item revenue against your WooCommerce product sales report for the same period. If individual product revenue totals differ significantly, price values in the items array are wrong.

For a more detailed view, open GA4 DebugView and place a test order. Expand the purchase event and inspect the items parameter. Every product in the order should appear with a populated item_id, item_name, item_category, and price. Any blank field is a failure in the items array for that product.

67% of data professionals say they cannot trust their analytics data for business decisions (Precisely / Drexel University, 2025). For WooCommerce stores, the items array is where that distrust is most warranted — and least investigated.

You may be interested in: Validate WooCommerce Events Before They Reach GA4

Why the Damage Reaches Shopping Campaigns

The items array failure doesn’t stay in GA4 reporting. It propagates directly into your Google Shopping and Performance Max campaign signals.

Performance Max now accounts for 45% of all Google Ads conversions (Digital Applied, 2026). PMax optimises using GA4 ecommerce product signals — specifically, which products drove conversions, in which categories, at what price points. When your items array sends blank item_category and inconsistent item_id, PMax is making product bid decisions using product intelligence that doesn’t reflect how your store actually performs.

The impact is compounding. PMax allocates more budget toward the products and categories it believes convert best — but if category data is blank, it’s effectively allocating without product-level intelligence at all. Over time, campaigns that look like they’re optimising are actually running on corrupted signal data that GA4 never flagged and you never audited.

GA4 items array supports up to 200 items per event — and exceeding that limit causes GA4 to truncate product data silently, with no error or warning (Google Analytics Documentation, 2025). For stores with large cart sizes, even technically correct items arrays may be losing product data at the 200-item ceiling.

Why Browser-Side Tracking Gets items Array Data Wrong

Browser-side tracking reads product data from two sources: the page DOM and the dataLayer. Both are unreliable for items array accuracy in specific and predictable ways.

The page DOM reflects what’s rendered on the page at the moment the tracking code executes. For a WooCommerce thank-you page, that’s often a summary of the order — which may not include full category paths, may show display prices rather than line item prices, and may not reflect post-order adjustments. Plugins that read item_category from the DOM are reading the category breadcrumb visible on the page, not the full category hierarchy stored in the WooCommerce database.

The dataLayer is more reliable — but only as reliable as how it was populated. If the plugin that built the dataLayer didn’t include item_category for every product, or read price before a discount was applied, or used the variation ID instead of the parent product ID as item_id — those errors are baked into every purchase event that follows. There’s no validation layer between the dataLayer and GA4.

Server-Side Capture: Clean Product Data From the Right Source

The WooCommerce order object, available at the server layer after payment confirmation, is the definitive source for every items array parameter. It contains the confirmed line item price (after discounts and tax adjustments), the product ID (parent or variation, depending on configuration), the full product category hierarchy, and the variation attributes. It’s the same data WooCommerce records in its own order management system — which means the items array built from it matches your WooCommerce product sales report exactly.

The Transmute Engine™ reads from the WooCommerce order hook after payment confirmation — woocommerce_payment_complete — and builds the items array directly from the order object. Every item_id matches WooCommerce’s product record. Every item_category reflects the full product category. Every price is the confirmed line item price, not a DOM-captured display value. The event that reaches GA4 is validated against the same order data WooCommerce records — not a browser snapshot of what the page displayed at checkout.

Key Takeaways

  • GA4 accepts bad product data silently: Events with blank item_category, inconsistent item_id, or wrong prices fire successfully and increment your purchase count. There’s no GA4 error that flags items array quality failures.
  • Three failure modes cover most WooCommerce stores: Blank item_category breaks category segmentation, inconsistent item_id breaks funnel stitching, and wrong prices corrupt item-level revenue and Shopping campaign signals simultaneously.
  • The audit takes five minutes: GA4 Ecommerce Purchases report → check Item category column for blanks → compare Item revenue against WooCommerce product sales → DebugView a test order and inspect the items parameter directly.
  • Performance Max is downstream of your items array: PMax optimises on GA4 product signals. Corrupted items array data means 45% of your Google Ads conversions are being optimised on intelligence that doesn’t reflect actual store performance.
  • Server-side capture from the WooCommerce order hook is the reliable fix: The order object is the definitive source for every items array parameter — confirmed prices, full category hierarchy, correct product IDs — with no DOM dependency and no dataLayer trust required.
Why does GA4 product reporting look incomplete even though purchase events are tracking?

The purchase event may be firing correctly while the product data inside the items array is silently wrong. If item_category is missing, item_id is inconsistent between events, or the price doesn’t match the actual order line price, GA4 accepts the event without error but product-level reporting becomes blank, inconsistent, or impossible to segment. Check the Item category column in your GA4 Ecommerce Purchases report — blank values confirm the items array is the failure point.

Why is item_category blank in my GA4 ecommerce purchases report?

Blank item_category means the WooCommerce tracking plugin is not reading product categories correctly from the WordPress database at the time the purchase event fires. Common causes include products assigned to categories after initial plugin setup, variable products whose variations don’t inherit parent categories, or plugins reading category data from the page DOM rather than the WooCommerce product object — which can be incomplete at checkout.

Does incorrect GA4 product data affect my Google Shopping campaigns?

Yes. Performance Max accounts for 45% of all Google Ads conversions and uses GA4 ecommerce product signals as inputs for Shopping optimisation. If your items array sends blank item_category, inconsistent item_id, or wrong price values, PMax receives corrupted product intelligence and cannot correctly attribute which products are driving conversions, which categories perform best, or which items warrant higher bids.

If your GA4 product reports show blanks where categories should be, or your item revenue doesn’t match WooCommerce product sales, the items array is the failure point — and the fix starts with reading product data from the right source. Seresa‘s Transmute Engine builds the items array directly from the WooCommerce order object after payment confirmation, so every parameter is validated against the same record WooCommerce stores.

Share this post
Related posts