---
name: run-shopping-campaign-optimization-cycle
description: >-
  The recurring maintenance routine for live Standard Shopping campaigns: a fixed-order sweep
  through account health, feed quality flags, product-level winners and losers, search-term waste,
  bids and budgets, monthly structure review, and competitive position. Use it on cadence (weekly at
  200+ conversions/month, bi-weekly at 50-200, monthly below 50) or immediately after a sustained
  ROAS drop of 20%+ or a disapproval spike. It reads performance with VigilDog tools, classifies
  products against explicit thresholds, and applies bid/budget/exclusion changes through
  preview-and-approve. Do not use it to launch campaigns (launch-standard-shopping-campaign), to
  build segmentation for the first time (set-up-performance-based-shopping-segmentation), to rebuild
  a broken feed (set-up-and-optimize-product-feed), or for PMax campaigns
  (run-pmax-ecommerce-optimization-cycle).
---
# Shopping Campaign Optimization Cycle

## Purpose
Keep live Standard Shopping campaigns healthy with one repeatable pass that touches every layer in
the right order: blockers first, then feed signals, then product-level actions, then query hygiene,
then money, then (monthly) structure and competition. Running the same sequence every cycle is what
prevents the classic Shopping failure, months of bid tweaks on top of an unnoticed feed or
tracking problem.

## When to run
- On cadence, scaled to volume: weekly at 200+ Shopping conversions/month, bi-weekly at 50-200,
  monthly below 50.
- Immediately, off-cadence, when ROAS is down 20%+ for two consecutive periods, disapprovals spike,
  or the catalog just changed materially.
- After any launch or segmentation project settles, as the standing follow-up routine.

## When NOT to run
- No live Shopping campaign yet -> launch-standard-shopping-campaign.
- The campaign is PMax -> run-pmax-ecommerce-optimization-cycle.
- Feed is fundamentally broken (mass disapprovals, wrong data) -> set-up-and-optimize-product-feed;
  this cycle only patches feed issues at the margin.
- You want to introduce performance tiers for the first time ->
  set-up-performance-based-shopping-segmentation.
- The question is account-wide, not Shopping-specific -> run-a-weekly-performance-review.

## Prerequisites
- Live Standard Shopping campaign(s) with at least 14 days of product-level data (30 preferred).
- A target ROAS or CPA per campaign to classify against.
- The previous cycle's action log, so changes can be evaluated instead of repeated.
- Merchant Center access for the human steps (price benchmarks, feed diagnostics).

## Procedure
1. **Session guardrail.** Before the first Google Ads write of this session, call
   `gads_policy_guardrail` and honor its output.
2. **Health check, blockers first.** Call `gads_get_disapproved_ads` for policy problems,
   `gads_list_recommendations` for account flags, and `gads_run_gaql_query` for campaign status,
   budget-limited flags, and a zero-conversion check on recent days (tracking canary). Classify
   findings: critical (disapproval waves, tracking dead, feed not serving) stops the cycle until
   fixed; high gets handled this cycle; the rest goes to the log.
3. **HUMAN STEP (outside VigilDog), Merchant Center sweep.** Check feed fetch status, item
   disapprovals, and the price competitiveness report in the Merchant Center UI. Bring back: any
   feed errors, and which categories are priced above benchmark.
4. **Feed quality flags.** Call `gads_get_shopping_performance` (30 days, product level). Flag for
   title/image work: top-20%-by-revenue products, and high-impression products with clearly weak
   CTR. **HUMAN STEP (outside VigilDog):** the actual title/image edits happen in the feed tool or
   platform, hand over the flagged list; VigilDog cannot edit feed attributes.
5. **Product triage.** From the same data plus `gads_run_gaql_query`, build three lists:
   - *Invisible spenders:* impressions but zero clicks in 30 days, route to title/image/price fixes
     (step 4) or negatives (step 6).
   - *Money losers:* ROAS below target with meaningful spend, bid down if they convert at all,
     exclusion candidates if spend is significant with zero conversions.
   - *Capped winners:* ROAS above target but click share under ~40%, diagnose budget vs rank and
     queue a bid or budget raise.
6. **Search-term hygiene.** Call `gads_get_search_terms_report` sorted by cost. Mark irrelevant,
   informational ("how to", "reviews"), and competitor-brand terms with real spend and no
   conversions. Apply via `gads_add_negatives_from_search_terms`, preview first
   (validate_only=true default), show the term list and match types, apply only after user
   approval. Be conservative: Shopping queries are broad by design; negate clear waste only.
7. **Bid changes (write).** For Manual CPC campaigns, adjust product-group bids per the Decision
   rules ladder using `gads_update_product_group_bid`; exclude hopeless groups with
   `gads_exclude_product_group`. Preview every change, present the per-group before/after table,
   apply only after user approval. For tROAS campaigns: do NOT nudge bids mechanically, verify
   learning is done, then judge actual-vs-target and adjust the target through
   scale-bids-and-budgets / calculate-bid-targets logic instead.
8. **Budget rebalance (write).** From step 2's budget-limited flags: raise budget on campaigns
   beating target while capped, trim and reallocate from underperformers, via `gads_update_budget`.
   Preview first, apply after approval. If everything is capped at once, route to
   handle-budget-limited-campaigns.
9. **Structure review (monthly only).** Skip on weekly/bi-weekly passes, structure needs 30+ days
   of signal. Via `gads_run_gaql_query` on product groups: a catch-all group eating >30% of spend
   gets subdivided; groups under ~10 impressions/month get consolidated; star products sharing a
   group with laggards get their own item-level groups. Execute splits with
   `gads_create_product_group`-level work through the segmentation skill if tiers are in play;
   otherwise apply directly with preview -> approval.
10. **Competitive check.** Call `gads_get_auction_insights`: falling impression share or outranking
    share against named rivals means bids/budget (step 7-8) or feed quality (step 4) needs another
    look next cycle. Note pricing-gap categories from step 3 for the pricing owner, a HUMAN
    decision.
11. **Close the loop.** Write the cycle log: every change applied, every item deferred, and what
    step 2 of the NEXT cycle should confirm (changes propagated, flagged titles fixed, negatives not
    choking volume).

## Decision rules
- **Cadence:** 200+ conversions/month -> weekly; 50-200 -> bi-weekly; <50 -> monthly. Emergency
  trigger: ROAS -20% for two consecutive periods, or a disapproval spike.
- **Data windows:** product-level decisions need 30 days; never act on a single week of item data.
- **Manual CPC bid ladder:** above-target ROAS with click share <70% -> +10-20%; profitable but
  low volume -> hold or +5-10%; below-target with high spend -> -20-30% or exclude; zero-traffic
  products -> a small test bid rather than exclusion.
- **Exclusion bar:** significant spend, zero conversions, 30-day window, and no fixable feed cause
  identified, then exclude; otherwise bid down and revisit.
- **Winner constraint test:** click share <40% with ROAS above target = growth being left on the
  table; budget-limited -> raise budget, rank-limited -> raise bids.
- **Negative match types:** broad for single junk words, phrase for multi-word patterns, exact only
  for surgical blocks.
- **One lever per cycle:** change bids OR structure in a given cycle, never both, otherwise the
  next cycle cannot attribute the result.

## Common failure modes
- **Polishing titles on products nobody buys.** Title work pays on the top revenue quintile; effort
  below that is decoration. Follow step 4's flag order.
- **Weekly product-level whiplash.** Item data is noisy; seven-day reactions get reversed the next
  week. Hold the 30-day bar.
- **Google-Ads-only tunnel vision.** Price competitiveness and feed diagnostics live in Merchant
  Center; skipping step 3 hides the real cause of falling CTR. Every cycle includes the human MC
  sweep.
- **Negative-keyword enthusiasm.** Aggressive negation quietly amputates long-tail Shopping traffic.
  Negate provable waste, review the impact next cycle.
- **Structure review forever deferred.** Monthly-only tasks die without a calendar. First cycle of
  each month includes step 9, no exceptions.
- **Simultaneous bid + structure changes.** Two levers, one outcome, zero attribution. Pick one.

## Related skills
- Before (prerequisites): launch-standard-shopping-campaign, set-up-and-optimize-product-feed.
- Deeper dives it routes into: analyze-search-term-reports, run-n-gram-analysis (systematic query
  waste), handle-budget-limited-campaigns, scale-bids-and-budgets and calculate-bid-targets (tROAS
  changes), set-up-performance-based-shopping-segmentation (first-time tiering).
- Parallel: run-a-weekly-performance-review (account-wide), run-pmax-ecommerce-optimization-cycle
  (PMax sibling).
