---
name: set-up-portfolio-bid-strategies
description: >-
  Builds a portfolio bid strategy that pools conversion data across several campaigns sharing one
  efficiency goal, optionally pairing it with a shared budget and a carefully-bounded CPC ceiling.
  Reach for it when individual campaigns each convert too rarely for reliable Smart Bidding (say,
  five campaigns at 10-15 conversions/month apiece) but together clear the threshold, or when one
  target should govern a group of related campaigns. It validates eligibility (same campaign type,
  same conversion goal), creates the strategy, attaches campaigns, and sets up monitoring. Not the
  skill for single-campaign setup (set-up-conversion-based-bidding / set-up-value-based-bidding),
  for choosing the strategy type (select-a-bidding-strategy), or for computing the target number
  (calculate-bid-targets).
---
# Pool Campaigns Under a Portfolio Bid Strategy

## Purpose
Solve the thin-data problem: Smart Bidding needs volume, and many accounts split that volume across
campaigns until no single one has enough. A portfolio strategy lets several campaigns feed one
bidding model while keeping their own targeting and (optionally) their own budgets. This skill
verifies the campaigns actually belong together, creates and links the portfolio, and configures the
two optional extras, CPC ceilings and shared budgets, with the guardrails they need.

## When to run
- Multiple campaigns share one CPA or ROAS goal and each sits below ~30 conversions/month.
- You want one target to manage centrally instead of maintaining per-campaign targets.
- monitor-and-maintain-bid-strategy-health flagged strategies stuck in limited-learning due to
  low volume and recommended consolidation.
- You want automatic budget flow between sibling campaigns via a shared budget.

## When NOT to run
- One healthy campaign needs a strategy -> set-up-conversion-based-bidding or
  set-up-value-based-bidding; a single campaign gains nothing from a portfolio.
- The strategy type itself is undecided -> select-a-bidding-strategy.
- The target value is unknown -> calculate-bid-targets.
- The campaigns are Performance Max, Video, Demand Gen, or App, those types cannot join portfolio
  strategies; manage them with campaign-level strategies.
- The problem is a budget cap, not thin data -> handle-budget-limited-campaigns.

## Prerequisites
- Candidate campaign list with a shared efficiency goal.
- Conversion tracking verified on every candidate (same primary action or compatible actions).
- Target CPA/ROAS value if the portfolio will carry a target (from calculate-bid-targets, or the
  weighted average of the campaigns' current performance).
- Decision input from the user: shared budget yes/no.

## Procedure
1. **Session guardrail.** Call `gads_policy_guardrail` before the first write of the session.
2. **List and screen candidates.** Call `gads_list_campaigns` and `gads_get_campaign` per
   candidate. Keep only Search, Standard Shopping, or Display campaigns, all of the same type.
   Mixed types must be split into separate portfolios.
3. **Verify goal compatibility.** Call `gads_list_conversion_actions` and check each campaign's
   goal configuration: every member must optimize toward the same primary conversion action (or a
   deliberately compatible set). Drop or fix mismatches before pooling, mixed signals corrupt the
   shared model.
4. **Compute pooled volume.** Run `gads_run_gaql_query` for each candidate's last-30-day
   conversions (excluding conversion-lag days) and sum them. Apply the volume gate in Decision
   rules; if pooled volume is still under ~15/month, stop, a portfolio cannot fix a volume problem
   that small.
5. **Create the portfolio (write).** Call `gads_create_portfolio_bidding_strategy` with the
   strategy type matching the shared goal (tCPA / Maximize Conversions / tROAS / Maximize
   Conversion Value) and a self-documenting name that encodes type, target, and group (e.g.
   "Portfolio tCPA 45 - Brand Search NL"). Set the target to the calculated value or the weighted
   average of the members' recent actuals. Preview first, apply after user approval.
6. **Attach campaigns (write).** For each member, call `gads_set_campaign_bidding_strategy`
   pointing the campaign at the new portfolio resource. Preview the full attach list in one summary
   for approval, note explicitly that each campaign's individual strategy is replaced by the
   portfolio from this moment.
7. **CPC ceiling, default OFF.** Do not set a max CPC cap unless the Decision rules trigger fires.
   If it does: pull `gads_get_search_terms_report` for the last 30-60 days, filter to terms with
   >=1 conversion, compute their average CPC, and set the cap at 3x that average inside the
   portfolio settings (via `gads_create_portfolio_bidding_strategy` at creation, or flag for a
   strategy update). Never set a minimum CPC floor. If a cap is set, record a 30-day review date.
8. **Shared budget (optional, write).** If the user opted in: create a shared budget with
   `gads_create_budget` (shared/explicitly-shared) sized as the sum of the members' current daily
   budgets, then attach members to it. If members keep individual budgets, verify amounts with
   `gads_update_budget` only where rebalancing was approved. Preview each budget change; apply only
   after approval. Skip shared budgets entirely if any member will run campaign experiments, the
   two features do not mix.
9. **Post-setup verification (read).** Run `gads_run_gaql_query` against the `bidding_strategy`
   resource: confirm type, target, and the expected campaign count; confirm no stray campaign got
   attached and none of the members kept an individual target.
10. **HUMAN STEP (outside VigilDog).** Brief stakeholders: the portfolio re-enters learning
    (~two conversion cycles); daily numbers will wobble; no target/membership/budget changes during
    that window.
11. **Learning watch and first evaluation.** Read-only monitoring during learning
    (`gads_get_campaign`, GAQL). Afterward, compare pooled actual CPA/ROAS to target, check budget
    distribution across members, and adjust the target at most 10-15% per move with a conversion
    cycle between moves (each change previewed and approved).

## Decision rules
- **Eligible types:** Search, Standard Shopping, Display only; one type per portfolio; minimum two
  campaigns (below that, use a campaign-level strategy).
- **Pooled volume gate:** 50+ conversions/month pooled -> proceed confidently; 15-49 -> proceed but
  expect volatility and slower convergence; <15 -> do not build the portfolio, fix volume upstream.
- **Initial target:** weighted average of member campaigns' trailing performance (weight by
  conversions), or the validated number from calculate-bid-targets, whichever is more
  conservative at launch.
- **CPC cap trigger (any of):** CPCs sustained at ~5x normal outside learning; search terms show
  expensive query pockets with zero conversions; brand terms bid up to unsustainable levels by a
  competitor. Cap formula: 3x average CPC of converting terms. Cap review: every 30 days; if actual
  CPCs plateau exactly at the cap or IS lost to rank climbs after setting it, raise or remove it.
- **Shared budget fit:** use when members share one business objective and per-campaign spend
  reporting is not required; avoid when budget priorities differ per campaign, experiments are
  planned, or one member could starve the others. If one campaign consistently eats a
  disproportionate share and starves better performers, dissolve the shared budget back to
  individual budgets.
- **Removal discipline:** never detach a campaign from the portfolio without assigning its
  replacement strategy in the same approved change, a detached campaign otherwise sits with no
  working strategy.

## Common failure modes
- **Mixed campaign types or goals in one pool.** The strategy optimizes a blended signal that fits
  nobody. The step 2-3 screens are the whole defense.
- **Forgotten CPC caps.** A cap set during a temporary CPC spike quietly throttles bidding months
  later. Every cap gets a 30-day review date at creation; monitor-and-maintain-bid-strategy-health
  re-checks caps every cycle.
- **Shared budget starvation.** One aggressive campaign absorbs the pool and the rest flatline.
  Watch per-member spend weekly for the first month.
- **Aggressive portfolio target at launch.** Setting the target below the members' blended actuals
  restricts every member at once. Launch at the weighted average, tighten later.
- **Judging the pool during learning.** Attaching campaigns restarts learning; comparing week 1
  against pre-portfolio performance is meaningless. Evaluate only after two conversion cycles.

## Related skills
- Before: select-a-bidding-strategy (type), calculate-bid-targets (target value).
- Alternative: set-up-conversion-based-bidding / set-up-value-based-bidding (single campaign).
- After: monitor-and-maintain-bid-strategy-health (includes the recurring portfolio config review),
  scale-bids-and-budgets (scaling the stabilized portfolio), allocate-budget-across-campaigns
  (rethinking the budget split feeding the pool).
