Analytics troubleshooting
Diagnose: data stale, cross-channel UI missing, 90-day rejected, ROAS wrong, currency mismatch, export stuck, demographics outdated, member scoping.
Written By Salvatore Sinigaglia
Last updated About 5 hours ago
Diagnose: data stale, cross-channel UI missing, 90-day rejected, ROAS wrong, currency mismatch, export stuck, demographics outdated, member scoping.
Analytics troubleshooting
The most common Analytics issues, what causes them, and how to fix. For each: 1-line diagnosis + actionable next step. Always start by checking data freshness — sync + cache + postback lag explain most "numbers don't match" complaints.
Who is this for
Anyone hitting a discrepancy or missing feature in Analytics. First stop before contacting support.
Issue 1: Data stale / behind platform UI
Symptoms
Wevion shows older / different numbers than the platform's native dashboard.
Causes + fixes
- 15-min sync cadence — Wevion polls platforms every 15 min. Up to 15 min lag is normal.
- 10-min Redis cache (Cross-Channel only) — adds up to 10 min on top of sync. Total: up to 25 min lag.
- 24h demographics cache — demographic data refreshes daily.
- 24-72h postback lag — purchases / ROAS / CPA take 1-3 days to settle.
Fix:
- Wait the cycle
- For ROAS / CPA: use
last_7dminimum - If > 1 hour stale: check service status; contact admin
See an-114 data freshness for the full picture.
Issue 2: Cross-Channel toggle greyed out
Symptoms
The Cross-Channel option in the mode toggle is disabled / greyed out (with a tooltip) — it's shown but not clickable.
Cause
ENABLE_CROSS_CHANNEL_ANALYTICS env flag is off for your workspace. When off, cross-channel routes also return 404 (empty payload).
Fix
Ask your admin to enable the flag. It's a deployment-level setting (env var + service restart).
If admin says it's enabled but you still don't see: check role permissions — Cross-Channel routes require ROLE_GROUPS.DASHBOARD.
Issue 3: Date range > 90 days rejected
Symptoms
Cross-Channel page or export returns error "date range exceeds 90 days".
Cause
MAX_DATE_RANGE_DAYS = 90 hard limit in cross-channel-analytics.service.ts.
Fix
Options:
- Split into 2 or 3 calls (e.g. last 90 days + prior 90 days), concatenate externally
- Switch to Single Platform mode (no hard cap; practical limits apply)
- For exports: same 90-day limit applies (
EXPORT_UNIFIED_REPORTSQS worker)
Issue 4: ROAS / CPA wrong vs platform UI
Symptoms
Wevion shows ROAS 1.8; Meta UI shows ROAS 2.3 for the same campaign + date range.
Causes + fixes
- Postback lag (most common) — Wevion's postback fetch is 24-72h behind; platform UI may be using more recent data. Use
last_7dminimum; let data settle. - Attribution window difference — Meta default is 7d click + 1d view; if Wevion uses a different effective window, totals differ slightly.
- Currency conversion — Cross-Channel converts to
target_currency; small FX variance. - Conversion event definition — Wevion may track different conversion events than what Meta UI displays. Verify event mapping.
Fix: trust the longer window; pair with tracker postbacks (PRD-14 com-*) for ground truth.
Issue 5: Currency mismatch
Symptoms
Numbers in unexpected currency or stakeholders confused about which currency.
Causes + fixes
target_currencyparameter wrong — check URL or workspace default- Cross-Channel converts; Single Platform uses native — mode-dependent
- Workspace default changed recently — historical data re-rendered
Fix:
- Verify workspace currency at
/settings → Workspace - For consistency: pick one
target_currencyand stick with it - See an-115 exchange rates
Issue 6: Export stuck pending
Symptoms
Export job submitted but status: PENDING for > 10 min.
Causes + fixes
- SQS worker backlog — usually self-resolves within 10-15 min
- Large dataset — 90 days + 5 platforms + PDF = slow; budget 10+ min
- Subscription expired — request rejected; check
/settings/team/billing
Fix:
- Wait
- If > 30 min: check
errorin job_result - If error: typically timeout on too-large scope — narrow date range or platforms
See an-116 export.
Issue 7: Export job failed
Symptoms
status: FAILED + error message in job_result.
Common error_message → diagnosis
Issue 8: Demographics outdated
Symptoms
Audience hub demographics show old data; expected refresh didn't happen.
Cause
24h cache on audience-insights.service.ts. Refreshes once daily.
Fix
Wait until next day. No manual refresh available from UI (by design).
Issue 9: Missing tracker enrichment
Symptoms
Tracker columns (tracker_clicks, tracker_conversions, tracker_revenue, etc.) empty.
Cause
No tracker integration connected for this account (see PRD-14 com-*).
Fix
Set up tracker integration. Tracker enrichment requires Keitaro / Voluum / RedTrack / BeMob / TG Tracker connected. See com-106 Keitaro (or relevant integration article).
Issue 10: Cross-Channel cache shows stale data
Symptoms
Cross-Channel data clearly older than Single Platform for same campaign.
Cause
Redis cache (10-min TTL) hit; fresher data exists but cache hasn't expired.
Fix
- Wait up to 10 min
- Adjust date range params slightly to bypass cache (different cache key)
- Switch to Single Platform mode (no Redis layer)
Issue 11: Member / team scoping confusion
Symptoms
Insights show different numbers for different users.
Cause
/api/v1/insights/campaigns accepts member_id and team_owner_id params — filters insights to that user's scope.
Fix
- Verify which
member_id/team_owner_idis in your URL - For workspace-wide: leave both unset (or owner_id = workspace owner)
- Check role + canViewTeam permission
Issue 12: Recommendation contradicts intuition
Symptoms
Budget recommendation suggests shifting away from a platform you believe in strategically.
Cause
Recommendation is rule-based on historical ROAS only (see an-109). Doesn't see:
- Brand reach value (long-term)
- New-market testing (intentional low-ROAS)
- Audience cap / saturation (you can't infinitely scale)
Fix
- Treat recommendation as input, not output
- Combine with strategic context
- Apply partial deltas (the multiplier is already clamped to ±50%)
- Remember the recommendation uses a fixed 30-day window (not your page date range), and needs ≥14 days with spend + positive ROAS to appear
Escalation
If none of the above match:
- Capture: endpoint + query params + observed value + expected value + timestamp
- Check service status (if
/statusavailable) - Check audit log for unusual actions
- Contact support with details
FAQ
Why does Wevion Analytics show older numbers than the platform's native dashboard?
Because of layered lag. Wevion polls platforms every 15 minutes, Cross-Channel adds up to 10 minutes of Redis cache (25 minutes total), demographics refresh daily, and purchases, ROAS, and CPA carry a 24-72h postback lag. Wait the cycle, use a last_7d minimum for ROAS or CPA, and check data freshness before assuming a bug.
Why is the Cross-Channel option greyed out in Wevion Analytics?
The Cross-Channel mode is gated by the ENABLE_CROSS_CHANNEL_ANALYTICS env flag. When off, the toggle option is shown but disabled/greyed (with a tooltip), and cross-channel routes return 404. Ask your admin to enable that deployment-level setting (env var plus service restart). If the admin confirms it's on but it stays disabled, check your role — Cross-Channel routes require ROLE_GROUPS.DASHBOARD permissions.
Why is my Wevion export stuck on pending or failed?
A PENDING export usually clears within 10-15 minutes as the SQS worker catches up, or takes longer for large scopes like 90 days across 5 platforms as a PDF. A FAILED export returns an error message such as subscription_required, date_range_exceeds_90_days, timeout, or provider_error. Fix by topping up billing, splitting the range, narrowing scope, or retrying.
Why does my Wevion ROAS differ from what Meta's UI reports?
The most common cause is postback lag — Wevion's postback fetch runs 24-72h behind, so use a last_7d minimum and let data settle. Other causes include attribution window differences, currency conversion to target_currency in Cross-Channel, and differing conversion event definitions. Trust the longer window and pair with tracker postbacks for ground truth.
Why does Wevion's budget recommendation contradict my strategy?
Because Wevion's budget recommendation is rule-based on historical ROAS only, computed over a fixed 30-day window (clamp(sqrt(roas/averageRoas)), clamped to ±50%). It doesn't account for long-term brand reach, intentional low-ROAS new-market testing, or audience saturation. Treat it as input rather than a directive: combine it with strategic context, and remember it needs ≥14 days with spend and positive ROAS to appear at all.