Overview
About this Guide
This document provides detailed information on the following:
- Recommended events and parameters
- Deep link implementation
- Testing requirements
Recommended events per vertical
The recommendation is to send all events that describe the “user-flow” in the app. The table below shows the recommended events per vertical :
Event Name | Description | Retail | Travel | Classified | Gaming | Streaming Entertainment | Finance | Dating Social | RideHailing |
---|---|---|---|---|---|---|---|---|---|
app open/app launch | when user install the app | Y | Y | Y | Y | Y | Y | Y | Y |
home page / App open | when user opens the app or arrives on the home page | Y | Y | Y | Y | Y | Y | Y | Y |
view item list / listing | when a user sees list of items/products/offering | Y | Y | Y | Y | Y | |||
view item | when a user sees one specific item/products/offering | Y | Y | Y | Y | Y | Y | ||
add to cart | when a user adds a item/product to the cart | Y | Y | ||||||
basket | when user is on the basket page | Y | Y | ||||||
purchase | when user makes a purchase | Y | Y | Y | Y | Y | Y | ||
add to wish list | when a user adds a item/product to the wish list | Y | Y | ||||||
complete registration / create an account / sign up | when a user creates an account, signs up or completes registration | Y | Y | Y | Y | Y | Y | Y | Y |
login | when a user login | Y | Y | Y | Y | Y | Y | Y | Y |
add payment info | when a user adds payment info | Y | Y | Y | Y | ||||
begin checkout | when a user starts the purchase flow | Y | Y | Y | |||||
purchase cancelled / purchase refund | when a user cancels a purchase or ask for a refund | Y | Y | Y | |||||
generate lead | when a user generates a lead : asks for contact details / sends a message (classified / jobs app, Education, Local Deals, Real Estate) | Y | |||||||
start trial | when a user starts the trial version of the app | Y | Y | Y | Y | ||||
subscribe | when a user subscribes (recurring payment) | Y (subscribe to a prime membership program) | Y | Y | Y | ||||
select item / a user has selected an item | when a user has selected content in an app | Y | Y | ||||||
earn virtual currency | when a user earns virtual currency (Gamin Apps) | Y | |||||||
level up | when a user pass a level (Gaming apps) | Y | |||||||
spend virtual currency/credit | when a user spends virtual currency (Gamin Apps) | Y | |||||||
tutorial begin | when a user starts the tutorial (Gaming app) | Y | |||||||
tutorial complete | when a user completes the tutorial (Gaming app) | Y | |||||||
unlock achievement | when a user unlock an achievement (Gaming app) | Y | |||||||
search | Y | ||||||||
video/audio start or media play | when user starts to play a media in the app (ie music streaming app, video streaming app…) | Y |
View Home
The viewHome event is automatically sent once Criteo has been activated on the app. It is triggered for each new user session.
View Listing
The viewListing event should be triggered on pages displaying product lists like a category page or a search results page. For products, you must include the IDs of the top three products displayed in the list. These IDs must match to those passed in the catalog feed.
Use the following code snippet to implement:
AdjustEvent event = new AdjustEvent("{viewListingEventToken}");
List<String> productIds = Arrays.asList("productId1", "productId2", "productId3");
event.addPartnerParameter("products", productIds.toString());
Adjust.trackEvent(event);
View Product
The viewProduct event should be triggered on all product-details pages. You must include the ID of the product detailed on the page. It must be the same ID as used in the catalog feed, and must be unique.
Use the following code snippet to implement:
AdjustEvent event = newAdjustEvent("{viewProductEventToken}");
event.addPartnerParameter("product", "productId1");
Adjust.trackEvent(event);
View Basket
The viewBasket event should be triggered on the basket-details pages. The basket tracker should be installed on your basket-details pages. You must include the IDs, prices, and quantities of the basket’s products.
AdjustEvent event = newAdjustEvent("{cartEventToken}");
List<String> productIds = Arrays.asList("productId1","productId2","productId3");
List<String> productPrice = Arrays.asList("200","2500","1200");
List<String> productQuantity = Arrays.asList("1","2","3");
event.addPartnerParameter("productids", productIds.toString());
event.addPartnerParameter("productPrice", productPrice.toString());
event.addPartnerParameter("productQuantity", productQuantity.toString());
Adjust.trackEvent(event);
Track Transaction
The trackTransaction event should be triggered on order confirmation pages after checkout.
You must include a unique transaction ID as well as the IDs, prices, and quantities of the products bought in the transaction.
You may send an optional parameter “nc” (new customer) through the transaction event as the last parameter in the method call. It should indicate whether the purchase is done by a new or existing customer. It should equal 1 if new customer, 0 if existing customer, and left blank if unknown or unavailable.
Use the following code snippet to implement:
AdjustEvent event = newAdjustEvent("{transactionConfirmedEventToken}");
List<String> productIds = Arrays.asList("productId1","productId2","productId3");
List<String> productPrice = Arrays.asList("200","2500","1200");
List<String> productQuantity = Arrays.asList("1","2","3");
event.addPartnerParameter("productids", productIds.toString());
event.addPartnerParameter("productPrice", productPrice.toString());
event.addPartnerParameter("productQuantity", productQuantity.toString());
event.addPartnerParameter("transactionId", "1");
event.addPartnerParameter("currency", "AUD");
event.addPartnerParameter("setRevenue", "1.1");
Adjust.trackEvent(event);
Dates for Travel
It’s possible to attach check-in and check-out dates to every Criteo event with the injectViewSearchDatesIntoCriteoEventsmethod. The format of the dates is “yyyy-mm-dd”. It has to be set every time a user enters new search dates, for example:
event.addPartnerParameter("din", "2020-01-01");
event.addPartnerParameter("dout", "2020-01-07");
The dates will be sent with every Criteo event for the duration of the application
lifecycle, so it must be set again when the app is re-launched.
The search dates can be removed by setting the
injectViewSearchDatesIntoCriteoEventsdates
to null.
Hashed Email for cross-device targeting
Clients have the option of sending Criteo the email address of app users when available. This will enable the cross-device Criteo targeting feature.
event.addPartnerParameter("criteo_email_hash", "72626798128bhbh283y2");
The hashed email will be sent with every Criteo event for the duration of the application lifecycle, so it must be set again when the app is relaunched.
The hashed email can be removed by setting the value to an empty string.
event.addPartnerParameter("criteo_email_hash", "");
Following are the steps to generate a hashed email address for Criteo:
- Convert all characters to lower case
- Remove any blank spaces
- Covert to UTF-8
- Hash using SHA256 algorithm
Customer ID
A Customer ID can be provided in all events, it is the last argument of each plugin method. If the user is logged-in in the advertiser’s app, the user ID should be passed.
Customer ID can be any string, as long as it does not contain any Personally Identifiable Information.
Send the Customer ID along with any Adjust event by calling:
event.addPartnerParameter("customer_id", "12323dsvhdsb23");
Testing Process
You should contact Criteo to start the testing phase as soon as the events are implemented.
Criteo will require the following elements:
- App build to test the collection of events on Criteo side.
- It is recommended to set the Sandbox environment and the logs level to verbose on your app as shown:
public class YourApplicationClass extends Application {
@Override
public void onCreate() {
super.onCreate();
String appToken = "{YourAppToken}";
String environment = AdjustConfig.ENVIRONMENT_SANDBOX;
AdjustConfig config = new AdjustConfig(this, appToken, environment);
config.setLogLevel(LogLevel.VERBOSE);
Adjust.onCreate(config);
}
}