We set up BigQuery as your warehouse, bring in data from every tool you use, model it with dbt, and put it to work in dashboards, AI agents, attribution and the tools your team already uses.
You need a warehouse, and aren't sure how to set it up
Your data is spread across payments, CRM, ad platforms and your product database, and you want it in one place. But it isn't clear how to structure BigQuery, what to bring in first, or how to keep the bill low.
02
You have BigQuery, but it's unfinished
The GA4 export is switched on and someone loaded a few tables once. The rest of your data isn't there, nothing updates on its own, and nobody trusts the tables that exist.
03
Every tool gives you a different number
Meta, Google Ads, your store and your CRM each claim the same sale, and revenue never matches. You want one set of numbers, calculated one way, that the whole team uses.
04
The data is in the warehouse, but nobody uses it
Answers still take a data request and a few days. You want dashboards people open, an AI agent that answers questions, and modelled data sent back to the tools your team works in.
BigQuery services
What we do in BigQuery
Warehouse setup
We set up BigQuery, so it stays organised, secure and cheap as it grows.
Separate datasets for raw data, cleaned data and reporting tables
Access set by role, so each person sees what they need
Partitioned tables and query limits, so the bill stays predictable
01 - Setup
Example BigQuery project setup: raw, GA4 export, staging and marts datasets, with default table expiry turned off, a per-query cost cap and access roles checked.
acme-analytics4 datasets · US
raw_stripeloaded by pipelinespartitioned by day
analytics_ga4GA4 exportdaily + streaming
stagingdbt, cleaneddata team only
martsdbt, reportingdashboards read here
settings, checked
✓default table expiry60 days off
✓max bytes billed per query50 GB
✓access rolesadmin · analyst · viewer
Get all your data in
We write Python scripts that pull data from every tool you use into BigQuery on a schedule, so the warehouse becomes your source of truth.
Payments, CRM, ad platforms, product analytics, your app database and spreadsheets
Scripts that run on their own, with past data backfilled
Alerts when a sync fails or a number looks off, before anyone uses the data
Ready-made connectors like Fivetran or Airbyte where they cost less than custom code
02 - Ingest
Example BigQuery sync log: scheduled Python syncs from Stripe, HubSpot, Meta Ads, Google Ads, Shopify and the app database, with Slack alerts when a sync fails or a total moves.
scheduled syncs6 of 6 healthy
scriptrunslast run
stripe_charges.pyhourly✓ 1,284 rows
hubspot_deals.pyhourly✓ 312 rows
meta_ads_insights.pydaily 02:00✓ 4,610 rows
google_ads_costs.pydaily 02:00✓ 3,977 rows
shopify_orders.pyrate-limited, retried after 2 minevery 15 min✓ 208 rows
app_db_users.pyhourly✓ 18,442 rows
Alerts go to Slack when a sync fails or a total moves 30% off its 7-day average.
Data models & attribution
We use dbt to turn raw tables into clean models your whole team works from, with one definition for every metric.
Staging and reporting models, versioned in Git
Tests on every model, so broken data is caught before it reaches a dashboard
Custom attribution built on your own orders and sign-ups, not each ad platform's view of itself
LTV, CAC, churn risk and account health, each defined once
03 - Model
Example attribution model built with dbt in BigQuery: ad platforms claim 792 orders, while the model attributes the 748 orders actually in the store across Meta Ads, Google Ads, organic search and email.
orders by channellast 30 days
channelplatform claimsour model
Meta Ads412251
Google Ads380214
Organic search-187
Email-96
total792748
fct_attributiondbt · 112 tests passed · matches the 748 orders in your store
Dashboards & AI agents
We put the models to work: dashboards your team opens every day, and AI agents that answer questions in plain English.
Looker Studio dashboards for each team, built on the models
AI agents that query your warehouse, backed by a knowledge base of your metric definitions
Deep dives into revenue, retention and marketing spend
04 - Analyse
Example growth dashboard on BigQuery, with an AI agent answering why customer acquisition cost rose in August and citing the source table and metric definition.
growth dashboardAugust
revenue
$184k
+9%
blended CAC
$61
+13%
LTV : CAC
3.4
-0.3
asked the agent
Why did CAC go up in August?
Meta CAC rose from $54 to $78 after the 12 Aug creative change. Google Ads stayed flat at $49.
marts.fct_marketing_spend · CAC = paid spend ÷ new paying customers
Send data back to your tools
We send modelled data from BigQuery to the tools your team works in, in the exact format each one expects.
Audiences and offline conversions sent to Meta and Google Ads
Lead scores, LTV and churn risk synced to your CRM
Warehouse tables synced into Mixpanel, PostHog or Amplitude
Hashing, formatting and ID matching handled, so match rates stay high
05 - Activate
Example reverse ETL from BigQuery: high-LTV audiences, order values, lead scores and churn risk synced back to Meta, Google Ads, HubSpot and Mixpanel.
Most setups take four to six weeks. Week 1 is the plan and the warehouse setup, the next few weeks bring in your data and build the dbt models, and dashboards and syncs to your other tools go live at the end. Finishing an existing setup is usually quicker.
Can you finish our existing BigQuery setup instead of starting over?+
Yes. We audit what's already there, keep what works, fix what's broken and bring in the data that's missing. Rebuilding from zero is rarely needed.
How much does BigQuery cost?+
BigQuery charges for storage and for the data each query scans. The first 10 GB of storage and 1 TB of queries each month are free, and most startups pay little beyond that. We partition tables and set query limits, so costs stay low as your data grows.
Why BigQuery and not Snowflake?+
If you use GA4, Firebase or Google Ads, BigQuery is usually the easiest start: those tools export to it for free, there are no servers to manage, and you only pay for what you use. We also work with Snowflake and Postgres, and will tell you if one of them fits you better.
Why write Python scripts instead of using Fivetran?+
We use both. Connectors like Fivetran and Airbyte are quick for popular tools, but they charge by volume and don't cover every tool. Where a connector is missing or gets expensive, we write Python scripts that you own and that cost a few dollars a month to run.
What is dbt, and do we need it?+
dbt is a way to write data models in SQL, with version control and tests. Every metric is defined once, changes are reviewed before they go live, and broken data is caught before it reaches a dashboard. For anything beyond a handful of tables, it's worth it.
Can you build a custom attribution model?+
Yes. Each ad platform counts its own conversions, so together they claim more sales than you made. We build attribution in BigQuery from your own data, joining every touchpoint to real orders or sign-ups, so there's one number the whole team uses.
Can you send BigQuery data to our ad platforms and CRM?+
Yes. We send audiences and offline conversions to Meta and Google Ads, and scores like LTV and churn risk to your CRM or product analytics tool, formatted the way each tool expects.
Do we need a data engineer?+
No. We build and document everything, and the pipelines run on their own. Someone on your team who can read SQL can make small changes, and we can stay on to maintain it if you'd rather not.
Do we own what you build?+
Yes. Everything lives in your own Google Cloud project and your own Git repository, so your team keeps the warehouse, the scripts, the models and the documentation after we're done.