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() 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:

RankCampaignPlatformSpendROASConversionsCPA
1"Spring Sale Lookalike v3"Meta€1.2504.287€14.30
2"Spring Sale Brand"Google€9803.864€15.30
3"Spring Sale Hashtag"TikTok€7203.552€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

  1. Sort by ROAS desc + limit 10
  2. Filter mentally: must have meaningful spend (not noise)
  3. Top 3-5 = scale candidates
  4. Cross-link to Ads Manager (PRD-16) → increase budget on these

"What's burning budget?" question

  1. Sort by Spend desc + limit 20
  2. Cross-reference ROAS — high spend + low ROAS = problem
  3. Decide: pause OR fix creative / targeting

Cross-platform A/B retrospective

Ran "Spring Sale" campaign on Meta, Google, TikTok with same creative + audience concept:

  1. Sort by ROAS desc + limit 50
  2. Find the 3 variants in the list
  3. See which platform won + by how much
  4. 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:

  1. Open Cross-Channel → date range = last_14d
  2. Top campaigns → sort ROAS desc + limit 10
  3. Identify top 3 (high ROAS + meaningful spend)
  4. Sort by Spend desc + limit 10
  5. Compare lists — top by ROAS that also has good spend = green-light scale candidates
  6. Switch to Single Platform → drill into each → identify which adset / creative is winning
  7. Apply: increase budget on winning entities (or set Rules Engine to do it automatically per PRD-17)

End-to-end: ~15-20 minutes weekly.

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.

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 platforms scope 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.