google_ads_ad_performance_compare
Compares all ads in a Google Ads ad group, ranks them by performance score, and designates winners and losers. Flags ads with insufficient data for reliable comparison.
Instructions
Rank ENABLED ads within a single Google Ads ad group and assign WINNER / LOSER / INSUFFICIENT_DATA verdicts. Returns {ad_group_id, period, ads:[{ad_id, impressions, clicks, conversions, cost, ctr, cvr, cpa, score (ctr*cvr, or ctr when conversions=0), rank, verdict, headlines?, descriptions?}], winner, recommendation, insights:[strings]}. Ads with impressions < 100 are flagged INSUFFICIENT_DATA; all ads tied at the top score receive WINNER, the rest LOSER. Read-only — does not pause or rotate ads. For cross-ad-group per-ad reporting use google_ads_ad_performance_report; for RSA asset-level splits use google_ads_rsa_assets_analyze.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | No | Google Ads customer ID as a 10-digit string without dashes (e.g. '1234567890'). Optional — falls back to GOOGLE_ADS_CUSTOMER_ID / GOOGLE_ADS_LOGIN_CUSTOMER_ID from the configured credentials when omitted. | |
| ad_group_id | Yes | Ad group ID as a numeric string (e.g. '145680123456'). Required — comparison is always scoped to one ad group so the ads share targeting. Obtain via google_ads_ad_groups_list. | |
| period | No | Reporting window for the metrics. Default 'LAST_30_DAYS'. Use a shorter window (LAST_7_DAYS / LAST_14_DAYS) when diagnosing recent changes; use LAST_90_DAYS for trend baselines. |