PMax Decoder — Google Ads
Generate operational transparency for Performance Max campaigns and produce concrete action plans for optimization.
Read-only by design. This skill does not modify your account. All recommendations -- including brand negative keywords -- are delivered as action plans with Google Ads UI paths and copy-paste artifacts.
Account Context
Read ${CLAUDE_PLUGIN_ROOT}/profile/account-profile.md at the start of every run.
If it exists:
- Use known account IDs -- skip
list_accountsdiscovery. - Apply KPI targets as anomaly detection thresholds (e.g., flag CPA > target CPA).
- Note active tests when interpreting performance shifts.
- Check watch list for follow-up items from prior sessions.
If it doesn't exist, fall back to
list_accountsand suggest runningplatform-setup.
Data Access
This skill uses the plugin's Google Ads MCP tools for live API access:
mcp__google-ads__query: Execute GAQL SELECT queries for PMax insights.mcp__google-ads__list_accounts: Confirm account access and campaign scope.
Workflow
Module 1: Search term extraction
The campaign_search_term_insight resource requires single-campaign filtering.
- Run Module 1A query to list all PMax campaigns.
- For each campaign ID, run Module 1B query to fetch insight categories.
- Combine categories across campaigns and rank by
metrics.clicks. - Drill into top categories (default cap: 50) using Module 1C query.
Warn users that large PMax accounts can require many API calls.
Module 2: Channel distribution (requires API v23+)
segments.ad_network_type on asset_group returns meaningful channel data (SEARCH, YOUTUBE, DISPLAY, SHOPPING) only in API v23+.
For dates before June 1, 2025, this dimension can return MIXED and is not reliable for channel decomposition. If data is pre-v23 behavior, skip this module and note the limitation.
Use asset_group with segments.ad_network_type to estimate spend and conversion mix by channel. Flag concentration risks when one channel exceeds 70% of spend.
Module 3: Asset group and asset label review
- Summarize asset-group level performance (impressions, clicks, cost, conversions).
- Pull
asset_group_asset.performance_labelper asset. - Labels are relative rankings (
BEST,GOOD,LOW,PENDING), not direct cost metrics. - Recommend replacement priorities for
LOWassets. Do not generate creative copy unless requested.
Module 4: Brand traffic detection
- Require user-provided brand terms.
- Classify Module 1C search terms against that list.
campaign_search_term_insightdoes not include cost metrics; use click share as the proxy.- Flag cannibalization risk when brand click share exceeds 30% of PMax clicks.
Brand negative action plan
When brand cannibalization is detected, produce an action plan instead of API mutations:
Dollar table:
| Campaign | Brand Click Share | Brand Clicks | Total Clicks | Top Brand Terms | Action |
|---|
Copy-paste negative keyword list:
-- Brand negatives for PMax Campaign '[name]' --
"brand term one"
"brand term two"
[exact brand query]
UI paths for adding campaign-level brand negatives:
Option A -- Brand exclusions (recommended for PMax):
Google Ads > Campaign '[Campaign Name]' > Settings > Additional settings > Brand exclusions > Edit > add brand names > Save
Option B -- Campaign-level negative keywords:
Google Ads > Campaign '[Campaign Name]' > Keywords > Negative keywords > + > paste keywords > Save
Option C -- Account-level brand exclusions:
Google Ads > Tools & Settings > Account Settings > Brand exclusions > Edit > add brand names > Save
Note: PMax brand exclusions use Google's brand list matching, which is broader than exact keyword negatives. Test with campaign-level first.
Module 5: Placement review
Use performance_max_placement_view for inventory visibility.
Placement view returns impressions only (no clicks, cost, or conversions). Treat findings as quality-risk diagnostics and do not estimate placement-level cost or CPA.
Flag concerning placement types:
- Mobile app placements with high impression share (potential accidental app traffic).
- Low-quality or irrelevant display placements.
- YouTube placements on off-brand content.
For placement exclusions, provide the UI path:
Google Ads > Campaign '[Campaign Name]' > Content > Placements > Exclusions > + > enter placement URLs > Save
Output format
## PMax Decoder - [Date]
### Campaign: [Name] ([ID])
### Quick Stats (from Module 1A campaign data)
- Spend, conversions, CPA (cost/conversions), ROAS (conversions_value/cost)
### Channel Distribution
| Channel | Spend | % Spend | Conversions | CPA |
|---|---:|---:|---:|---:|
### Brand Traffic Analysis
- Brand click share: X% ([N] brand clicks / [N] total clicks)
- Top branded terms: [list]
- Cannibalization risk: [HIGH/LOW]
**Brand Negative Action Plan:**
[copy-paste list + UI paths]
### Search Term Insight Categories
| Category | Clicks | Conversions | Notes |
|---|---:|---:|---|
### Asset Performance
| Asset Group | Ad Strength | LOW Assets | Action |
|---|---|---:|---|
### Placement Summary
- Top placement types by impression volume
- Quality risk flags
### Recommended Actions
1. [prioritized action with UI path]
2. [prioritized action with UI path]
Guardrails
campaign_search_term_insightrequires single-campaign filtering.- Channel-level
segments.ad_network_typedata is reliable only for dates after June 1, 2025. - Placement view provides impressions only; do not claim placement-level cost.
- Read-only: This skill produces action plans only. No account modifications are made. Brand negatives and placement exclusions are delivered as copy-paste lists with UI paths.
- Empty results: when a module query returns zero rows, report it explicitly rather than silently omitting sections.
Profile Maintenance
After completing analysis, if ${CLAUDE_PLUGIN_ROOT}/profile/account-profile.md exists:
- Update Watch List with any new anomalies flagged in this run (e.g., brand cannibalization > 30%).
- Update Active Tests if user mentioned starting or completing a test.
- Append to Decision Log if actions were taken.
- Update "Last updated" date. Present proposed profile changes to the user before writing.
References
references/gaql-queries.md