Installer et configurer correctement Adjust sur son app

Vous avez longtemps boudé l’app tracking, et qui pourrait vous en vouloir ? Maintenir une implé TagCo + Tarteaucitron sur un WordPress codé par un stagiaire en 2017, dont les 43 plugins attendent une mise à jour depuis la découverte de l’Amérique reste plus simple qu’un setup app tracking cohérent.
Mais voilà qu’un lundi matin, votre CMO, tout juste sorti d’un webinar intitulé « L’app, le canal de 2027 », vous demande de tracker une app pour demain parce que “Avec l’IA, ça doit bien être facile, non?”.
Bonne nouvelle quand même : c’est pour ça qu’on a inventé les MMP. Sans eux, il faudrait intégrer à la main le SDK de Meta, celui de Google, celui de TikTok et celui de la régie que Christian a découverte lors de son dernier salon, chacun avec sa doc, ses mises à jour et ses humeurs, puis expliquer à votre dev iOS pourquoi l’app pèse maintenant 340 Mo. Avec un MMP comme Adjust, un seul SDK attribue les installs et renvoie les conversions à tout ce petit monde : la charge baisse drastiquement. Reste à bien l’installer et à bien le configurer, et c’est précisément ce que je vous montre dans cet article.
📌
Si vous avez déjà installé et configuré Adjust comme un pro (et je n’en doute pas) vous pouvez consulter la liste des articles Adjust réunis dans ce hub : On va parler de choses un peu plus avancées là-bas.
App tracking avec Adjust ,Guide completApp tracking avec Adjust ,Guide complet
Pour les autres, on attaque.

Sommaire :


Adjust, c’est quoi exactement ?

Image without caption
Image without caption
Je pars du principe que vous savez déjà plus ou moins ce que c’est donc je vais la faire courte : Adjust est un MMP (Mobile Measurement Partner). Son métier : répondre à une seule question, « d'où vient cet utilisateur ? », puis partager la réponse avec les régies. Rapports, anti-fraude, SKAN, alertes : tout le reste se construit autour.
Et je vais debunk tout de suite la question que vous vous posez :
📌
NON. Bien sûr que non ! Évidemment que non. Adjust ne remplacera pas votre outil Analytics. Au contraire il est complémentaire.
Le MMP dit d'où viennent vos utilisateurs, l'outil d'analytics ce qu'ils font dans l'app. Et comme vous êtes les meilleurs, vous faites un export de vos données Analytics dans un Data Warehouse. Comme ça, vous pouvez réconcilier la source Analytics et Adjust. Voici un récap de ce que les outils répondent en fonction de votre besoin :
Besoin
MMP (Adjust)
Outil d'analytics (GA4/Firebase, Piano, Amplitude…)
Attribuer une install à une campagne Meta, TikTok, Apple Ads…
Oui, c'est son métier
Limité : hors de son écosystème, il s'appuie souvent sur un MMP
Renvoyer installs et events aux régies
Oui, via les postbacks
Partiel (GA4 vers Google Ads, par exemple mais uniquement pour Google)
Analyser les parcours et l'engagement in-app
Basique (sessions, rétention)
Oui, c'est son métier
Modèle e-commerce structuré (items, funnel)
Non
Oui, le plus souvent
Exporter la donnée brute
Callbacks en temps réel, exports cloud horaires
Selon l'outil (export BigQuery natif pour GA4)
Maintenant que vous savez tout, on peut commencer à rentrer dans l’interface.

Étape 0 - Les prérequis

📱
Une App prête à l’emploi : On ne fait pas d’app tracking sans app, comme on ne lance pas le barbecue du team building sans que Didier de la compta ait ramené les merguez.
💻
Avoir un dev à côté de soi, consentant si possible (de toute façon si vous aviez fait un ticket il n’a pas d’excuse).
🔑
Avoir un compte Adjust : Choisissez votre plan qui vous convient le mieux ici : Choose your plan! | Adjust Pricing, Products & Features | Adjust
🧠
Un bon vieux LLM si vous avez des doutes sur votre setup ça sert toujours de nos jours..

Étape 1 - Créer l’app dans Adjust

Une fois dans l’interface, dans App View > New App
Vous renseignez le nom de votre app, la devise, et très important si votre app n’est pas commercialisée dans la zone européenne, il faut que vous cochiez cette case.
ℹ️
En faisant ça, Adjust va envoyer de la donnée Consent Mode Opt-in par défaut à Google.
Pour la suite de l’article, je vais considérer que votre app est commercialisée en Europe (je m’excuse donc aux milliers de bots singapouriens qui vont lire cet article). Donc pour vous, bien évidemment, vous laissez cette case décochée.
Image without caption

Renseigner la plateforme de son app

Là on rentre dans votre première décision à prendre : Une app par plateforme, ou une app multi-plateforme ? Elle conditionne tout le mapping d'events, de partner,…
🌐
Multi-plateforme : un seul app token, les mêmes tokens d'events et de liens pour iOS et Android, et des liens qui redirigent automatiquement vers le bon store.
🧩
Une app par plateforme : deux app tokens et deux jeux de tokens d'events.
Adjust recommande une app par plateforme mais moi je n’ai pas trop d’avis tranché là-dessus. Selon moi si vous êtes dans ces cas :
“Mes environnements sont cloisonnés (équipes iOS et Android séparées) et/ou l’app est différente sur iOS que sur Android” → Une app par plateforme
“L’app est la même partout (Flutter ou React Native), avec un seul plan de taggage, et on est trois dans l’équipe” → Multi-plateforme
“Je ne veux pas me compliquer la vie dans le setup” → Multi-plateforme
“Je veux les rapports les plus cohérents et les plus faciles à analyser” → Une app par plateforme
Image without caption
Une fois que la plateforme et le store correspondant sont connectés, il vous faut vous munir de votre cher dev parce que vous allez avoir besoin de son aide pour la suite.

Étape 2 - Intégrer le SDK dans l’app

Après trois relances Slack, deux tickets Jira passés en « critique » et un rougail payé de votre poche au food truck du coin, votre dev est à présent à vos côtés, vous pouvez donc lui faire installer le SDK Adjust.
ℹ️
Tous les SDK sont passés en v5 (5.8.0 pour iOS et Android au moment où j'écris ces lignes). Si vous héritez d'un projet en v4, vérifiez la version installée avant de copier-coller quoi que ce soit.

iOS

Fournissez-lui cette doc il saura parfaitement comment l’intégrer. (doc iOS).
💡
Trois choses à savoir cependant sur le v5 :
  • la version minimale supportée est iOS 12 ;
  • le module s'appelle désormais AdjustSdk (c'était Adjust en v4), d'où le import AdjustSdk ;
  • la signature library est intégrée nativement : si vous migrez depuis le v4, la doc demande de désinstaller l'ancienne d'abord.
Ajoutez aussi les frameworks Apple, marqués en optionnel : AdServices (attribution Apple Ads), AdSupport (accès à l'IDFA), AppTrackingTransparency (popup ATT) et StoreKit (SKAN).

Android

Pareil, voici la doc à fournir pour Android (doc Android) :
⚠️
Attention. La deuxième dépendance est systématiquement oubliée. Sans elle, Adjust ne peut pas lire le Google Play Install Referrer, et vous perdez des installs attribuées sans jamais voir d'erreur. La troisième donne accès au Google Advertising ID, exigé pour une app distribuée sur Google Play.
kotlin
dependencies { implementation("com.adjust.sdk:adjust-android:5.8.0") implementation("com.android.installreferrer:installreferrer:2.2") implementation("com.google.android.gms:play-services-ads-identifier:18.0.1") }
➡️ React Native, Flutter et Unity ont aussi leur SDK v5 : c’est grosso modo la même logique.

Les trois réglages à suivre à la lettre qui font toute la différence

1️⃣
L'environnement. SANDBOX en recette, PRODUCTION dans le build publié sur les stores. Un build de recette laissé en PRODUCTION injecte des achats de test dans vos chiffres de campagne, et ça ne se rattrape pas. J'ai vu une journée de production entière rendue inexploitable par une série de tests d'achat.
Pilotez-le par configuration de build (Debug et Staging en SANDBOX, Release en PRODUCTION) plutôt qu'à la main, et ne promouvez jamais un build de recette.
2️⃣
Le niveau de log. VERBOSE en dev, c'est ce qui vous permet de lire ce qui part réellement. En prod, on réduit au minimum. Mais pratique pour certains debug
3️⃣
Le moment de l'initialisation. Le plus tôt possible au lancement. Une init placée après un écran d'onboarding, ou derrière une condition de consentement mal fichue, vous fait perdre des sessions et des events au démarrage.
⚠️
Attention : ATT + CMP. Sur iOS, l'IDFA n'est accessible que si l'utilisateur accepte le prompt ATT. En Europe, le plus sûr est que votre CMP réponde avant le premier envoi du SDK : l'init ci-dessus ne suffit donc pas telle quelle. Le SDK a les réglages prévus pour ça, je vous détaille bientôt comment faire dialoguer ATT, CMP et Adjust dans un article dédié promis ça arrive vite. Sinon en attendant vous avez également cette doc qui en parle : ‣

Ce qui est suivi automatiquement par Adjust une fois le SDK implémenté

Avant même que vous ayez créé votre premier event, le SDK mesure déjà des choses. C’est l’équivalent des événements collectés automatiquement de GA4 (first_visit, session_start…), à une nuance près : ce ne sont pas des events au sens d’Adjust.
Je vous ai fait la liste ici :
Ce qui remonte
Comment c'est compté
OS
Installs
À la première ouverture de l'app, pas au téléchargement sur le store
iOS, Android
Sessions
Nouvelle session après au moins 30 min d'inactivité, sous-session si l'utilisateur revient avant (session_count, subsession_count dans le hit)
iOS, Android
Temps passé
Durée de chaque session et temps cumulé dans l'app (session_length, time_spent)
iOS, Android
Utilisateurs actifs
Utilisateurs uniques actifs par jour, semaine et mois (DAU, WAU, MAU)
iOS, Android
Rétention
Taux de rétention par cohorte (J1, J7, J30…)
iOS, Android
Attribution
Réseau, campagne, adgroup et créa de chaque install, ou « Organic »
iOS, Android
Apple Ads
Le SDK interroge le framework AdServices par défaut
iOS
Install Referrer
Lu automatiquement si la dépendance installreferrer est présente
Android
Infos appareil
OS et version, modèle, version de l'app, pays
iOS, Android
Statut ATT
Réponse de l'utilisateur au prompt ATT (att_status)
iOS
Identifiants
IDFV et IDFA (si l'ATT est accepté) sur iOS, GAID sur Android, plus l'ADID, l'identifiant attribué par Adjust
iOS, Android

Étape 3 - Créer les events in-app et leurs tokens

Ok maintenant que le SDK est bien envoyé vous allez devoir créer et intégrer au sein de l’app les events que vous voulez envoyer à vos partenaires publicitaires. Donc retenez votre dev encore quelque temps vous avez encore besoin de lui pour cette étape après promis il pourra rejoindre ses collègues et incarner à temps son Tieffelin barbare dans sa partie de D&D journalière.
Vous allez vous rendre dans AppView > All apps > [votre app] > Events > Add event, puis vous rentrez le nom de votre event.
⚠️
Attention de créer uniquement des events que vous voulez suivre dans vos régies, Adjust est un MMP pas un outil Analytics.
Image without caption
Je ne vais volontairement pas détailler les options que vous voyez à l’écran car pour la plupart elles ne sont pas disponibles avec le plan de base et souvent vous n’allez pas en avoir besoin.
💡
Une option mérite quand même votre attention : "This is a unique event", qui demande à Adjust de ne compter cet event qu'une seule fois par device. C'est pratique pour une inscription ou un premier achat quand le SDK local ne sait pas distinguer un premier achat d'un achat suivant.
Une fois que votre event est créé il va générer un token unique que vous allez fournir à votre dev qui va se charger de l’intégrer au sein de votre app en fonction de la stack. Pour cela, contentez-vous de lui fournir en plus de vos specs les liens vers la doc iOS et Android.
Image without caption

Liste des paramètres d’événement

En plus de la création de votre événement il faut également que vous transmettiez à votre dev la liste des paramètres qui le contiennent. Voici une liste de tous les paramètres qu’un event Adjust peut transporter :
Paramètre
À quoi il sert
Exemple
Quand l'utiliser
Event token
Identifie l'event dans Adjust
abc123
Toujours : c'est le seul paramètre obligatoire
Revenue + devise
Montant et code devise ISO 4217, additionnés dans vos rapports et partagés avec les régies
24.90 + EUR
Uniquement sur un event de paiement*
Deduplication ID
Le SDK ignore l'event si cet ID figure déjà parmi les 10 derniers envoyés
purchase_A1234
Sur l'achat, avec un ID unique par event et par transaction
Callback parameters
Paires clé/valeur ajoutées à vos callbacks serveur. Adjust ne les stocke pas
order_id=A1234
Pour enrichir votre donnée brute
Partner parameters
Paires clé/valeur transmises aux régies que vous avez configurées. Absentes de la donnée brute par défaut
content_id=SKU-42
Pour les régies qui en ont besoin (catalogue produits, pubs dynamiques)
Callback ID
Identifiant à vous, renvoyé dans les callbacks d'event
purchase-A1234
Pour vérifier qu'un event précis a bien été mesuré
Product ID + transaction ID (iOS) ou purchase token (Android)
Vérification des achats in-app par Adjust
premium_monthly
Seulement pour les achats in-app passés par l'App Store ou Google Play
⚠️
* Attention il faut envoyer le paramètre de revenue uniquement sur vos événements d’achats et non pas sur tous vos événements e-commerce que vous le ferez dans un analytics classique. Si vous faites cela, chaque revenue s’additionnera et vous aurez un montant de CA généré complètement délirant dans vos rapports.

Exemple de specs pour vos devs

Évidemment la forme est libre. Si vous voulez le faire dans un .xlsx en comic sans ms vous pouvez aussi je ne juge pas. Mais grosso modo ça pourrait ressembler à ça en termes de contenu :
view_item
add_to_cart
purchase
Déclencheur
Affichage d'une fiche produit
Ajout au panier confirmé (pas le clic sur le bouton)
Confirmation de commande renvoyée par le back-office, une seule fois
Event token
abc123
def456
ghi789
Revenue
Non
Non
Montant payé, remises déduites, en EUR (précisez TTC ou HT, frais de port inclus ou non)
Deduplication ID
Non
Non
purchase_ + ID de commande
Callback parameters
item_id
item_id, quantity
order_id, item_count
Partner parameters
Aucun
Aucun
content_id (liste des item_id de la commande)

Étape 4 - Connecter les partners

Ok c’est le moment où ça va parler ROAS CPA, CPI et [Insérez un acronyme inspirant à utiliser en COMEX pour flex devant son N+1].
Plus sérieusement c’est ici que l’on va paramétrer la liste de vos partners publicitaires afin qu’ils aient suffisamment d’infos pour optimiser au maximum vos campagnes. C’est un module très important qui permet de profiter pleinement de l’avantage d’un MMP que j’ai cité en début d’article.
Mais avant de plonger là-dedans il est important de vous présenter les types de Partners Adjust :
Type
Exemples
Comment ça marche
Lien Adjust à créer ?
SAN (self-attributing networks)
Meta, Google Ads, TikTok, Snapchat
Adjust interroge la régie par API
Non, sauf deux exceptions (voir sous le tableau)*
Apple Ads
Apple Ads
Attribution via le framework AdServices de l'app
Non, et rien à configurer dans Campaign Lab
Réseaux classiques
ad networks, DSP
Adjust génère un lien à placer côté régie, au niveau campagne
Oui
Analytics partners
outils d'analyse
Reçoivent votre donnée, sans jamais se voir attribuer d'install
Non
Custom links
emails, CRM, QR codes, influence
Vos canaux owned, hors régies
Oui
📌
*Les deux exceptions côté SAN :
  • TikTok : pas de lien à créer, mais un code à recopier. Adjust génère un « link token » pour TikTok, à coller dans l'Events Manager de TikTok au moment de connecter l'app.
  • Google Ads, hors campagnes App (Search, Performance Max, Demand Gen…) : quand la pub envoie l'utilisateur sur votre site puis vers l'app, Google ne revendique pas toujours l'install. On recommande donc de créer un lien Adjust par type de campagne. Je parlerai de ce cas précis dans un article prochainement.
Ok maintenant que ce tableau est clair dans votre tête direction Campaign Lab > Partners > New partner : vous choisissez la régie et l'app
Image without caption
Ensuite, vous rentrez les ID nécessaires pour connecter votre app à votre compte publicitaire. Les éléments demandés diffèrent selon les régies mais j’ai essayé de vous regrouper les principaux :
Régie
Côté régie
Côté Adjust
Meta
Connecter Adjust comme source de données dans l'Events Manager
App ID Meta (obligatoire), clé de déchiffrement Install Referrer pour Android (optionnelle)
Google Ads
Créer un Link ID (Tools > Data manager > Third-party app analytics), puis importer les conversions
Coller le Link ID dans le module Google Ads
TikTok
Connecter l'app dans l'Events Manager, choisir Adjust, coller le link token SAN
TikTok App ID (optionnel mais recommandé), intégration non-SAN à garder en parallèle
Apple Ads
Compte Apple Ads Advanced pour récupérer les coûts
Framework AdServices dans l'app, connexion des coûts dans DataWorks
Ensuite vous décidez de ce que vous voulez partager avec votre partner :
Image without caption

Mapper ses events

Sous Map events, vous associez chaque event Adjust à l'event attendu par la régie. Sur une app multi-plateforme, vous arbitrez entre Use global mapping (le même mapping partout) et Use platform-specific mapping (un mapping par plateforme)
Image without caption
Une fois que c’est fait vous devriez avoir quelque chose qui ressemble à ça :
Image without caption
Enfin vous cliquez sur “activer” votre partner et c’est bon ! Votre régie est prête à recevoir la donnée Adjust. Vous pouvez aller vérifier dans votre interface (ici je vois que mon event purchase remonte bien dans Meta ) :
Image without caption
💡
Pour toute cette étape, je vous conseille vivement de regarder la doc de votre régie car les informations demandées peuvent grandement différer d’une régie à l’autre

Les custom links pour vos canaux owned

Cela concerne les emails, QR codes, posts organiques, bannière sur votre site etc..
Pour cela, direction Campaign Lab > Custom links > New link. Vous structurez le lien sur quatre niveaux (canal, campaign, adgroup, creative),
Image without caption
vous choisissez la destination (store, deep link, URL de repli), vos paramètres d’attribution et Adjust génère le lien et son QR code.
Image without caption
Image without caption
⚠️
Les pièges qui polluent vos rapports
  • Le lien de test resté actif en production. Un lien nommé « Test Untel » qui capte du trafic réel est un classique absolu.
  • Le custom link créé alors qu'un partenaire natif existe. Résultat : deux canaux dans Datascape pour une seule source, avec les mêmes campagnes.
  • Les fenêtres d'attribution non alignées entre la régie et Adjust. Pour Google Ads, Adjust prévoit même un réglage, « Use Google Ads attribution window » (30 jours), qu'il recommande d'activer.

Étape 5 - Tester et debug son app

Le saviez-vous ? « Ça marche sur mon téléphone » est la phrase la plus prononcée chaque jour par des milliers de devs app. Il est donc temps de le vérifier.
Dans cette dernière partie, je vais vous montrer comment réaliser la chose la plus boudée jusqu’alors en app tracking : le debug.
Ici, pas de Preview GTM ni de dataLayer dans la console, on fait ça à l’ancienne : un proxy pour intercepter les requêtes réseau de l’app, puis la Testing Console d’Adjust pour vérifier que tout est bien arrivé.

Intercepter les requêtes réseaux via Proxy

Idéalement, il vous faut sous la main un téléphone Android et un iPhone pour tester sur les deux environnements. Vous pouvez toujours utiliser des émulateurs ou des virtual machines si vous n’en avez pas.
📌
Sinon, je vous invite à installer une app de Proxy qui va intercepter tous les hits réseaux de votre app. Je vous conseille Proxyman qui a un free tier amplement suffisant pour faire ce dont on a besoin.
Une fois que vous avez installé et configuré votre Proxy, vous pouvez analyser les hits vers adjust.com (sur iOS : consent.adjust.com si l’utilisateur a accepté l’ATT, analytics.adjust.com sinon) en vous baladant sur votre app.
Comme vous pouvez le voir vous pouvez analyser les hits d’attribution d’events et de sessions
Image without caption
Image without caption
Voici un exemple de quoi peut ressembler un hit d’événement Adjust :
javascript
app_token=4xk2m9qhz7wp retry_count=0 os_version=26.7.1 installed_at=2026-10-12T15:46:25.934Z+0200 created_at=2026-11-03T12:11:05.217Z+0100 primary_dedupe_token=3f6c1a2e-8b47-4d19-a5e0-7c2d9b14f8a6 enqueue_size=1 bundle_id=com.exemple.monapp needs_response_details=1 offline_mode_enabled=0 last_skan_update={"coarse_value":"low","lock_window":false,"timestamp":"2026-10-12T15:46:32.214Z+0200","source":"sdk","conversion_value":0} device_name=iPhone15,2 foreground=1 app_version_short=1.29.0 send_in_background_enabled=0 subsession_count=1 environment=production session_count=3 started_at=2026-10-25T10:19:42.000Z+0100 os_name=ios seq=4 idfa=6B1F3C9A-2D47-4E8B-9A15-C3D07E2F4B81 idfv=A4E2C7F1-5B39-4D06-8C2A-1F7E93B5D402 device_type=iPhone time_spent=202 sent_at=2026-11-03T12:11:05.642Z+0100 event_count=7 event_token=hx4k9w revenue=24.90000 currency=EUR deduplication_id=purchase_A1234 session_length=202 skadn_registered_at=2026-10-12T15:46:32.212Z+0200 att_status=3 app_version=66 callback_params={"order_id":"A1234","item_count":"2"} partner_params={"app_instance_id":"8C3F1A6D2E9B47C5A0D4F7E1B6C29A53","content_id":"SKU-42,SKU-17"} attribution_deeplink=1
On retrouve notre event_token correspondant à notre event ainsi qu’à tous ses paramètres (revenu, currency,..)

Utiliser la Testing console d’Adjust

Autre manière de debug votre app, est d’aller dans App View > All Apps > Testing Console
Une fois dans cette section il vous suffit de rentrer votre Advertising ID :
Icon
Sur iOS : Il faut trouver votre IDFA ou IDFV (si ATT est refusé)
Icon
Sur Android : Il faut trouver votre GAID ou android_id
Icon
Vous pouvez également utiliser votre ADID si vous l’avez
💡
Pour vous aider à trouver votre ID correspondant vous pouvez installer l’app Adjust Insights
Image without caption
Image without caption
Une fois votre ID rentré vous avez tout un tas d’informations sur votre navigation au sein de l’app dont :
  • Toutes vos infos d’attribution : Via quel lien/canal vous avez installé l’app pour la première fois et la dernière fois
  • La liste des événements que vous avez déclenchés : Et leur dernière date de déclenchement
  • Des informations utiles sur votre app : le numéro de version, l’environnement,..
Image without caption
Image without caption

Votre app est enfin trackée

🎉
Félicitations : votre SDK est intégré, vos events partent avec le bon token et vos régies reçoivent enfin de la donnée propre. Votre dev a pu retourner à sa partie de D&D, Didier de la compta a rallumé le barbecue, et votre CMO prépare déjà un webinar intitulé « Comment j’ai tracké notre app en un jour grâce à l’IA ». Laissez-le faire. Vous, vous savez. Et pour une fois, « ça marche sur mon téléphone » est vrai. Sur celui des autres aussi. Attention cependant, on a fait la config minimaliste on a encore plein d’autres choses à voir (SKAN, ATT, Web to app,..) dans les prochains articles qui vont arriver très vite je vous promets j’ai juste le remake de The Legend of Zelda: Ocarina of Time à tester avant