Glossary

Performance Max product-level reporting: listing groups and the Products tab

Performance Max reports product-level results in two places: the Listing groups tab inside each asset group and the account-wide Products tab. The Products tab reports one row per Merchant Center product; the Listing groups tab reports on whatever attributes you subdivided by, down to item ID if you went that far. Their totals often will not match the campaign row: impressions can be higher because every product in an ad collects one, while cost and conversions cover only ads that served products from your feed. Neither shows profit by default. Gross profit appears on the Products page, and at campaign and ad-group level, only when purchase conversions carry cart data and products carry a cost_of_goods_sold value; products without one are left out.

Last checked · More glossary

Listing groups: a filter and a report

A listing group is a set of products inside a Performance Max asset group, defined by Merchant Center attributes, that decides which products the asset group may advertise and reports how they performed. In Google’s words, listing groups “organize your listings by the attributes assigned to them in Merchant Center. You can use them to manage which listings are included in your campaigns.”

You can subdivide by category, brand, item ID, condition, product type, channel and up to five custom labels (category only when the campaign targets one of the countries Google lists, such as the US, UK, Germany or France). An asset group can hold up to 1,000 listing groups, though Google notes that “a large number (>1K) of listing groups is not a best practice, and your performance may suffer” and recommends grouping items with custom labels instead.

Standard Shopping uses product groups for the same job and adds bids: each product group can carry its own bid, and “each product can appear in only one biddable product group per ad group.” Performance Max bids are set by Google AI from the campaign’s objective, so its listing groups decide which products are included, not what is bid.

  1. Step 1: Open the campaign

    Go to Campaigns and select the Performance Max campaign.

  2. Step 2: Open its listing groups

    Select Asset groups, then Listing groups in the page menu.

  3. Step 3: Choose a view

    The hierarchy view is where you subdivide; the list view shows every listing group as a row you can sort by column. Filters on clicks, conversions or average CPC can be saved.

  4. Step 4: Exclude if needed

    Select the green circle next to a listing group or subdivision and choose Exclude.

The asset group report is a different page: conversions, conversion value, conversion rate, cost per conversion and the best asset combinations for the group as a whole.

Why listing-group numbers differ from campaign numbers

They count different things, so a mismatch is expected rather than an error. Google says the Listing groups tab “can only report on product-level data. For example, when an ad shows many products in an individual ad slot, each product collects an impression. However, the campaign, asset group, and ad recognize that only a single ad was showing and will count it as one impression.”

Example figures: an asset group serves 1,000 ads and every one shows four products. The campaign and asset group rows report 1,000 impressions; the product rows add up to 4,000.

  • Can be higher than the campaign: impressions, engagements and TrueView views, each counted once for every product in the ad.
  • Repeated per product: a click on the headline or store name is a non-product click, recorded for every product in the ad.
  • Credited to one product: a product click, which goes to the item the shopper selected.
  • Lower than the campaign: cost and conversions, which cover “only the share attributed to ads that served products from your Merchant Center feed.”

Check your dates too. From June 2026 Google’s product reporting covers every Performance Max network, where cost and conversions previously covered only its Search-network ads, and Google warns this “may cause a one-time increase” in Performance Max product metrics. A comparison across that change is not like for like.

The Products tab across campaign types

The Products tab is the cross-campaign view: one row per Merchant Center product, wherever it served. At account level it covers Standard Shopping and Performance Max only; product stats for Video, App and Demand Gen campaigns are at campaign level. You reach it from Products in the Campaigns menu.

Its metrics are impressions, product clicks, non-product clicks, interactions, engagements, TrueView views, cost and conversions, organised by product, category, brand, product type or custom label. A network filter splits cost and conversions by channel, such as YouTube against Search.

It also shows product overlap — the same item in several campaigns — and status, so a strong product that has turned “Not eligible” surfaces with its issue. To include or exclude products you use listing groups in Performance Max and product groups in Standard Shopping (Google, answer/15092136).

What neither report shows by default

Both reports measure advertising, not profit. Cart-data profit metrics appear at Campaigns, Ad groups and Products levels (Google does not list the Listing groups tab), and four gaps remain unless you close them.

  • Cost of goods: gross profit appears only when purchase conversions carry cart data and your Merchant Center products carry the cost_of_goods_sold attribute, which is optional per product.
  • Refunds: a conversion keeps its reported value unless you upload an adjustment (RESTATE or RETRACT), matched on the original order ID (or the GCLID and conversion time) and within 54 days of the conversion.
  • Fees: no Products-page or cart-data metric is a payment processing fee or shipping you bear.
  • Your store’s currency: conversion values are “always reported to you in your Google Ads billing currency”; values sent in another currency are converted at Google’s “average daily foreign exchange rate”, and the account’s currency “is permanently set when you set up your account.” If Shopify reports in another currency, reconciling Google’s converted figures with your ledger is yours.

Cart data closes part of the gap. A product with no cost is left out of gross profit: in Google’s own example, an order with a $10 hat costing $3 and a $20 shirt with no cost reports $7 of gross profit. Viewed by advertised item ID, revenue and gross profit include every product in the orders that followed the ad; the “lead” metrics count only the advertised product.

When Google’s own reporting is enough

If your tag already sends cart data, every product in your feed has a cost, refunds are rare or sent back as adjustments, and your store and ad account share a currency, the Products tab gives you gross profit per product without another tool. Its revenue is still orders attributed to your ads, not your Shopify order ledger.

How Opteno uses Google’s per-offer spend

Opteno starts from the per-offer spend Google reports against each product offer and takes revenue from your Shopify orders instead of Google’s conversions. It reads daily spend, impressions and clicks per offer for Standard Shopping and Performance Max, in the ad account’s own currency, and joins each offer to the Shopify product it belongs to.

  1. Step 1: Spend per offer, per day

    Spend that cannot be tied to a product is reported as unattributed, never spread across the catalogue, so attributed plus unattributed always equals what the account spent.

  2. Step 2: Shopify supplies the rest

    Revenue is gross sales minus refunds. Cost of goods is each sold variant’s cost-per-item, or a store-wide percentage if you set one. No script or pixel goes on your storefront.

  3. Step 3: Currency, day by day

    Each day’s spend is converted at that day’s rate before summing. A day with ad activity and no usable rate makes the affected totals not computable rather than estimated.

  4. Step 4: Windows and breakdowns

    Rolling 7, 14, 30 and 60-day windows, each ending yesterday, per product, variant, country and Shopify market.

Example figures for one product over 30 days: its offer spent £400; Shopify shows £1,500 of gross sales and £100 of refunds, so revenue is £1,400; cost of goods is £700. ROAS = 1,400 ÷ 400 = 3.5×. POAS = (1,400 − 700) ÷ 400 = 1.75×, against a break-even of 1.00×. Net profit = 1,400 − 700 − 400 = £300.

Opteno’s published arithmetic is revenue minus cost of goods minus ad spend, so payment fees and shipping are not in it; allow for them separately. It covers Google Ads only.

The one thing it writes in Google Ads

In Google Ads, Opteno’s single write is the offer-level listing-group filter inside a Performance Max asset group. Each exclusion is planned per offer per asset group, validated with Google without being applied, and held for a person to approve; a preview expires after 30 minutes. An offer that would exceed Google’s listing-group cap is reported as blocked. Budgets, bids and campaign status are out of reach.

Questions

Where do I find product-level results for Performance Max?

Inside the campaign, go to Asset groups and then Listing groups for a row per listing group, down to single item IDs if you have subdivided that far. For all your Standard Shopping and Performance Max campaigns at once, open Products from the Campaigns menu; Video, App and Demand Gen product stats are shown one campaign at a time.

Why do my listing-group impressions add up to more than the campaign’s?

A product collects an impression each time it appears in an ad, while the campaign counts the ad once. In Google’s own example, one ad impression that features five products counts as five product-level impressions. Google calls the difference expected.

Why is product-level cost lower than campaign cost?

Google’s product report includes only the cost and conversions attributed to ads that served products from your Merchant Center feed. The rest stays at campaign level. It is still real spend, so do not drop it when you total your products.

Can Google Ads show profit per product?

Gross profit, yes, if you report conversions with cart data and add cost_of_goods_sold to your Merchant Center products. Products without a cost are left out, and the figure rests on attributed conversions, before unadjusted refunds and before fees.

Do refunds reduce the conversion value Google reports?

Google’s documented method is to upload conversion adjustments — RESTATE to change a value, RETRACT to remove a conversion — matched on the original order ID and within 54 days. Google notes one conversion may need adjusting more than once, for example when items are returned at different times.

How do I stop one product serving in Performance Max?

One way is to subdivide the asset group’s listing group down to that item ID and exclude it, then repeat in every asset group the product appears in, because each asset group has its own listing groups. For many products, Google recommends custom labels over one listing group per item.

See which products are losing you money

Connect Shopify and Google Ads in under five minutes. From $14.99 a month, cancel whenever you want, and no change to your store or your campaigns without your approval.

support@opteno.app