---
name: expand-audience-reach
description: >-
  A gatekeeper for audience growth: before any reach expansion, it audits three foundations in strict order, PMax
  asset-group signal quality, Video/Demand Gen targeting configuration, and Customer Match health, and stops at
  the first broken layer, routing to the skill that fixes it. Only when all three pass does it pick ONE controlled
  expansion move (broaden PMax signals, add Demand Gen lookalikes, test a new segment in observation, launch a
  prospecting campaign, or split the customer list into finer segments) and set the measurement window. Use it when
  someone says "we need more volume / more reach / new audiences," when scaling budget into audience-driven
  campaigns, or as a quarterly foundation re-check. It performs the audit and small expansion writes itself, but
  hands structural fixes to build-customer-match-lists, set-up-audience-signals, or set-up-audience-targeting, and
  hands recurring performance pruning to optimize-audience-performance.
---
# Audience Expansion Readiness and Routing

## Purpose
Expanding reach on top of weak signals, miswired targeting, or a stale customer list buys low-quality traffic at
full price. This skill enforces order: verify the three audience foundations first, stop and route at the first
failure, and only then expand, one dimension at a time, with a measurement window agreed before any budget moves.
It is mostly a read-and-route skill; its own writes are limited to the small, controlled expansion actions at the end.

## When to run
- The user asks for more volume, new audiences, or broader reach on audience-driven campaigns.
- Budget is about to scale into PMax, Video, or Demand Gen and you need to know the audience layer can carry it.
- Quarterly, as a standing foundation re-check even when nothing feels broken.
- After `optimize-audience-performance` reports that current segments are healthy and the constraint is now reach.

## When NOT to run
- A specific foundation is already known-broken, go straight to the fixer: `build-customer-match-lists` (lists),
  `set-up-audience-signals` (PMax signals), `set-up-audience-targeting` (Video/DG configuration).
- You want to prune or tune segments already running → `optimize-audience-performance`.
- The performance problem is not audience-shaped (tracking, bidding, creative), expansion will not mask it; route
  to the relevant measurement or bidding skill instead.

## Prerequisites
- Read access to the account's campaigns, asset groups, criteria, and user lists.
- Current campaign inventory: which PMax, Video, and Demand Gen campaigns exist (absent surfaces auto-pass their
  gate).
- Per-campaign efficiency targets, so "performing well enough to fund expansion" is a number, not a feeling.

## Procedure
1. **Gate 1, PMax signal quality.** Call `gads_list_asset_groups` for every PMax campaign, then
   `gads_get_asset_group` on each to inspect attached signals. Failure markers: no audience signals at all;
   interest-or-demographic-only stacks with no first-party layer; custom segments built from generic rather than
   converting terms; search themes duplicating live Search keywords. Cross-check the first-party layer with
   `gads_list_user_lists` (customer list 1,000+ matched, refreshed ≤30 days). IF any asset group fails, STOP, route to `set-up-audience-signals` and re-enter here afterwards. No PMax campaigns → gate passes by default.
2. **Gate 2, Video/Demand Gen targeting configuration.** Call `gads_list_campaign_criteria` per Video/DG campaign
   and read the attached audience criteria and exclusions; use `gads_run_gaql_query` on the audience views to
   check for cross-campaign overlap (two campaigns spending against substantially the same segments) and for
   remarketing campaigns leaking spend through expansion. Failure markers: observation posture where restriction
   was intended, expansion features on for remarketing, no converter/customer exclusions, lookalikes seeded from
   all-visitors. IF anything fails, STOP, route to `set-up-audience-targeting`. No Video/DG campaigns → gate
   passes by default.
3. **Gate 3, first-party data health.** Call `gads_list_user_lists` and grade the Customer Match layer: at least
   one list matched at 29%+ (40%+ is healthy), 1,000+ matched users, refreshed within 30 days, more than one
   identifier type behind it, and a named refresh owner. IF missing, stale, or under-matched, STOP, route to
   `build-customer-match-lists`. This gate has no bypass: the customer list is the one asset that improves PMax,
   Video/DG, and lookalikes simultaneously.
4. **All gates passed, choose exactly one expansion move with the user.** Options, roughly warmest to coldest:
   - *Deepen customer-list segmentation:* only an all-customers list exists → carve value/lapsed/product slices
     via `gads_create_customer_match_list` + `gads_add_customer_match_members` (preview → user approval → apply
     for each write).
   - *Broaden PMax signals:* current stack is deliberately narrow and efficient → add adjacent intent segments via
     `gads_create_custom_audience` and attach with `gads_add_audience_signal`; add `gads_add_search_themes` ONLY
     after confirming no live Search campaign covers those queries (each write: preview → approval → apply).
   - *Add Demand Gen lookalikes:* seed list at 1,000+ matched from converters/high-value customers → start at the
     middle reach setting, one notch at a time thereafter.
   - *Test a new segment:* attach 1–2 candidate in-market or custom segments in observation posture on an existing
     campaign, small stakes, measured before committed.
   - *Open a new campaign type:* remarketing is profitable and saturated → a prospecting Demand Gen campaign is
     the natural next surface (route to `set-up-audience-targeting` for its configuration).
5. **Consult the policy guardrail before writing.** If any expansion write happens in this session and no Google
   Ads write has happened yet, call `gads_policy_guardrail` first and honor its flags.
6. **Execute the single chosen move.** Run only the writes for that one move, each previewed (validate_only
   default) and applied strictly after explicit user approval. Do not bundle a second expansion "while we're
   here", one changed dimension per cycle is what keeps the results attributable.
7. **Set the measurement window before moving budget.** Agree metrics (incremental conversions, CPA/ROAS by
   audience, reach growth, new-vs-returning share, cross-campaign overlap) and the window from Decision rules.
   Schedule the check via `gads_run_gaql_query` comparisons against the pre-expansion baseline captured now.
8. **Verify at the window, then iterate.** At the checkpoint, pull the same views and compare. Expansion held
   efficiency → it can fund the next, colder step. Expansion degraded efficiency past the agreed bound → unwind it
   (previewed writes or routed HUMAN STEP) before trying a different dimension. Either way, re-enter this skill at
   Gate 1 for the next round, foundations drift.

## Decision rules
- **Gate order is absolute:** signals → targeting → first-party data → expand. A failed gate ends the session's
  expansion ambitions; fixing beats expanding every time.
- **One dimension per cycle:** add signals OR broaden targeting OR launch a surface, never two at once, or the
  measurement window cannot attribute the outcome.
- **Warm before cold:** expand adjacent to what already converts (existing-customer slices, converter-seeded
  lookalikes) before genuinely cold interest categories. Profits from each ring fund the test of the next colder
  ring, expansion should be self-funding, not faith-funded.
- **Measurement windows:** PMax signal changes 14–21 days (learning restarts); targeting-mode changes 7–14 days;
  new segments and lookalikes 14–30 days; customer-list refreshes match within ~24–48 hours but need ~7 days to
  show delivery impact. No verdicts before the window closes.
- **Search themes are an opt-in to cannibalization:** IF any live Search campaign covers the queries THEN the
  answer is no themes, regardless of how attractive the extra inventory looks.
- **Observation-first for anything unproven:** new segments earn restrictive targeting through data (the
  graduation thresholds live in `optimize-audience-performance`), never through optimism.
- **Quarterly re-entry:** even a fully passing account gets re-gated quarterly; in-market compositions shift,
  lists decay, and last quarter's pass is not this quarter's.

## Common failure modes
- **Skipping gates because the user is impatient for volume.** Expansion on a broken foundation reliably produces
  expensive traffic and a rollback; the gates are the fast path, not the slow one.
- **Expanding three things at once.** When results move, nobody knows which change did it, so the next decision is
  a guess. One dimension, one window, one verdict.
- **Treating "more segments" as expansion.** Piling every available category onto a campaign is dilution, not
  reach strategy, expansion is a chosen, measured move.
- **Cold-audience leaps.** Jumping from remarketing straight to broad affinity prospecting skips the rings that
  fund and de-risk it.
- **No baseline captured before the change.** Without the step-7 snapshot, the post-window comparison degrades
  into anecdotes. Capture first, change second.
- **Forgetting exclusions while expanding.** New prospecting reach without the all-customers exclusion pays
  acquisition prices for existing customers, verify exclusions as part of Gate 2 every cycle.

## Related skills
- Routes to (on gate failure): `set-up-audience-signals` (Gate 1), `set-up-audience-targeting` (Gate 2),
  `build-customer-match-lists` (Gate 3).
- Run after expansion settles: `optimize-audience-performance` for the recurring segment-level review and the
  graduation/pruning thresholds this skill defers to.
