---
name: optimize-bid-modifiers
description: >-
  The segment-level bid tuning pass for Manual CPC campaigns: exports device, location, schedule,
  audience, and demographic performance, flags segments deviating 30%+ from the campaign average on
  data that clears minimum thresholds (100+ clicks, 10+ conversions), computes proportional
  modifiers, caps them at +/-30% initially, and applies them with stacking awareness. Includes the
  hard gate that stops the whole exercise on Smart Bidding campaigns, where every modifier except
  device -100% is ignored. Use it on a monthly Manual CPC optimization cycle or when a segment
  visibly over/underperforms. For time-of-day only, optimize-ad-schedule is the focused variant;
  strategy selection is select-a-bidding-strategy; geographic targeting restructures are
  optimize-geographic-targeting.
---
# Optimize Segment Bid Modifiers (Manual CPC)

## Purpose
On Manual CPC, one bid serves every device, city, hour, audience, and age band, even though those
segments convert at wildly different rates. Bid modifiers re-price each segment in proportion to its
measured performance. This skill runs the full pass with the discipline that separates signal from
noise: data minimums, capped first moves, multiplicative-stacking checks, and a two-week validation
before any modifier is trusted or expanded.

## When to run
- Monthly optimization cycle on Manual CPC campaigns.
- A segment shows 30%+ CPA/ROAS variance from the campaign average.
- Entering a new market or device mix where default parity is clearly wrong.
- 30+ days post-launch with 100+ clicks accumulating per major segment.

## When NOT to run
- The campaign uses tCPA, tROAS, Maximize Conversions, or Maximize Conversion Value -> stop;
  Smart Bidding prices segments itself at auction time and ignores every modifier except device
  -100%. If a device must be excluded outright, apply just that one action. Otherwise route
  performance concerns to monitor-and-maintain-bid-strategy-health.
- Only the time dimension matters -> optimize-ad-schedule.
- Location performance calls for adding/excluding geographies rather than re-pricing them ->
  optimize-geographic-targeting.
- Under 30 days of data or segments below thresholds, collect more data first.

## Prerequisites
- Manual CPC confirmed as the bid strategy.
- 30+ days of data (60-90 for low volume), conversion tracking verified.
- Campaign-average CPA or ROAS baseline, plus breakeven from calculate-bid-targets as the
  guardrail.

## Procedure
1. **Session guardrail.** Call `gads_policy_guardrail` before the session's first write.
2. **Hard gate.** Verify the strategy via `gads_list_bidding_strategies` /
   `gads_run_gaql_query` (`campaign.bidding_strategy_type`). Anything but Manual CPC ends the
   skill here (device -100% exclusion excepted).
3. **Scope the dimensions.** Devices always apply; locations if multiple are targeted; schedule if
   one is configured; audiences if observation-mode lists are attached; demographics where the
   network reports them.
4. **Export segment data (reads).** Last 30-90 days, trailing conversion-lag days excluded:
   `gads_get_device_performance`, `gads_get_geo_performance`, `gads_get_ad_schedule_performance`,
   and `gads_run_gaql_query` for audience and demographic rows. Columns per segment: clicks,
   impressions, cost, conversions, conversion value, CPA/ROAS. Record the campaign totals as the
   baseline.
5. **Enforce data minimums.** A segment is actionable only with 100+ clicks AND 10+ conversions
   AND non-trivial spend. Everything below: mark "insufficient data", no modifier, revisit next
   cycle.
6. **Flag by variance.** Variance = (segment CPA / campaign CPA - 1) x 100 (invert the reading
   for ROAS). Within +/-30% -> leave alone. 30%+ better -> boost candidate. 30-50% worse -> trim
   candidate. 50%+ worse -> strong trim or exclusion candidate. Zero conversions on 50+ clicks ->
   exclusion watchlist (see caps rule before excluding).
7. **Prioritize dimensions.** Work devices first (largest spend swings), then locations, then
   schedule, then audiences, then demographics (usually thinnest data). Do not modify every
   dimension in one session on a small account, stacking risk grows with each layer.
8. **Compute and cap modifiers.** Raw modifier = (campaign CPA / segment CPA - 1) x 100 (for
   ROAS: (segment ROAS / campaign ROAS - 1) x 100). Then cap: first-cycle moves never exceed
   +/-30%, whatever the formula says; -100% only for segments with zero conversions after 200+
   clicks. Check stacking: co-occurring modifiers multiply (1.30 x 1.20 x 1.15 = +79%, not +65%);
   keep at most ~three positive layers on any combination.
9. **Apply (writes).** Highest-spend segments first: `gads_set_bid_adjustments` for device /
   location / schedule modifiers, `gads_set_audience_bid_modifier` for audience layers,
   `gads_set_demographic_targeting` for age/gender/income adjustments or exclusions. Preview
   everything (validate_only=true default) as a dimension/segment/old->new table with rationale;
   apply only after user approval. Log each change.
10. **Validate on a timeline.** Days 1-14: hands off. Day 14: check for volume collapse or bid
    inflation via the same read tools. Days 21-30: full before/after per segment (exclude the
    first 3 days as settling). Then per Decision rules: keep/expand, halve, or remove each
    modifier. If overall campaign CPA worsened, roll back the whole set and re-analyze on a longer
    window.
11. **Maintain.** Re-run monthly; after each validated cycle caps may widen to +/-50% where data
    supports it. Quarterly: full reset (clear modifiers, re-derive from fresh data) to prevent
    stale layers. If the campaign migrates to Smart Bidding
    (migrate-from-manual-to-smart-bidding), strip every modifier except deliberate device -100%
    exclusions.

## Decision rules
- **Eligibility:** Manual CPC only; Smart Bidding respects device -100% and nothing else.
- **Data minimums per segment:** 100+ clicks, 10+ conversions, meaningful spend. Sub-threshold
  segments get nothing.
- **Variance bands:** +/-30% neutral; beyond that act proportionally per the step 6 ladder.
- **First-cycle caps:** +/-30% max; widen to +/-50% only after a validated cycle. Exclusions
  (-100%): 200+ clicks and zero conversions; at 50-200 clicks use -50% to -70% and wait.
- **Stacking:** multiplicative across dimensions; compute the product for representative
  combinations before approving; ~three positive layers max.
- **Post-validation matrix:** CPA improved + volume held -> keep, step toward the full computed
  value. CPA improved + volume down >30% -> halve the modifier. CPA worsened -> remove and
  investigate. Whole-campaign CPA worsened -> roll back everything.
- **Volume collapse handling:** halve the offending negative modifier, wait 2 weeks, then remove
  entirely if still collapsed; choose deliberately between exclusion and no modifier.
- **Level:** campaign-level for device/location/schedule; ad-group level for
  audiences/demographics only when each ad group clears the data minimums on its own.

## Common failure modes
- **Modifiers on Smart Bidding.** Zero effect, full illusion of control. The step 2 gate is why
  it runs first.
- **Noise-chasing.** A 20-click segment with one conversion is not a trend; thresholds are not
  bureaucratic, they are the difference between tuning and gambling.
- **Uncapped first moves.** Applying a raw +43% because the formula said so overcorrects and
  collapses volume; cap, validate, expand.
- **Ignoring the multiplication.** Three "reasonable" +25% layers compound to nearly double the
  bid; always compute the stack.
- **Stale layers.** Modifiers set for last year's behavior quietly misprice today's; the monthly
  refresh and quarterly reset are load-bearing.
- **Full cleanup on migration.** When moving to Smart Bidding, deleting the deliberate device
  -100% exclusions along with the dead percentage modifiers re-opens a device you meant to keep
  closed.

## Related skills
- Before: calculate-bid-targets (baseline + breakeven guardrails), select-a-bidding-strategy
  (whether Manual CPC is even the right home).
- Focused siblings: optimize-ad-schedule (time dimension deep-dive),
  optimize-geographic-targeting (structural geo changes).
- After: migrate-from-manual-to-smart-bidding (when modifier maintenance outgrows its value),
  scale-bids-and-budgets (overall pressure once segments are priced right),
  allocate-budget-across-campaigns (if modifier findings imply budget re-splits).
