# How to compare ad performance across platforms with an AI agent

> Tier: deep. Full contract: quantified decision rules and evidence requirements.

Spend, CPA and ROAS across Google, Meta, TikTok and Pinterest in one table, reconciled against GA4 so platform self-reporting is kept honest.

**Intent.** Answer 'which platform earns its budget' with comparable numbers and explicit caveats, not four self-graded report cards.

## When to use

- Allocating next month's budget across platforms.
- A platform claims credit that totals more than the business saw.

## When not to use

- Single-platform accounts.
- When GA4 is absent and the user needs settled truth: without a neutral referee this skill produces a labelled comparison, not a verdict.

## Sources

Required: Google Ads, Meta Ads
Optional: TikTok Ads, Pinterest Ads, Google Analytics 4

## Preconditions

- Same window and currency across platforms.
- Each platform's attribution setting read and quoted in the output.

## Inputs

- `window`: Comparison window. Default: last 30 days.
- `kpi` (required): CPA or ROAS.

## Procedure

1. Pull spend and conversions per platform, campaign-level, one window. — tools: `google_ads_get_insights`, `meta_get_insights`, `tiktok_get_insights`, `pinterest_run_report`
2. Normalise to one currency and one table; label each column with its attribution window.
3. Pull GA4 key events and revenue by channel for the same window. — tools: `ga4_get_channel_groups`, `ga4_run_report`, `ga4_get_key_events`
4. Compute each platform's over-claim ratio: platform-reported conversions over GA4 channel conversions.
5. Rank platforms on the user's KPI twice: platform-reported and GA4-viewed.

## Decision rules

- **When** Platform conversions exceed GA4 channel conversions by more than 40% → **conclude** Flag heavy view-through or modelled credit on that platform; rank it on the GA4 view for decisions. **Unless** GA4 consent-mode gaps are known to depress that channel; then present both and say neither is settled.
- **When** The two rankings disagree on the top platform → **conclude** Lead with the disagreement itself: it is the finding, and budget moves should wait for an incrementality read.
- **When** A platform has under 50 conversions in the window → **conclude** Exclude it from ranking and say why; its CPA is an anecdote at that volume.

## Evidence requirements

- Both rankings shown, with the over-claim ratio per platform.
- Every column labelled with its attribution window and currency.

## Human approval boundary

- Budget shifts decided on this table go through budget-reallocation and Safe Writes; nothing moves from here.

## Failure modes

- Attribution windows differ silently across platforms; a table without labels is fiction with gridlines.
- GA4 last-click under-credits upper-funnel platforms; the GA4 view is a referee, not the truth.
- Currency conversion at today's rate distorts a month of spend; use the account's own reported currency totals where possible.

## Output

- **The table**: Platform × spend, conversions, KPI, both views, labelled.
- **Over-claim ratios**: Per platform, with the likely mechanism named.
- **Decision guidance**: What the table supports deciding, and what needs an incrementality test.

## Related

- Skill: [weekly-performance-review](https://www.getmcpads.com/skills/weekly-performance-review.md)
- Skill: [budget-reallocation](https://www.getmcpads.com/skills/budget-reallocation.md)
- Skill: [tracking-audit](https://www.getmcpads.com/skills/tracking-audit.md)
- Guide: [cross-platform-report](https://www.getmcpads.com/guides/cross-platform-report.md)
