Skip to contentSkip to navigationSkip to topbar
On this page
Looking for more inspiration?Visit the
(information)
You're in the right place! Segment documentation is now part of Twilio Docs. The content you are used to is still here—just in a new home with a refreshed look.

Criteo App & Web Events Destination


Destination Info
  • Accepts Page and Track calls.
  • In Cloud-mode, refer to it as Criteo, or Criteo App & Web Events in the Integrations object
  • In Device-mode, refer to it as Criteo in the Integrations object

Getting Started

getting-started page anchor
(information)

Information about Criteo App & Web Events and Analytics.js

If you connect the Criteo App & Web Events destination to an Analytics.js source, the connection defaults to Device-mode. Cloud-mode connections are not available with Analytics.js.

Currently this destination supports events originating from Mobile or Web sources (not Server). You can read more about sources here.

To get started with Criteo Events and Segment, you'll need:

  1. An existing account with Criteo(link takes you to an external page).
  2. A data source integrated with either one of our mobile SDK's (iOS or Android) or JavaScript library (Analytics.js)

Criteo Events is built to help you track key purchase funnel events and details. To accomplish that, you'll want to track your user's actions using the following spec'd events to ensure you're following Criteo's best practices.

We use the context fields that we capture with our SDKs automatically to populate Criteo Events' tag with the app's name, user's language, locale, userId, deviceType and deviceId so you just need to make sure that the event names and properties match up! Refer to our common fields guide to identify which context fields we collect automatically for each of our client-side libraries (analytics.js, analytics-ios or analytics-android).

Product Viewed

product-viewed page anchor

When a user views a particular product or offering inside your application, you should call our Product Viewed event and we'll map that to Criteo Events' viewProduct tag. You'll need to make sure that the products on your Product List Viewed event have a productId property. As with all our integrations, casing does not matter! Your properties can be camelCase or snake_case, both will work.

1
analytics.track('Product Viewed', {
2
product_id: '507f1f77bc',
3
sku: 'G-32',
4
category: 'Games',
5
name: 'Monopoly: 3rd Edition',
6
brand: 'Hasbro',
7
variant: '200 pieces',
8
price: 18.99,
9
quantity: 1,
10
coupon: 'MAYDEALS',
11
currency: 'usd',
12
position: 3,
13
value: 18.99,
14
url: 'https://www.example.com/product/path',
15
image_url: 'https://www.example.com/product/path.jpg'
16
});

On web, the previous JavaScript example would result in the firing of the following Criteo Events tag:

window.criteo_q.push({ event: 'viewItem', item: '507f1f77bc' })

When a user views a list of products inside your application, you should call our Product List Viewed event and we'll map that to Criteo Events' viewListing tag. Same as above, make sure you have your item's productId or product_id on the event!

1
analytics.track('Product List Viewed', {
2
list_id: 'hot_deals_1',
3
category: 'Deals',
4
products: [
5
{
6
product_id: '1',
7
sku: '45790-32',
8
name: 'Monopoly: 3rd Edition',
9
price: 19,
10
position: 1,
11
category: 'Games',
12
url: 'https://www.example.com/product/path',
13
image_url: 'https://www.example.com/product/path.jpg'
14
},
15
{
16
product_id: '2',
17
sku: '46493-32',
18
name: 'Uno Card Game',
19
price: 3,
20
position: 2,
21
category: 'Games'
22
}
23
]
24
});

On web, the previous JavaScript example would result in the firing of the following Criteo Events tag:

window.criteo_q.push({ event: 'viewList', item: ['1', '2'] })

When a user views their Cart or Order details inside your application, you should call our Cart Viewed event and we'll map that to Criteo Events' viewBasket tag.

You will need to have a products array of product objects in your Segment Cart Viewed event with at least id, price and quantity properties on each product object in that array.

1
analytics.track('Cart Viewed', {
2
cart_id: 'd92jd29jd92jd29j92d92jd',
3
products: [
4
{
5
product_id: '507f1f77bcf86cd799439011',
6
sku: '45790-32',
7
name: 'Monopoly: 3rd Edition',
8
price: 19,
9
position: 1,
10
quantity: 6,
11
category: 'Games',
12
url: 'https://www.example.com/product/path',
13
image_url: 'https://www.example.com/product/path.jpg'
14
},
15
{
16
product_id: '505bd76785ebb509fc183733',
17
sku: '46493-32',
18
name: 'Uno Card Game',
19
price: 3,
20
position: 2,
21
quantity: 2,
22
category: 'Games'
23
}
24
]
25
});

On web, the previous JavaScript example would result in the firing of the following Criteo Events tag:

1
window.criteo_q.push({ event: 'viewBasket', item: [
2
{
3
id: '507f1f77bcf86cd799439011',
4
price: '19',
5
quantity: 6
6
},
7
{
8
id: '505bd76785ebb509fc183733',
9
price: '3',
10
quantity: 2
11
}
12
]})

When a user completes an order or purchase inside your application, you should call our Order Completed event and we'll map that to Criteo Events' trackTransaction tag.

You will need to have a products array of product objects in your Segment Order Completed event with at least id, price and quantity properties on each product object in that array. You also must pass an orderId.

1
analytics.track('Order Completed', {
2
checkout_id: 'fksdjfsdjfisjf9sdfjsd9f',
3
order_id: '098dsf098f',
4
affiliation: 'Google Store',
5
total: 27.50,
6
subtotal: 22.50,
7
revenue: 25.00,
8
shipping: 3,
9
tax: 2,
10
discount: 2.5,
11
coupon: 'hasbros',
12
currency: 'USD',
13
products: [
14
{
15
product_id: '507f1f77bcf86cd799439011',
16
sku: '45790-32',
17
name: 'Monopoly: 3rd Edition',
18
price: 19,
19
quantity: 1,
20
category: 'Games',
21
url: 'https://www.example.com/product/path',
22
image_url: 'https:///www.example.com/product/path.jpg'
23
},
24
{
25
product_id: '505bd76785ebb509fc183733',
26
sku: '46493-32',
27
name: 'Uno Card Game',
28
price: 3,
29
quantity: 2,
30
category: 'Games'
31
}
32
]
33
});

On web, the previous JavaScript example would result in the firing of the following Criteo Events tag:

1
window.criteo_q.push({ event: 'trackTransaction', id: '098dsf098f', currency: 'USD', item: [
2
{
3
id: '507f1f77bcf86cd799439011',
4
price: '19',
5
quantity: 1
6
},
7
{
8
id: '505bd76785ebb509fc183733',
9
price: '3',
10
quantity: 2
11
}
12
]})

This is only relevant if you are using this integration for mobile. For the equivalent on web, see below.

Our Application Opened event will map to Criteo Events' viewHome tag. This event is automatically collected by the latest versions of our SDKs so update if you haven't already!


Criteo Events' viewHome tag tracks top of funnel visits to your site's home page. We integrate with this functionality on web using the use of our .page method.

There are two ways of letting Segment know which .page event should trigger this tag:

  1. You can define the name argument in the .page method as 'Home':
analytics.page('Home')
  1. You can give us the URL of your home page as an integration setting. Reference the settings section for more info.

This functionality is currently only available using our web integration with Criteo. We are working on adding it for mobile.

Criteo Events supports the ability to send extra data with events about a page or user to supply your events with more context (This is a feature that is set up with the assistance of your Crtieo Account Manager).

To enable this functionality, you will need to provide us with the names of the Criteo Events data parameters you would like us to pass along as well as the name of the properties or traits of the Segment .page or .identify events that you would like us to map them from.

This is set up using the Supporting User Data and Supporting Page Data settings in your Criteo Events integration settings. In each of these, you can provide us with a list of key/value mappings designating the name of the Segment property/trait on the left and the corresponding Criteo Events parameter it should map to on the right.

Here is an example of Supporting Page Data:

supporting page data screenshot.

Here is an example of Supporting User Data:

supporting user data screenshot.

Once this is complete, we will do the following:

We will compare the properties of any .page events you invoke with the Supporting Page Data mappings. If a match is found, we will set the values of those properties as the values of Criteo Events data parameters you defined and pass them along with any future events that occur on the page. If you are using this functionality, make sure the .page event is being invoked on the page before any subsequent .track events.

For example, if you set the page event mappings defined above and triggered a page event like this:

analytics.page('Team Page', { team: 'New York Giants' })

And then on that same page triggered one of the .track events documented above (Product Viewed for example) the subsequent Criteo tag would look like this:

window.criteo_q.push({ event: 'viewItem', item: 'PRODUCT-ID', team_page: 'New York Giants' })

Because identify events cache any user traits you've specified in localstorage, we can do a similar lookup as above with the Supporting User Data mappings. If there are any matches, we will pass that data along as their corresponding Criteo data parameters.

For example, if you set the trait mappings defined above and had, at some point, previously triggered an identify event like this:

analytics.identify('userId', { subscriptionStatus: 'trial' })

Any future .track events documented above would have sub_status as an extra data parameter (assuming the user had not cleared their localstorage). Here's the same viewItem event as an example:

window.criteo_q.push({ event: 'viewItem', item: 'PRODUCT-ID', sub_status: 'trial' })

Note: Of course if you later change the user's subscriptionStatus to be a different value using the use of another identify call, the sub_status value will also be updated.

If you make an identify call that has an email trait in the payload, this email is stored as a customer trait. We then include a hashed version of this email in subsequent track calls by pushing the setHashedEmail event to Criteo along with your event. Segment takes care of hashing customer emails for you.

Criteo has multiple data centers to better serve global companies and we will automatically infer from your users' devices which data center to send the data to for you so you don't need to worry about it!


Criteo Events can receive dates in a specific format, in order for us to pass along dates to Criteo, make sure you follow the spec laid out in our Spec


Is the mobile integration bundled?

is-the-mobile-integration-bundled page anchor

Even though we don't support integrating with Criteo Events using Segment from a server source, it's still not necessary for you to bundle the Criteo Events SDK into the Segment SDK! This is because while our mobile integration with them is powered from our servers, the integration requires metadata that can only be supplied by the user's mobile device (which is collected and passed along automatically by the Segment mobile SDK).


Segment lets you change these destination settings from the Segment app without having to touch any code.

Property nameTypeRequiredDescription
Account IDstring
required

Criteo Account ID


Event Mappingsmap

Optional

Specify the events you would like to map to Criteo's OneTag event types(link takes you to an external page). Input your event name (case sensitive) on the left and choose the event type from the dropdown. If you do not define these mappings we will fall back on the default mappings defined in our documentation.


Home Page URLstring

Optional

The full URL of your website's Home page. This settings is only necessary if the path of your home url is not the standard root path (ie. '/'). Navigation to this page will trigger Criteo's viewHome tag.


Supporting Page Datatext-map

Optional

Specify the property names of your Segment page event on the left and the corresponding Criteo data parameter you would like us to map it to on the right. Please reference our documentation for more info on this feature. Please note, this setting is only applicable if you are using our web integration with Criteo which is currently in beta.


Supporting User Datatext-map

Optional

Specify the Segment trait names on the left and the corresponding Criteo data parameter you would like us to map it to on the right. Please reference our documentation for more info on this feature. Please note, this setting is only applicable if you are using our web integration with Criteo which is currently in beta.