Fill in before sending
[account name][target CPA][target ROAS, or write "none"]
Audit the shared (portfolio) bid strategies and the CPC limits on campaigns in my Google Ads account [account name]. My target CPA is [target CPA] and my target ROAS is [target ROAS, or write "none"].
1. List the portfolios. With google_ads_query, pull only the strategies with bidding_strategy.status = 'ENABLED' from the bidding_strategy resource: name, type, non_removed_campaign_count, target CPA, target ROAS and the CPC ceiling and floor (for example maximize_conversions.cpc_bid_ceiling_micros, target_spend.cpc_bid_ceiling_micros). Removed strategies also come back from this resource, so do not skip the status filter. Strategies owned by a manager account do not appear here; pull them separately from accessible_bidding_strategy with owner_customer_id and owner_descriptive_name.
2. Map the campaigns. With google_ads_query, pull bidding_strategy_type, bidding_strategy and the campaign-level CPC ceiling (target_spend.cpc_bid_ceiling_micros) for every campaign that is not removed. Put into a table which campaign uses which portfolio and which one runs its own strategy.
3. Compare results. Pull the last 30 days at campaign level with get_report and compute total cost, conversions, cost per conversion and ROAS for each portfolio. Put the portfolio target next to the actual result.
Flag the following:
1. Enabled portfolios that no campaign uses.
2. Campaigns in the same portfolio that have different primary conversions or very different costs per conversion. A portfolio target applies to all its campaigns together, so brand and non-brand campaigns sharing a portfolio is usually a mistake.
3. Portfolios whose actual cost per conversion is above 1.5 times the target or below half of it. Do not judge a portfolio with fewer than 15 conversions in the last 30 days, write "not enough data".
4. Campaigns on Maximize conversions or Target CPA where I want to cap what a single click can cost. On these strategies a CPC ceiling cannot be set at campaign level, only through a portfolio strategy.
5. Campaigns on Maximize clicks without a CPC ceiling.
Format the output like this: first the portfolio table (portfolio, type, target, CPC ceiling, number of campaigns, actual cost per conversion, ROAS, finding), then the campaign table (campaign, strategy, portfolio, campaign CPC ceiling, finding), and finally a list of changes in priority order.
Make the changes with manage_portfolio_bidding_strategy: create or create_and_assign for a new portfolio, update to change the target or limit of an existing one, assign to attach a campaign to an existing portfolio, delete to remove a portfolio that no campaign uses. State clearly in the preview that changing a portfolio target affects EVERY campaign that uses it. Do not propose changing a target by more than 20% in one step. Preview every change with confirm=false first, wait for my approval, then apply it and confirm by reading the bidding_strategy and campaign resources again.