GuidesGoogle Ads MCPCross-Campaign Reach

Cross-Campaign Reach in Google Ads

Why metrics.unique_users cannot be combined across campaigns, and what your options are.

The Problem

A common question when analyzing Google Ads campaigns: you query metrics.unique_users for several campaigns and get per-campaign counts. Can you add them together to get the total number of unique people who saw your ads?

No. If the same person saw ads from Campaign A and Campaign B, they are counted once in each campaign's number. Adding them together counts that person twice. The Google Ads web UI shows a deduplicated "Total: Filtered campaigns" row when you select multiple campaigns, but the API does not offer an equivalent.

This is a limitation of the Google Ads API, not specific to Pipeboard or any other tool that uses it.

What Works and What Does Not

Works: per-campaign unique users

SELECT campaign.id, campaign.name, metrics.unique_users
FROM campaign
WHERE campaign.id IN (111, 222, 333)
  AND segments.date BETWEEN '2026-03-01' AND '2026-03-31'

Returns a separate unique user count for each campaign. These counts are accurate per campaign but overlap across campaigns.

Does not work: customer-level aggregation

SELECT customer.id, metrics.unique_users
FROM customer
WHERE segments.date BETWEEN '2026-03-01' AND '2026-03-31'

-- Error: PROHIBITED_METRIC_IN_SELECT_OR_WHERE_CLAUSE

The API explicitly prohibits selecting metrics.unique_users from the customer resource. This would require server-side deduplication that Google does not expose via the public API.

Also does not work: summing per-campaign values

Campaign A unique users: 340,000
Campaign B unique users: 350,000
Campaign C unique users: 115,000

Sum: 805,000  <-- WRONG (double-counts overlapping users)
Actual deduplicated reach: unknown via API

The sum will always overcount. The amount of overlap depends on how similar the targeting and audiences are across campaigns. Campaigns with very different audiences will overlap less, but you cannot know the exact overlap from the API.

Why This Happens

The metrics.unique_users field is documented by Google as a metric that "cannot be aggregated." It is only available at the campaign resource level, and only for Display, Video, Discovery (Demand Gen), and App campaigns. It is not available for Search, Shopping, or Performance Max campaigns.

Cross-campaign deduplication requires matching individual user impressions across campaigns. This is computationally expensive and raises privacy considerations. Google performs this internally for the web UI but does not expose it through the public API.

Related metrics like metrics.average_impression_frequency_per_user have the same limitation. The newer metrics.unique_users_two_plus through metrics.unique_users_ten_plus frequency threshold metrics (added in API v23.2) are also campaign-level only.

Your Options

Use per-campaign unique users with caveats

Report unique users per campaign and note that the total is an upper bound. For campaigns with very different audiences (e.g., different geographies or demographics), the overlap is often small and the sum provides a reasonable estimate. For campaigns targeting similar audiences, the actual deduplicated reach could be significantly lower.

Export from the Google Ads UI

The Google Ads web interface can show deduplicated reach when you filter to a set of campaigns. Look for the "Total: Filtered campaigns" row in the statistics table. This requires manual export but gives you the exact number.

Google Ads Data Hub (enterprise)

Google Ads Data Hub (ADH) is the enterprise-grade solution for this problem. It provides BigQuery-based access to event-level Google Ads data, where you can write custom SQL queries that deduplicate users across campaign boundaries.

ADH requires a Google Marketing Platform contract and is not available to standard Google Ads API users. It enforces privacy thresholds (results below a minimum user count are suppressed). If your organization already uses Google Marketing Platform, ADH is the definitive way to get cross-campaign deduplicated reach.

ReachPlanService does not help here

The Google Ads API includes a ReachPlanService, but it is designed for forecasting the reach of future campaigns, not for reporting on historical data. It generates projected reach curves based on a hypothetical budget and targeting, and does not accept campaign IDs or report actual performance. It also requires allowlisting by a Google representative and a data licensing agreement.

What You Can Do Today in Pipeboard

Pipeboard surfaces all the reach data that the Google Ads API makes available. When you query unique users via GAQL, Pipeboard will include a note reminding you that these values are per-campaign and cannot be meaningfully combined.

Query metrics.unique_users per campaign to understand individual campaign reach
Use impressions and frequency as complementary reach signals that are available at all levels
Compare reach across campaigns to identify which are most efficient at finding new users
Use the data as an upper-bound estimate when campaigns have distinct audiences
Export from the Google Ads UI when you need the exact deduplicated number

Quick Reference

ApproachCross-Campaign DedupAvailability
metrics.unique_users via GAQLNo (per-campaign only)Standard Google Ads API
Google Ads UI manual exportYesAny Google Ads account
Google Ads Data HubYes (custom SQL)Enterprise (Google Marketing Platform)
ReachPlanServiceNo (forecasting only)Requires allowlisting
Sum per-campaign valuesNo (overcounts overlap)N/A

Need help with Google Ads reporting?

Pipeboard gives you access to 35+ Google Ads tools including raw GAQL queries, campaign management, and keyword optimization.