Cross-Channel overview — 5 narrative blocks

Last updated: May 19, 2026

Cross-Channel overview — 5 narrative blocks

Cross-Channel mode renders 5 narrative blocks aggregating across selected platforms. Gated by ENABLE_CROSS_CHANNEL_ANALYTICS env flag. Backed by apps/backend/src/services/cross-channel-analytics.service.ts (verified). Hard constraints: 90-day max date range (MAX_DATE_RANGE_DAYS = 90), 10-min Redis cache (prefix cca:v2:).

Who is this for

Anyone managing campaigns across 2+ platforms. Especially: budget allocators, executive reporters, mediabuyers running cross-platform A/B.

The 5 narrative blocks

The order matches the typical strategic-review flow: pulse → mix → comparison → recommendation → drill-down.

Block 1: KPI strip (unified)

Service method: getUnifiedMetrics()

What it shows: rolled-up metrics across selected platforms in target_currency:

  • Spend (target_currency)

  • Impressions, clicks, CTR, CPC, CPM

  • Conversions, leads, purchases

  • Purchase value / revenue

  • CPA, ROAS

All currency converted via EUR intermediate using historical per-day rates.

Use case: at-a-glance cross-platform pulse — "how is everything together doing this week?"

Block 2: Channel mix

Service method: getChannelMixTrend()

What it shows: per-platform spend share + trend:

  • Donut: current spend share per platform

  • Stacked area: spend share trend over time

Use case: detect when one platform is over-consuming budget without proportional return. See an-107.

Block 3: Channel comparison matrix

Service method: getChannelComparison()

What it shows: per-platform metrics side-by-side in a table:

Platform

Spend

ROAS

CPA

CPC

CTR

Conversions

Meta

...

...

...

...

...

...

Google

...

...

...

...

...

...

TikTok

...

...

...

...

...

...

Sortable per column.

Use case: "which platform has best CPA right now?" answered in one view. See an-108.

Block 4: Budget recommendation

Service method: getOptimalMixRecommendation()

What it shows: rule-based recommendation per platform:

Platform

Current %

Recommended %

Delta %

Multiplier

Meta

40%

55%

+15%

×1.38

Google

35%

30%

-5%

×0.86

TikTok

25%

15%

-10%

×0.60

RULE-BASED, not AI. Shifts budget toward higher-ROAS platforms based on historical patterns.

Use case: weekly budget reallocation. See an-109.

Block 5: Top campaigns cross-platform

Service method: getTopCampaignsCrossPlatform()

What it shows: ranked campaigns across all selected platforms in a single list. Sort metric configurable (spend / ROAS / conversions / CPA). Limit configurable (top 10 / 20 / 50).

Use case: "top 10 ROAS campaigns regardless of platform" — for cross-channel optimization decisions. See an-110.

Hard constraints

Constraint

Value

Max date range

90 days

Cache TTL

10 min (Redis, prefix cca:v2:)

Feature flag

ENABLE_CROSS_CHANNEL_ANALYTICS

Auth

ROLE_GROUPS.DASHBOARD + app.apiKey('insights')

Currency

target_currency (workspace default) via EUR intermediate

How the cache works

Cross-channel queries are expensive (joining across multiple platforms with currency conversion). To keep the dashboard snappy:

  • Each query result cached in Redis for 10 min

  • Cache key: includes date range + platforms + target_currency

  • Hit rate: high for repeated views with same params

  • Miss: query runs, result cached

Implication: data may lag actual platform sync by up to 10 min in the dashboard. For tighter freshness: refresh after the 10-min window or adjust date params slightly.

Query params (shared across blocks)

Param

Required

What

since, until

Yes

Date range (max 90 days apart)

platforms

Yes

Array of platform codes (meta / google / tiktok / taboola / snapchat, lowercase API codes)

target_currency

Optional

Display currency (default workspace)

timezone

Optional

Defaults to workspace TZ

For Block 4 (recommendation): only target_currency.

For Block 5 (top campaigns): adds metric (sort) + limit.

What's NOT in Cross-Channel

Some features users sometimes expect but Wevion doesn't (currently) provide here:

  • Saved dashboard layouts — every session shows the same fixed grid

  • Strategic intelligence V2 — not implemented (despite older mentions)

  • Audience saturation flagging — demographic breakdown is in Audience Hub, but saturation calculation isn't here

  • Seasonal trends tab — not implemented

These are deferred per an-101 overview.

When to use Cross-Channel

Use case

Right tool

Weekly budget allocation across platforms

Cross-Channel → Block 4

Executive monthly review

Cross-Channel → Block 1 KPIs + Block 2 mix

Cross-platform A/B (same campaign concept, different platforms)

Cross-Channel → Block 3 + Block 5

Identify cross-platform winners

Cross-Channel → Block 5 top

Per-platform tactical edit

Single Platform → drill to Ads Manager

Common mistakes

  • Date range > 90 days: rejected with clear error. Split into 2+ queries.

  • Expecting real-time: 10-min cache + 15-min sync = up to 25-min lag from platform reality

  • Comparing Cross-Channel ROAS to platform UI: attribution windows + currency conversion can differ; expect small variance

  • Ignoring feature flag: if Cross-Channel doesn't appear, flag is off — ask admin

Related