Product-level ROAS triage for Shopping and Performance Max
Queries product-level performance across Shopping and Performance Max, sorts every product into heroes, drains, zombies and middle, and turns the split into a campaign and asset group structure plan with differentiated ROAS targets. Read-only.
When to use it
When Shopping or Performance Max spend is spread across all products and you suspect a few items drain budget while others carry the results.
What you get
Every product sorted into heroes, drains, zombies and middle, with the top 15 drains diagnosed and a campaign structure plan with separate ROAS targets.
Does it change anything in my account?
No. The assistant only reads your data and reports back.
For Google Ads account [account ID], my target ROAS is [target ROAS, e.g. 4 = 400%].
Step 1. Run account_snapshot (platform=google_ads, recent_days=30) so you know which Shopping and Performance Max campaigns exist, whether they are serving, their budgets and their current bidding.
Step 2. Run google_ads_query with this GAQL:
SELECT segments.product_item_id, segments.product_title, segments.product_brand, campaign.name, campaign.advertising_channel_type, metrics.impressions, metrics.clicks, metrics.cost_micros, metrics.conversions, metrics.conversions_value FROM shopping_performance_view WHERE segments.date DURING LAST_30_DAYS ORDER BY metrics.cost_micros DESC
Convert cost_micros to account currency. If the result looks capped by the row limit, raise limit and tell me how many products you analyzed, so I know whether the long tail is included. If the same item appears in more than one campaign, sum it per product and also note which campaigns it spends in.
Classify each product:
- Heroes: ROAS at or above [target ROAS] with at least 3 conversions.
- Drains: cost above 2x the average cost per product in this dataset and ROAS below 50% of target.
- Zombies: under 100 impressions in 30 days, meaning the product is effectively not served. Note that products with zero impressions do not appear in this view at all; if I paste my full feed item ID list here [optional: paste item IDs], list the missing ones as zombies too.
- Middle: everything else.
Deliver:
1. Totals per group: number of products, share of spend, share of conversion value and ROAS.
2. The top 15 drains with cost, clicks, conversions, average order value (conversion value / conversions), ROAS and a likely offer diagnosis. Base the diagnosis on what the data shows: an average order value too low to cover the cost per conversion, high clicks with very low conversion rate, or spend concentrated in one campaign. Price above market, bundle candidate and entry-item-only are hypotheses, because feed prices, competitor prices and margins are not in this data. Label them as hypotheses unless I paste prices or margins here: [optional: item ID, price, margin %].
3. A structure plan. Explain how to separate heroes, drains and zombies into their own campaigns or asset groups with different ROAS targets, which existing campaigns from Step 1 each group would come from, and the expected impact on spend and conversion value, with the assumptions stated.
This is a plan only. Do not change campaigns, budgets, bidding or listing groups. If I later approve any part of it, show a confirm=false preview of each change first and create any new campaign paused.
A one-page brief mapping who advertises in the client's market, where, with what message, and where the client stands today.
When to use itWhen you are about to start with a new client and need to understand who they compete against in paid and organic search before the kickoff call.