UK Therapy Guide · DataHub

How the DataHub works.

A plain-English tour of what happens between someone booking a session on the website and a number appearing on a DataHub report — and why you can trust those numbers.

The one-paragraph version

Every five minutes, the DataHub takes a copy of what's happening on the UK Therapy Guide website — orders, sessions, calls, form submissions — and files it away in its own vault. It then organises those copies into tidy, fast tables, and every report you open reads from those tables, never from the live website. That's why reports load instantly, why they don't slow the website down, and why the numbers still exist even after the website tidies up or deletes things.

The journey of a number

The websitewhere things happen The vaultraw copies, forever Factsthings that happened Dimensionsthings that exist Martsready-made answers Reportswhat you open
1

The website — where things happen

Someone fills in the placement form, books a LUFT call, pays for sessions, subscribes to the 2×2. All of that lives in the website's own database, which is built for running the website, not for answering questions about it.

2

The vault — a copy that never forgets

Every five minutes a small courier (we call it the puller) collects anything new or changed from about fifty of the website's tables and files it in the DataHub's vault. The crucial rule: the vault only ever adds — it never deletes. When the website clears old records (and it does, for tidiness and privacy), the vault keeps its copy. That has already mattered several times — more below.

3

Facts & dimensions — the filing system

Raw copies are awkward to work with, so the DataHub reorganises them into two kinds of tidy table. Facts record things that happened — one row per order, per session, per LUFT call, per coupon redemption — each carrying its numbers and dates. Dimensions describe things that exist — one row per client, per therapist, per calendar day — carrying names and labels. Drawn on a whiteboard, the facts sit in the middle with the dimensions around them like points of a star, which is why this classic layout is called a star schema. You can see ours drawn live at datahub.uktgdata.com/schema.

4

Marts — ready-made answers

Each report has a small recipe that combines facts and dimensions into exactly the shape it needs — "LUFT calls per month per host", "failed renewals and how many recovered". These recipes are called marts. Because the heavy lifting happened in steps 2–3, a mart answers in milliseconds.

5

Reports — what you actually open

The screens on datahub.uktgdata.com read their marts and draw the tables and charts. Nothing you click ever touches the live website, so you can explore freely at any time of day.

Every question is "happened × exists"

The star layout sounds abstract, but it's how every report works underneath:

"Revenue by month"

Orders (happened) grouped by the calendar (exists).

"Sessions per therapist"

Sessions (happened) grouped by therapist (exists).

"LUFT conversion per host"

Calls (happened) matched to the clients they became (exist).

"New clients per week"

First orders (happened) grouped by ISO week (exists).

The facts hold the numbers; the dimensions hold the words you group them by. That's the whole trick.

Why you can trust the numbers

Every report is reconciled before it ships

When a report moves to the DataHub, we run the old report and the new one side by side and match them — usually to the penny — for every closed month before the new one goes live. Where they genuinely differ, it's investigated and written down, and so far every difference has been a flaw in the old report or data the website had deleted.

The vault has already caught things

Three real examples. The website deletes its "failed renewal" marker once a payment recovers — so only a system that remembers can report recovery rates; the vault does. The old LUFT report was quietly missing two team members' calendars and under-counted follow-ups — found during reconciliation, fixed in the new one. And the old daily report's "last month" cards could point at a future month and show zeros; the new one can't.

One definition, used everywhere

"A client", "a therapist", "a week" are each defined once, in one dimension table, and every report uses that same definition. Two reports can't disagree about who counts as a new client, because they're reading the same card out of the same filing cabinet.

The DataHub today

~50website tables copied
5 minbetween courier runs
18fact tables
26+report recipes (marts)
ReportWhat it answers
Revenue — MonthlyPlatform revenue, orders, AOV and our net take by monthLIVE
Daily reportPlacement forms → LUFT calls → new clients → revenue, day by dayLIVE
New clients — CohortsEach month's new clients and what they went on to spend and attendLIVE
Client trackingEvery client's journey: first order → first session → follow-up callLIVE
Coupon usageRedemptions and discount given, per code, for any date rangeLIVE
Failed paymentsFailed 2×2 renewals and how many we recoveredLIVE
Subscription metricsThe 2×2 framework: renewals, stalls, survival depth, realised revenueLIVE
LUFT monthlyCall volume, outcomes and per-host conversion, with fair comparisonsLIVE
Clients — TimelineA read-only history of everything that touched a clientLIVE
Ops — Team queuesThings needing a human: failing renewals, no-matches, stuck ordersLIVE
Therapist & capacity reportsEconomics, onboarding, slots — the next wave of migrationsNEXT
Marketing attributionPaid & organic performance — needs ad/keyword data plumbed in firstLATER

Tiny glossary

The vaultTechnically raw.records — the append-only store of website copies. Never deletes.
FactA table of things that happened: one row per order, session, call… with the numbers.
DimensionA table of things that exist: one row per client, therapist, calendar day… with the names.
Star schemaFacts in the middle, dimensions around them — the layout that makes every "X by Y" question fast.
MartA saved recipe combining facts and dimensions into one report's exact shape.
ReconciledMatched against the old report, closed month by closed month, before going live.
The pullerThe courier that copies new/changed rows from the website every five minutes.

DataHub · datahub.uktgdata.com · written 14 Jul 2026 — numbers ("18 facts, 26 marts") grow as reports migrate.