Skip to content
Marketing
Skill

/pmax-audit

Performance Max campaign audit — asset group strength, asset coverage, search themes, audience signals, brand exclusions, channel distribution

From plugin
claude-code-marketing-skills
11462 skills

Claude Code

$ npx -y skills add cognyai/claude-code-marketing-skills --skill pmax-audit --agent claude-code

SKILL.md

pmax-audit.SKILL.md
name: pmax-audit
description: Performance Max campaign audit — asset group strength, asset coverage, search themes, audience signals, brand exclusions, channel distribution
version: "1.1.3"
author: Cogny AI
requires: cogny-mcp
platforms: [google-ads, microsoft-ads]
user-invocable: true
argument-hint: "[campaign name or id]"
allowed-tools:
  - mcp__cogny__refresh_mcp_discovery
  - mcp__cogny__mcp__Google_Ads__tool_list_accessible_accounts
  - mcp__cogny__mcp__Google_Ads__tool_execute_gaql
  - mcp__cogny__mcp__Google_Ads__tool_get_gaql_doc
  - mcp__cogny__mcp__Google_Ads__tool_get_reporting_view_doc
  - mcp__cogny__mcp__Bing_Ads__tool_list_accounts
  - mcp__cogny__mcp__Bing_Ads__tool_get_campaigns
  - mcp__cogny__mcp__Bing_Ads__tool_get_report
  - mcp__cogny__mcp__Google_Analytics_4__tool_list_account_summaries
  - mcp__cogny__mcp__Google_Analytics_4__tool_run_report
  - mcp__cogny__mcp__Shopify__tool_list_orders
  - mcp__cogny__mcp__WooCommerce__get_sales_report
  - mcp__cogny__list_integrations
  - mcp__cogny__create_finding
  - mcp__cogny__create_ticket
  - WebFetch
  - WebSearch

Performance Max Audit

A deep audit of your Performance Max campaigns. PMax hides most of its levers — this skill pulls the ones the API still exposes (asset groups, asset coverage, search themes, audience signals, exclusions, channel mix) and flags what's leaking spend.

**Requires:** Cogny Agent subscription ($9/mo) — [Sign up](https://cogny.com)

Works with

| Job | Primary | Also answers it | Differences to state | |-----|---------|-----------------|----------------------| | Asset groups, assets, signals, exclusions | Google Ads | — | Only Google exposes these levers | | PMax spend, conversions, ROAS | Google Ads | Microsoft Ads (`Bing_Ads`, campaign type `PerformanceMax`) | Bing: account-currency units; compute ROAS as `Revenue` / `Spend` yourself; no asset-group data | | Is the ROAS real? | Shopify / WooCommerce orders | GA4 (`sessionGoogleAdsCampaignName`) | Store = paid orders; PMax claims brand and remarketing conversions |

Step 0: Cogny check

If no `mcp__cogny__*` tools exist (no `list_integrations`, no `cogny_status`), print this and stop:

Performance Max Audit needs your marketing data through Cogny's MCP gateway.

1. Sign up at https://cogny.com and connect Google Ads (plus Microsoft Ads, GA4, Shopify or
   WooCommerce if you use them).
2. Add Cogny to .mcp.json in your project:
   {"mcpServers": {"cogny": {"type": "http", "url": "https://app.cogny.com/mcp"}}}
3. Restart Claude Code; it opens a browser for the OAuth login on first use.

Nothing to run without Cogny.

If Cogny is connected but `mcp__cogny__mcp__Google_Ads__tool_execute_gaql` is missing, say "connect Google Ads in Cogny" (or "reconnect Google Ads in Cogny" if it's listed but unhealthy or a read returns 401/permission denied) and stop. If only Microsoft Ads is connected, run step 1's Microsoft branch and say that the asset-level audit needs Google Ads.

Usage

`/pmax-audit` — audit every Performance Max campaign in the account `/pmax-audit Holiday Retail` — audit one campaign by name or id

Why PMax needs its own audit

PMax is a black box compared to Search. There are no keywords and no per-placement bids. The few real levers — **asset group ad strength, asset coverage, search themes, audience signals, and exclusions** — are what this skill inspects, because they are the only things you can actually change.

Steps

Google Ads money fields are micros (divide by 1,000,000). An empty GAQL result (no rows, or the tool returns no output) means zero: no matching entities or no activity in the window. Report it as 0, not as an error. Query errors come back as explicit error messages.

1. Find the Performance Max campaigns

SELECT campaign.id, campaign.name, campaign.status,
  campaign.bidding_strategy_type, campaign.maximize_conversion_value.target_roas,
  campaign.target_cpa.target_cpa_micros, campaign_budget.amount_micros,
  metrics.cost_micros, metrics.conversions, metrics.conversions_value
FROM campaign
WHERE campaign.advertising_channel_type = 'PERFORMANCE_MAX'
  AND segments.date DURING LAST_30_DAYS
ORDER BY metrics.cost_micros DESC

**Microsoft Ads (if connected):** `tool_list_accounts` for the `account_id`, then `tool_get_campaigns` (`account_id`, `campaign_types: ["PerformanceMax"]`), then `tool_get_report` (`account_id`, `report_type: "campaign"`, `campaign_ids`, `start_date`, `end_date`). Report spend, conversions and revenue as a separate block; Microsoft PMax is often an import of the Google one, so compare CPA/ROAS between the two and flag a gap over 2x.

2. Asset group health

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

Flag:

  • Ad strength `POOR` or `AVERAGE` on any spending asset group
  • Campaigns with a **single asset group** (no audience/theme segmentation)
  • Asset groups with status `REMOVED`/`PAUSED` still configured but campaign starved

3. Asset coverage per group

`asset_group_asset.performance_label` was removed in API v25 (UNRECOGNIZED_FIELD). Use `primary_status` / `primary_status_reasons` plus the asset's own metrics:

SELECT asset_group.name, asset_group_asset.field_type, asset_group_asset.status,
  asset_group_asset.primary_status, asset_group_asset.primary_status_reasons,
  asset.id, asset.type,
  metrics.impressions, metrics.clicks, metrics.conversions, metrics.cost_micros
FROM asset_group_asset
WHERE campaign.advertising_channel_type = 'PERFORMANCE_MAX'
  AND segments.date DURING LAST_30_DAYS

Assets with no impressions in the window drop out of this result; run it once more without the metrics and the `segments.date` filter to count every linked asset.

For each asset group, count asse

Read more
@cognyai
Ships withclaude-code-marketing-skills

AI marketing skills for Claude Code, Cursor, Windsurf, and other AI coding tools. Audit SEO, analyze ads, research competitors, qualify leads — all from your terminal. Free skills need no account. Premium skills connect your real data for $9/mo.

Stars on GitHub

Momentum

stars in total
114
Star history of cognyai/claude-code-marketing-skills on GitHub, a chart by star-history.com

More skills from other plugins.

seo

seo

Comprehensive SEO analysis for any website or business type. Full site audits, single-page analysis, technical SEO (crawlability,…

@agricidaniel@agricidanielInstall Skill
brag

brag

Turn the current project website into a short, polished, shareable launch video using Hyperframes. Use when someone says "/brag",…

brag3w21k
@latent-spaces@latent-spacesInstall Skill
geo-audit

geo-audit

Full website GEO+SEO audit with parallel subagent delegation. Orchestrates a comprehensive Generative Engine Optimization audit…

Questions about pmax-audit.

Which coding agents can use pmax-audit?
pmax-audit installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.