Every standard eCommerce conversion tracking setup has the same structural problem: it measures the product that got clicked, not what the customer actually bought. For retailers where cross-sell, upsell, and bundled purchasing are meaningful revenue contributors, this means campaign ROAS is perpetually understated for some products and overstated for others — and budget allocation decisions are built on an incomplete picture of where revenue actually comes from.

Google Ads API v24's expanded cart data support and CartDataSalesView are the most meaningful step toward fixing this at the reporting level. Here is what they add and how to use them.

Why clicked-product reporting is incomplete

Consider a home goods retailer running Shopping campaigns. A user clicks on a £199 dining table. The conversion tracking records a £199 purchase with a table as the converted product. The campaign ROAS is calculated based on £199 against the click cost.

What actually happened: the user purchased the table, four matching chairs at £89 each, and a table runner for £29. Total order value: £584. The campaign that drove the click delivered nearly three times the revenue that standard reporting attributed to it. The chairs and runner were never clicked from an ad. They do not appear in any campaign performance report. The merchandising team and the PPC team have no shared view of what the table campaign actually contributed to the business.

What cart data adds in v24

  • Full order line-item data attached to the purchase conversion — product IDs, quantities, prices, and margin data
  • CartDataSalesView: a reporting resource showing products sold by campaign, ad group, and product group — not just products clicked
  • Product-sold brand, category, and variant reporting alongside the clicked-product dimensions
  • Average cart size metrics segmented by campaign and product group
  • Gross profit reporting where margin data is included in the conversion payload

What CartDataSalesView makes possible

Business questionPreviously answerable?Answerable with CartDataSalesView
Which campaigns generate the highest total order value?No — only clicked-product revenueYes
Which products are most frequently purchased alongside our ad-clicked hero products?NoYes
What is the average cart size for purchases driven by each campaign?NoYes
Which products sold in our orders were never clicked from an ad?NoYes
Does Campaign A drive higher-margin orders than Campaign B?Only if margin is embedded in conversion valueYes, with margin data in cart payload

Business questions this unlocks

  • Which hero products (the ones clicked) reliably pull through high-margin accessories?
  • Are some campaigns driving high ROAS on clicked products but low total order value?
  • Which product categories, when entered through an ad click, produce the largest carts?
  • Are bundles or complementary products worth featuring more prominently in campaigns, based on how often they appear in orders from non-bundle ad clicks?
  • What is the true ROAS of a campaign when total order value — not just clicked product value — is attributed to it?

Implementation considerations

  1. Cart data is sent via the Google Ads Conversion API — standard gtag or GTM purchase events alone do not carry line-item data
  2. Each line item in the cart payload requires product_id matching the item IDs in your Google Merchant Center feed
  3. Quantity, unit price, and optionally cost_of_goods_sold (for margin reporting) are required fields per line item
  4. Implementation typically requires backend development: order data must be pushed server-side at the point of order completion
  5. CartDataSalesView data is accessed through the Google Ads API — it is not fully surfaced in the standard Ads interface, so API access or a connected reporting tool is needed

How to use this for merchandising and media decisions

Once you can see the product composition of orders driven by each campaign, two decisions become more data-grounded than before:

  • Budget allocation: campaigns driving hero product clicks that pull through high-value accessories deserve higher ROAS attribution and potentially more budget than standard reporting suggests
  • Bidding strategy: if a £50 product reliably anchors a £300 order, the max CPC for that product should reflect the expected order value, not just the product price
  • Merchandising: if the cross-sell pattern is consistent, featuring the hero product in ads while ensuring the accessories are prominent on the landing page and cart page reinforces the revenue pattern the data reveals
  • Feed management: products that frequently appear in carts but are rarely the clicked product are candidates for higher Shopping bid multipliers or dedicated campaigns

eCommerce example: accessories and bundles

A camera retailer running Shopping campaigns measures ROAS per camera body click. Standard reporting shows ROAS of 3.2x across camera body campaigns — acceptable but not strong. After implementing cart data and pulling CartDataSalesView, they find that camera body clicks drive an average of 2.3 additional items per order, including memory cards, cases, and lens filters. Total order ROAS when accessories are included: 6.8x.

The accessories themselves have their own Shopping campaigns with ROAS of 4.1x — measured only on clicked accessory conversions. The camera body campaigns are actually more valuable than their ROAS suggests. Budget allocation shifts accordingly.

eCommerce example: apparel cross-sell

A clothing retailer notices through CartDataSalesView that dress campaigns consistently drive orders that also include shoes and jewellery. The dress ROAS in standard reporting is 4.5x. When the frequently co-purchased items are included in the order value attributed to dress campaigns, the effective contribution is significantly higher. The team creates a specific Shopping campaign for dresses that uses higher target ROAS to reflect the actual order contribution and sees the campaign scale profitably at spend levels that looked unjustifiable under standard reporting.

API implementation checklist

  1. Confirm Google Ads Conversion API access is configured with a valid developer token
  2. Map your order system's product IDs to Google Merchant Center item IDs — these must match exactly
  3. Build the cart data payload format: order ID, currency, line items (product_id, quantity, unit_price, cost_of_goods_sold)
  4. Send the payload server-side on order confirmation — do not rely on browser-side triggering for API calls
  5. Validate with five test orders: confirm all line items appear correctly in the conversion API response
  6. Build a CartDataSalesView query via the API to confirm product-sold data is populating correctly
  7. Connect to a reporting layer (Looker Studio, BigQuery, or data warehouse) for ongoing analysis