2025-08-05
Real-Time Dynamics 365 Campaign Analytics in Fabric

The Problem (Why You’re Always Late)
-
Batch exports and spreadsheet detours turn hot signals into cold recaps.
-
Fragmented tooling (email, web, sales) = conflicting stories and slow pivots.
-
Vanity metrics (opens, impressions) drown the intent that actually drives revenue.
What Signals Actually Matter (Keep, Cut, Elevate)
Keep (high intent):
-
Multi-page web journeys (LP → Features → Pricing)
-
Form fills (demo, trial, high-intent CTAs)
-
Repeat visits within 3–7 days
-
Opportunity stage changes, meeting set, quote sent
-
Post-campaign case spikes (impact on CX/renewals)
Cut (or downweight):
-
Raw sends/opens, generic page hits, bot-like spikes
Elevate (context):
-
Campaign → Account/Contact mapping
-
Channel attribution with recency (last 7–14 days)
-
Segment health (new vs returning; ICP vs non-ICP)
Real-Time Blueprint (D365 → Fabric → Power BI)
-
Export/Stream from D365
-
Option A: Event Hub for near-real-time events (email clicks, form posts).
-
Option B: Azure Data Lake for continuous exports (contacts, opportunities).
-
-
Ingest with Fabric Data Factory
-
Land raw → bronze; validate & dedupe → silver; model KPIs → gold.
-
Normalize IDs (account/contact/opportunity), map campaigns/UTMs.
-
-
Transform & Enrich
-
Flag bots, merge duplicates, compute session duration, recency scores, funnel stages.
-
-
Serve to Power BI
-
Gold tables + DirectQuery or short refresh for hot facts; Import for reference dims.
-
Apply RLS by region/BU; cache critical visuals.
-
-
Alerting & Ops
-
Data Activator/Power Automate: alert on conversion dips, CPC spikes, SLA breaches.
-
Dashboard That Drives Action (One Screen, Three Rows)
-
Top Row: “Are we winning?”
-
Live Funnel: Touch → MQL → SQL → Opportunity → Won (24h deltas)
-
Revenue-attributed (MTD) + Forecast lift vs baseline
-
Data freshness badge (“Updated hh:mm, last 15 min events: n”)
-
-
Middle Row: “Where to shift budget?”
-
Channel performance (conv% & CPA by Email/Web/Ads) with trend arrows
-
Segment health (ICP vs non-ICP, New vs Returning)
-
Creative leaderboard (subject/asset → conv%)
-
-
Bottom Row: “What needs attention now?”
-
Anomaly cards (demo requests ↓ 25% in EMEA; form errors ↑)
-
Pipeline velocity by source (days to next stage)
-
Post-campaign CX: case rate + NPS shift on targeted accounts
-
Governance & Reliability (No Surprises in Prod)
-
Idempotency & dedupe: event keys to prevent double counts.
-
Schema drift guard: Dataflows Gen2 profiling + alerts on new/renamed fields.
-
RLS + AAD groups: least privilege; test persona views before go-live.
-
Observability: refresh latency, event lag, error rate, adoption (active viewers).
-
Cost control: hot facts via DirectQuery for ops; heavy history in Import/Premium.
Rollout Plan (30/60/90)
-
30 days: Stream 1 campaign → Event Hub; build bronze/silver; publish “Live Pilot” dashboard.
-
60 days: Add opportunity stages + web journeys; wire anomaly alerts; segment by region/ICP.
-
90 days: Expand to multi-campaign view; add CX/retention panels; harden RLS; publish executive app.
Quick Wins This Week
-
Add data age banner to current reports.
-
Start streaming form submits + opp stage changes; alert on same-day dips.
-
Replace “opens” with multi-page session & demo request KPIs.
-
Build a lite mobile view for field teams (≤6 visuals, essential only).
Common Pitfalls → Fixes
-
Stale “live” dashboards: misaligned refresh → switch hot facts to DirectQuery/short cadence.
-
Duplicate events after retries: require eventId + upsert logic in silver.
-
License blockers in Teams: audit & auto-assign Pro/Viewer before launch.
-
Noise overload: cap visuals; push deep dives to a separate page/app.
KPI Cheat Sheet
-
Touch→Lead conversion (24h / 7d)
-
Lead→Opp conversion & velocity (days)
-
Cost per qualified lead (by channel/segment)
-
Demo-to-close rate
-
Post-campaign case rate / NPS shift on targeted accounts
One-Line Close
Stream it, don’t batch it—wire D365 into Fabric and start optimizing campaigns the same day, not next week.
Apple Podcasts · Spotify · YouTube
Host: Mirko Peters