Cross-Channel overview — 5 narrative blocks

5 narrative blocks: KPI strip / channel mix / channel comparison / budget recommendation / top campaigns. 90-day max. Redis 10-min cache.

Written By Salvatore Sinigaglia

Last updated About 4 hours ago

5 narrative blocks: KPI strip / channel mix / channel comparison / budget recommendation / top campaigns. 90-day max. Redis 10-min cache.

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:

PlatformSpendROASCPACPCCTRConversions
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:

PlatformCurrent %Recommended %Delta %Multiplier
Meta40%55%+15%×1.38
Google35%30%-5%×0.86
TikTok25%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

ConstraintValue
Max date range90 days
Cache TTL10 min (Redis, prefix cca:v2:)
Feature flagENABLE_CROSS_CHANNEL_ANALYTICS
AuthROLE_GROUPS.DASHBOARD + app.apiKey('insights')
Currencytarget_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)

ParamRequiredWhat
since, untilYesDate range (max 90 days apart)
platformsYesArray of platform codes (meta / google / tiktok / taboola / snapchat, lowercase API codes)
target_currencyOptionalDisplay currency (default workspace)
timezoneOptionalDefaults 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 caseRight tool
Weekly budget allocation across platformsCross-Channel → Block 4
Executive monthly reviewCross-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 winnersCross-Channel → Block 5 top
Per-platform tactical editSingle 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

FAQ

What are the 5 narrative blocks in Wevion's Cross-Channel mode?

Wevion's Cross-Channel mode renders five narrative blocks in strategic-review order: KPI strip (unified pulse), channel mix (spend share), channel comparison matrix (per-platform side-by-side), budget recommendation (rule-based allocation), and top campaigns cross-platform (ranked drill-down). Each aggregates across the platforms you select for the query.

What is the maximum date range for Cross-Channel analytics?

Cross-Channel analytics enforces a 90-day maximum date range (MAX_DATE_RANGE_DAYS = 90). A range longer than 90 days is rejected with a clear error, so you must split it into two or more separate queries. This limit applies to all five blocks since they share the same date-range query params.

Why don't Cross-Channel numbers match my platform's native dashboard?

Wevion's Cross-Channel mode converts all spend and metrics to your target_currency through an EUR intermediate using historical per-day rates, and it unifies attribution windows across platforms. These conversions plus attribution differences produce small, expected variance versus each platform's native UI totals.

How fresh is Cross-Channel data?

Cross-Channel data can lag reality by up to 25 minutes: results are cached in Redis for 10 minutes (prefix cca:v2:) on top of the roughly 15-minute platform sync. For tighter freshness, refresh after the 10-minute window closes or adjust your date params slightly.

Why can't I see Cross-Channel mode?

Cross-Channel mode is gated behind the ENABLE_CROSS_CHANNEL_ANALYTICS environment flag. If Cross-Channel does not appear in Wevion, the flag is off for your workspace and you should ask an admin to enable it.

FAQ

What are the 5 narrative blocks in Wevion's Cross-Channel mode?

Wevion's Cross-Channel mode renders five narrative blocks in strategic-review order: KPI strip (unified pulse), channel mix (spend share), channel comparison matrix (per-platform side-by-side), budget recommendation (rule-based allocation), and top campaigns cross-platform (ranked drill-down). Each aggregates across the platforms you select for the query.

What is the maximum date range for Cross-Channel analytics?

Cross-Channel analytics enforces a 90-day maximum date range (MAXDATERANGE_DAYS = 90). A range longer than 90 days is rejected with a clear error, so you must split it into two or more separate queries. This limit applies to all five blocks since they share the same date-range query params.

Why don't Cross-Channel numbers match my platform's native dashboard?

Wevion's Cross-Channel mode converts all spend and metrics to your target_currency through an EUR intermediate using historical per-day rates, and it unifies attribution windows across platforms. These conversions plus attribution differences produce small, expected variance versus each platform's native UI totals.

How fresh is Cross-Channel data?

Cross-Channel data can lag reality by up to 25 minutes: results are cached in Redis for 10 minutes (prefix cca:v2:) on top of the roughly 15-minute platform sync. For tighter freshness, refresh after the 10-minute window closes or adjust your date params slightly.

Why can't I see Cross-Channel mode?

Cross-Channel mode is gated behind the ENABLECROSSCHANNEL_ANALYTICS environment flag. If Cross-Channel does not appear in Wevion, the flag is off for your workspace and you should ask an admin to enable it.

Last updated: 2026-05-17