1 Run the five-factor qualification gate before launching
2 Use the diagnostic trees on any active PMax campaign
3 Build the governance layer Google chose not to build for you
What this framework solves
Performance Max is Google’s most powerful and most opaque campaign type. The problem is transparency: PMax reports what it claims it accomplished, not necessarily what it actually accomplished. ROAS is inflated by default because the campaign claims credit for brand conversions you would have captured anyway. Most PMax reviews start with “how do I optimize this?” when the right question is “should this exist in this account, and what is it actually doing?”
The core idea
PMax is only as good as the data you feed it. Brand cannibalization is the default behavior, not an edge case, so a 600 percent+ ROAS is almost always a sign of brand traffic wearing a PMax hat. PMax supplements Search, it does not replace it: without performing Search and Shopping campaigns generating historical conversion data, PMax has no baseline to learn from. Google’s incentives and yours diverge here, because Google wants universal PMax adoption and you want transparent ROI. Every governance measure you add (brand exclusions, search term review, incrementality testing) exists because Google chose not to build transparency in.
How to apply it
Run the qualification gate first. Five factors decide whether PMax should exist at all: business model fit (B2B with 6+ month sales cycles should avoid it entirely), conversion volume (50+ purchases/month for ecommerce, 30+ qualified leads for lead gen), Search performance already profitable, conversion tracking integrity (real outcomes, not micro-conversions), and budget of at least $5,000/month.
Turn URL expansion OFF for lead gen. This setting alone separates viable lead gen PMax from a budget incinerator, because PMax will otherwise send paid traffic to blog posts and resource pages with no conversion path.
Switch location targeting to “Presence Only.” The default “Presence or Interest” leaks budget across PMax’s multi-channel scale. This is mandatory, not optional.
Add brand terms as exact-match negatives at the campaign level. Maintain a dedicated Brand Search campaign at 90 percent+ impression share so PMax cannot quietly cannibalize cheap brand traffic at inflated CPCs.
Investigate any ROAS above 600 percent. Compare brand Search performance before and after PMax launch. If brand Search conversions dropped while PMax conversions rose by a similar amount, PMax is redistributing, not adding.
Diagnose perpetual learning. If PMax has been in learning for more than 6 weeks, check change history. Frequent small changes (budget, targets, asset groups) reset the 2 to 4 week learning period. Make one change at a time, then wait.
Ignore “Excellent” ad strength as a performance metric. It measures slot compliance, not effectiveness. The real signal is asset performance labels (BEST, GOOD, LOW) after 30+ days and 1,000+ impressions.
Run the incrementality test when cannibalization is suspected. Pause PMax for 2 weeks. If total account conversions stay roughly flat with Search picking up the slack, PMax was cannibalizing, not generating incremental value.
When to use it
Use this any time PMax is on the table for an existing account, before launching a new PMax campaign, or when an active campaign’s ROAS looks suspiciously good. It is the right frame for ecommerce with a clean product feed, lead gen with offline conversion tracking already implemented, and multi-location local services with sufficient per-location volume. It does not apply to B2B SaaS with sales cycles longer than 6 months (the attribution lag breaks the learning loop), to single-location local services under $5,000/month (Local Services Ads plus Search will outperform), or to any account with broken conversion tracking. Fix tracking first, always.
Want this on autopilot?
This is the manual version of Performance Max Playbook.
Read the framework, apply it manually, hope you remember the steps next time.
PPC.io agents run this framework against your accounts continuously and flag what needs your attention.