Skip to main content

Capture online store intent with Criteo OneTag

Overview

There are several events or pages on your website which can provide useful physical store intent signals, which through Criteo OneTag, we can use to enhance performance of your store campaigns. 

Please see below the different store intent signals that you are likely to have available on your website, along with detailed configuration of Criteo OneTag to start tracking these events.  

We strongly advise that you implement all scenarios that are relevant to your site to maximize the performance of your store campaigns.

1.1 - 'Recommended' or 'Favorite' Store 

A 'recommended' store provided by an algorithm based on a shopper's location (where permission has been granted), or a 'favorite' store specifically registered by the shopper, provide strong intent signals of the physical store they prefer to visit.

If you have these capabilities on your website, these events should be added in all events across your site:

  • Homepage event

  • Product page event

  • Search page event

  • Basket page event

  • Transaction conclusion page event

  • Search page event

NB: If both 'recommended' and 'favorite' store are available, always prefer the 'favorite' store.

1.1.1 Script for 'recommended' or 'favorite' store events

<script type="text/javascript" src="//dynamic.criteo.com/js/ld/ld.js?a=YOUR_PARTNER_ID" async="true"></script>  <script type="text/javascript">    window.criteo_q = window.criteo_q || [];    window.criteo_q.push(      { event: "setAccount", account: YOUR UNIQUE ACCOUNT ID },      { event: "setSiteType", type: "m FOR MOBILE OR t FOR TABLET OR d FOR DESKTOP" },      { event: "setEmail", email: "TRIMMED AND LOWERCASE USER EMAIL ADDRESS" },               { event: "viewHome"},      { event: "setZipcode", zipcode: "STORE ZIPCODE" },      { event: "setStore", store_id: "STORE ID" }    );  </script>

 

2.1 Store Locator main page or search page

There are several formats of Store Locator pages that you may have on your site:

  • Store Locator main page

  • Store Locator search page

  • Store Locator listing page

  • Store Locator search result page

Please see below the events that need to be added to these pages.

2.1.1 Script for Store Locator main page or search page

Whenever (and only when) a shopper accesses the Store Locator main page or search page the following event should be added to the OneTag:

<script type="text/javascript" src="//dynamic.criteo.com/js/ld/ld.js?a=YOUR_PARTNER_ID" async="true"></script>  <script type="text/javascript">    window.criteo_q = window.criteo_q || [];    window.criteo_q.push(      { event: "setAccount", account: YOUR UNIQUE ACCOUNT ID },      { event: "setSiteType", type: "m FOR MOBILE OR t FOR TABLET OR d FOR DESKTOP" },      { event: "setEmail", email: "TRIMMED AND LOWERCASE USER EMAIL ADDRESS" },      { event: "viewStore", user_segment: 18 }    );  </script>

 

2.1.2 Script for Store Locator listing or search result page

If your Store Locator page provides a search functionality, then add the following event to the Criteo OneTag to pass us the result of the search operation by providing the store IDs in the store_id array.

If the search criterion is a postal code, then include it in the zip_code array.

<script type="text/javascript" src="//dynamic.criteo.com/js/ld/ld.js?a=YOUR_PARTNER_ID" async="true"></script>  <script type="text/javascript">    window.criteo_q = window.criteo_q || [];    window.criteo_q.push(      { event: "setAccount", account: YOUR UNIQUE ACCOUNT ID },      { event: "setSiteType", type: "m FOR MOBILE OR t FOR TABLET OR d FOR DESKTOP" },      { event: "setEmail", email: "TRIMMED AND LOWERCASE USER EMAIL ADDRESS" },      { event: "viewStore", store_id: ["FIRST STORE ID", "SECOND STORE ID" /* add a Store ID for each store in the list */], zipcode: "SEARCH ZIPCODE", user_segment: 18}    );  </script>

 

3.1 Store detail page

Whenever the detail page of a specific store is viewed, the event must be captured.

3.1.1 Script for store detail page

<script type="text/javascript" src="//dynamic.criteo.com/js/ld/ld.js?a=YOUR_PARTNER_ID" async="true"></script>  <script type="text/javascript">    window.criteo_q = window.criteo_q || [];    window.criteo_q.push(      { event: "setAccount", account: YOUR UNIQUE ACCOUNT ID },      { event: "setSiteType", type: "m FOR MOBILE OR t FOR TABLET OR d FOR DESKTOP" },      { event: "setEmail", email: "TRIMMED AND LOWERCASE USER EMAIL ADDRESS" },      { event: "viewStore", store_id: "STORE ID", zipcode: "STORE ZIPCODE", user_segment: 18 }    );  </script>   

NB: 'Zipcode' is the postal code of the specific store identified in the 'store_id' field.

 

4.1 Reserve a product in-store

If your website has the capability to allow shoppers to reserve products in-store, without purchasing in advance, the following event must be defined inside the Criteo OneTag.

4.1.1 Script for product reservation

<script type="text/javascript" src="//dynamic.criteo.com/js/ld/ld.js?a=YOUR_PARTNER_ID" async="true"></script>   <script type="text/javascript">     window.criteo_q = window.criteo_q || [];     window.criteo_q.push(               { event: "setAccount", account: YOUR UNIQUE ACCOUNT ID },               { event: "setSiteType", type: "m FOR MOBILE OR t FOR TABLET OR d FOR DESKTOP" },           { event: "setEmail", email: "TRIMMED AND LOWERCASE USER EMAIL ADDRESS" },      { event: "reserveInStore", item: [        { id: "FIRST PRODUCT ID", quantity: FIRST PRODUCT QUANTITY, price: "FIRST PRODUCT PRICE" },        { id: "SECOND PRODUCT ID", quantity: SECOND PRODUCT QUANTITY, price: "SECOND PRODUCT PRICE" },        /* add a line for each product to be reserved */],      zipcode: "STORE ZIPCODE", store_id: "STORE ID", user_segment: 18 }    );  </script>

 

NB: 'Zipcode' is the postal code of the specific store identified in the 'store_id' field.

5.1 Click & Collect

Where you have 'Click & Collect' functionality on your site, the 'trackTransaction' event in Criteo OneTag should be configured as below.

5.1.1 Script for Click & Collect

<script type="text/javascript" src="//dynamic.criteo.com/js/ld/ld.js?a=YOUR_PARTNER_ID" async="true"></script>   <script type="text/javascript">     window.criteo_q = window.criteo_q || [];     window.criteo_q.push(               { event: "setAccount", account: YOUR UNIQUE ACCOUNT ID },               { event: "setSiteType", type: "m FOR MOBILE OR t FOR TABLET OR d FOR DESKTOP" },           { event: "setEmail", email: "TRIMMED AND LOWERCASE USER EMAIL ADDRESS" },      { event: "trackTransaction", id: "TRANSACTION ID", delivery: "store", store_id: "THE STORE ID", zipcode: "STORE ZIPCODE", user_segment: 18, item: [         { id: "FIRST PRODUCT ID",  price: FIRST PRODUCT UNIT PRICE,  quantity: FIRST PRODUCT QUANTITY },        { id: "SECOND PRODUCT ID", price: SECOND PRODUCT UNIT PRICE, quantity: SECOND PRODUCT QUANTITY }                                                                      /* add a line for each product in the user's basket */   ]});   </script> 


NB: The 'delivery' parameter should be set to 'store'.  The 'zipcode' is the postal code of the specific store identified in the "store_id" field.

6.1 Check availability in-store

The 'checkAvailability' event should be specified in the Criteo OneTag each time a user uses the 'check availability in store' functionality on your site. 

If the feature makes use of a search by postal code then you should specify the postal code in the 'zipcode' parameter and the IDs of the result of the search in the 'store_ids' parameter.

6.1.1 Script for 'check availability in-store'

<script type="text/javascript" src="//dynamic.criteo.com/js/ld/ld.js?a=YOUR_PARTNER_ID" async="true"></script>  <script type="text/javascript">     window.criteo_q = window.criteo_q || [];     window.criteo_q.push(               { event: "setAccount", account: YOUR UNIQUE ACCOUNT ID },               { event: "setSiteType", type: "m FOR MOBILE OR t FOR TABLET OR d FOR DESKTOP" },      { event: "setEmail", email: "TRIMMED AND LOWERCASE USER EMAIL ADDRESS" },      { event: "checkAvailability", item: {id: "PRODUCT ID"}, zipcode: "STORE ZIPCODE", store_id: ["FIRST STORE ID", "SECOND STORE ID" /* add a Store ID for each store */], user_segment: 18 }   );  </script>

NB: 'Zipcode' is the postal code of the specific store identified in the 'store_id' field.

7.1 A note about the collection of zip codes

All the zip codes collected by Criteo are manipulated and stored in respect of the GDPR and the general PII best practices.