Skip to main content

Integrate Snowflake with Dotdigital

Connect your Snowflake data warehouse to Dotdigital to sync contact and product data directly into your account.

Written by Gareth Burroughes
Updated over a week ago

Snowflake is a cloud-based data platform that stores and analyses your business data. When integrated with Dotdigital, you can sync datasets from individual tables or consolidated views, helping you unify data from multiple systems into a single marketing platform.

This integration supports syncing contacts, products, and orders from Snowflake into Dotdigital.

For order syncing, your data must follow a fixed structure.


Before you start

You need:

  • Access to your Snowflake warehouse, database, schema, and tables or views.

  • A timestamp column in TIMESTAMP_LTZ or TIMESTAMP_NTZ format.

  • A table or view containing your contacts and/or products.

  • A dedicated Orders table in the required schema.
    See Order data structure requirements.

The Snowflake integration syncs data into Dotdigital.

To sync data out of Dotdigital into Snowflake, use the Firehose integration.

If you need two‑way data movement, use both integrations together.


What you can do

  • Import contact data from Snowflake to build targeted segments and campaigns.

  • You can sync data from a single table or from a Snowflake view that combines multiple tables.

  • Import product data to support dynamic content, product recommendations, and personalised offers. Product data works alongside contact data to improve relevance.

  • Import order data to bring purchase history into Dotdigital, enabling RFM analysis, ecommerce segments, product recommendations, and personalised automations.

  • Connect to multiple views in Snowflake, allowing you to sync consolidated datasets without restructuring your source tables.


1. Integrate Snowflake with Dotdigital

Start the integration by finding Snowflake in the self‑serve integrations menu.

  1. Go to Connect > Integrations.

  2. In the left menu, under SHOW, select Self‑serve.

  3. Find Snowflake, then select +ADD.


2. Connect your account

Set up the connection between Dotdigital and Snowflake.

  1. Read the integration information, then select NEXT.

  2. Select Connect account.

  3. Enter your Snowflake connection details:

    • Unencrypted Private Key

    • Account

    • Username

    • Other fields are optional

  4. Select CREATE.

  5. Select NEXT.


3. Set up your datasets

You can configure Contacts, Products, and Orders independently, but the setup flow is linear.

You move through each dataset in order, starting with Contacts.

At each stage, you must choose Yes or No:

  • If you select Yes, the wizard guides you through the setup steps for that dataset.

  • If you select No, the wizard skips the detailed steps and moves on to the next dataset.

  • You cannot jump directly to Products or Orders without first answering the Contacts step.


Contacts setup

1. Sync contacts

Choose whether you want to sync contact data from Snowflake into Dotdigital.

If you already get your contacts from another source, such as a CRM, select No.

  1. Select Yes or No.

  2. Select NEXT.

2. Select your data source for Contacts

Select where your contact data lives in Snowflake.

  1. Select Data source type.

  2. Select Warehouse.

  3. Select Database.

  4. Select Schema.

  5. Select View/Table.

  6. Select NEXT.

3. Select timestamp for Contacts

Choose the column that tracks when each record was last updated.

If you use a view, ensure the timestamp column is included in the view output.

  • Must be a TIMESTAMP_LTZ or TIMESTAMP_NTZ.

  • Rows without timestamps cannot sync.

  • Only records newer than the last sync are imported.

  1. Select your timestamp column.

  2. Select NEXT.


4. Sync opt-in/out status

  1. Select if you want to sync the opt-in/out status.

  2. Select NEXT.

  3. Select the email opt in field, and then select NEXT.

5. Map data fields

Map Snowflake columns to Dotdigital contact fields.

  • Contacts require email or mobile number.

  1. Select a Dotdigital field.

  2. Select the matching Snowflake column.

  3. Add mappings if needed.

  4. Select NEXT.

6. Set sync frequency

Choose how often your contact data syncs (Snowflake supports hourly).

  1. Select your sync frequency.

  2. Select NEXT.


Products setup

1. Sync product catalog

Choose whether to sync product data into Dotdigital.

  1. Select Yes or No.

  2. Select NEXT.

2. Select data source for Products

Select where your contact data lives in Snowflake.

  1. Select your Warehouse.

  2. Select your Database.

  3. Select your Schema.

  4. Select your Table or View.

  5. Select NEXT.

3. Select timestamp for Products

Choose the column that tracks when each record was last updated.

  • Must be a TIMESTAMP_LTZ or TIMESTAMP_NTZ.

  • Rows without timestamps cannot be synced.

  • Only rows with timestamps newer than the last successful sync are imported.

  1. Select your timestamp column.

  2. Select NEXT.

4. Map data fields

Some product fields are greyed out because they’re mandatory. You must map these fields for the product sync to work, and you can’t remove or change them. You cannot skip this step.

  1. Select a Dotdigital field.

  2. Select the Snowflake product fields for the matching Dotdigital insight fields.

  3. Add additional mappings as required.

  4. Select NEXT.

5. Set sync frequency

Choose how often your data syncs. Dotdigital checks for updates on your chosen schedule, but only imports rows with timestamps newer than the last successful sync.

  1. Select your sync frequency.

  2. Select NEXT.

To change the schedule later, edit your integration settings.

To pause syncing, disable the integration and re‑enable it when you are ready.


Orders setup

1. Sync orders

Order syncing allows you to bring purchase history into Dotdigital.

Order data must follow a fixed schema containing:

  • Order‑level fields (ID, totals, currency, purchase date)

  • Customer identifier fields

  • Billing and delivery details

  • A nested items field for order lines

The integration will not work if your table does not follow the required structure.

  1. Select Yes or No.

  2. Select NEXT.

You cannot manually map order fields, the integration requires an exact schema because Dotdigital parses the structure directly.

2. Select data source for Orders

Select where your contact data lives in Snowflake.

  1. Select your Warehouse.

  2. Select your Database.

  3. Select your Schema.

  4. Select your View/Table.

  5. Select NEXT.

3. Set sync frequency

Choose how often your data syncs. Dotdigital checks for updates on your chosen schedule, but only imports rows with timestamps newer than the last successful sync.

  1. Select your sync frequency.

  2. Select FINISH.

To change the schedule later, edit your integration settings.

To pause syncing, disable the integration and re‑enable it when you are ready.

The Orders sync uses a fixed schema, so Dotdigital reads the structure of your table directly instead of asking you to map fields manually. This ensures every order record is imported consistently, and avoids issues that can occur when custom field names or formats don’t match expected ecommerce standards. If your table doesn’t follow the required structure, update it before starting the sync.

Example SQL for creating a compatible Orders table

create or replace TABLE DOTDIGITAL_PRODUCTION.INTEGRATION.MY_ORDERS_SYNC (

CREATED TIMESTAMP_NTZ(9) NOT NULL DEFAULT CURRENT_TIMESTAMP(),

UPDATED TIMESTAMP_NTZ(9) NOT NULL DEFAULT CURRENT_TIMESTAMP(),

ID VARCHAR(255),

ORDER_TOTAL NUMBER(18,2) NOT NULL,

PAYMENT VARCHAR(255),

DELIVERY_METHOD VARCHAR(255),

DELIVERY_TOTAL NUMBER(18,2),

CURRENCY VARCHAR(3) NOT NULL,

ORDER_STATUS VARCHAR(255),

EMAIL VARCHAR(255) NOT NULL,

QUOTE_ID VARCHAR(255),

PURCHASE_DATE DATE NOT NULL,

BILLING_ADDRESS_1 VARCHAR(255),

BILLING_ADDRESS_2 VARCHAR(255),

BILLING_CITY VARCHAR(255),

BILLING_COUNTRY VARCHAR(255),

BILLING_POSTCODE VARCHAR(255),

DELIVERY_ADDRESS_1 VARCHAR(255),

DELIVERY_ADDRESS_2 VARCHAR(255),

DELIVERY_CITY VARCHAR(255),

DELIVERY_COUNTRY VARCHAR(255),

DELIVERY_POSTCODE VARCHAR(255),

PRODUCTS VARIANT,

ORDER_SUBTOTAL NUMBER(18,2) NOT NULL,

BASE_SUBTOTAL_INCL_TAX NUMBER(18,2),

DISCOUNT_AMOUNT NUMBER(18,2),

COUPONCODE VARCHAR(255)

);

Did this answer your question?