Top campaigns cross-platform
Last updated: May 19, 2026
Top campaigns cross-platform
The Top campaigns cross-platform block in Cross-Channel mode ranks campaigns across all selected platforms in a single list. Backed by getTopCampaignsCrossPlatform() in apps/backend/src/services/cross-channel-analytics.service.ts. Returns TopCampaignRow[]. Sort metric configurable (spend / ROAS / conversions / CPA). Limit configurable (typically 10 / 20 / 50). Answer: "what are my top performers regardless of platform?".
Who is this for
Mediabuyers running campaigns across 2+ platforms. Especially useful when:
Identifying universal winners (campaigns that should get more budget across platforms)
Spotting cross-platform leaders (a creative concept that works everywhere)
Cross-platform A/B retrospectives
What the block shows
A single ranked list combining all selected platforms:
Rank | Campaign | Platform | Spend | ROAS | Conversions | CPA |
|---|---|---|---|---|---|---|
1 | "Spring Sale Lookalike v3" | Meta | €1.250 | 4.2 | 87 | €14.30 |
2 | "Spring Sale Brand" | €980 | 3.8 | 64 | €15.30 | |
3 | "Spring Sale Hashtag" | TikTok | €720 | 3.5 | 52 | €13.80 |
... | ... | ... | ... | ... | ... | ... |
Per row: campaign name, platform badge, spend (in target_currency), ROAS / CPA / conversions.
Configuration
Sort metric
Pick which metric drives ranking:
Spend — biggest spenders (current attention magnets)
ROAS — most profitable (scale candidates)
Conversions — highest-volume (top of the funnel)
CPA — most efficient acquisition (lowest cost per result; sort ascending)
Limit
Typically 10 / 20 / 50 campaigns shown.
Date range
Inherits from Cross-Channel page date range. Max 90 days.
How to use
"What should I scale?" question
Sort by ROAS desc + limit 10
Filter mentally: must have meaningful spend (not noise)
Top 3-5 = scale candidates
Cross-link to Ads Manager (PRD-16) → increase budget on these
"What's burning budget?" question
Sort by Spend desc + limit 20
Cross-reference ROAS — high spend + low ROAS = problem
Decide: pause OR fix creative / targeting
Cross-platform A/B retrospective
Ran "Spring Sale" campaign on Meta, Google, TikTok with same creative + audience concept:
Sort by ROAS desc + limit 50
Find the 3 variants in the list
See which platform won + by how much
Allocate next cycle accordingly
Cross-account audit
Agency managing multiple clients in one workspace: top campaigns cross-platform shows which client's campaigns are leading. Quick health snapshot per client.
What the block doesn't tell you
Per-adset breakdown within campaigns — drill into Ads Manager
Per-creative breakdown — Single Platform → creative-performance widget
Why a campaign won — needs deeper investigation (audience, creative, time-of-day)
Audience overlap across platforms — needs Audience Hub or external analysis
Constraints
90-day max date range (Cross-Channel limit)
10-min Redis cache
Currency:
target_currencyFeature gating:
ENABLE_CROSS_CHANNEL_ANALYTICS
Use case: Monday scaling decisions
Workflow:
Open Cross-Channel → date range = last_14d
Top campaigns → sort ROAS desc + limit 10
Identify top 3 (high ROAS + meaningful spend)
Sort by Spend desc + limit 10
Compare lists — top by ROAS that also has good spend = green-light scale candidates
Switch to Single Platform → drill into each → identify which adset / creative is winning
Apply: increase budget on winning entities (or set Rules Engine to do it automatically per PRD-17)
End-to-end: ~15-20 minutes weekly.
Cross-link to Ads Manager
Click a row → opens that campaign in Ads Manager (PRD-16) for tactical edit (pause / scale / duplicate). Top campaigns block is read-only; actions happen elsewhere.
Cross-link to Rules Engine
A campaign at the top of the ROAS list = ideal target for an "increase_budget_pct" rule. From the row: open the campaign → create a Rules Engine rule scoped to that campaign with scale logic. See rul-102.
Common mistakes
Sorting by ROAS without spend guard: noisy low-spend campaigns show up artificially top — visually filter by spend
Treating "Spring Sale Lookalike v3" + "Spring Sale Lookalike v4" as different concepts: name conventions matter — see am-108
Reading without context (no date range comparison): today's top may not be last month's top — compare periods
Acting on the block without drilling into Ads Manager: block is read-only; you need to act elsewhere
Common issues
Same campaign appears twice: rare; means duplicate campaign IDs across accounts (audit naming + setup)
Top is unexpected campaign: probably noisy ROAS on low-spend; verify spend column
Block empty: no campaigns met the limit threshold; broaden date range or platforms scope
Cross-platform mixing wrong: ensure
platformsscope is what you intend
Related
Channel comparison — platform-level peer view
Cross-Channel overview — context
Filtering + sorting — Ads Manager row-level alternative