Create a BiddingStrategy resource of type TARGET_ROAS under the relevant customer, setting target_roas as a fractional ratio (e.g., 3.5 represents 350% ROAS); the strategy is stored in the Shared Library.
Retrieve the resource name of the newly created BiddingStrategy (customers/{customer_id}/biddingStrategies/{bidding_strategy_id}).
For each campaign you want to attach the strategy to, set the campaign's bidding_strategy field to the BiddingStrategy resource name and clear any standard bidding fields (e.g., manual_cpc).
Use a single GoogleAdsService.MutateAsync batch to update all campaigns at once to reduce quota consumption.
After attaching, verify each campaign's effective_target_roas via a GAQL query on the campaign resource to confirm inheritance.
Monitor the portfolio strategy's performance via the bidding_strategy resource report; budget constraints at the campaign level can prevent the strategy from reaching its targets.
Known gotchas
Target ROAS must be set as a plain ratio, not a percentage string; setting 350 instead of 3.5 will cause the strategy to bid as if a 35,000% return is expected, severely under-spending.
Portfolio bid strategies cannot span accounts; each strategy is scoped to a single customer ID, so cross-account portfolios require a manager account (MCC) structure with separate strategies per child.
Campaigns must have sufficient conversion history before Smart Bidding performs well; attaching a tROAS strategy to a new campaign with no conversions will result in very conservative or absent bidding.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp