Skip to main content
Connectors

Metabase connector

Set up the Metabase connector in Kaivo: authentication, configuration, the 7 BigQuery tables it syncs, and answers to common questions.

Written By Lauri Raivio

Last updated 16 days ago

Kaivo is a fully managed data platform that syncs your Metabase data into a Google BigQuery warehouse and keeps it up to date automatically. There is no pipeline to build and no infrastructure to run, so you can spend your time analysing your data from Metabase instead of moving it.

What is the Metabase connector

Sync your Metabase metadata into BigQuery with Kaivo to audit dashboards, questions, and usage across your instance.

CategoryTech
AuthenticationUsername and password
SetupSelf-service

Getting started with the Metabase connector

  1. Sign up for Kaivo and create a workspace.
  2. Connect your Metabase account.
  3. Choose which tables to sync.
  4. Wait for the initial sync to finish.
  5. Query your data in BigQuery or your favourite AI or BI tool.

Authenticating Metabase

Connect with your Metabase login. You provide:

FieldDescription
Password
Session Token

To generate your session token, run: curl -X POST -H "Content-Type: application/json" -d '{"username": "person@metabase.com", "password": "fakepassword"}' https://your-metabase.example.com/api/session and copy the id field from the response. Sessions are valid for 14 days by default.

Configuring the Metabase connector

When you set up the connector, you provide:

FieldDescription
Metabase Instance API URL

URL to your Metabase instance API.

Username

Tables and columns synced from Metabase

Kaivo syncs 7 tables from Metabase into a dedicated dataset in your BigQuery warehouse. Click any table to see its columns and types.

ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
archivedBOOL
cache_ttlINT64
collection__archivedBOOL
collection__authority_levelSTRING
collection__colorSTRING
collection__descriptionSTRING
collection__idINT64
collection__locationSTRING
collection__nameSTRING
collection__namespaceSTRING
collection__personal_owner_idINT64
collection__slugSTRING
collection_idINT64
collection_positionINT64
created_atSTRING
creator__common_nameSTRING
creator__date_joinedSTRING
creator__emailSTRING
creator__first_nameSTRING
creator__idINT64
creator__is_qbnewbBOOL
creator__is_superuserBOOL
creator__last_loginSTRING
creator__last_nameSTRING
creator_idINT64
database_idINT64
datasetBOOL
dataset_query__typeSTRING
dataset_query__databaseINT64
dataset_query__native__querySTRING
descriptionSTRING
displaySTRING
embedding_paramsSTRING
enable_embeddingBOOL
idINT64
last_edit_info__emailSTRING
last_edit_info__first_nameSTRING
last_edit_info__idINT64
last_edit_info__last_nameSTRING
last_edit_info__timestampSTRING
made_public_by_idINT64
nameSTRING
public_uuidSTRING
query_typeSTRING
table_idINT64
updated_atSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: cards__result_metadata

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
valueJSON
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
archivedBOOL
authority_levelSTRING
can_writeBOOL
colorSTRING
descriptionSTRING
idSTRING
locationSTRING
nameSTRING
namespaceSTRING
personal_owner_idINT64
slugSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
archivedBOOL
cache_ttlINT64
can_writeBOOL
caveatsSTRING
collection_authority_levelSTRING
collection_idINT64
collection_positionINT64
created_atSTRING
creator_idINT64
descriptionSTRING
enable_embeddingBOOL
idINT64
last_edit_info__emailSTRING
last_edit_info__first_nameSTRING
last_edit_info__idINT64
last_edit_info__last_nameSTRING
last_edit_info__timestampSTRING
made_public_by_idINT64
nameSTRING
points_of_interestSTRING
positionSTRING
public_uuidSTRING
show_in_getting_startedBOOL
updated_atSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: dashboards__dashcards

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: dashboards__parameters

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
valueJSON
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: dashboards__tabs

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
auto_run_queriesBOOL
cache_field_values_scheduleSTRING
cache_ttlINT64
can_uploadBOOL
caveatsSTRING
created_atSTRING
creator_idINT64
dbms_version__versionSTRING
dbms_version__flavorSTRING
descriptionSTRING
details__advanced_optionsBOOL
details__cloud_ip_address_infoSTRING
details__dataset_filters_patternsSTRING
details__dataset_filters_typeSTRING
details__dbSTRING
details__include_user_id_and_hashBOOL
details__let_user_control_schedulingBOOL
details__project_idSTRING
details__project_id_from_credentialsSTRING
details__service_account_jsonSTRING
details__sslBOOL
details__use_jvm_timezoneBOOL
engineSTRING
idINT64
initial_sync_statusSTRING
is_auditBOOL
is_full_syncBOOL
is_on_demandBOOL
is_sampleBOOL
metadata_sync_scheduleSTRING
nameSTRING
native_permissionsSTRING
optionsSTRING
points_of_interestSTRING
refingerprintBOOL
settingsSTRING
timezoneSTRING
updated_atSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: databases__dbms_version__semantic_version

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
valueINT64
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Subtable: databases__features

ColumnTypeDescription
_kaivo_parent_idSTRINGForeign key referencing _kaivo_id in the parent table. Auto-generated by Kaivo.
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
valueSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
archivedBOOL
collection_idINT64
contentSTRING
created_atSTRING
creator__common_nameSTRING
creator__date_joinedSTRING
creator__emailSTRING
creator__first_nameSTRING
creator__idINT64
creator__is_qbnewbBOOL
creator__is_superuserBOOL
creator__last_loginSTRING
creator__last_nameSTRING
creator_idINT64
descriptionSTRING
entity_idSTRING
idINT64
nameSTRING
updated_atSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
common_nameSTRING
emailSTRING
first_nameSTRING
idINT64
last_nameSTRING
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

How the Metabase sync works

After the first load, Kaivo keeps your BigQuery warehouse up to date for you. Where Metabase supports it, each sync pulls only new and changed records so it stays fast; otherwise it refreshes the whole table. Every record keeps its original ID, so you won't get duplicate rows.

Frequently asked questions

How long does the initial sync take for Metabase?

It depends on how much history is in your Metabase account. Most initial syncs finish within minutes, while large accounts can take a few hours. After that, syncs only fetch new and changed records, so they're much faster.

Can I sync only some tables or columns?

Yes. You pick which tables to sync when you set up the connection and can change the selection later. Tables you don't select are never copied to your warehouse.

What happens when Metabase's schema changes?

New fields are never added automatically. You choose which fields to sync, so data you haven't selected (sensitive personal data, for example) never lands in your warehouse. When a new field appears, it becomes available for you to add. What happens to removed or renamed fields depends on a table's sync mode: full-refresh tables always match what's currently in Metabase, so dropped fields disappear, while incremental tables keep their existing columns and history, so an old field stays and newly added fields fill in over time.

How do I handle GDPR or data deletion requests?

Your data lives in your own Kaivo-managed BigQuery warehouse, so the most direct option is to delete or anonymise specific records right in BigQuery. If you delete data in Metabase instead, full-refresh tables drop it on the next sync, while incremental tables keep it, so you would remove the row in BigQuery or ask us to run a full refresh. To remove everything, delete the Metabase connector in Kaivo and all of its synced data is deleted with it.

Common use cases for Metabase data

Content inventory

Use cards and dashboards to document what reports exist and how they are organised.

Usage audit

Join cards with collections to find unused or duplicated content to clean up.

Access review

Use users to review who has access across your instance.

Source mapping

Bring databases into BigQuery to document which sources your reports rely on.

Use Metabase data in your AI and BI tools

Once Metabase data lands in your Kaivo-managed BigQuery warehouse, you can explore it with AI tools or any BI tool that connects to BigQuery. Here's how the most common destinations work with Metabase data.

Claude

Use Kaivo's MCP server to give Claude secure, workspace-scoped access to your data. Setup guide β†’

Power BI

Microsoft's BI tool with a native BigQuery connector. Supports direct query and scheduled refresh. Setup guide β†’

Data Studio

Free Google BI tool with native BigQuery support. One-click connection to your Kaivo warehouse; great for SMB teams on Google Workspace. Setup guide β†’

Tableau

The premium analytics standard, with native BigQuery integration. Setup guide β†’

Google Sheets

Use Connected Sheets to query BigQuery directly from a spreadsheet, with no SQL. Setup guide β†’

Excel

Connect via Power Query's BigQuery connector. Setup guide β†’

Metabase

Open-source BI tool with strong BigQuery support. Setup guide β†’

See our pricing page for Metabase connector pricing and plan details.

  • Adform: Sync Adform to BigQuery.
  • Amplitude: Sync Amplitude to BigQuery.
  • Auth0: Sync Auth0 to BigQuery.
  • Convex: Sync Convex to BigQuery.
  • GitHub: Sync GitHub to BigQuery.
  • GitLab: Sync GitLab to BigQuery.

Was this helpful?

Still need help? Share an idea