Skip to content
← All articles
Setup

Data warehouse: export to BigQuery, Snowflake and Redshift

Send CRM objects (leads, contacts, opportunities…) to your data warehouse. BigQuery is automatic; Snowflake and Redshift use file + COPY.

The Data Warehouse integration EXPORTS your CRM objects to YOUR company's warehouse ("bring your own account" model, or BYO). The warehouse is yours: there is no cost, margin or intermediation on our side. Everything starts inert: nothing is sent until you configure the credentials and activate. Reading is always restricted to your tenant's data.

Each object is exported as rows with stable columns: id, created_at, updated_at, owner_id and one column per field (the field's api_name). The same columns as the BI connector, so you map once.

Prerequisites

  • BigQuery: a project in Google Cloud, a target dataset and a service account with the "BigQuery Data Editor" role on that dataset, plus a JSON key for that account.
  • Snowflake/Redshift: a staging location you control (signed URL of an S3/GCS/Azure bucket) to receive the file, and access to the warehouse to run the COPY command.
  • In Sellio, administrator access to save the credentials and activate the export in Settings → Integrations.

Where to configure

  1. Open Settings → Integrations.
  2. Choose your warehouse card: Google BigQuery, Snowflake or Amazon Redshift.
  3. Fill in the credentials, choose the objects to export and activate.
  4. Use "Export now" to send on demand.

BigQuery (automatic send)

In BigQuery the send is automatic, via streaming (tabledata.insertAll). You bring a service account and we write directly to your tables.

  1. In Google Cloud, create a service account and grant it the "BigQuery Data Editor" role on the target dataset.
  2. Generate a JSON key for that service account.
  3. In the dataset, create one table per object with the stable columns (id STRING, created_at TIMESTAMP, updated_at TIMESTAMP, owner_id STRING and one column per field).
  4. On the BigQuery card, enter the Project ID, the Dataset, an optional table prefix and paste the key JSON. Activate and click "Export now".
šŸ’” The table name of each object is <prefix><api_name> (e.g., prefix "crm_" → table crm_opportunity). Without a prefix, the table is the api_name itself. The send uses the record's id as insertId, so resending the same batch does not duplicate.

Snowflake and Redshift (file + COPY)

For Snowflake and Redshift, we generate one file per object (NDJSON by default, or CSV) and SEND it to a staging URL you control, for example a signed URL of your S3/GCS/Azure bucket. The final load into the warehouse is done by the COPY command, which you run (or schedule) in your warehouse.

  1. On the Snowflake/Redshift card, enter the staging URL (the file destination), the format (NDJSON or CSV) and, if the destination requires it, an authentication header + secret.
  2. Choose the objects and activate. Click "Export now": we PUT the file to your staging.
  3. In your warehouse, run COPY to load the file from staging into the table.
Example: Snowflake: COPY INTO crm.opportunity FROM @my_stage/opportunity FILE_FORMAT = (TYPE = JSON) MATCH_BY_COLUMN_NAME = CASE_INSENSITIVE;
Example: Redshift: COPY crm.opportunity FROM 's3://my-bucket/opportunity.json' IAM_ROLE 'arn:aws:iam::...:role/redshift' FORMAT AS JSON 'auto ignorecase';
šŸ’” The credentials (BigQuery service account key, staging secret) are stored encrypted and are never displayed back. To change them, paste again.

How to test

  1. Activate the connector, choose an object and click "Export now".
  2. BigQuery: open the <prefix><api_name> table in the dataset and confirm the rows arrived (resending the same batch does not duplicate, because the insertId is the record's id).
  3. Snowflake/Redshift: confirm the file was written to your staging (via PUT); then run COPY and check the rows in the table.

Troubleshooting

  • BigQuery 403/permission denied: the service account does not have "BigQuery Data Editor" on the dataset, or the JSON key is incomplete. Re-grant the role and re-paste the JSON.
  • BigQuery "table not found": first create the per-object table with the stable columns (id STRING, created_at/updated_at TIMESTAMP, owner_id STRING and one column per field). The name is <prefix><api_name>.
  • Snowflake/Redshift: the PUT to staging fails: the signed URL expired or does not allow writing, or the destination's authentication header is wrong. Generate a new URL and check the secret.
  • COPY does not load: review the FILE_FORMAT (NDJSON vs CSV) and the column mapping (e.g., MATCH_BY_COLUMN_NAME in Snowflake; FORMAT AS JSON in Redshift).
  • Nothing is exported: confirm the connector is ACTIVATED and that there are objects selected.

Open this article inside the system →

Read it and want to see it working?

The account is free and the whole manual is available inside the system, with an assistant that answers from this very content.

Create free account
Data warehouse: export to BigQuery, Snowflake and Redshift Ā· Sellio