---
name: review-and-optimize-campaign-structure
description: >-
  The quarterly structural audit for Search accounts: builds a 90-day per-campaign snapshot, flags structural
  disease (sub-30-conversion campaigns, 20%+ query overlap between campaigns, budget fragmentation, 3x CPA spreads
  inside one campaign), then executes the cure, merging redundant campaigns into a surviving winner, splitting
  divergent segments via a duplicate-then-prune method that preserves the stronger segment's learning, repairing
  keyword-to-ad relevance drift, and concentrating impressions into viable ad groups. Heavier and rarer than the
  optimization cycle: run quarterly or when the trigger conditions fire, with explicit approval on every
  structural change. Building net-new structure is build-search-campaign-structure; routine multi-lever tuning is
  run-search-campaign-optimization-cycle; pooled-data alternatives live in set-up-portfolio-bid-strategies.
---
# Structural Review of Search Campaigns

## Purpose
Structure rots quietly: campaigns multiply, budgets fragment, keywords drift away from the ads they were paired
with, and two campaigns end up bidding against each other for the same query. This skill is the periodic surgery
pass, diagnose with 90 days of data, then consolidate, split, and re-home keywords so that Smart Bidding gets
concentrated data and budgets flow to structures that can actually use them. Every structural change here moves
real money and learning history, so everything gates on explicit human approval.

## When to run
- Quarterly, as standing hygiene.
- A campaign has run under 30 conversions/month for two consecutive months.
- Redundant targeting is discovered, multiple campaigns matching the same queries.
- Budget is scattered across 5+ similar-intent campaigns, starving each of learning data.
- A profitable campaign is budget-capped while sharing its allocation with laggards.
- After business shifts: new product lines, market exits, rebrands.

## When NOT to run
- Building structure for a new account or product → `build-search-campaign-structure`.
- Routine optimization (terms, bids, ads, extensions) → `run-search-campaign-optimization-cycle`.
- The only problem is a budget cap on a healthy campaign → `handle-budget-limited-campaigns`.
- The volume problem could be solved by pooling data instead of merging → consider
  `set-up-portfolio-bid-strategies` before restructuring at all.
- Mid-quarter, after a recent restructure still inside its 8-week evaluation window, let it finish.

## Prerequisites
- 90 days of campaign and ad group performance history; 30 days of search terms.
- Per-campaign targets and current daily budgets.
- Quality score data with component breakdown.
- A stakeholder available to approve structural changes (mandatory).

## Procedure
1. **Build the snapshot.** `gads_list_campaigns` + `gads_get_campaign` + `gads_get_account_performance`, plus
   `gads_run_gaql_query` for impression-share-lost (budget/rank) and spend-vs-budget utilization. One row per
   campaign: monthly conversions, CPA/ROAS, IS lost both ways, daily budget, utilization %, ad group count.
2. **Apply the structural flags.** LOW-VOLUME: <30 conversions/month for 2+ months with no portfolio strategy
   pooling its data. BUDGET-STARVED: IS lost (budget) >20% while profitable. REDUNDANT: another campaign covers
   the same themes. MIXED: best-to-worst ad group CPA spread over 3x. UNDERUTILIZED: spending under 50% of
   budget for 30+ days.
3. **Prove overlap with queries, not vibes.** `gads_get_search_terms_report` per campaign; compare each pair's
   top ~100 queries by cost. The same query drawing spend in two campaigns is direct evidence of internal auction
   competition; 20%+ overlap makes the pair a consolidation candidate. Estimate the wasted spend per pair.
4. **Plan consolidations.** For each redundant/low-volume group: keep the campaign with the deeper conversion
   history and better quality scores as the SURVIVOR; map which ad groups migrate; on keyword collisions keep the
   higher-QS copy; audit both campaigns' negatives for entries that would block the merged keyword set; sum the
   budgets into the survivor. Do NOT consolidate across genuine structural boundaries, different geos with
   different economics, different conversion goals, brand vs. non-brand, mandated budget walls. Where separation
   is legitimate but volume is thin, propose a portfolio bidding strategy instead (route:
   `set-up-portfolio-bid-strategies`).
5. **Execute consolidations with approval.** After `gads_policy_guardrail` (before the session's first Google
   Ads write): recreate/migrate the absorbed ad groups in the survivor via `gads_create_ad_group` (+ keyword
   moves), pause the absorbed campaign's ad groups via `gads_pause_ad_group`, and raise the survivor's budget to
   the combined total via `gads_update_budget`. Every write previews first (validate_only default) and commits
   only after explicit user approval. Keep the absorbed campaign PAUSED for 30 days as the rollback path, deletion is permanent, pausing is free insurance.
6. **Plan splits.** A campaign splits when it mixes segments that need independent budgets or targets:
   informational vs. transactional tiers, a 3x+ CPA spread with budget starvation, or strong geographic
   divergence. Hard volume gate: both resulting campaigns must clear ~15 conversions/month; splitting 20 into
   10+10 manufactures two starving campaigns. Exhaust the alternatives first, portfolio strategy for shared
   learning, shared budget for allocation problems.
7. **Execute splits by duplicate-then-prune.** `gads_copy_campaign` to clone the campaign (preview → approval →
   commit). In the ORIGINAL, pause the WEAKER segment's ad groups (`gads_pause_ad_group`); in the CLONE, pause
   the stronger segment's. The original thus keeps its history, quality scores, and bid-strategy learning on the
   winners, moving the strong segment out would reset learning on exactly the traffic you care about. Set
   independent budgets (`gads_update_budget`), weighted toward the original; keep bid settings identical for 2–4
   weeks before touching targets. Monitor: week 1 hands-off (learning), weeks 2–3 compare to pre-split baseline,
   week 4 verdict, an unprofitable weak-segment campaign gets paused and its budget returns to the original.
8. **Repair keyword-to-ad drift.** For every ad group with 100+ monthly impressions:
   `gads_get_keyword_performance` for the keyword set, `gads_run_gaql_query` for the ads and QS components. Ask
   whether the RSA credibly speaks to every keyword. Off-intent keywords move to a new dedicated ad group
   (`gads_create_ad_group`, keyword adds, pause in the old group, each preview → approval); keywords that fit
   but show below-average ad relevance need copy work, not moves → route `improve-ad-relevance` /
   `improve-quality-score`. QS bands as structural evidence: 7–10 sound; 5–6 test tighter grouping; 1–4 keyword,
   ad, and page disagree, dedicated ad group plus intent-matched page. Cap: never move more than ~30% of a
   campaign's keywords in one round; larger migrations run in two waves two weeks apart.
9. **Concentrate volume.** From 90-day ad group data: the viability floor is ~4,000 impressions/month
   (≈1,000/week), below it, asset-level data never becomes actionable. Classify: healthy (4k+, converting);
   low-volume converting → merge into a compatible neighbor (receiving group keeps its history; verify its RSA
   covers the incoming intent); low-volume non-converting after 90 days → pause unless strategically required;
   high-volume non-converting → investigate (page, intent, relevance) before any pause. Then verify
   concentration: 90%+ of campaign impressions in healthy ad groups is good, 70–89% acceptable, under 70% means
   another merge round.
10. **Document and schedule.** Log every merge, split, move, and pause with its rationale and rollback pointer.
    Checkpoints: week 1 serving-sanity, week 2 learning exit, week 4 baseline comparison, week 8 full verdict.
    Book the next quarterly run with this quarter's baseline attached.

## Decision rules
- **Consolidation triggers:** <30 conversions/month, 20%+ query overlap, fragmented same-intent budgets,
  identical strategy+target, same creative theme. Any one suffices; legitimate structural boundaries veto.
- **Split gate:** both children ≥15 conversions/month, after portfolio/shared-budget alternatives are rejected.
- **Duplicate-then-prune direction is fixed:** the weaker segment leaves; the original keeps the winners and the
  learning.
- **30-day pause quarantine** before deleting any absorbed campaign.
- **30% keyword-move cap per round;** two-week spacing between rounds.
- **Ad group viability floor:** 4,000 impressions/month; concentration target 70%+ (ideal 90%+).
- **QS bands route the fix:** 7–10 leave alone; 5–6 structure experiment; 1–4 dedicated regroup + page match.
- **Evidence standard for overlap is shared queries with spend,** not similar-sounding campaign names.

## Common failure modes
- **Splitting for tidiness** and creating twin data-starved campaigns; the 15-conversion gate is the antidote.
- **Merging across real boundaries** (geo economics, conversion goals, brand walls) because overlap looked like
  waste; check the veto list first.
- **Pruning the wrong side of a split**, moving winners out of the original resets their learning; the weaker
  segment always leaves.
- **Deleting absorbed campaigns immediately,** destroying the only rollback when the merge disappoints.
- **Mass keyword migrations** that shock bid-strategy learning; respect the 30% cap.
- **Skipping the 8-week verdict** and stacking a second restructure on an unevaluated first one.
- **Reading overlap from names** ("Search - Generic" vs "Search - Core") instead of shared spending queries.

## Related skills
- Alternatives to structure surgery: `set-up-portfolio-bid-strategies` (pool data), `handle-budget-limited-campaigns`
  (pure budget caps).
- Execution partners: `improve-ad-relevance`, `improve-quality-score`, `write-compelling-rsas` (new ad groups need
  ads).
- Lifecycle: fed by `run-search-campaign-optimization-cycle` escalations; anomalies during monitoring →
  `investigate-performance-anomalies`; net-new builds → `build-search-campaign-structure`.
