Démarrer
Démarrage rapide : première installation attribuée
D’un compte vide à une installation attribuée à sa publicité en 30 minutes environ : créez l’app, ajoutez le SDK, créez un lien, installez via ce lien.
Ce guide mène une app de zéro à une première installation que Traqio attribue à une publicité. Il utilise Android pour l’installation attribuée, car Android est la plateforme où l’attribution se prouve sur-le-champ : l’Install Referrer de Google Play transporte l’identifiant de clic de Traqio de la publicité jusqu’à l’app. Tout, sauf la dernière vérification, fonctionne de la même façon sur iOS.
Accès anticipé
Étapes#
Créez votre app dans la console#
Inscrivez-vous sur traqio.app — gratuit, sans carte bancaire. La console s’ouvre sur Ajoutez votre application : donnez-lui un nom, puis son bundle id (App Store), son nom de package (Google Play), ou les deux. Une seule app dans Traqio couvre les deux stores ; les rapports les combinent et peuvent les séparer.
Le bundle id et le nom de package sont ce à quoi les installations sont rapprochées : ils doivent donc être exactement ceux qu’utilisent vos fiches sur les stores.
Copiez la clé SDK#
Dès que l’app existe, la console affiche sa clé SDK (plus tard : votre produit → Intégrations → SDK). La clé est publique par conception — elle est embarquée dans votre app et l’identifie, rien de plus.
Installez le SDK#
Choisissez votre plateforme. Les autres SDK — Capacitor, Kotlin Multiplatform, .NET MAUI, Unity — ont les trois mêmes étapes sur leurs propres pages, listées dans la vue d’ensemble des SDK.
npx expo install @traqio/expo @react-native-async-storage/async-storage npx expo prebuild --clean npx expo run:android # or: npx expo run:ios — a development build, not Expo Gonpm install @traqio/react-native @react-native-async-storage/async-storage cd ios && pod install// app/build.gradle.kts dependencies { implementation("io.khufu.traqio:traqio-android:0.1.0") }// Package.swift .package(url: "https://github.com/khufuio/traqio-ios", from: "0.1.0")flutter pub add traqioInitialisez-le une fois au lancement#
Appelez
initle plus tôt possible au démarrage de votre app, avec votre clé SDK et l’endpointhttps://api.traqio.app— l’origine seule, sans chemin.// app/_layout.tsx — once, at module level, before the first screen renders import { Traqio, getNativeBridge } from "@traqio/expo"; import Constants from "expo-constants"; Traqio.init({ sdkKey: "YOUR_SDK_KEY", endpoint: "https://api.traqio.app", native: getNativeBridge(), // Install Referrer on Android, SKAdNetwork + Apple Ads on iOS appVersion: Constants.expoConfig?.version, });// index.js — before AppRegistry.registerComponent import { Traqio, getNativeBridge } from "@traqio/react-native"; import { version } from "./package.json"; Traqio.init({ sdkKey: "YOUR_SDK_KEY", endpoint: "https://api.traqio.app", native: getNativeBridge(), appVersion: version, });class App : Application() { override fun onCreate() { super.onCreate() Traqio.init(this, sdkKey = "YOUR_SDK_KEY", endpoint = "https://api.traqio.app") } }import SwiftUI import TraqioSDK @main struct MyApp: App { init() { Traqio.start(sdkKey: "YOUR_SDK_KEY", endpoint: "https://api.traqio.app") } var body: some Scene { WindowGroup { ContentView() .onOpenURL { Traqio.handleUrl($0) } .onContinueUserActivity(NSUserActivityTypeBrowsingWeb) { Traqio.handleUserActivity($0) } } } }import 'package:flutter/widgets.dart'; import 'package:traqio/traqio.dart'; Future<void> main() async { WidgetsFlutterBinding.ensureInitialized(); await Traqio.init(sdkKey: 'YOUR_SDK_KEY', endpoint: 'https://api.traqio.app'); runApp(const MyApp()); }L’endpoint doit être exactement celui-ci
Le SDK absorbe les erreurs réseau par conception (il met en file d’attente et réessaie) : un hôte mal saisi ne produit donc d’erreur nulle part. L’app a l’air en bonne santé et la console reste vide. Si rien n’arrive à l’étape suivante, vérifiez d’abord l’endpoint.Voyez arriver le premier signal#
Lancez l’app une fois sur un appareil ou un émulateur. Dans la console, ouvrez votre app → Intégrations → Événements en direct : l’installation apparaît en quelques secondes, exactement telle qu’elle a été reçue. Un build de développement signale son installation comme organique — c’est normal, il n’y a pas eu de publicité.
Rien au bout d’une minute ? Le panneau Rien n’arrive de l’écran de configuration indique si une requête a atteint Traqio pour cette clé, et le bouton Envoyer un événement de test prouve que la connexion fonctionne côté console. Les événements de test ne sont jamais facturés et n’apparaissent jamais dans les rapports.
Créez un lien de tracking#
Ouvrez Liens → Nouveau lien. Donnez-lui un libellé (« Meta / lancement / vidéo A »), le réseau, et l’identifiant de campagne propre au réseau — et, si vous les connaissez, les identifiants de l’ensemble de publicités et de la publicité. Ce sont ces identifiants qui relient un clic aux dépenses que le réseau déclare. Copiez l’URL de clic du lien ; elle ressemble à
https://api.traqio.app/c/launch, ou utilise votre propre domaine une fois celui-ci configuré.L’URL de clic est ce qui va dans la destination de la publicité. La résolution des liens, l’URL d’impression, les modèles et les QR codes sont détaillés dans Liens de tracking.
Installez via le lien#
Sur un téléphone Android connecté à un compte Google qui voit votre app sur Google Play (une fiche en production, ou un canal de test interne ou fermé), désinstallez l’app, touchez l’URL de clic, installez depuis le Play Store et ouvrez l’app.
Dans les Événements en direct, une ligne Clic apparaît d’abord, puis une Installation marquée Déterministe, avec le réseau et la campagne du lien. Cette installation est désormais comptée dans les rapports de la campagne et, une fois les dépenses connectées, dans son ROAS.
Pourquoi pas un build de debug ?
L’Install Referrer est écrit par le Play Store : seule une installation effectuée par le Play Store après le clic le transporte.adb installet les lancements depuis l’IDE ne le font jamais, et apparaissent comme organiques.Suivez un événement de revenu#
Suivez les événements sur lesquels vos campagnes doivent s’optimiser, avec les noms que Traqio fait correspondre aux événements standard de chaque réseau (
purchase,signup,subscribe…). Un achat transporte sa valeur, sa devise et — sur les SDK qui l’acceptent — l’identifiant de transaction du store, pour que le même achat déclaré par RevenueCat ne soit compté qu’une fois.// after sign-in — the SAME id you give RevenueCat (Purchases.logIn) Traqio.setUserId(user.id); Traqio.track("signup"); Traqio.track("purchase", { value: 9.99, currency: "EUR", transactionId: purchase.transactionId, // the store's id: StoreKit transactionId, Play orderId });Traqio.setUserId(user.id); // after sign-in — same id as RevenueCat's app_user_id Traqio.track("purchase", { value: 9.99, currency: "EUR", transactionId: purchase.transactionId });Traqio.setUserId(user.id) // after sign-in — same id as RevenueCat's app_user_id Traqio.track("signup") Traqio.track("purchase", 9.99, "EUR")Traqio.setUserId(user.id) // after sign-in — same id as RevenueCat's app_user_id Traqio.track("signup") Traqio.track("purchase", value: 9.99, currency: "EUR")Traqio.setUserId(user.id); // after sign-in — same id as RevenueCat's app_user_id Traqio.track('signup'); Traqio.track('purchase', value: 9.99, currency: 'EUR');Définissez le même identifiant utilisateur dans Traqio et dans RevenueCat, et connectez le webhook RevenueCat : les renouvellements d’abonnement et les remboursements atteignent alors la bonne installation sans nouvelle version de l’app.
Ensuite#
- Connectez Meta et TikTok pour lire les dépenses et voir le ROAS par campagne.
- Sur iOS, publiez un mapping des valeurs de conversion avant votre première campagne — sans lui, les postbacks SKAdNetwork ne transportent rien à décoder.
- Lisez Événements et revenus avant de nommer vos événements : un nom hors vocabulaire est stocké et apparaît dans les rapports, mais n’optimise rien sur Meta ni sur TikTok.
Questions fréquentes#
- Pourquoi mon installation de test apparaît-elle comme organique ?
- Sur Android, l’attribution passe par l’Install Referrer de Google Play, qui n’existe que pour les installations faites via le Play Store après un clic sur votre lien Traqio. Un APK installé avec adb, un build lancé depuis l’IDE ou une installation qui n’a pas suivi un clic n’a pas de referrer : l’installation est donc signalée comme organique. Testez avec un build issu d’un canal de test Play.
- Puis-je tester l’attribution iOS de la même façon ?
- Pas instantanément. En dehors d’Apple Ads, l’attribution iOS vient des postbacks SKAdNetwork qu’Apple envoie au moins 24 heures après la fermeture de la fenêtre de conversion, agrégés par campagne et retenus sous les seuils de confidentialité d’Apple. Le côté SDK se vérifie tout de suite — l’installation apparaît dans les Événements en direct — mais l’attribution elle-même arrive plus tard.
- La clé SDK est-elle un secret ?
- Non. La clé SDK identifie l’app et est embarquée dedans, où n’importe qui peut la lire. Les identifiants secrets — l’en-tête du webhook RevenueCat et les clés d’API — sont des valeurs différentes qui ne vont jamais dans l’app.