HookGet Open dashboard

Dashboards over your event stream

Revenue, ad spend, leads, email health and AI cost — live views over the events HookGet already carries for you. Start from a template, edit every widget, and let a deterministic detector email you when a number breaks its own pattern.

In short

  • Nine templates, one per job: executive, revenue, marketing, leads, LLM cost, email, automations, search, delivery ops.
  • Seven widget types — stat, sparkline, time-series, bars, table, funnel, hour-of-week heatmap — every one editable in place.
  • Formulas between aggregates: cost per click, ROAS, average order — computed server-side, division by zero is a stated blank, never a fake zero.
  • Cross-source by construction: every connector reports into one event model, money always in cents, so one dashboard spans Stripe, Meta, TikTok and your CRM.
  • Anomaly alerts without AI: hourly, seasonal, robust statistics on your own worker — an email that states its numbers, at no added cost.
  • Dark by default; a one-click light background, kept per browser.
Executive overview 30d · 6 widgets · editable
A dashboard: four stat tiles and two charts Four tiles — revenue with a rising sparkline, ad spend, new leads and AI cost — above a daily revenue bar chart and a leads area chart. Everything is driven by one JSON document per dashboard and rendered from live queries. Revenue $8,795 Ad spend $7,847 New leads 1,118 AI cost $236.40 Daily revenue Leads

Drawn to scale from the real template — one JSON document, five query widgets and a formula, rendered by the dashboard app.

The executive template: revenue, spend, leads and AI cost from four different sources, on one screen — because every connector reports into one event model, a cross-source dashboard is a query, not an integration project.

The templates

TemplateForWhat it answers
Executive overviewfounders, CEOsis the business healthy, on one screen
Revenuefinancecollected, refunded, failed, disputed — and by currency
Marketinggrowth, department headsspend by network, clicks, cost per click, sessions
Leadssales, agencieslead flow by source, the funnel to won
LLM costAI teamstokens and dollars per provider and model
Emailoperatorsdelivered, opened, bounced, complained
Automationsoperatorsn8n runs, failures, duration, which workflow breaks
Search & trafficmarketing, SEOSearch Console clicks and GA4 sessions, side by side
Delivery operationsdevelopersthe pipeline itself: volume, types, activity by hour

From spend to revenue, one stream

Spend to revenue, joined across four sources Ad spend events from Meta and TikTok, traffic events from Google Analytics, lead events from a CRM and payment events from Stripe flow through one pipeline. Because every event shares the same envelope, cost per click, cost per lead and return on ad spend are divisions between metrics that already live side by side. Spend ad.spend_reported Meta · TikTok Traffic web.traffic_reported Google Analytics 4 Leads lead.created · deal.won GoHighLevel Revenue payment.succeeded Stripe spend_cents / clicks cost per click spend_cents / leads cost per lead amount_cents / spend_cents return on ad spend every stage in cents, every stage the same envelope — the divisions are yours to run, anywhere the events land
Four providers, one pipeline, and the three ratios a growth team runs on. Because every connector reports money in cents and every event carries the same envelope, cost per click, cost per lead and ROAS are simple divisions wherever you land the events — a warehouse, a sheet, your own database.

Stated plainly

FactWhy
Charts bucket on ingestion timethat column is indexed and partition-pruned; a backfilled event charts when it arrived, and the editor says so
Analytics run on Postgres todaya columnar store is warranted at volumes no project here has yet; the query contract hides the storage, so moving later is a compiler change
Refresh is ten-second polling, not a sockethonest near-real-time with zero extra infrastructure; a push stream is a transport upgrade, not a data-model change
Alerts are statistics, not AIan alert must state its numbers; a model cannot, and a wrong page erodes the only thing an alert has — trust

Questions

Do I need to write SQL?

No — and neither does anything else. A dashboard is a JSON document; every widget is a small query in a closed vocabulary (event types, one aggregate set, up to two group-bys, filters), compiled server-side into parameterised SQL that is always scoped to your project. The document cannot name a tenant, so a shared or imported dashboard cannot read anyone else's data — structurally, not by review.

How editable is "editable"?

Everything: move and resize any widget, change its query in a form or as JSON, add formulas between aggregates (spend / clicks / 100), switch chart styles, rename, clone from templates. Every edit is validated as a whole document before it is stored — a refused edit changes nothing.

How fresh is the data?

The view refreshes itself every ten seconds. Push sources (Stripe, your own events) appear as they arrive; pull sources appear on their sync schedule. The one honest caveat: time-series bucket on ingestion time, so a backfilled event charts when it arrived.

What are the anomaly alerts, and what do they cost?

A deterministic detector — no AI, no external service, no per-call price. Every hour the worker compares each event type's volume against the same hour of the previous 14 days (median and robust deviation). Four robust deviations plus a material absolute change fires one email that says exactly why: "payment.succeeded is at 3 for Thu 14:00, 6.5× below its typical 41". Deterministic means the same data always alerts the same way — and it runs on infrastructure you are already paying for, so it is on for every plan.

Can I get the numbers out?

The dashboard data API returns everything the widgets render, as JSON. The events behind the numbers route anywhere HookGet delivers — a Google Sheet (one row per event), an S3 bucket, a queue, any endpoint. Your data was never trapped in a chart.