Sign in

Welcome to our Support Center

Get help with integration and live campaigns

Welcome to our Support Center. Get help with integration and live campaigns

Offline sales data feed

1 - Overview

By passing Criteo your offline sales data you can gain a better understanding of the effectiveness of your digital campaigns and return on ad spend.

Bricks and mortar retailers that are already passing their in-store sales data to Criteo are able to leverage up to 4x more sales information to optimize their marketing efforts, leading to improved digital campaigns and the ability to drive more sales online and in-store.

There are 3 options for passing Criteo your offline sales data.

2 - Criteo Offline API

Integration through the Criteo Offline API offers an automated way to upload your offline sales data, and means sales can be ingested through Criteo’s identity graph in real-time.

The Criteo Offline API is a writing REST API which uses a POST method with JSON Request body.  An example of the full JSON request body can be found here.

Please see below the set of transaction data parameters that must be provided in the JSON Request body in order to pass your offline sales data to the Criteo Offline API. 

To request access to the Criteo Offline API endpoint please get in touch with your Account Strategist.

2.1 - account data

2.1.1 ip

This field is required for all products in the transaction JSON, and cannot be empty/blank.

IP address.  Set to 127.0.0.1 if not applicable.

Value: Text.

Example: 127.0.0.1

2.1.2 account

This field is required for all products in the transaction JSON, and cannot be empty/blank.

Criteo Account ID. If you're not sure what this is, please get in touch with your Criteo Account Strategist.

Value: Integer.

Example: 11532

2.1.3 site_type

This field is required for all products in the transaction JSON, and cannot be empty/blank.

Set to 'instore' for offline data.

Value: Text.

Example: instore

2.2 - id data

Criteo uses hashed email as the identifier parameter. 

Emails will be ingested into Criteo’s identity graph as SHA256 of an MD5. If you are unable to provide emails in this format you can provide either raw or MD5 emails, which will be hashed on the fly by Criteo before being ingested. 

To find out more about server side hashing click here.

2.2.1 id.email.raw

ONE id field is required for all products in the transaction JSON, whichever field is chosen cannot be empty/blank.

Raw email of the shopper, to be double-hashed by Criteo into SHA256 of an MD5.

Value: Text

Example: john.doe@gmail.com

 2.2.2 id.email.md5

ONE id field is required for all products in the transaction JSON, whichever field is chosen cannot be empty/blank.

MD5 email of the shopper, to be hashed by Criteo into SHA256 of an MD5.

Value: Text

Example: e13743a7f1db7f4246badd6fd6ff54ff

2.2.3 id.email.sha256_md5

ONE id field is required for all products in the transaction JSON, whichever field is chosen cannot be empty/blank.

SHA256 of an MD5 email of the shopper.

Value: Text

Example: 000e3171a5110c35c69d060112bd0ba55d9631c7c2ec93f1840e4570095b263a

2.3 - events[ ] data

Please find below the event parameters that must be pushed to Criteo as an array.  Each event is a JSON object with a predefined parameter.

2.3.1 events[ ].event

This field is required for all products in the transaction JSON, and cannot be empty/blank.

The type of offline event that is being passed.

Value: Text

Example: trackTransaction

2.3.2 events[ ].item[ ]

This field is required for all products in the transaction JSON, and cannot be empty/blank.

Array of products that were purchased in the trackTransaction event.

Value: Array

Example: item:[{id:1,price:1,quantity:1},{id:2,price:2,quantity:2}]

2.3.3 events[ ].item[ ].id

This field is required for all products in the transaction JSON, and cannot be empty/blank.

The unique identifier for each product purchased. This must match with your online product feed.

Value: Text

Example: prod_1234

2.3.4 events[ ].item[ ].price

This field is required for all products in the transaction JSON, and cannot be empty/blank.

The unit price of each product purchased.

Value: Float

Example: 23.2

2.3.5 events[ ].item[ ].quantity

This field is required for all products in the transaction JSON, and cannot be empty/blank.

The number of products purchased in the transaction.

Value: Integer

Example: 2

2.3.6 events[ ].id

This field is required for all products in the transaction JSON, and cannot be empty/blank.

The transaction ID. This will be used for deduplication and debugging.

Value: Text

Example: Transaction_ID_13265

2.3.7 events[ ].timestamp

This field is required for all products in the transaction JSON, and cannot be empty/blank.

Ideally data should be passed to the API in real-time.

Where this isn’t possible please provide a UTC timestamp, using ISO 8601 standards with explicit timezone designator 'Z'.

Without a timestamp, the time of transaction will be recorded as the time of ingestion.

The timestamp must follow the ISO 8601 standards with explicit timezone designator 'Z' when in UTC time zone.

Value: Timestamp. 

UTC: [YYYY]-[MM]-[DD]T[hh]:[mm]:[ss]Z

None UTC: [YYYY]-[MM]-[DD]T[hh]:[mm]:[ss]±[hh:mm]

Example: UTC+1 : 2017-06-02T13:25:15+01:00

2.3.8 events[ ].store_id

This field is required for all products in the transaction JSON, and cannot be empty/blank.

The ID of the store in which the sale occurred.

Value: Text

Example: store_1354

2.3.9 events[ ].user_segment

This field is required for all products in the transaction JSON, and cannot be empty/blank.

Hardcoded to 19 for in-store data.

Value: Integer

Example: 19

2.3.10 events[ ].currency

This field is required for all products in the transaction JSON, and cannot be empty/blank.

The currency of the transaction. This must follow the 3 letter ISO 4217 code.

Value: Text

Example: EUR

2.3.11 events[ ].dd

This field is required for all products in the transaction JSON, and cannot be empty/blank.

Deduplication parameter should be set to 1 if the sale is attributed to Criteo.

Value: Integer

Example:

 

3 - Data partner integrations

We have partnerships which allow you to easily pass us your offline sales data via your Data Partners, CRM and Marketing software, Digital Receipts and Loyalty providers, Integration Platforms and Point of Sale providers, through direct integrations.

Get in touch with your Criteo Account Strategist to find out more about our partner integrations.

4 - Flat file feed integration

If you wish to share your data via flat file feed integration, please use a TSV or CSV feed format.

Files can be uploaded to the Criteo FTP or SFTP, or downloaded from your own FTP or SFTP by Criteo.  Get in touch with your Account Strategist to agree the integration method that is best for you. 

Feed format

Detail

Download

TSV

This format is based on the Tab-separated value. The header must be declared in the first row of the file. Field names can contain spaces or underscores (e.g. image_link or image link).

Each line should be a different offline transaction. Multiple product data should be separated by pipes (|) inside the "event_item_id" column for instance.

 Feed example

CSV

This format is based on the Comma-separated value. The header must be declared in the first row of the file.  Field names can contain spaces or underscores (e.g. image_link or image link).

Each line should be a different offline transaction. Multiple product data should be separated by pipes (|) inside the "event_item_id" column for instance.

 Feed example

It is recommended that you schedule an import at least once daily, Criteo can process the flat file as frequently as every hour.

Please see below the data specification for your flat file upload, showing the nodes (or columns for CSV) that are required, recommended and optional.

4.1 - Required fields

4.1.1 user_email

Email of the shopper.

Emails will be ingested into Criteo’s identity graph as SHA256 of an MD5. If you are unable to provide emails in this format you can provide MD5 files, which will be hashed on the fly by Criteo before being ingested.

To find out more about server side hashing click here.

Type: String

Example: MD5: e13743a7f1db7f4246badd6fd6ff54ff

SHA256 of MD5: 000e3171a5110c35c69d060112bd0ba55d9631c7c2ec93f1840e4570095b263a

4.1.2 event_name

The type of offline event that is being passed.

Type: string

Example: trackTransaction

4.1.3 event_id

The transaction ID.  This will be used for deduplication and debugging.

Type: String

Example: tr_1234567a

4.1.4 event_item_quantity

The number of products purchased in the transaction. 

Multiple product data should be separated by pipes (|) inside the column.

Type: Integer

Example: 1|3|2

4.1.5 event_item_id

The unique identifier for each product purchased.  This must match with your online product feed.

Multiple product data should be separated by pipes (|) inside the column.

Type: String

Example: MD5: pdct_1234|pdct_4567|pdct_7890

4.1.6 event_currency

The currency of the transaction. This must follow the 3 letter ISO 4217 code.

Type: String

Example: EUR

4.1.7 event_item_price

The unit price of each product purchased. There must be 2 decimal points and the decimal separator must be a point.

Multiple product data should be separated by pipes (|) inside the column.

Type: Float

Example: 16.00|43.99|12.50

4.1.8 event_timestamp

The timestamp should be included otherwise time of transaction will be recorded as the time of ingestion.

The timestamp must follow the ISO 8601 standards with explicit timezone designator 'Z' when in UTC time zone.

Type: Timestamp. 

UTC: [YYYY]-[MM]-[DD]T[hh]:[mm]:[ss]Z

None UTC: [YYYY]-[MM]-[DD]T[hh]:[mm]:[ss]±[hh:mm]

Example: UTC+1 : 2017-06-02T13:25:15-01:00

4.1.9 user_store_id

The ID of the store in which the sale occurred.

Type: String

Example: store_75020

4.2 - Optional fields

4.2.1 user_crmid

CRM ID of the shopper.

Type: String

Example: 00Q7000fAJuO

4.2.2 event_item_alternate_id

An additional unique identifier for each product purchased, where products have more than one identifier.

Multiple product data should be separated by pipes (|) inside the column.

Type: String

Example: pdct_4567|pdct_8901|pdct_1234

4.2.3 event_value

The value of the total transaction. There must be 2 decimal points and the decimal separator must be a point.

Type: Float

Example: 75.00

4.2.4 event_item_id_gtin

Global Trade Item Number (GTIN).

Multiple product data should be separated by pipes (|) inside the column.

Type: String

Example: 00012345600012|00045678900012|00024682400012

4.2.5 event_item_category

The category of each product purchased.

Multiple product data should be separated by pipes (|) inside the column.

Type: String

Example: Shoes|Hats|Trousers

4.2.6 event_item_brand

The brand of each product purchased.

Multiple product data should be separated by pipes (|) inside the column.

Type: String

Example: Nike|Reebok|Adidas

4.2.7 event_item_id_mpn

The MPN of each product purchased.

MPN (Manufacturer Part Number) is the unique identifier used by brands to identify their products.

Multiple product data should be separated by pipes (|) inside the column.

Type: String

Example: 000123456|000456789|000647839

4.2.8 event_custom_data

Any additional information you may wish to share about this sales event.

Type: Dependent on event

Example: Dependent on event

Was this article helpful?
0 out of 0 found this helpful
Powered by Zendesk