Google Ads Product Performance

Fetch product-level performance metrics from Google Ads Shopping and Performance Max campaigns

Google Ads Product Performance node on canvas with Output port

What does the Google Ads Product Performance node do?

The Google Ads Product Performance node pulls stats for each product in a Shopping or Performance Max campaign over the period you pick: impressions, clicks, cost, conversions, and calculated metrics (CTR, CVR, ROAS). Each result row is one product in one campaign, with totals for the whole period — not a day-by-day breakdown.

Optionally, you can add brand, product category, and custom labels from your Merchant Center feed.

Info

A few useful terms

  • SKU — product identifier in your catalog (often the item ID from your merchant feed).
  • ROAS (Return On Ad Spend) — revenue generated for every $1 spent on ads (higher = more profitable).
  • CVR (Conversion Rate) — share of clicks that turn into a purchase or conversion.
  • CTR (Click-Through Rate) — share of impressions that generate a click.
  • Cohort — group of products sharing the same tag or criterion, e.g. the same custom label (heroes, promo, etc.).

Common uses:

  • Spot your best- and worst-performing products on a Shopping campaign
  • Export a product × metrics table to Google Sheets
  • Filter a product cohort tagged in Merchant Center
  • Feed an LLM node to rank or summarize results

For campaign- or keyword-level reports, use Google Ads Campaign Reports instead.

Quick setup

Connect Google Ads

Go to Builder → Integrations → Google Ads and connect the account that runs your product campaigns.

Add the node

Integrations → Google → Google Ads Product Performance.

Pick the account and campaign

Select the Customer ID, then one Shopping or Performance Max campaign. This node returns many rows — one campaign per node keeps the result manageable.

To let the user pick account and campaign at launch, enable Use variables for customer ID and campaign ID and wire an upstream Google Ads Campaigns node.

Pick the date range

For example Last 7 Days or Last 30 Days. Labels match the Google Ads interface.

(Optional) Segments and filters

Tick Include Segments to add brand, product categories, and custom labels to each row. You can then filter on a custom label (e.g. only products tagged heroes).

(Optional) Output columns

At the bottom of the panel, tick or untick columns in Core Fields and Segment Fields depending on what downstream nodes need.

Configuration parameters

Google Ads Product Performance settings before customer and campaign are selected
Info

The Output fields section only appears after you pick a Google Ads integration, a Customer ID, and a Shopping or Performance Max Campaign.

Required fields

integration_id string required

Google Ads account connected to Draft & Goal. Pick it from the list, or enable Use a variable for the integration if an upstream node supplies it.

customer_id string required

Google Ads account ID (no dashes), e.g. 1234567890. Pick from the list, or via variable when Use variables is on.

campaign_ids string required

One Shopping or Performance Max campaign only. For several campaigns, duplicate the node (one per campaign) and merge results downstream if needed.

date_range string required default: last_7_days

Analysis period: Last 7 Days, Last 30 Days, Month-to-date, etc. — same presets as Google Ads Campaign Reports.

Optional fields

include_segments boolean default: false

Adds brand, product category levels (L1–L5), and the 5 Merchant Center custom labels to each row.

custom_label_filters list default: []

Filters products by custom label value (slots 0–4). E.g. slot 1 = heroes to fetch only that cohort.

Available only when Include Segments is checked.

custom_label_filter_combinator string default: AND

Combines multiple filters: AND (all criteria must match) or OR (at least one).

OR works only when every filter targets the same custom label slot. Otherwise the node shows an error on save.

core_fields list default: ["productItemId", "impressions", "clicks", "cost", "conversions", "roas"]

Main columns to include: campaign/product IDs, impressions, clicks, cost, conversions, CTR, CVR, ROAS, etc. Default: product ID, impressions, clicks, cost, conversions, and ROAS.

segment_fields list default: ["productBrand"]

Segment columns when Include Segments is on. The more you tick, the more rows the table may contain (split by brand, category, label…).

Output fields

Google Ads Product Performance settings with Core Fields checked and Segment Fields greyed out

Once account and campaign are set, two checkbox groups appear:

  • Core Fields — performance metrics and product identifiers (sensible defaults for a first export).
  • Segment Fields — greyed out until Include Segments is enabled.
Tip

For a first test, keep the default Core Fields. Turn segments on only if you need to filter or analyze by brand / custom label.

Variables at launch

use_variables boolean default: false

Customer ID and campaign ID come from an upstream node (often Google Ads Campaigns) instead of being fixed in settings.

use_integration_variable boolean default: false

The Google Ads integration is also supplied by variable. Automatically enables Use variables for account and campaign.

What does the node output?

A JSON object with a rows array: one row per product in the campaign, for the selected period.

{
  "customerId": "1234567890",
  "startDate": "2026-01-01",
  "endDate": "2026-01-31",
  "rows": [
    {
      "campaignId": "1111111111",
      "campaignName": "Shopping FR",
      "productItemId": "sku-123",
      "productTitle": "Red Sneakers",
      "impressions": 1000,
      "clicks": 100,
      "cost": 150.5,
      "conversions": 10,
      "conversionsValue": 500.0,
      "ctr": 0.1,
      "cvr": 0.1,
      "roas": 3.32
    }
  ],
  "meta": { "currencyCode": "EUR", "rowCount": 1 }
}

With Include Segments enabled, each row can also include brand, product categories, and custom labels from your merchant feed.

Info

Cost is in the Google Ads account currency. Products without an ID (productItemId empty) are excluded from the result.

Usage examples

Example 1: Export to Google Sheets

Google Ads Product Performance → Google Sheets Writer

Set your account, a Shopping campaign, and Last 30 Days. Wire the output to Google Sheets Writer for a ready-to-use table.

Example 2: Drill down on a custom-label cohort

Your Merchant Center feed tags certain SKUs as heroes in custom label 1. Enable Include Segments, add a filter on that label, then export or analyze only that cohort.

Google Ads Product Performance → Google Sheets Writer

Example 3: Campaign chosen at launch

Google Ads Campaigns → Google Ads Product Performance → LLM

The user picks account and campaign in the launch form; the node fetches matching product performance for LLM processing (ranking, summary, recommendations).

Best practices

Warning

On a large Shopping catalog, the result can contain thousands of rows. Use custom label filters or a focused campaign to limit volume before sending data to Sheets or an LLM.

Info

Brand, categories, and custom labels depend on what you fill in Merchant Center. Empty fields are common if your feed does not use every column.

Tip

Custom labels (0–4) are free-text columns in your feed — each business uses them differently (season, margin, promo status, etc.). Check your own feed to know what each slot means.

Common issues

No rows in the result

Make sure the selected campaign is Shopping or Performance Max. Other campaign types do not return product data in this node.

OR filter is greyed out or blocked

OR works only when every filter targets the same custom label slot. Otherwise use AND, or group your values on a single slot.

Custom label filters is greyed out

Tick Include Segments first. Custom label filters are only available with segments enabled.

The same SKU appears on multiple rows

With segments on, one product may split across several rows if its brand, category, or a custom label changed mid-period in the merchant feed. Sum the rows if you need one total per SKU.

The campaign disappeared from the list

It may have been archived or renamed in Google Ads. Re-open the node settings and pick an active campaign.

An expected column is missing from the result

It is probably unchecked in Core Fields or Segment Fields. Re-open settings and tick the column you need.