Demand Gen Audit
A deep audit of your Demand Gen campaigns — Google's visual, social-style campaign type running across Discover, Gmail, YouTube feeds and Shorts. Demand Gen lives or dies on audiences and creative, so that's where this audit spends its time.
Requires: Cogny Agent subscription ($9/mo) — Sign up
Prerequisites Check
If mcp__cogny__google_ads__tool_execute_gaql is not available, print the Cogny
sign-up instructions (see /google-ads-audit) and stop.
Usage
/demand-gen-audit — audit every Demand Gen campaign in the account
/demand-gen-audit Prospecting - Q2 — audit one campaign by name or id
Why Demand Gen needs its own audit
Demand Gen has no keywords and no search intent. It's an interruption channel — you win by showing the right audience the right creative. The audit checks audience strategy, creative format spread, creative fatigue, and whether CPA is tracking toward goal.
Steps
1. Find the Demand Gen campaigns
SELECT campaign.id, campaign.name, campaign.status,
campaign.bidding_strategy_type, campaign.target_cpa.target_cpa_micros,
campaign_budget.amount_micros, metrics.cost_micros, metrics.conversions,
metrics.conversions_value, metrics.clicks, metrics.impressions
FROM campaign
WHERE campaign.advertising_channel_type = 'DEMAND_GEN'
AND segments.date DURING LAST_30_DAYS
ORDER BY metrics.cost_micros DESC
Compute CPA and compare to the campaign's target CPA. Flag campaigns running >50% over target.
2. Ad group & audience strategy
SELECT ad_group.name, ad_group.status, campaign.name,
metrics.cost_micros, metrics.conversions, metrics.clicks
FROM ad_group
WHERE campaign.advertising_channel_type = 'DEMAND_GEN'
AND segments.date DURING LAST_30_DAYS
SELECT ad_group.name, ad_group_criterion.type,
ad_group_criterion.user_list.user_list,
ad_group_criterion.audience.audience
FROM ad_group_criterion
WHERE campaign.advertising_channel_type = 'DEMAND_GEN'
AND ad_group_criterion.status = 'ENABLED'
Flag:
- Ad groups with no audience attached (running fully broad — burns budget)
- Only broad/affinity audiences, no first-party signal (customer match, website visitors) and no lookalike segments
- Prospecting and remarketing audiences mixed in one ad group — they need different creative and different bids
- A single ad group per campaign (no audience testing)
3. Creative format diversity
SELECT ad_group.name, ad_group_ad.ad.id, ad_group_ad.ad.type,
ad_group_ad.ad_strength, ad_group_ad.status,
metrics.impressions, metrics.clicks, metrics.conversions
FROM ad_group_ad
WHERE campaign.advertising_channel_type = 'DEMAND_GEN'
AND segments.date DURING LAST_30_DAYS
Demand Gen ad types: single image, carousel, and video responsive. Flag:
- Single-format ad groups — image-only campaigns miss YouTube/Shorts inventory; add video
- Ad strength
POOR/AVERAGE - Fewer than 2–3 ads per ad group (nothing to optimize between)
- Zero video creative when the budget is >$3K/mo
4. Creative fatigue
For each enabled ad, look at the CTR / conversion-rate trend over the last 30 days vs the prior 30. Flag:
- Ads live >60 days with a falling CTR (classic fatigue)
- Ad groups where every ad launched the same day and none has refreshed since
5. Placement & exclusions
Flag:
- No content/placement exclusions — Demand Gen can serve next to anything
- Conversions concentrated in one surface while budget spreads evenly (consider surface-specific campaigns)
6. Conversion goal alignment
Demand Gen is upper/mid funnel. Flag campaigns optimizing to a hard bottom-funnel action (purchase) with too few conversions to learn — a softer goal (lead, signup, add-to-cart) often suits the funnel stage better.
7. Score and report
Demand Gen Audit — [Account Name]
Demand Gen Score: X/100 · 30-day spend: [X] · Conv: [X] · CPA vs target: [X]
| Campaign | Ad groups | Audiences | Formats | Avg ad strength | CPA |
|----------|-----------|-----------|---------|-----------------|-----|
🔴 Critical — no audiences, no conversions, CPA far over target
🟡 Important — single-format creative, fatigue, no first-party signal
🟢 Optimization — add lookalikes, placement exclusions, creative refresh
Top 3 Actions:
1. [Highest $ impact]
2. ...
3. ...
8. Record findings
{
"title": "Demand Gen 'Prospecting - Q2' runs image-only — missing YouTube & Shorts",
"body": "All 4 ads in the campaign are single-image. Demand Gen serves video inventory on YouTube feed and Shorts that image ads can't reach. The campaign spends $110/day. Add 2-3 vertical video creatives to open that inventory.",
"action_type": "creative_refresh",
"expected_outcome": "Access to video inventory; lower CPM and broader reach",
"estimated_impact_usd": 900,
"priority": "medium"
}
Action types: creative_refresh, audience_refinement, campaign_optimization,
bidding_strategy, placement_exclusion.
Critical rules
- Audiences and creative are the whole game. Demand Gen has no keyword lever — spend the audit there.
- Always check for video. Image-only Demand Gen leaves the best inventory unused.
- Quote real numbers: format counts, audience types, CPA vs target.
- Read-only. Recommend audience and creative changes; never make them.