Activate the Criteo Offline Sales Native Snowflake app


The Criteo Offline Sales app enables secure sharing of your offline sales data from your Snowflake environment directly into Commerce Max. This allows you to connect offline sales with online behavior, supporting store attribution and campaign optimization.  

  1. Open the Snowflake interface. 

  1. From the left navigation menu, go to Data Products > Marketplace. Then, search for Criteo Offline Sales

  1. Click Get 

  1. When prompted, grant permission to access Criteo API endpoints and share data over SSL by clicking Connect.

Your app installation is done. 



How to configure the Criteo Offline Sales app?

Once you have installed the app, you can configure it by following the steps below. 

  1. The first step is to enter your Account Id provided to you by a Criteo representative. 

  2. Next, you will be prompted to select and allow access to the table that keeps your offline sales data. Select the table and click Save. 

  3. For each column in the table, select the corresponding field in the database. Optionally, you can choose to provide access to Cortext AI for simplified table mapping. If you use AI mapping, a manual review is recommended to ensure accurate mapping.

     

  4. The final step is to schedule the import to enable data change tracking and execute imports. Under the Import section, click Enable data change tracking. Once this is enabled, you will see the Start Import button. Your import will run successfully. 

  5. To see the import history and the time the latest import was running, navigate to the Dashboard section.



What happens next? 

Once the configuration is complete:  

  • All changes to the selected table will automatically sync with Criteo.  

  • Offline sales data will appear on the Criteo platform within minutes.  

  • This data will be incorporated into attribution reporting and will be available for targeting within Commerce Max.



Offline Sales Data Source Table Requirements

  • Table Structure: transactions 

Column Name 

Data Type 

Description 

Constraints 

timestamp 

DATETIME/TIMESTAMP 

When the transaction occurred 

NOT NULL 

email_address 

VARCHAR(255) 

Customer email (plain or hashed) 

NOT NULL 

transaction_id 

VARCHAR(50) 

Unique transaction identifier 

PRIMARY KEY 

total_purchase_amount 

DECIMAL(10,2) 

Total amount of the purchase 

NOT NULL 

currency 

VARCHAR(3) 

Currency code (e.g., USD, EUR) 

NULLABLE 

products 

JSON/TEXT 

Array of purchased products 

NOT NULL 

 SQL that would create the transaction table.

CREATE TABLE transactions (  

timestamp TIMESTAMP NOT NULL,  

email_address VARCHAR(255) NOT NULL,  

transaction_id VARCHAR(50) PRIMARY KEY,  

total_purchase_amount DECIMAL(10,2) NOT NULL,  

currency VARCHAR(3),  

products JSON NOT NULL  

);


  • Products Array Structure: products (within JSON)

Field Name 

Data Type 

Description 

Constraint 

product_id 

VARCHAR(50) 

Product identifier 

NOT NULL 

price 

DECIMAL(10,2) 

Individual product price at time of purchase 

NOT NULL 

quantity 

INT 

Number of items purchased 

NOT NULL, > 0 

JSON Schema Example:

{ 
  "type": "array", 
  "items": { 
    "type": "object", 
    "properties": { 
      "product_id": {"type": "string"}, 
      "price": {"type": "number"}, 
      "quantity": {"type": "integer", "minimum": 1} 
    }, 
    "required": ["product_id", "price", "quantity"] 
  } 
} 

Example of how the products JSON might look like:

[  

{  

"product_id": "PROD001",  

"price": 29.99,  

"quantity": 2  

},  

{  

"product_id": "PROD002",  

"price": 15.50,  

"quantity": 1  

}  

]