ServicesAboutNotesContact Get in touch →
EN FR
Note

Google Ads Performance Max Data Gaps

Why Performance Max campaign data is incomplete in BigQuery DTS, what's actually missing, and how to get the data you need.

Planted
google adsbigquerydata qualitydata engineering

Performance Max (PMax) is Google’s campaign type that runs across Search, Display, YouTube, Gmail, and Maps simultaneously using a single budget and asset group. PMax data is incomplete in BigQuery DTS: it requires a non-default checkbox to appear at all, and even with that checkbox enabled, metrics are frequently missing from stats tables.

What PMax Is

PMax campaigns run across Google’s entire network using a single campaign budget and asset group. Google’s algorithm decides where to show ads, to whom, and in what format. Advertisers provide creative assets and conversion goals; Google handles placement, bidding, and optimization.

PMax campaigns don’t expose the granular breakdowns that standard campaign types do — campaign-level numbers are available, but not ad-level or placement-level numbers. This is a platform constraint that exists regardless of extraction method, but DTS compounds it with additional data gaps.

The Two DTS-Specific Problems

Problem 1: The Hidden Checkbox

DTS doesn’t include PMax data by default. During transfer configuration, there’s a separate checkbox labeled something like “Include PMax Campaign Tables.” If you miss this checkbox — and many teams do, because the default setup flow doesn’t highlight it — your PMax campaigns simply don’t exist in BigQuery.

You’ll see campaign names in your attribute tables but zero rows in your stats tables for those campaigns. This looks identical to a PMax campaign that’s paused or has zero spend, so it can go undetected for a while.

The fix is straightforward once you know about it: go back to the transfer configuration in the BigQuery console and enable the PMax tables option. But the fact that this is a non-default option for data from campaigns that Google is actively pushing as the default campaign type is a meaningful gap in the product design.

Problem 2: Metrics Missing Even When Enabled

Even with the checkbox enabled, PMax stats tables frequently have missing metrics. Campaign names appear in attribute tables — you can see the campaigns exist — but the corresponding rows in stats tables either don’t appear or appear with NULL values for most metrics.

Ad-level stats are entirely empty for PMax campaigns. This isn’t a segmentation issue like the ClickType trap — it’s genuinely missing data at the source level.

This is a known issue documented across multiple community forums and the Google Ads API developer community. The root cause is that PMax’s unified campaign structure doesn’t map cleanly to DTS’s table schema, which was designed for the older campaign type models.

The Support Problem

The support experience compounds the data problem. When you file a support ticket about PMax data missing from BigQuery, you’ll typically get redirected between the Google Ads team and the GCP team, with neither team owning the issue clearly.

The Google Ads team treats it as a BigQuery product question. The GCP team treats it as a Google Ads data question. The Slack channel for Data Transfers has been described as “a lot of complaints but nobody from Google ever responded.” This isn’t a bug with an ETA for a fix — it’s an architectural gap in a product that Google hasn’t prioritized resolving.

When This Matters

The severity depends on your PMax spend allocation. If PMax campaigns represent:

  • Under 20% of spend: You can probably live with the gap. Document it, apply a correction factor in your reporting, and note the limitation in your data documentation.
  • 20-50% of spend: You have a material gap. Stakeholders looking at campaign-level performance will see an incomplete picture. Consider supplementing with API calls.
  • Over 50% of spend: DTS alone is not sufficient for your reporting needs. You need a more complete data source.

Google has been actively recommending PMax migration for shopping and branded campaigns, so PMax spend allocation tends to increase over time.

How to Fill the Gap

Option 1: Google Ads API Direct

The Google Ads API (GAQL) provides full PMax data access, including campaign-level metrics that DTS misses. You lose the zero-maintenance convenience of DTS, but you gain complete, accurate data.

A basic GAQL query for PMax campaign performance:

SELECT
campaign.id,
campaign.name,
campaign.advertising_channel_type,
metrics.impressions,
metrics.clicks,
metrics.cost_micros,
metrics.conversions,
metrics.conversions_value,
segments.date
FROM campaign
WHERE campaign.advertising_channel_type = 'PERFORMANCE_MAX'
AND segments.date DURING LAST_30_DAYS

This returns PMax-specific data that DTS either omits or represents incompletely. Running this via the API requires handling authentication, pagination, and rate limits — or using a tool that handles these for you.

Option 2: Managed Connector

Fivetran and Airbyte both handle PMax reporting properly in their Google Ads connectors. If your team is already using either tool for other connectors, extending to Google Ads is the most hands-off path to complete PMax data.

The cost trade-off is real — Fivetran starts at $500+/month — but if PMax campaigns represent significant spend, the cost of incomplete data (misoptimized campaigns, wrong budget allocation) likely exceeds the connector cost.

Option 3: Hybrid Approach

Use DTS for the bulk of your Google Ads data (non-PMax campaigns, keyword stats, search terms) and supplement with direct API calls or a lightweight pipeline for PMax campaign metrics only. This preserves DTS’s zero-maintenance benefits for the data it handles correctly while filling the PMax gap with targeted API extraction.

This is the most practical option for teams that don’t want to pay for a full managed connector but need accurate PMax data. The dbt integration can source from both DTS tables and PMax-specific API tables using the same transformation patterns.

Verification Steps

To check whether PMax data is present and populated in an existing DTS setup:

  1. Confirm that the “Include PMax Campaign Tables” checkbox is enabled in the transfer configuration.
  2. Query attribute tables to count PMax campaigns: WHERE campaign_advertising_channel_type = 'PERFORMANCE_MAX'.
  3. Join those campaign IDs to stats tables and check whether metrics are populated.