MarketingPaid Ads

Google Ads Pmax

Analyze Performance Max through the lens of intent contamination, cannibalization, weak control surfaces, and what can still be learned despite PMax opacity.

MMatt Berman·Marketing·MIT

Library skill — the default version is maintained in GitHub; edits you make live in your own clone.

Use this skillDownload .zip
How does this work?
  • ChatGPT opens a new chat with the skill loaded. If it's too long for a link, it's copied to your clipboard — just paste.
  • Claude works the same way. To install it permanently, download the .zip and upload it under Claude → Settings → Capabilities → Skills (Pro/Team/Enterprise).
  • Copy prompt copies the skill so you can paste it into any assistant, including Grok.

Google Ads PMax

Read first: - google-ads/references/operator-thesis.md - google-ads/references/intent-map.md - google-ads/references/query-patterns.md - google-ads/references/structure-playbook.md - google-ads/references/benchmarks.md - google-ads/references/deliverable-templates.md

Read workspace if available: - workspace/ads/account.md - workspace/ads/goals.md - workspace/ads/intent-map.md - workspace/ads/findings.md - workspace/ads/change-log.md - workspace/ads/learnings.md


Data Acquisition

Connected Mode (MCP available)

Pull via the search tool on google-ads-mcp:

Primary: PMax campaign performance:

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

Primary: Asset group performance:

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

Supplementary: Compare with Search campaign performance (cannibalization check):

SELECT
  campaign.name,
  campaign.advertising_channel_type,
  metrics.impressions,
  metrics.clicks,
  metrics.cost_micros,
  metrics.conversions,
  metrics.cost_per_conversion
FROM campaign
WHERE campaign.status = 'ENABLED'
  AND segments.date DURING LAST_30_DAYS
ORDER BY metrics.cost_micros DESC

See data/gaql-recipes.md for additional queries.

Export Mode (no MCP)

Ask the user for: - PMax campaign metrics - Asset group list with performance - Search campaign performance (for comparison) - Any listing group or audience signal notes


Core Questions

Process

  1. Announce mode (connected/export).
  2. Pull PMax and Search campaign data.
  3. Compare PMax vs. Search on shared conversion actions.
  4. Look for branded cannibalization signals.
  5. Assess asset group quality.
  6. Attempt PMax query visibility recovery using Steps 5/5b from the shared retrieval ladder (data/search-term-retrieval.md).
  7. Separate direct evidence from inference. Query rows from PMax are useful, but they do not automatically carry the same term-level cost / CPA detail as classic Search reports.
  8. Identify what should be protected in dedicated Search campaigns.

Draft Output

PMax analysis typically does not produce its own draft type — its findings feed into: - Structure drafts (if PMax is cannibalizing, recommend brand exclusions or campaign restructure) - Negative drafts (if account-level negatives can help contain PMax) - Budget drafts (if PMax is absorbing budget that should go to proven Search campaigns)

When PMax-specific actions are needed, use the structure draft template and note the PMax context.

Always update workspace memory:

Output Format

Use operator summary, then add: - Cannibalization risks (with evidence level) - Useful signal PMax may still be surfacing - What should be protected in Search or other buckets - What is direct evidence vs inference

Rules