How the data flows
Daily Pipeline Runs by Outcome
Every pipeline run over the last 14 days, classified by outcome — the at-a-glance health view.
Data Freshness — Avg Minutes Behind SLA
Lower is better. The spikes line up exactly with the incidents in the log below.
Rows Ingested by Source (14d)
Volume by connector — GA4 event data dominates, as it should for eCommerce.
Incidents by Root Cause
What actually broke — grouped so the fix targets the root cause, not the symptom.
Incident Log — auto-detected, triaged & resolved
| Date | Pipeline | Source | Root cause | Status | Recovery |
|---|---|---|---|---|---|
| 6/12 | ga4_events | GA4 | Source API timeout (GA4 quota) | LATE | auto-recovered |
| 6/14 | shopify_orders | Shopify | Schema drift (new variant field) | FAILED | 95 min |
| 6/16 | klaviyo_events | Klaviyo | Late source (Klaviyo export delay) | LATE | auto-recovered |
| 6/18 | amazon_settlements | Amazon | Duplicate keys (settlement re-post) | FAILED | 160 min |
| 6/19 | stripe_payments | Stripe | Source API timeout (Stripe rate limit) | LATE | auto-recovered |
| 6/21 | ga4_events | GA4 | Null spike (consent-mode nulls) | FAILED | 70 min |
| 6/22 | shopify_orders | Shopify | Late source (webhook backlog) | LATE | auto-recovered |
Each incident is caught by monitoring, root-caused, and fixed durably — not patched over.
Raw source data
pipeline_runs.csv — showing 12 of 252 rows. The dashboard above is computed from this file, untouched.
| date | pipeline | source | rows_ingested | status | duration_min | freshness_min | sla_min | root_cause | time_to_recovery_min |
|---|---|---|---|---|---|---|---|---|---|
| 2026-06-10 | shopify_orders | Shopify | 3333 | success | 2.7 | 7 | 45 | 0 | |
| 2026-06-10 | shopify_orders | Shopify | 2934 | success | 7.7 | 17 | 45 | 0 | |
| 2026-06-10 | shopify_orders | Shopify | 3576 | success | 3.1 | 10 | 45 | 0 | |
| 2026-06-10 | shopify_orders | Shopify | 2748 | success | 4.0 | 13 | 45 | 0 | |
| 2026-06-10 | stripe_payments | Stripe | 3260 | success | 3.9 | 16 | 45 | 0 | |
| 2026-06-10 | stripe_payments | Stripe | 3851 | success | 4.0 | 15 | 45 | 0 | |
| 2026-06-10 | stripe_payments | Stripe | 4152 | success | 2.5 | 20 | 45 | 0 | |
| 2026-06-10 | stripe_payments | Stripe | 4025 | success | 4.9 | 4 | 45 | 0 | |
| 2026-06-10 | ga4_events | GA4 | 59132 | success | 4.9 | 3 | 60 | 0 | |
| 2026-06-10 | ga4_events | GA4 | 45708 | success | 8.4 | 20 | 60 | 0 | |
| 2026-06-10 | ga4_events | GA4 | 56791 | success | 7.6 | 18 | 60 | 0 | |
| 2026-06-10 | ga4_events | GA4 | 59380 | success | 5.1 | 18 | 60 | 0 |
How this works in production
How the production version works — built on your preferred AWS stack:
This demo runs the real aggregation logic in-process on synthetic data — not a live production system.
Want this on your real Shopify / Amazon / Stripe data?
I build reliable, monitored eCommerce pipelines exactly like this on AWS — with alerting and root-cause analysis baked in from day one, so the data is accurate and on time without you having to chase it.
bing@bkydataconsulting.com