> ## Documentation Index
> Fetch the complete documentation index at: https://developers.criteo.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Criteo Integration With AppsFlyer

> Set up your Criteo App campaigns (App Install or App Retargeting) with AppsFlyer.

## Overview

This page will guide you in setting up your Criteo App campaign(s) with AppsFlyer, either App Install or App Retargeting campaigns.

## Dashboard Configuration

<Note>
  Keep in mind that the following settings are Criteo's recommendations but the ultimate goal is to match the options you want to take into account for your setup!
</Note>

### App Settings

Under **Settings** > **App Settings**, please follow these steps:

1. **Enable view-through attribution via probabilistic modeling**
2. Enable **Re-engagement attribution**
   * When enabled, AppsFlyer can attribute users who already have the app installed to a retargeting campaign if they engage with the campaign and then return to the app.
3. Leave default option **None** for **Minimum time between re-engagement conversions**
   * On re-engagement a window opens to attribute re-engagement in-app events to the retargeting network. This helps you to measure the effectiveness of retargeting campaigns. However, if another network brings a new re-engagement during this window, it replaces the last re-engagement, and all subsequent events are attributed to the new network. By using the **Minimum time between re-engagement conversions** set to **none**, you can stop this from occurring. You can find more information [here](https://support.appsflyer.com/hc/en-us/articles/207033786-Retargeting-attribution-guide#exclusion-windows).
4. Hit **Save settings**

<Frame>
  <img src="https://mintcdn.com/criteo-e1682996/_Y5ppJi5blUNBSuu/images/mobile-integrations/appsflyer/appsflyer_app_settings_saved.png?fit=max&auto=format&n=_Y5ppJi5blUNBSuu&q=85&s=4f66ce4f3700e9799691b008fa977c8e" alt="Image" width="908" height="446" data-path="images/mobile-integrations/appsflyer/appsflyer_app_settings_saved.png" />
</Frame>

<Warning>
  In a case where **Re-engagement attribution** is left disabled, Criteo won't have any in-app conversions/sales attributed to our Retargeting campaigns.
</Warning>

### Partner Configuration

To proceed with Criteo-specific configurations:

1. Navigate to **Collaborate** > **Partner Integrations** > **Marketplace** and search for **Criteo**
2. Select **Integrate**
   <Frame>
     <img src="https://mintcdn.com/criteo-e1682996/_Y5ppJi5blUNBSuu/images/mobile-integrations/appsflyer/appsflyer_marketplace_integrate.png?fit=max&auto=format&n=_Y5ppJi5blUNBSuu&q=85&s=4bc1728f63ff85b744334e284b5b4ca4" alt="Image" width="806" height="504" data-path="images/mobile-integrations/appsflyer/appsflyer_marketplace_integrate.png" />
   </Frame>
3. You will be automatically redirected to the **Integration** tab, where you should switch on the toggle **Activate partner**
   <Frame>
     <img src="https://mintcdn.com/criteo-e1682996/_Y5ppJi5blUNBSuu/images/mobile-integrations/appsflyer/appsflyer_activate_partner_toggle.png?fit=max&auto=format&n=_Y5ppJi5blUNBSuu&q=85&s=11effec9b0eb989880e2decdea3db018" alt="Image" width="1024" height="602" data-path="images/mobile-integrations/appsflyer/appsflyer_activate_partner_toggle.png" />
   </Frame>
4. \[Optional] **Install view-through attribution**
   * Set to **OFF** by default. Enable ONLY if you consider Install view-through attribution. It attributes installs to a media source after the user sees an impression. You can find more information [here](https://support.appsflyer.com/hc/en-us/articles/210084473-Measure-view-through-engagements).
5. \[Optional] **Re-engagement view-through attribution**
   * Set to **OFF** by default. Enable ONLY if you consider Re-engagement view-through attribution. It determines whether a retargeting partner can receive credit when a user sees a retargeting ad (but does not click it) and later opens or engages with the app. When it is **off**, AppsFlyer requires a click for re-engagement attribution.
   <Frame>
     <img src="https://mintcdn.com/criteo-e1682996/_Y5ppJi5blUNBSuu/images/mobile-integrations/appsflyer/appsflyer_reengagement_vta_disabled.png?fit=max&auto=format&n=_Y5ppJi5blUNBSuu&q=85&s=ad07b69a58bc15f516bcc6e32ee5133d" alt="Image" width="678" height="476" data-path="images/mobile-integrations/appsflyer/appsflyer_reengagement_vta_disabled.png" />
   </Frame>
6. **Default postbacks** — Defines the sources of users sending postbacks. You can find more info [here](https://support.appsflyer.com/hc/en-us/articles/4410395957521-Set-up-an-integrated-partner#default%20postbacks).
   * **Install: All media sources, including organic**
     * To share with Criteo the full MMP install stream (including installs not attributed to Criteo) in order to perform troubleshooting and discrepancy analysis. Criteo knows from the postbacks which ones are attributed to it and which ones are not.
   * **Rejected Install: This partner only**
     * It is a separate rejected-events / fraud-quality stream, not the general install stream. Keeping it partner only means Criteo receives its own rejected installs for fraud/troubleshooting, rather than all rejected installs from every media source.
   * **Re-engagement: This partner only**
     * AppsFlyer sends re-engagement postbacks only when Criteo is credited for the re-engagement.
   <Frame>
     <img src="https://mintcdn.com/criteo-e1682996/_Y5ppJi5blUNBSuu/images/mobile-integrations/appsflyer/appsflyer_default_postbacks_settings.png?fit=max&auto=format&n=_Y5ppJi5blUNBSuu&q=85&s=ac4efcc00206a87e1e7144234a3fc2fd" alt="Image" width="2046" height="562" data-path="images/mobile-integrations/appsflyer/appsflyer_default_postbacks_settings.png" />
   </Frame>
7. To configure the Criteo postbacks, set **In-App Events Postbacks** to **ON**:
   * Set **In-App Events Postback Window** to **Lifetime**, so that Criteo can receive postbacks from <u>all active app users</u>
   * Map all relevant **AppsFlyer events** to **CriteoData**
   * As sending option, select **All media sources, including organic**
   * Include **Values & revenue** to forward all available event parameters
   * **Save** the integration
   <Frame>
     <img src="https://mintcdn.com/criteo-e1682996/_Y5ppJi5blUNBSuu/images/mobile-integrations/appsflyer/appsflyer_inapp_postbacks_enabled.png?fit=max&auto=format&n=_Y5ppJi5blUNBSuu&q=85&s=22c42dafa58a51060efef8404b072787" alt="Image" width="1532" height="978" data-path="images/mobile-integrations/appsflyer/appsflyer_inapp_postbacks_enabled.png" />
   </Frame>

<Note>
  Please see the section [Recommended Events per Vertical](#recommended-events-per-vertical) below for the list of recommended events per vertical.
</Note>

### Criteo Permissions

Under the **Permissions** tab, it is highly recommended to:

1. Enable **Ad Network Permissions** for Criteo to see your app in the dashboard
2. Grant, at least, the following permissions to the Criteo team:
   * Configure integration
   * Configure In-app event postbacks
   * Access retention report
   * Access aggregated conversion data
   * Access aggregate in-app events data
3. Please don't forget to **Save**.

<Note>
  Allowing Criteo to configure the integration and in-app event postbacks can increase the efficiency in the partner setup and allow quicker troubleshooting.
</Note>

<Frame>
  <img src="https://mintcdn.com/criteo-e1682996/_Y5ppJi5blUNBSuu/images/mobile-integrations/appsflyer/appsflyer_permissions_network_access.png?fit=max&auto=format&n=_Y5ppJi5blUNBSuu&q=85&s=6256a543d736960fa4d111c803870c31" alt="Image" width="2164" height="1958" data-path="images/mobile-integrations/appsflyer/appsflyer_permissions_network_access.png" />
</Frame>

## Tracking in AppsFlyer

### Tracking Generation

Under the **Attribution Link** tab, generate the **Click Tracking Link** and send it to your Criteo contact.

Some typical settings:

* Add campaign name

<Frame>
  <img src="https://mintcdn.com/criteo-e1682996/_Y5ppJi5blUNBSuu/images/mobile-integrations/appsflyer/appsflyer_attribution_link_campaign_name.png?fit=max&auto=format&n=_Y5ppJi5blUNBSuu&q=85&s=de74fc74747fd71dbbc8307725d282b8" alt="Image" width="2370" height="1672" data-path="images/mobile-integrations/appsflyer/appsflyer_attribution_link_campaign_name.png" />
</Frame>

* Enable **Retargeting settings** (if applicable)
  * Provide **URI scheme** deeplink
  * Leave **Ignore active users for retargeting** OFF (recommended)
    * This is a retargeting setting that determines whether users who are already active in your app can be counted as retargeting conversions. When set to **OFF**, AppsFlyer does not exclude active users. This means an active user can still be attributed to a retargeting campaign if they engage with a retargeting ad and meet the attribution criteria.
  * Define **Re-engagement window**
    * The re-engagement window is the period of time after a user interacts with a retargeting ad during which subsequent app opens and in-app events can be attributed to that retargeting campaign.

<Frame>
  <img src="https://mintcdn.com/criteo-e1682996/_Y5ppJi5blUNBSuu/images/mobile-integrations/appsflyer/appsflyer_attribution_link_retargeting_settings.png?fit=max&auto=format&n=_Y5ppJi5blUNBSuu&q=85&s=79bf973c35cdf3c3ded98d012d5b4f2e" alt="Image" width="2372" height="818" data-path="images/mobile-integrations/appsflyer/appsflyer_attribution_link_retargeting_settings.png" />
</Frame>

* Define **Click-through attribution** (recommended **7 days**)
  * Credits installs to the media source when users click an ad.
* Define **View-through attribution** (recommended **24 hours**)
  * Attributes installs to a media source after a user sees an ad impression but doesn't click.
* Hit **Save Attribution link** and share with your Criteo contact the generated links

<Frame>
  <img src="https://mintcdn.com/criteo-e1682996/_Y5ppJi5blUNBSuu/images/mobile-integrations/appsflyer/appsflyer_attribution_link_windows.png?fit=max&auto=format&n=_Y5ppJi5blUNBSuu&q=85&s=d19dd5e13468889443adec974231adf9" alt="Image" width="2368" height="1530" data-path="images/mobile-integrations/appsflyer/appsflyer_attribution_link_windows.png" />
</Frame>

## 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 installs 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 an 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 an 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 logs in                                                | 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 asks for a refund                | Y      | Y      |            |        |                         |         |               | Y           |
| generate lead                                       | when a user generates a lead                                       |        |        | 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      |        |            |        | Y                       | Y       | Y             |             |
| select item                                         | when a user has selected content in an app                         |        |        |            | Y      |                         |         |               | Y           |
| earn virtual currency                               | when a user earns virtual currency                                 |        |        |            | Y      |                         |         |               |             |
| level up                                            | when a user passes a level                                         |        |        |            | Y      |                         |         |               |             |
| spend virtual currency/credit                       | when a user spends virtual currency                                |        |        |            | Y      |                         |         |               |             |
| tutorial begin                                      | when a user starts the tutorial                                    |        |        |            | Y      |                         |         |               |             |
| tutorial complete                                   | when a user completes the tutorial                                 |        |        |            | Y      |                         |         |               |             |
| unlock achievement                                  | when a user unlocks an achievement                                 |        |        |            | Y      |                         |         |               |             |
| search                                              |                                                                    |        | Y      |            |        |                         |         |               |             |
| video/audio start or media play                     | when user starts to play media in the app                          |        |        |            |        | Y                       |         |               |             |

## Adding Additional In-App Events

In case you need to create or modify in-app events, please see the iOS and Android guides for how to implement them in your app:

* [AppsFlyer iOS](/mobile-integrations/docs/appsflyer-ios)
* [AppsFlyer Android](/mobile-integrations/docs/appsflyer-android)

## Additional Features

### Cost Data

Criteo has the ability to share Cost Data from our campaigns with AppsFlyer.

This feature is currently available only for accounts with **AppsFlyer ROI360** and, if this is your case, the activation is very simple:

1. Select the **Cost** tab under our integration module
2. If available, enable the checkbox **Get cost data**
3. Hit **Save Cost** to confirm the change

<Frame>
  <img src="https://mintcdn.com/criteo-e1682996/_Y5ppJi5blUNBSuu/images/mobile-integrations/appsflyer/appsflyer_cost_data_enabled.png?fit=max&auto=format&n=_Y5ppJi5blUNBSuu&q=85&s=5683fec16b263624003bf802e04ffdee" alt="Image" width="1306" height="508" data-path="images/mobile-integrations/appsflyer/appsflyer_cost_data_enabled.png" />
</Frame>

The data is synchronized 2x per day and populates the cost of all your app campaigns in AppsFlyer dashboards, enabling other cost-dependent metrics like Avg eCPI, ROI, etc.

For more info, check: [AppsFlyer ROI360 cost aggregation overview](https://support.appsflyer.com/hc/en-us/articles/207040526-ROI360-cost-aggregation-overview)

### Audiences

Criteo is connected with [AppsFlyer Audiences](https://www.appsflyer.com/products/audiences/), which allows our platform to receive and work with your audiences seamlessly with our campaigns.

If this feature is available in your AppsFlyer plan and you already have Audiences built, follow the steps below to create an outgoing connection with our Criteo Commerce Growth platform:

1. Under **Engage** > **Audiences** > **Connections**, click in **+ New Connection**
2. Search for **Criteo** in **Partner name**
3. Define an arbitrary **Connection name** of your choice

<Frame>
  <img src="https://mintcdn.com/criteo-e1682996/_Y5ppJi5blUNBSuu/images/mobile-integrations/appsflyer/appsflyer_audiences_new_connection.webp?fit=max&auto=format&n=_Y5ppJi5blUNBSuu&q=85&s=7570c3ac1e264779a5377eb681697375" alt="Image" width="1728" height="846" data-path="images/mobile-integrations/appsflyer/appsflyer_audiences_new_connection.webp" />
</Frame>

4. Click on **Log in with Criteo**
   * With it, you'll be redirected to a Criteo page where you can review the permissions for AppsFlyer's API app to access your account on Criteo platform
     * *Audience*: `Manage` access, to create/update audiences in our Criteo account on your behalf
     * *Analytics*: `Read` access, to read statistics about your campaigns and enrich AppsFlyer dashboard
     * *Campaign*: `Read` access, to read your campaigns status
   * Under **Portfolio access**, make sure to **Select all entities** to allow AppsFlyer to access all your advertisers accounts (if applicable)
   * **Approve** it!

<div style={{ width: "65%", margin: "0 auto" }}>
  <Frame>
    <img src="https://mintcdn.com/criteo-e1682996/_Y5ppJi5blUNBSuu/images/mobile-integrations/appsflyer/appsflyer_audiences_consent_dialog.webp?fit=max&auto=format&n=_Y5ppJi5blUNBSuu&q=85&s=1e225f86560db23d26986e39ae119d8e" alt="Image" width="1280" height="1316" data-path="images/mobile-integrations/appsflyer/appsflyer_audiences_consent_dialog.webp" />
  </Frame>
</div>

5. Back to the previous screen, make sure to select all **User Identifiers** available: *IDFA*, *GAID*, *Email*, etc.
6. **Save** it to complete the connection creation!

For more info, check: [AppsFlyer Audiences](https://support.appsflyer.com/hc/en-us/sections/6551336428945-Audiences)

### Agency-Managed Setups

AppsFlyer allows agency teams to manage app marketing campaigns on behalf of marketer clients (app owners) with different ad networks and have their data/measurement shared between all the entities.

For those setups to work seamlessly for the client, agency, and Criteo, it's very important to follow the instructions below:

1. **Our integration module needs to be configured by an Agency user**, not users connected to the app-owner team (described in section [Partner Configuration](#partner-configuration) above)
   * Even if the module is already pre-configured by the app owner, an agency user is required to repeat the module setup to ensure that the postbacks sent to Criteo are sent respecting the attribution settings made to your agency account.
2. **The ad trackings need to include the correct Agency ID** (`af_prt` parameter — case-sensitive) on both click and impression trackings, if applicable.
   * `af_prt` stands for Agency Partner ID (or agency account identifier). It's a parameter added to attribution links to indicate that the traffic is being managed by a specific agency account rather than directly by the advertiser.
   * If the integration module is correctly enabled by the agency, your respective `af_prt` parameter will be automatically included during the [Tracking Generation](#tracking-generation).
3. **Your Agency ID needs to be included in Criteo's list of authorized agencies** before the launch of the campaign(s)
   * If you believe it's the first time Criteo and your Agency is running campaigns with AppsFlyer, make sure to ask your Criteo contact to add your Agency ID to our allowlist.

<Warning>
  Not following one of the points above might lead to incorrect attribution from AppsFlyer to our campaigns, which will directly impact the results measured on both platforms.
</Warning>

For more info, check: [About agency accounts](https://support.appsflyer.com/hc/en-us/articles/207034106-About-agency-accounts)

## Products Catalog for Dynamic Campaigns

A catalog feed is an XML or a CSV file containing product information (name, price, deep link, image link, etc.) that allows Criteo to dynamically generate the product-recommendation banners. Therefore, it is important to keep this file up to date for Criteo to show the right data in your banners.

<Tip>
  Criteo may already have the products catalog in some cases (i.e., advertisers already live on web campaigns).
</Tip>

Criteo **recommends** to have both Native Deeplinks (aka "URI Scheme" links) and Universal/App Links whenever possible.

For more information, please follow [AppsFlyer's deep linking guide](https://www.appsflyer.com/resources/guides/deep-linking-for-mobile-marketers/).
