Top campaigns cross-platform
getTopCampaignsCrossPlatform service. Ranked campaigns across all selected platforms. Sort by spend / ROAS / conversions / CPA. Limit configurable.
Written By Salvatore Sinigaglia
Last updated About 4 hours ago
getTopCampaignsCrossPlatform service. Ranked campaigns across all selected platforms. Sort by spend / ROAS / conversions / CPA. Limit configurable.
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()inapps/backend/src/services/cross-channel-analytics.service.ts. ReturnsTopCampaignRow[]. 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:
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_currency - Feature 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
FAQ
What does the Top campaigns cross-platform block show?
Wevion's Top campaigns cross-platform block ranks campaigns across all selected platforms in a single combined list. Backed by getTopCampaignsCrossPlatform(), each row shows the campaign name, platform badge, spend in target_currency, ROAS, conversions, and CPA. It answers "what are my top performers regardless of platform?".
Which sort metrics and limits are available?
You can rank the list by spend (biggest spenders), ROAS (most profitable scale candidates), conversions (highest volume), or CPA (most efficient, sorted ascending). The limit is configurable, typically 10, 20, or 50 campaigns. The date range is inherited from the Cross-Channel page, capped at 90 days.
Can I edit campaigns directly from this block?
No — the Top campaigns block is read-only. Clicking a row opens that campaign in Ads Manager, where tactical actions like pause, scale, and duplicate happen. You can also open a top campaign to create a Rules Engine rule scoped to it, such as an increase_budget_pct rule for a high-ROAS winner.
Why is an unexpected campaign at the top of the list?
An unexpected top campaign is usually noisy ROAS on low spend — a small-budget campaign whose ratio looks artificially high. Verify the spend column before acting, and visually filter for campaigns with meaningful spend so noise doesn't masquerade as a scale candidate.
Why is the Top campaigns block empty?
The block is empty when no campaigns met the limit threshold for your query. Broaden the date range or widen the platforms scope to surface results. Also confirm the platforms scope is what you intend, since a narrow selection can exclude campaigns you expected to see.