Skip to main content

Supported data types

Indeliveries

Incoming products

Inventory

Stock levels

Orders

Customer transactions

Product Attributes

Product metadata & descriptions
All order types are supported — not just online. You can import retail/in-store, wholesale, and marketplace orders alongside your e-commerce data. Use the `TYPE` field to identify the sales channel (e.g., `ONLINE`, `RETAIL`, `WHOLESALE`) and `EXTERNAL_STOREFRONT_ID` to separate data by store or location.

Prerequisites

Before setting up the Snowflake integration, ensure you have:
  • Tables or views in Snowflake containing your data, with columns matching our schema
  • A Snowflake user with read access to the necessary tables/views for the integration
  • An RSA key pair assigned to the integration user (key-pair authentication)
Historical data recommendation — For accurate forecasting, marketing-mix modeling, and cohort analytics, we recommend providing data going back to at least two years. Our default start date for data ingestion is January 1, 2023. The more historical data available, the better our ML models perform.

Good to know

If you operate multiple storefronts, include EXTERNAL_STOREFRONT_ID in your data for per-row storefront assignment. It applies to orders, including return fields within orders.The value is matched against the externalStorefrontId in your merchant mappings, ignoring case. Rows where it is empty or matches no mapping go to the storefront the integration is set up for.

Merchant mappings

Merchant mappings connect your external storefront IDs to the platform's internal storefronts. They also optionally assign country-level marketing cost data based on country codes.Setup: Provide the following JSON structure to the commercial team:
[
    {
        "externalStorefrontId": "STORE-001",
        "countries": ["SE", "NO", "DK"]
    },
    {
        "externalStorefrontId": "STORE-002",
        "countries": ["GB"]
    },
    {
        "externalStorefrontId": "STORE-003",
        "countries": ["US"]
    },
    {
        "externalStorefrontId": "STORE-004",
        "countries": []
    }
]
string
required
Your external storefront identifier. Can be any string but preferably something that represents the storefront.
array
Array of ISO 3166 country codes (2 letters) for assigning marketing cost data. Use an empty array [] if no country filtering is needed.

Step-by-step integration guide

1

Initial setup

Create a dedicated user in Snowflake for the integration with read access to the necessary tables. The integration authenticates using RSA key-pair authentication, not a password.
  1. Generate an RSA key pair and assign the public key to the Snowflake user (Snowflake key-pair guide).
  2. Provide the following credentials to your Customer Success Manager:
Send the private key and credentials via secure password sharing.
Snowflake Example
If your private key is encrypted with a passphrase, include "privateKeyPass": "your-passphrase" as well.
2

Specifying data tables and schema

Ensure each Snowflake table aligns with our schema. Columns must be named according to the column names specified in the schema below. This is crucial for accurate data integration.
3

Finalizing integration

After setting up the user and ensuring data mapping accuracy, our team will finalize the integration process, enabling data flow from Snowflake into our platform.
Multiple values Some fields allow multiple values. These fields can be added as column of Array type, like ["value1", "value2", "value3"].

Data schema

Indeliveries

Track incoming product deliveries to your warehouses.
Required:

Inventory

Stock levels and cost — the dynamic part of a product record. To get complete product coverage, pair this with the static metadata sent via Product Attributes (name, brand, category, etc.); the two data types are joined on product/variant. See COGS priority for how cost values are resolved.

Fields


Orders

Customer transaction data including order details and line items. See COGS priority for how cost values are resolved.

How order data should be structured

Each row represents a unique order line, identified by the combination of ORDER_ID, PRODUCT_ID, and VARIANT_NO.
RequirementDescription
Unique rowsEach row must have a unique ORDER_ID–PRODUCT_ID–VARIANT_NO combination
Quantity handlingIf multiple items of the same variant were bought, aggregate them using QUANTITY_DECIMAL
Tax inclusionAll prices should include tax
Header repetitionOrder header fields (like ORDER_ID, CURRENCY, TOTAL) must be repeated for every line item in the same order
UpdatesWhen updating an order, include the UPDATED_AT field along with the changed fields
Line-level overridesLine-level fields override their order-level equivalents when set: STATUS_LINE overrides STATUS, and SHIPPING_PROVIDER_LINE overrides SHIPPING_PROVIDER
Storefront mappingTo map data to a specific storefront, fill out EXTERNAL_STOREFRONT_ID and provide us with info about your existing storefronts, see Storefront assignment
Required:Optional:
Required:Optional:
Include these fields to record returns directly in your orders table.Required:Optional:
Order header level:Order line level:

Product Attributes

A complete product record requires both Product Attributes and Inventory. Even if stock levels aren't important to you, both tables must be sent — they are separate data types joined on product/variant. Product Attributes holds the static details (name, brand, category, description, etc.), while Inventory holds the dynamic values (stock levels, cost). Send product metadata here, not in the Inventory table.
Product metadata including names, categories, and descriptive attributes for your catalog.

Required fields


Troubleshooting and support

For common issues and solutions, contact our support team directly for assistance.

Additional resources