Data & BI
The layer everything else runs on. Every source blended into one warehouse, in your account or hosted by us, with omni-channel attribution so the numbers mean something.
What it covers
Taken in order. Most engagements start at the audit and stop wherever makes sense. See how we work, what a useful marketing dashboard shows, or how this compares with connector tools like Supermetrics.
Data Audit
What you're tracking today, what's broken, what's missing, and what it would take to fix. Delivered as a written findings document, not a call.
Blended cross-channel data
Every ad platform, your GA4 data, and your CRM reconciled into one set of numbers (why GA4 and the CRM differ), so five sources stop reporting five different truths.
ETL Pipeline Creation
Scheduled extraction from each platform, including GA4's BigQuery export, transformed into a consistent schema and loaded into your warehouse. Built to keep running without us.
Data Warehouse Creation
A Postgres or Supabase warehouse, modelled around the questions you actually ask, in your own account or hosted by us. What a marketing data warehouse is.
Dashboards & Reporting
Custom-built, not a licensed BI tool with your logo on it. No per-seat fees, and it looks like your business rather than a template.
Analytics & Insights
Past the dashboard: what's driving performance, what's worth acting on, and what to ignore.
How the pipeline runs
Sources in, one warehouse in the middle, a dashboard built for you on the other end.
- Bing
- Tag Manager
- GA4
- Zoho
- HubSpot
- Salesforce
- Supabase
- PostgreSQL
- Custom-built
- Netlify
How we build and serve it
The same six steps for every client. What changes is which sources you have and where the warehouse lives.
-
01
Access
You grant read access to the ad accounts, analytics and CRM you actually run. No passwords change hands, and there is no fixed bundle: we connect what you have.
-
02
Extract
Connectors pull each platform every night: Google Ads, Meta, LinkedIn, Microsoft Ads, GA4, and Zoho, HubSpot, Salesforce, GoHighLevel or monday CRM. No hand-written API code to break.
-
03
Land
Raw data lands in a Postgres warehouse, exactly as each platform reports it, in its own schema, so no client's data ever shares a table with another's.
-
04
Model
Each source is cleaned, then joined: the same conversion claimed by two platforms becomes one row, and ad data is reconciled against your CRM. Tests run before anything publishes.
-
05
Serve
A custom dashboard reads only the final tables, on a drop-b subdomain or a subdomain of your own domain, behind a login and kept out of search engines. It refreshes nightly and shows the date its data runs to.
-
06
Check and monitor
Before launch, the blended numbers are checked against each platform's own reports. After launch, every nightly sync is monitored, so a broken feed is caught rather than mistaken for a quiet week.
The layer underneath
Before any dashboard exists there is a warehouse, a set of models and a test suite. This is the part an agency with a reporting template does not have.
Source syncs, last run
| Source | Rows | Synced | State |
|---|---|---|---|
| Meta Ads | 12,481 | 06:02 | ok |
| Google Ads | 8,930 | 06:02 | ok |
| LinkedIn Ads | 1,204 | 06:03 | ok |
| Bing Ads | 2,117 | 06:03 | ok |
| Google Analytics 4 | 41,206 | 06:04 | ok |
| HubSpot | 3,884 | 06:05 | ok |
Models, built in order
- staging
stg_ads__spend - staging
stg_ads__conversions - staging
stg_crm__deals - staging
stg_web__sessions - intermediate
int_conversions__deduped - intermediate
int_touchpoints__joined - mart
mart_channel_performance - mart
mart_attribution
The last two are what the dashboard reads from. Everything above them is yours to query directly.
A client dashboard we run
This layout comes from the live dashboard we built for Unsigned, a music-tech start-up with a trial-based product. Google Analytics 4 and Meta Ads load into it every night, and it tracks each step from first visit to purchase. The client signs in on their own subdomain.
Funnel, step by step
| Step | Count | From previous step |
|---|---|---|
| Sessions | 2,180 | – |
| Sign-ups | 241 | 11.1% |
| Onboarding completed | 146 | 61% |
| Trials started | 68 | 47% |
| Purchases | 7 | 10% |
Each step is a key event in GA4, so the dashboard and the client's own analytics agree.
Sessions by device
| Device | Sessions | Share |
|---|---|---|
| Mobile | 1,530 | 70% |
| Desktop | 610 | 28% |
| Tablet | 40 | 2% |
Your data, your choice
The warehouse lives in your account or ours. The data is yours either way.
Questions people ask
The short answers, before you book anything.
Do you handle GA4 migration?
Yes. GA4 is one of the sources that lands in the warehouse, including its BigQuery export, so the migration and the reporting layer are built together rather than as separate projects.
Where does the warehouse live, and who owns the data?
Your choice: your own Postgres or Supabase account, or one we host and run for you. The data is yours either way. Dashboards sit on a drop-b subdomain or a subdomain of your own domain. If everything lives in your accounts, nothing switches off if we part ways.
Do you charge per dashboard user?
No. The dashboard is custom-built and handed over with no per-seat licence, so giving your whole team access costs nothing extra.
Is this for agencies or in-house teams?
Both. Agencies get a data partner they plug in rather than hire, so their clients get the reporting layer without the agency building a data team. In-house teams get the infrastructure they don't have time to build, run by people who understand what it is for.
How does a Data & BI engagement start?
With the free data audit: a written findings document on your ad accounts, tracking and CRM, delivered in about a week. You keep it whether or not you go on to a build.
Start with the audit.
We map what exists before proposing anything to build. Then see it working on your own data with a free 30-day test flight.
Book a consult