Google Ads Product Performance
Fetch product-level performance metrics from Google Ads Shopping and Performance Max campaigns
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.
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
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
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.
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.
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
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.
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.
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.
Related nodes
Lets the user pick account and campaign when the workflow runs
Campaign or keyword reports — when you do not need product-level detail
Rank, comment on, or summarize product rows
Exports the performance table for analysis or reporting
Pulls specific columns from the rows table before the next node