Systems Lab

Agent skill

google-ads-bid-strategy-selector

This skill should be used when the user asks to \"choose a Google Ads bid strategy\", \"compare tCPA vs tROAS\", \"set up value-based bidding\", \"migrate from manual to Smart Bidding\", or mentions \"Portfolio Bidding\", \"Maximize Conversions\", or \"learning phase management\".

activeSelf-containedInstructions only2,728 words

Filed under ABM and paid.

From Ad-Superpowers/ad-superpowers-plugin · 120 skills · 5 · pushed 2026-09-10

What it does when it runs

This skill should be used when the user asks to \"choose a Google Ads bid strategy\", \"compare tCPA vs tROAS\", \"set up value-based bidding\", \"migrate from manual to Smart Bidding\", or mentions \"Portfolio Bidding\", \"Maximize Conversions\", or \"learning phase management\". Do NOT use for: Meta Ads bidding (use meta-bid-strategy-selector), LinkedIn bidding (use linkedin-bid-strategy-selector), keyword strategy (use keyword-strategy-planner).

Read from the skill and the 0 files bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.

Keys and connectors you must supply
None found.
Hosts it reaches
No third-party host appears in the skill or its bundled files.
Tool permissions it declares
No allowed-tools in the frontmatter. It only issues instructions, so there is nothing to bound.
Actions present in the files
None. Instructions only.

Ask about google-ads-bid-strategy-selector

Opens your assistant with this page's verified links already in the prompt.

Is this safe to install?ClaudeChatGPT
Adapt it to my stackClaudeChatGPT
What else do I need for it to workClaudeChatGPT
Rather ask a human? Talk to Cheetah
git clone --depth 1 --filter=blob:none --sparse https://github.com/Ad-Superpowers/ad-superpowers-plugin.git /tmp/ad-superpowers-plugin
git -C /tmp/ad-superpowers-plugin sparse-checkout set "plugin/skills/google-ads-bid-strategy-selector"
mkdir -p ~/.claude/skills/google-ads-bid-strategy-selector
cp -R "/tmp/ad-superpowers-plugin/plugin/skills/google-ads-bid-strategy-selector/." ~/.claude/skills/google-ads-bid-strategy-selector/

Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗

Or take the whole library

This repo ships a .claude-plugin manifest, so Claude Code can install all 120 skills at once. Plugin skills are invoked as /<plugin>:<skill>, so they never collide with your own.

/plugin marketplace add Ad-Superpowers/ad-superpowers-plugin
/plugin

The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.

Reproduced in full from Ad-Superpowers/ad-superpowers-plugin/blob/9b6385d2d2d228e4dac096a1d6bc5715c04fa736/plugin/skills/google-ads-bid-strategy-selector/SKILL.md, which is licensed MIT (repository). 2,728 words, 39 headings.

Bid Strategy Selector

Complete guide for choosing and implementing the right Google Ads Smart Bidding strategy based on goals, data, and account situation.

Quick Decision Tree

WHICH BID STRATEGY IS RIGHT FOR YOU?
│
├── NEW ACCOUNT / LOW DATA (<30 conversions/month)
│   └── MAXIMIZE CONVERSIONS (no target)
│       └── Goal: Collect data, complete learning phase
│
├── LEAD GENERATION with known lead value
│   ├── Consistent conversion volume (50+/month)?
│   │   └── YES → TARGET CPA
│   │   └── NO → MAXIMIZE CONVERSIONS
│   └── Variable lead values?
│       └── YES → MAXIMIZE CONVERSION VALUE + tROAS
│
├── E-COMMERCE with purchase tracking
│   ├── Focus on volume (market share)?
│   │   └── MAXIMIZE CONVERSION VALUE
│   ├── Focus on profitability?
│   │   └── TARGET ROAS
│   └── Balance both?
│       └── MAXIMIZE CONVERSION VALUE + tROAS target
│
└── MULTIPLE CAMPAIGNS with same goal
    └── PORTFOLIO BID STRATEGY
        └── Shared strategy across campaigns

Smart Bidding Overview

SMART BIDDING COMPARISON
════════════════════════

┌─────────────────────────┬───────────┬───────────┬─────────────────────┐
│ STRATEGY                │ CONTROL   │ DATA REQ  │ BEST FOR            │
├─────────────────────────┼───────────┼───────────┼─────────────────────┤
│ Maximize Conversions    │ None      │ Low       │ New accounts,       │
│ (without target)        │           │           │ data collection     │
├─────────────────────────┼───────────┼───────────┼─────────────────────┤
│ Maximize Conversions    │ CPA cap   │ Medium    │ Lead gen with       │
│ + Target CPA            │           │ (50+/mo)  │ cost constraints    │
├─────────────────────────┼───────────┼───────────┼─────────────────────┤
│ Maximize Conv. Value    │ None      │ Low       │ E-commerce volume,  │
│ (without target)        │           │           │ initial learning    │
├─────────────────────────┼───────────┼───────────┼─────────────────────┤
│ Maximize Conv. Value    │ ROAS      │ Medium    │ E-commerce profit,  │
│ + Target ROAS           │ target    │ (50+/mo)  │ scaling             │
├─────────────────────────┼───────────┼───────────┼─────────────────────┤
│ Manual CPC              │ Max CPC   │ None      │ Niche, B2B,         │
│ (Enhanced CPC opt.)     │ per kw    │           │ small accounts      │
└─────────────────────────┴───────────┴───────────┴─────────────────────┘

Maximize Conversions

How It Works

MAXIMIZE CONVERSIONS ENGINE
===========================

┌────────────────────────────────────────────────────────────────┐
│  GOOGLE AI OPTIMIZES FOR:                                      │
│  Maximum number of conversions within your daily budget        │
│                                                                │
│  SIGNALS USED:                                                 │
│  ├── Device, location, time of day                             │
│  ├── Browser, OS, demographics                                 │
│  ├── Search query and intent signals                           │
│  ├── Remarketing lists membership                              │
│  ├── Historical conversion patterns                            │
│  └── Real-time auction dynamics                                │
│                                                                │
│  YOU CONTROL:                                                  │
│  ├── Daily budget (spending limit)                             │
│  ├── Target CPA (optional, as constraint)                      │
│  └── Conversion actions (which ones to optimize for)           │
└────────────────────────────────────────────────────────────────┘

When to Use Maximize Conversions

USE MAXIMIZE CONVERSIONS WHEN:
──────────────────────────────
• New account with little historical data
• First 2-4 weeks of a new campaign
• Lead generation focus (single conversion type)
• Budget is more important than CPA efficiency
• Collecting data for later tCPA transition

DO NOT USE WHEN:
────────────────
• Strict CPA requirements (use tCPA)
• E-commerce with purchase values (use Max Conv Value)
• Very low budget (<EUR20/day) - too few learnings
• Campaign with multiple conversion types without a primary one

Maximize Conversions + Target CPA

ADDING TARGET CPA
=================

WHEN:
├── 50+ conversions in the past 30 days
├── Stable performance (no major fluctuations)
├── Known target CPA (break-even or goal)
└── After successful pure Maximize Conversions phase

CALCULATING TARGET CPA:
───────────────────────
Break-even CPA (Lead Gen):
└── Lead Value x Conversion Rate to Sale

Example:
├── Lead value (as sale): EUR500
├── Close rate: 10%
├── Break-even CPA: EUR500 x 0.10 = EUR50

Starting Target CPA:
├── Week 1-2: 120% of break-even (EUR60)
├── Week 3-4: 110% of break-even (EUR55)
├── Week 5+: 100% or tighter if stable

WARNING: NEVER start BELOW your historical average CPA!

Maximize Conversion Value

How It Works

MAXIMIZE CONVERSION VALUE ENGINE
================================

┌────────────────────────────────────────────────────────────────┐
│  GOOGLE AI OPTIMIZES FOR:                                      │
│  Maximum total conversion value within your daily budget       │
│                                                                │
│  REQUIREMENTS:                                                 │
│  ├── Conversion tracking with VALUE (purchase value)           │
│  ├── Accurate revenue/value data                               │
│  └── Consistent value tracking                                 │
│                                                                │
│  AI PRIORITIZES:                                               │
│  ├── High-value transactions over low-value ones               │
│  ├── Users with high predicted value                           │
│  └── Queries that historically generate high values            │
└────────────────────────────────────────────────────────────────┘

Maximize Conversion Value + Target ROAS

ADDING TARGET ROAS
==================

WHEN:
├── 50+ conversions with value in the past 30 days
├── Consistent value tracking (no gaps)
├── Known break-even or target ROAS
└── After successful pure Max Conv Value phase

CALCULATING TARGET ROAS:
────────────────────────
Break-even ROAS = 1 / Profit Margin

Example:
├── Profit margin: 40%
├── Break-even ROAS: 1 / 0.40 = 2.5 (250%)
├── Spending EUR100 means generating EUR250 in revenue is needed

Starting Target ROAS:
├── Week 1-2: 80% of break-even (200% if break-even is 250%)
├── Week 3-4: 90% of break-even (225%)
├── Week 5+: 100% or tighter if stable

WARNING: Too aggressive a ROAS target = no delivery!

Portfolio Bid Strategies

What Are Portfolio Strategies?

PORTFOLIO BID STRATEGY
======================

= One bid strategy shared across multiple campaigns

ADVANTAGES:
├── More data for learning → better optimization
├── Centralized bid management
├── Budget flexibility across campaigns
└── Better performance for small campaigns

LIMITATIONS:
├── All campaigns must share the same goal
├── Shared learning can be suboptimal per campaign
└── Less granular control

Portfolio Strategy Setup

PORTFOLIO STRATEGY TYPES
========================

1. TARGET CPA PORTFOLIO
   └── Multiple Search/Display campaigns, same CPA goal
   └── Example: Brand + Non-brand Search

2. TARGET ROAS PORTFOLIO
   └── E-commerce campaigns with same margin target
   └── Example: Shopping + Search + PMax

3. MAXIMIZE CONVERSIONS PORTFOLIO
   └── Aggregate data for faster learning
   └── Example: Bundle new campaigns

4. TARGET IMPRESSION SHARE PORTFOLIO
   └── Brand visibility campaigns
   └── Example: Branded Search campaigns

SETUP LOCATION:
Tools & Settings → Shared Library → Bid Strategies

When to Use Portfolio

PORTFOLIO DECISION MATRIX
=========================

USE PORTFOLIO WHEN:
├── Multiple campaigns with <50 conversions/month each
├── Campaigns have exactly the same KPI targets
├── A single point for bid management is desired
└── Small budgets spread across multiple campaigns

USE INDIVIDUAL WHEN:
├── Campaigns have different margin/CPA targets
├── Sufficient conversions per campaign (50+/month)
├── Different product types/audiences
└── Need for campaign-level bid adjustments

Learning Phase Management

Learning Phase Basics

LEARNING PHASE EXPLAINED
=========================

WHAT:
├── Period during which Smart Bidding collects data
├── Bids can fluctuate
├── Performance may temporarily worsen
└── DO NOT intervene during this phase

DURATION:
├── Typical: 7-14 days
├── Requirement: ~50 conversions (or actions)
├── Can take longer with low volume
└── Status visible in campaign UI

LEARNING PHASE STATUS:
├── "Learning" = Actively learning
├── "Learning (limited)" = Insufficient data
├── "Eligible" = Learning complete
└── "Limited" = Other issue (budget, etc.)

What Resets the Learning Phase?

ACTIONS THAT RESET LEARNING
============================

AVOID THESE DURING LEARNING:
─────────────────────────────
• Changing bid strategy
• Adjusting Target CPA/ROAS (>20%)
• Changing conversion action
• Increasing or decreasing budget >20%
• Pausing campaign for >7 days

SAFE DURING LEARNING:
─────────────────────
• Adding or pausing ads
• Adding keywords (small batches)
• Adding negatives
• Budget changes <20%
• Ad copy adjustments

Learning Phase Troubleshooting

LEARNING PHASE ISSUES
=====================

PROBLEM: "Learning (limited)" stays stuck
──────────────────────────────────────────
Cause: Insufficient conversions
Solutions:
├── Increase budget
├── Broader targeting (more volume)
├── Higher-funnel conversion action (temporarily)
└── Wait longer (sometimes needed)

PROBLEM: CPA spikes during learning
─────────────────────────────────────
This is normal! The AI is testing boundaries.
Actions:
├── DO NOT panic
├── Wait at least 7-10 days
├── Monitor the trend, not daily CPA
└── If >14 days poor: evaluate targeting/budget

PROBLEM: Learning takes >3 weeks
─────────────────────────────────
Possible causes:
├── Insufficient budget
├── Too niche targeting
├── Poor ad quality
└── Tracking issues

Value-Based Bidding

Value Rules (2025+)

VALUE RULES EXPLAINED
=====================

WHAT:
├── Dynamically adjust conversion values
├── Based on user/context signals
├── AI bids higher for high-value segments
└── Available for all Smart Bidding strategies

AVAILABLE SIGNALS:
├── Device (mobile, desktop, tablet)
├── Location (geographic)
├── Audience (Customer Match, remarketing)
└── Time (planned for future)

EXAMPLE SETUP:
──────────────
Value Rule 1: High-Value Customers
├── Condition: Customer Match list = "VIP Customers"
├── Adjustment: +50% value
└── Effect: EUR100 purchase → EUR150 for bidding

Value Rule 2: Low-Intent Location
├── Condition: Location = "Low converting region"
├── Adjustment: -30% value
└── Effect: EUR100 purchase → EUR70 for bidding

New Customer Acquisition

NEW CUSTOMER BIDDING (2025+)
============================

LOCATION: Campaign Settings → Customer Acquisition

OPTIONS:
├── Bid higher for new customers: +X% bid adjustment
├── Only bid for new customers: Exclude existing
└── No differentiation (default)

SETUP REQUIREMENTS:
├── Customer Match list of existing customers
├── Conversion tracking active
└── Sufficient new vs returning data

RECOMMENDED START:
├── +20% for new customers
├── Monitor new vs returning ROAS
├── Adjust based on LTV data
└── E-commerce: Consider first-purchase margin

Bid Strategy Migration

From Manual to Smart Bidding

MANUAL → SMART BIDDING MIGRATION
================================

STEP 1: PREPARATION (Week -2 to -1)
────────────────────────────────────
□ Verify conversion tracking
□ Minimum 30 conversions/month
□ Document baseline metrics
□ Set budget (min EUR50/day)

STEP 2: INITIAL SETUP (Week 1)
──────────────────────────────
□ Start with Maximize Conversions (no target)
□ Expect fluctuations
□ DO NOT intervene

STEP 3: MONITORING (Week 2-3)
─────────────────────────────
□ Monitor learning phase
□ Compare with baseline
□ Still DO NOT intervene

STEP 4: OPTIMIZATION (Week 4+)
──────────────────────────────
□ Evaluate performance vs manual
□ Add target if stable
□ Start conservative (120% of achieved)

Strategy Switch Checklist

BID STRATEGY SWITCH PROTOCOL
============================

□ PRE-SWITCH:
├── Document current performance (7-day average)
├── Calculate target (CPA/ROAS)
├── Choose switching moment (not during peak)
└── Prepare stakeholders (temporary fluctuations)

□ DURING SWITCH:
├── Implement new strategy
├── Conservative target (120% of current)
├── Screenshot for reference
└── Set calendar reminder for review

□ POST-SWITCH (Week 1-2):
├── Daily monitoring (but no changes)
├── Check learning phase status
├── Compare week-over-week (not day-over-day)
└── Note anomalies

□ POST-SWITCH (Week 3+):
├── Formal performance review
├── Tighten targets if stable (+10%)
├── Document learnings
└── Continue monitoring

Campaign Type Specific Recommendations

Search Campaigns

SEARCH BID STRATEGY GUIDE
=========================

BRAND SEARCH:
├── Strategy: Maximize Conversions or Manual CPC
├── Reason: High CTR, low competition
├── Target: Impression Share >90%
└── Note: Don't overbid — brand terms win anyway

NON-BRAND SEARCH:
├── New: Maximize Conversions (2-3 weeks)
├── Then: Target CPA/ROAS
├── Reason: Competitive, need efficiency
├── Note: Broad match + Smart Bidding = Google's recommended combo
└── AI Max: Enable AI Max for Search to unlock Search Term Matching,
    URL Expansion, and Text Customization within existing Search campaigns
    (Campaign.ai_max_setting.enable_ai_max)

DSA (Dynamic Search Ads):
├── Strategy: Maximize Conversions
├── Reason: Discovery, volume focus
├── Transition to tCPA once winning queries are known
└── Note: Negative keywords management

Shopping & PMax

SHOPPING / PMAX BID STRATEGY
============================

STANDARD SHOPPING (if still used):
├── Start: Maximize Clicks (data collection)
├── Transition: Target ROAS after 50+ purchases
├── Note: Product-level bidding via priorities

PERFORMANCE MAX:
├── E-commerce: Maximize Conversion Value + tROAS
├── Lead Gen: Maximize Conversions + tCPA
├── New: Without target (2-3 weeks)
└── Note: PMax needs more data than Search

ROAS TARGETS FOR PMAX:
├── Conservative start: 200-300%
├── Moderate: 300-500%
├── Aggressive: 500%+
└── Adjust based on margin and goals

Display & Video

DISPLAY / VIDEO BID STRATEGY
============================

DISPLAY CAMPAIGNS:
├── Remarketing: Maximize Conversions + tCPA
├── Prospecting: Maximize Conversions (volume focus)
├── Brand: Target CPM (if available)
└── Note: Longer learning due to lower volume

VIDEO CAMPAIGNS:
├── Awareness: Target CPM or Maximize Impressions
├── Consideration: Target CPV (Cost-per-View)
├── Conversion: Maximize Conversions
└── Note: Video ads convert indirectly

DEMAND GEN (replaced Discovery in 2025):
├── Strategy: Maximize Conversions or tCPA
├── Target CPC: Also available for Demand Gen (v22 addition)
├── Reason: Hybrid awareness/conversion
└── Note: Factor in view-through conversions

Smart Bidding Exploration (v21+)

SMART BIDDING EXPLORATION
=========================

WHAT:
├── Google's feature to test bid variations beyond your tROAS target
├── API field: target_roas_tolerance_percent_millis
├── Lets the algorithm explore auctions outside the strict target
└── Goal: Find incremental volume while staying near your target

WHEN TO ENABLE:
├── Campaign hitting tROAS target but with limited volume
├── Goal is to test scale without fully loosening the target
├── Available for tROAS campaigns with sufficient conversion data (30+/mo)

HOW TO CHECK:
──────────────
google_ads_run_gaql(query="
  SELECT
    campaign.name,
    campaign.maximize_conversion_value.target_roas,
    campaign.maximize_conversion_value.target_roas_tolerance_percent_millis
  FROM campaign
  WHERE campaign.advertising_channel_type = 'SEARCH'
    AND campaign.status = 'ENABLED'
    AND segments.date DURING LAST_30_DAYS
")

Performance Monitoring Script

/**
 * Bid Strategy Performance Monitor
 *
 * Monitors Smart Bidding performance and learning phase status.
 *
 * Setup:
 * 1. Update EMAIL
 * 2. Schedule daily at 9:00
 */

var CONFIG = {
  EMAIL: '[email protected]',
  CPA_THRESHOLD: 0.25,     // Alert on 25% CPA increase
  ROAS_THRESHOLD: 0.20,    // Alert on 20% ROAS decline
  LEARNING_DAYS_ALERT: 14  // Alert if learning >14 days
};

function main() {
  var campaigns = AdsApp.campaigns()
    .withCondition('Status = ENABLED')
    .get();

  var alerts = [];
  var learningCampaigns = [];

  while (campaigns.hasNext()) {
    var campaign = campaigns.next();
    var bidStrategy = campaign.getBiddingStrategyType();

    // Check learning phase (via status indicators)
    var status = checkCampaignStatus(campaign);
    if (status.isLearning) {
      learningCampaigns.push({
        name: campaign.getName(),
        strategy: bidStrategy,
        days: status.learningDays
      });
    }

    // Check performance changes
    var perfAlerts = checkPerformance(campaign);
    alerts = alerts.concat(perfAlerts);
  }

  // Send summary
  if (alerts.length > 0 || learningCampaigns.length > 0) {
    sendSummaryEmail(alerts, learningCampaigns);
  }

  Logger.log('Monitor complete. Alerts: ' + alerts.length);
  Logger.log('Campaigns in learning: ' + learningCampaigns.length);
}

function checkCampaignStatus(campaign) {
  // Note: Learning phase status not directly available via API
  // This is a proxy check
  var stats7d = campaign.getStatsFor('LAST_7_DAYS');
  var stats14d = campaign.getStatsFor('LAST_14_DAYS');

  var conv7d = stats7d.getConversions();
  var conv14d = stats14d.getConversions();

  // If <50 conversions in 14 days, likely still learning
  return {
    isLearning: conv14d < 50,
    learningDays: conv14d < 50 ? 14 : 0
  };
}

function checkPerformance(campaign) {
  var alerts = [];
  var name = campaign.getName();

  var currentStats = campaign.getStatsFor('LAST_7_DAYS');
  var previousStats = campaign.getStatsFor('LAST_14_DAYS');

  var currentCPA = currentStats.getConversions() > 0 ?
    currentStats.getCost() / currentStats.getConversions() : 0;

  // Calculate previous period CPA
  var prevConv = previousStats.getConversions() - currentStats.getConversions();
  var prevCost = previousStats.getCost() - currentStats.getCost();
  var previousCPA = prevConv > 0 ? prevCost / prevConv : 0;

  if (previousCPA > 0 && currentCPA > 0) {
    var change = (currentCPA - previousCPA) / previousCPA;
    if (change > CONFIG.CPA_THRESHOLD) {
      alerts.push({
        campaign: name,
        metric: 'CPA',
        previous: previousCPA.toFixed(2),
        current: currentCPA.toFixed(2),
        change: (change * 100).toFixed(1) + '%'
      });
    }
  }

  return alerts;
}

function sendSummaryEmail(alerts, learningCampaigns) {
  var subject = 'Smart Bidding Status - ' + AdsApp.currentAccount().getName();
  var body = 'Smart Bidding Daily Report\n';
  body += '===========================\n\n';

  if (learningCampaigns.length > 0) {
    body += 'CAMPAIGNS IN LEARNING:\n';
    for (var i = 0; i < learningCampaigns.length; i++) {
      var lc = learningCampaigns[i];
      body += '- ' + lc.name + ' (' + lc.strategy + ')\n';
    }
    body += '\n';
  }

  if (alerts.length > 0) {
    body += 'PERFORMANCE ALERTS:\n';
    for (var j = 0; j < alerts.length; j++) {
      var alert = alerts[j];
      body += '- ' + alert.campaign + ': ' + alert.metric + ' changed ';
      body += alert.previous + ' -> ' + alert.current + ' (' + alert.change + ')\n';
    }
  }

  MailApp.sendEmail(CONFIG.EMAIL, subject, body);
}

Output: Bid Strategy Recommendation Template

# Bid Strategy Recommendation

## Account Situation
- **Account type:** [E-commerce / Lead Gen / Hybrid]
- **Monthly budget:** EUR[X]
- **Current conversions/month:** [X]
- **Current CPA/ROAS:** EUR[X] / [X]%
- **Primary goal:** [Volume / Efficiency / Profitability]

## Recommended Strategy
**[STRATEGY NAME]**

### Why This Strategy
1. [Reason 1 - based on account situation]
2. [Reason 2 - based on goals]
3. [Reason 3 - based on data availability]

### Implementation Plan

**Week 1-2: Setup & Learning**
- Switch to [strategy]
- Target: [None / EURX / X%] (conservative)
- Budget: EUR[X]/day
- Action: Monitor only, no changes

**Week 3-4: Evaluation**
- Learning phase check
- Performance vs baseline
- Target adjustment: [Specify]

**Week 5+: Optimization**
- Tighten target to [X]
- Continue monitoring
- Evaluate scale opportunities

### Targets
- Primary: [CPA EURX / ROAS X%]
- Secondary: [Conversions, Value, etc.]

### Expected Results
- CPA change: [+/- X%]
- Volume change: [+/- X%]
- Learning phase duration: [X weeks]

### Risks & Mitigation
- Risk: [Describe]
- Mitigation: [Plan]

Other skills for the same job

Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.

Need help setting it up?

This page tells you what google-ads-bid-strategy-selector does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.

Book a call →

The directory stays free. There is nothing gated behind this.