Data warehouse
Connect BigQuery, Snowflake or Postgres so Meerkats can read your own tables as business context, and write results back.
If you already keep data in a warehouse, for example a product master, cost sheet, CRM export or offline sales, connect it so agents can use those tables alongside everything else. Meerkats reads the tables you grant, defines metrics on top of them in the metric catalog, and can write result tables back if you give it a schema.
| How it connects | API key |
| Reads | Chosen tables and views, Schema |
| Can change | Write a result table (for example daily corrected ROAS by campaign); Update rows in your tables |
| Refresh | On your plan's schedule, plus Resync anytime |
Before you start#
- A read-only database user or service account scoped to the tables you want to share. Create a separate user for Meerkats so you can revoke it.
- For writes, a schema Meerkats owns (for example
meerkats) where the user has create and write rights. - Network access: Meerkats connects from a fixed set of IP addresses, listed on the connection page, for your firewall allow-list.
Permissions#
What Meerkats needs, and why.
| Permission | Why Meerkats needs it |
|---|---|
BigQuery: service account JSON | roles/bigquery.dataViewer on the datasets to read; roles/bigquery.jobUser to run queries; dataEditor on the Meerkats dataset for writes |
Snowflake: user, role, warehouse | USAGE on the database and schemas, SELECT on tables; a role with CREATE TABLE on the Meerkats schema for writes. Key-pair auth supported |
Postgres: user and password | CONNECT on the database, SELECT on the tables; CREATE on the Meerkats schema for writes. SSL required |
Connect#
1. Connect a warehouse#
- Create the user
Create the read-only user or service account with the grants above.
- Open Integrations
In Meerkats, select Integrations, find Data warehouse and select Connect. Pick BigQuery, Snowflake or Postgres.
- Enter the connection details
Paste the service account JSON (BigQuery), or host, database, user and credentials (Snowflake, Postgres). Meerkats tests the connection before saving and stores secrets encrypted.
- Choose tables
Tick the tables or views Meerkats may read. For each, say what it is in one line, for example "product master, one row per SKU". That line becomes context.
- Resync
Go to Data Hub › Bronze Layer, pick Warehouse and select Resync.
What syncs#
| Data warehouse | In Meerkats |
|---|---|
| Chosen tables and views | Rows and schema, refreshed on schedule; large tables sync incrementally by a timestamp column you choose |
| Schema | Column names and types, so metrics can be defined on them |
Raw data lands in Data Hub › Bronze Layer. Modelled tables, with metrics defined once, are in Data Hub › Gold Layer. Every number in a report or an agent’s answer comes from a query on these tables, never from the model’s own arithmetic.
How often it syncs#
Meerkats syncs on your plan's schedule: daily on Free, hourly on the $49 plan, every 30 minutes on $149 and every 15 minutes on $399. You can run a sync at any time with Resync in Data Hub › Bronze Layer.
- Tables refresh on your plan's schedule. Pick an updated-at column for incremental sync; without one, Meerkats re-reads the table each time.
What Meerkats can change#
In every connected tool, Meerkats can create, read, update and delete records, within the permissions you grant and the permissions the tool allows. These are the changes it proposes for Data warehouse, and the limit that applies to each.
| Change | Limit |
|---|---|
| Write a result table (for example daily corrected ROAS by campaign) | Only into the Meerkats schema; proposed the first time, then runs on schedule |
| Update rows in your tables | Only if the user has write rights and you approve each change |
How every change is governed
Every change starts as a proposal in your Inbox. Nothing changes in the connected tool until a person approves it, unless you set that rule to act on its own.
Before it runs an approved change, Meerkats re-reads the live value. If the value moved since the proposal, it asks again instead of acting on stale data.
Meerkats stores the value it replaced, so every change can be undone from Agents run history.
Anything Meerkats creates starts paused. Switching it on is a second, separate approval.
Troubleshooting#
Connection test fails
Check the allow-list includes the Meerkats IPs shown on the connection page, that SSL is on, and that the user has CONNECT and SELECT.
A table is empty in Meerkats
The user may lack SELECT on that table, or the incremental column has no recent values. Check grants, then Resync.