quest_ai_max_ga4_attribution.exe
_
□
×

AI Max: the Sept 30 Migration That Breaks Your GA4 Attribution

On Sept 30, Google moves your campaigns to AI Max and splits Cross-network into 7 channels. GA4 still shows one: here is how to reconcile your attribution.

google-ads ai-max cross-network attribution ga4 bigquery guide

In four days, on September 30, 2026, Google closes the automatic migration window to AI Max. Most advertisers will be watching their bids and their CPA. That misses the real story. The shock nobody is talking about yet plays out in the reports: AI Max changes what you see and, above all, it breaks the alignment between Google Ads and your GA4 attribution. If you own tracking or analytics, AI Max and GA4 attribution will keep you busy well past the deadline, because your Google Ads numbers and your GA4 numbers are about to tell two different stories about the same traffic.

Straight to the point: this article is not one more recap of the new AI Max columns. It is the demonstration of a specific gap, the split of Cross-network into seven channels on the Google Ads side while GA4 keeps showing a single one, plus a concrete method to reconcile the two worlds through BigQuery and Google Ads Data Manager.

What actually switches on September 30

First the scope, because there is a lot of confusion. The automatic and mandatory migration of September 30, 2026 covers two things: campaign-level broad match campaigns, and Automatically Created Assets (ACA). From that date, these elements move to AI Max without asking your opinion. Dynamic Search Ads (DSA) are pushed to February 2027, so you get a reprieve on that part, but only that part.

Why does this concern analysts too, and not just traffic managers? Because AI Max does not merely change the bidding and matching mechanics. It changes how Google Ads structures its reports. And the moment a source report changes structure, the entire attribution chain that leans on it, GA4 included, ends up misaligned. The traffic manager sees the CPA move; the analyst sees the channels stop matching. Those are two symptoms of the same event.

What concretely changes in Google Ads reporting

Before we tackle the GA4 case, let us lay out what moves on the Google Ads side, because that is where most PPC articles stop.

First new feature: a “Sources” column appears to tell impressions apart by origin. In practice, you see whether a serve came from keyword expansion or from page-content matching, with values like AI_MAX_KEYWORDLESS and AI_MAX_BROAD_MATCH. It is useful for auditing what the engine adds on its own.

Second new feature: a unified search-term report. Each row now groups the search term, the assets served, and the landing page delivered, with a “Selected by” column that tells you who picked the landing page. You move from a siloed view to a unified per-query view.

Third change, quieter but heavier in consequences: the Performance label disappears on Search and Display. The little marker that told you “this asset performs well” is gone. You can also filter by AI Max match type to isolate what the new mechanic generates.

All of this shipped and was documented within the same September 2026 window. It is fresh, and a handful of English PPC sites already cover it. Where I want to take you is one notch further.

AI Max and GA4 attribution: the real gap

Here is the point I have not seen covered anywhere on the analytics side. In Google Ads reports, the Cross-network of Performance Max and Demand Gen is now split into seven distinct channels: Search, Search Partners, YouTube, Display, Gmail, Discover, and Maps. You finally see where your impressions and clicks really land inside those catch-all campaigns.

The problem: GA4 has not moved. In the Default Channel Group, Performance Max and Demand Gen are still bundled under a single “Cross-network” channel. In other words, Google gives you media-level granularity on one side, and keeps cramming everything into one bucket on the other.

The table below sums up the gap:

What you look atGoogle Ads (after AI Max)GA4 (Default Channel Group)
PMax / Demand Gen campaigns7 channels: Search, Search Partners, YouTube, Display, Gmail, Discover, Maps1 channel only: “Cross-network”
Media granularityBy serving surfaceAggregated, no detail
Direct reconciliationPossible per channelImpossible without reprocessing

Take a concrete example. A Google Ads report now shows you that, on one Performance Max campaign, 40% of the cost went to YouTube and 25% to Display. The same campaign, in GA4, returns a single “Cross-network” row with a conversion total, full stop. There is no way to know which of the seven surfaces drove those conversions. You have cost broken down on one side, conversions in a lump on the other.

In practice, when a marketing director asks how much YouTube brought in inside the PMax campaigns, Google Ads has been able to answer since September. GA4, with its attribution modeling and its Default Channel Group, still cannot isolate YouTube from the rest of Cross-network. So you cannot cleanly cross cost per surface (Google Ads) with conversions per surface (GA4), even though both platforms are describing the same traffic. This is exactly the kind of gap that burns hours in meetings explaining why the numbers do not match.

If Google Ads to GA4 attribution gaps sound familiar, this is the same family of problem as the gad_source trap, where your paid clicks get recounted as organic. I documented it in detail in the gad_source trap.

Why it distorts your entire cross-channel arbitrage

This gap is not a cosmetic reporting detail. It attacks an implicit assumption that a large part of your steering rests on: the media channel is correctly identified.

Take cross-channel budgeting. The moment you allocate a budget across channels, you assume each channel is measured properly. If GA4 Cross-network stacks YouTube, Display, Gmail, and Discover into a single line, you are allocating blind on that portion. I laid out the limits of that exercise in GA4 Cross-Channel Budgeting: Scenario Planner and Limits; AI Max only makes the problem I already flagged worse.

The same shortcut weakens your media models. An MMM like Meridian, or a geo incrementality test, consumes the media channel as an input. If the input aggregates seven very different surfaces (a YouTube view and a Search click do not carry the same incremental value), the model inherits noise it cannot correct. You are feeding a sophisticated model with an input variable that has gone blurry.

The reconciliation method

Enough diagnosis. Here is how to glue the two worlds back together. The general idea: pull the per-channel detail from Google Ads, and cross it with GA4 sessions at the finest possible level, to rebuild a segmented Cross-network that GA4 does not give you natively.

Step 1: get the per-channel detail out of Google Ads

Two routes. Either you go through Google Ads Data Manager to orchestrate the import and centralize your data connections. Or you turn on the native Google Ads BigQuery export, which gives you detail at the campaign and surface level. This second route is the one I favor when the goal is analytical: you get costs and impressions broken down by channel, usable in SQL.

Step 2: cross with GA4 sessions in BigQuery

On the GA4 side, the BigQuery export gives you sessions and conversions with their campaign parameters. The trick is to join at the query and campaign level, not at the channel level, since the GA4 channel is precisely the broken link. You then rebuild, campaign by campaign, a per-surface cost breakdown that you match against GA4 conversions. If you are not comfortable with this kind of query, I keep a reusable base in The 10 Essential BigQuery Queries for GA4.

The result is not perfect, let us be honest: you will not get native per-surface GA4 attribution, but a reconciliation of Google Ads cost per channel against GA4 conversions per campaign. That is more than enough to allocate budget and to answer which surface performs.

Lighter alternative: Looker Studio

No BigQuery, no time? Plug the Google Ads connector into Looker Studio, expose the now-available channel dimension, and put your GA4 conversions per campaign next to it. You will not get the precision of the SQL join, but you will at least see the per-surface breakdown that the GA4 Default Channel Group hides from you. It is the minimum viable setup to avoid steering blind.

Your checklist before and right after September 30

Here are the concrete actions to take this week. They cost you a few hours and save you weeks of unusable data.

  1. Identify which campaigns switch: list your campaign-level broad match campaigns and your ACA, since those are the ones moving to AI Max on September 30.
  2. Export a “before” baseline: freeze right now a snapshot of your current aggregated Cross-network (cost, conversions, channels) so you have a comparison point after the switch.
  3. Turn on the GA4 BigQuery export if it is not already: without it, fine-grained reconciliation is impossible.
  4. Turn on or verify the native Google Ads BigQuery export: it is your source for the per-channel detail.
  5. Add the “Sources” column to your Google Ads reports to track the keywordless traffic share.
  6. Document the gap for your clients or your leadership: warn them that GA4 Cross-network will no longer match the Google Ads detail, before they find out on their own.
  7. After the 30th: compare the before baseline and the after, and check whether your Cross-network share has moved.
  8. Schedule a review at day 30: the effects of AI Max on volume and surface mix take a few weeks to stabilize.

September 30 is not a campaign management deadline, it is a measurement deadline. The advertisers who prepare their reconciliation this week will keep control of their numbers. The others will spend October explaining why GA4 and Google Ads no longer tell the same story. You now know which side you want to be on.