Overview
Traffic, attribution, portfolio health, and operations — top to bottom by priority.
Executive Summary
Headline KPIs, platform health verdicts, and automated narrative.
Operations
Delivery, recovery, and platform health — secondary to traffic analytics above.
Events are being accepted but the current activity window is empty.
Some events require delivery recovery — platform remains operational.
Destination delivery tracking is not enabled.
Traffic & Attribution
Volume, trend, attribution, campaigns, geo, devices, and coverage.
Traffic
No source labels in the last hour.
No campaign tags in the last hour.
No geo region signals in the last hour.
Geo prior half
—
Geo recent half
—
Campaign prior half
—
Campaign recent half
—
Live refresh enabled
No events in the last hour. Traffic will appear here as tracking activity arrives.
Attribution
No enriched attribution data yet. Sources appear as geo, campaign, and click signals arrive from live traffic.
No channel classification in the last hour.
No UTM signals in the last hour.
No click attribution labels in the last hour.
Comparable events
0
Channel mismatch
—
First-touch retention
—
Commercial last-touch
—
No first-touch source or campaign tags in the last hour — transition matrix requires utm_source_first or utm_campaign_first on stored events.
No utm_campaign tags in the last hour.
Attributable prior half
—
Attributable recent half
—
Click prior half
—
Click recent half
—
Campaigns
No campaign tags in the current window. Campaign names appear when UTM parameters are captured on incoming events.
No utm_medium values in the current window.
No utm_content values in the current window.
No utm_term values in the current window.
No first-touch source values persisted yet.
No first-touch campaign values persisted yet.
Geo
No country data in the current window. Geo appears when worker-enriched events are recorded.
No region signals in the current window.
No city signals in the current window.
No timezone signals in the current window.
Devices
No device labels in stored visibility rows.
No attributable events with device enrichment.
No device family signals in stored rows.
Need at least two device groups with enrichment to compare attribution quality.
No device classification data in the current window.
Device model labels appear when worker-enriched events arrive.
Browser signals not yet present in stored events.
OS signals not yet present in stored events.
Requires campaign tags and device enrichment on the same events.
Requires campaign tags and browser enrichment on the same events.
Requires campaign tags and OS enrichment on the same events.
Requires source or click attribution plus device enrichment.
Coverage & reconciliation
Last hour
No events in last hour.
Last 24 hours
No events in last 24 hours.
Last 7 days
No events in last 7 days.
All stored events
No events in all stored events.
| Metric | Value | Kind | Source | Storage | Window | Retention |
|---|---|---|---|---|---|---|
| Accepted events | 97 | Lifecycle | GET /debug/state → metrics.ingest_accepted | MetricsDO durable counters (metrics_source: do | local fallback) | Lifetime cumulative since MetricsDO / isolate initialization | Persists in MetricsDO storage until reset or redeploy without binding |
| Stored events | 2,972 | Storage | GET /debug/state → event_visibility.count | D1 event_visibility table (or in-memory fallback when D1 unbound) | Point-in-time row cardinality | Unbounded row growth in event_visibility (phase 871); dashboard queries use cursor pagination with per-request limits |
| Queued events | 0 | Queue depth | GET /debug/state → queue + retryQueue | In-memory queue buffers (primary + retry) | Current depth snapshot (not cumulative) | Ephemeral — drained by processor; not a lifetime total |
| Replayed events | 0 | Lifecycle | GET /debug/state → metrics.dlq_replayed | MetricsDO durable counters | Lifetime cumulative recoveries | Persists in MetricsDO until reset |
| Exported events | 0 | Lifecycle | Export outbox summary by_delivery_status.delivered (metrics.collector_delivered fallback) | D1 export_outbox / lineage tables when enabled | Lifetime delivered count in export store | Export lineage retention per outbox policy; metrics fallback is lifetime |
| Failed events | 100 | Lifecycle | GET /debug/state → failed + dlq + metrics.collector_failed | Processor stats (failed) + DLQ depth (dlq) + export failures | Processor failed/processed lifetime + current DLQ depth + export failed total | DLQ entries persist until replay or purge; processor counters lifetime |
Ingest received
0
Duplicates rejected
0
Queue processed
0
Export pending
0
Stored window events
0
Demo / internal share
0%
Campaign in window
0%
Production D1 campaign
1 / 462
Recovery plan
| Priority | Action | Rationale |
|---|---|---|
| high | Separate demo/internal telemetry from customer attribution KPIs | Production D1 is ~92% px_demo_* and dashboard routes without campaign query params — not a pipeline failure. |
| high | Add click-id parity to app/public/pixel.js | Dashboard and demo traffic use pixel.js which captures UTMs but not fbp/fbc/gclid/fbclid — SDK-only today. |
| medium | Add automatic UTM capture to customer SDK page events | SDK captures click IDs but not URL UTMs unless customer passes properties — gaps vs pixel.js. |
| medium | Route real marketing landings through tagged URLs before dashboard SPA navigation | First-touch and session UTMs require an initial landing with query params; in-app routes never carry UTMs. |
| low | Expose utm_medium/content/term and first-touch in coverage KPIs | Persisted in D1 but not in executive coverage audit — visibility gap only. |
Signals inventoried
27
Export complete
7
Visibility complete
16
Documented gaps
5
| Signal | Category | Capture | Visibility | Export | Explorer |
|---|---|---|---|---|---|
| Meta browser ID (fbp) | Attribution | customer_sdk | Presence only | Complete | partial |
| Meta click cookie (fbc) | Attribution | customer_sdk | Presence only | Complete | partial |
| Meta click ID (fbclid) | Attribution | customer_sdk | Presence only | Complete | partial |
| Google click ID (gclid) | Attribution | customer_sdk | Presence only | Complete | partial |
| Microsoft click ID (msclkid) | Attribution | customer_sdk | Presence only | Partial | partial |
| TikTok click ID (ttclid) | Attribution | customer_sdk | Presence only | Complete | partial |
| TikTok cookie (ttp) | Attribution | customer_sdk | Presence only | Complete | partial |
| Reddit click ID (rdt_cid) | Attribution | customer_sdk | Presence only | Complete | partial |
| UTM source | Campaign | pixel_js, customer_sdk | Complete | Partial | complete |
| UTM medium | Campaign | pixel_js, customer_sdk | Complete | Partial | gap |
| UTM campaign | Campaign | pixel_js, customer_sdk | Complete | Partial | complete |
| UTM content | Campaign | pixel_js, customer_sdk | Complete | Partial | gap |
| UTM term | Campaign | pixel_js, customer_sdk | Complete | Partial | gap |
| Device type | Device | worker | Complete | Partial | complete |
| Device family | Device | worker | Complete | Partial | complete |
| Device model | Device | worker | Complete | Partial | complete |
| Browser family | Browser | worker | Complete | Partial | complete |
| Browser version | Browser | worker | Complete | Partial | complete |
| OS family | OS | worker | Complete | Partial | complete |
| OS version | OS | worker | Complete | Partial | complete |
| Country | Geo | worker | Complete | Partial | complete |
| Region | Geo | worker | Complete | Partial | gap |
| City | Geo | worker | Complete | Partial | gap |
| Timezone | Geo | worker | Complete | Partial | gap |
| Client IP | Transport | worker | N/A | Partial | not_applicable |
| User-Agent | Transport | worker | N/A | Partial | not_applicable |
| Accept-Language | Transport | worker | N/A | Gap | not_applicable |
Pixel Portfolio Health
Demo portfolio (DEMO_PIXEL_IDS) · activity and charts from ≤500 newest sample — not the full pixel universe.
| Pixel | Recent events | Health | Last seen |
|---|---|---|---|
| Demo Landing px_demo_landing | 0 | Unknown | — |
| Demo Storefront px_demo_storefront | 0 | Unknown | — |
| Demo Checkout px_demo_checkout | 0 | Unknown | — |
| Demo Support px_demo_support | 0 | Unknown | — |
Navigate dashboard routes to generate real multi-pixel activity.
Navigate dashboard routes to generate real multi-pixel activity.
Navigate dashboard routes to generate real multi-pixel activity.
No demo pixel activity in the visibility window yet. Navigate dashboard routes to generate real telemetry.
No pixel health buckets yet — persist pixels and emit events to populate distribution.
No persisted pixels yet.
Operational Status
Event flow, delivery recovery, destination health, and worker signals.
System status
WarningEvents received
0
Events accepted
97
Active pixels
0
Recovery queue
1,000
Destinations
disabled
Live tracking · px_dashboard_internal
Dashboard monitor — Dashboard Internal Pixel
Event flow
Received
0
Accepted
97
Accepted (pending)
0
Processed
0
Failed
0
Accepted (pending) counts visibility rows still in accepted status — ingest accepted but not yet processed. Processed counts visibility rows in delivered status.
Recovery summary
Open recoveryAwaiting retry
100
Recoveries
0
Candidates
100
Destination summary
Open destinationsExport ack'd
0
Export failed
0
Export pending
0
Production worker: export_lineage storage is intentionally disabled (Phase 965). Full export acknowledgement validation runs on the staging worker. Tail logs and export summary remain authoritative for production transmission checks.
Worker reachable
Yes/debug/state responded with authorized token
Metrics available
YesMetricsDO or local metrics source present
Ring visibility
Yesrecent_events ring has entries on this isolate
Ingest active
Yesingest_accepted counter is greater than zero
No event types in the visibility store yet. pixel.js emits page_view, button_click, link_click, form_submit, and dashboard_view via existing ingest.
Recent Activity
Live event stream from the current visibility window.
- 4:53:55 PMRecovery queue entrypx_demo_landing::dashboard_view::1781626456061
primary-http · px_demo_landing
- 4:53:55 PMReplay candidatepx_demo_landing::dashboard_view::1781626456061
attempts 2 · px_demo_landing
- 4:48:42 PMRecovery queue entrypx_demo_checkout::page_view::1781626077405
primary-http · px_demo_checkout
- 4:48:42 PMReplay candidatepx_demo_checkout::page_view::1781626077405
attempts 2 · px_demo_checkout
- 4:46:30 AMRecovery queue entrypx_demo_landing::dashboard_view::1781584125050
primary-http · px_demo_landing
- 4:46:30 AMReplay candidatepx_demo_landing::dashboard_view::1781584125050
attempts 2 · px_demo_landing
- 4:44:25 AMRecovery queue entrypx_demo_checkout::link_click::1781584122897
primary-http · px_demo_checkout
- 4:44:25 AMReplay candidatepx_demo_checkout::link_click::1781584122897
attempts 2 · px_demo_checkout
- 4:43:22 AMRecovery queue entrypx_demo_checkout::button_click::1781584038708
primary-http · px_demo_checkout
- 4:43:22 AMReplay candidatepx_demo_checkout::button_click::1781584038708
attempts 2 · px_demo_checkout
- 4:42:40 AMRecovery queue entrypx_demo_landing::page_view::1781583993474
primary-http · px_demo_landing
- 4:42:40 AMReplay candidatepx_demo_landing::page_view::1781583993474
attempts 2 · px_demo_landing
- 4:40:47 AMRecovery queue entrypx_demo_checkout::button_click::1781584055286
primary-http · px_demo_checkout
- 4:40:47 AMReplay candidatepx_demo_checkout::button_click::1781584055286
attempts 2 · px_demo_checkout
- 4:39:18 AMRecovery queue entrypx_demo_landing::page_view::1781584125049
primary-http · px_demo_landing
- 4:39:18 AMReplay candidatepx_demo_landing::page_view::1781584125049
attempts 2 · px_demo_landing
- 4:38:30 AMRecovery queue entrypx_demo_landing::dashboard_view::1781583993514
primary-http · px_demo_landing
- 4:38:30 AMReplay candidatepx_demo_landing::dashboard_view::1781583993514
attempts 2 · px_demo_landing
- 4:38:13 AMRecovery queue entrypx_demo_landing::link_click::1781583998299
primary-http · px_demo_landing
- 4:38:13 AMReplay candidatepx_demo_landing::link_click::1781583998299
attempts 2 · px_demo_landing
- 4:37:16 AMRecovery queue entrypx_demo_checkout::page_view::1781584000410
primary-http · px_demo_checkout
- 4:37:16 AMReplay candidatepx_demo_checkout::page_view::1781584000410
attempts 2 · px_demo_checkout
- 4:36:59 AMRecovery queue entrypx_demo_checkout::dashboard_view::1781584000410
primary-http · px_demo_checkout
- 4:36:59 AMReplay candidatepx_demo_checkout::dashboard_view::1781584000410
attempts 2 · px_demo_checkout
- 4:36:42 AMRecovery queue entrypx_demo_checkout::button_click::1781584026769
primary-http · px_demo_checkout
- 4:36:42 AMReplay candidatepx_demo_checkout::button_click::1781584026769
attempts 2 · px_demo_checkout
- 4:27:40 AMRecovery queue entrypx_demo_landing::page_view::1781583016273
primary-http · px_demo_landing
- 4:27:40 AMReplay candidatepx_demo_landing::page_view::1781583016273
attempts 2 · px_demo_landing
- 4:24:07 AMRecovery queue entrypx_demo_landing::page_view::1781583019883
primary-http · px_demo_landing
- 4:24:07 AMReplay candidatepx_demo_landing::page_view::1781583019883
attempts 2 · px_demo_landing
- 4:23:59 AMRecovery queue entrypx_demo_checkout::dashboard_view::1781583024740
primary-http · px_demo_checkout
- 4:23:59 AMReplay candidatepx_demo_checkout::dashboard_view::1781583024740
attempts 2 · px_demo_checkout
- 4:23:23 AMRecovery queue entrypx_demo_landing::link_click::1781583021894
primary-http · px_demo_landing
- 4:23:23 AMReplay candidatepx_demo_landing::link_click::1781583021894
attempts 2 · px_demo_landing
- 4:23:07 AMRecovery queue entrypx_demo_checkout::page_view::1781583024739
primary-http · px_demo_checkout
- 4:23:07 AMReplay candidatepx_demo_checkout::page_view::1781583024739
attempts 2 · px_demo_checkout
- 4:22:31 AMRecovery queue entrypx_demo_landing::dashboard_view::1781583019884
primary-http · px_demo_landing
- 4:22:31 AMReplay candidatepx_demo_landing::dashboard_view::1781583019884
attempts 2 · px_demo_landing
- 4:22:30 AMRecovery queue entrypx_demo_landing::dashboard_view::1781583016276
primary-http · px_demo_landing
- 4:22:30 AMReplay candidatepx_demo_landing::dashboard_view::1781583016276
attempts 2 · px_demo_landing