Mesure des revenus des achats in-app (IAP) et abonnements

Premium

En bref : validez et mesurez automatiquement les revenus provenant des achats in-app et abonnements auto-renouvelables, et accédez à une vision globale des cycles de vie de vos clients et des ROAS.

Présentation

Les annonceurs peuvent utiliser les achats in-app (IAP) validés et les revenus d'abonnement pour mesurer :

  • Tous les revenus issus d'achats in-app pour les produits et abonnements traités via App Store Connect (iOS) ou Google Play Console (Android).
  • Remboursements.
  • Revenus de transactions en attente ou différés (Android).
  • Événements relatif à un abonnement qui se produit au sein ou en dehors de votre app.

La solution de revenus des IAP et abonnements permet également :

  • De veiller à ce qu'aucune transaction ne soit enregistrée deux fois. Pour iOS, cela signifie qu'aucun doublon n'est enregistré pour le partage familial.
  • Permet à AppsFlyer de transmettre les transactions de l'Apple App Store à l'annonceur (vous).
  • De fournir des données sur le revenu réel, c'est-à-dire des données sur le revenu net qui inclut les frais et taxes du store.

Les données des achats et abonnements proviennent :

  • Du connecteur SDK d'achat AppsFlyer pour Android et iOS (wrapper Unity inclus).
  • Des notifications des serveurs App Store et Google Play (RTDN) transmises à AppsFlyer.

Les données de revenus issus des achats ou abonnements sont disponibles dans les tableaux de bord et rapports AppsFlyer. Elles peuvent également être envoyées aux partenaires via postback.

Attention :

  • Si vous utilisez cette solution pour mesurer les revenus des IAP et abonnements, vous ne devez pas envoyer d'événements d'achats in-app, ni exécuter validateAndLogInAppPurchase car cela générerait des déclaration de revenus en double.
  • Les revenus des abonnements peuvent commencer à enregistrer les modifications dans le cycle de vie des abonnés existants dès que ces derniers lancent une version de l'app qui inclut le connecteur SDK d'achat.

Étapes :

  1. Un utilisateur effectue un achat in-app ou prend un abonnement auto-renouvelable.
  2. L'application génère une transaction dans l'app store.
  3. Le connecteur SDK d'achat AppsFlyer détecte automatiquement l'achat et envoie sa charge utile à AppsFlyer pour validation et enregistrement.
  4. AppsFlyer valide l'achat auprès du store concerné pour confirmer qu'il n'est pas frauduleux.
    • Lorsque la vérification est validée, AppsFlyer enregistre l'achat ou l'abonnement.
    • Si la vérification échoue, l'événement s'affiche dans le rapport de données brutes des événements in-app bloqués (option disponible pour les abonnés Protect360). 
  5. AppsFlyer transfère la réponse au connecteur SDK, qui à son tour transmet la réponse de vérification (succès ou échec) à l'application.
  6. Toutes les notifications entrantes du serveur sont traitées par le même processus que celui des achats et revenus d'abonnement d'AppsFlyer.
    • Les notifications concernant les transactions déjà rapportées par le connecteur SDK sont validées et traitées, et donnent lieu à la création en interne d'un achat ou d'un événement de cycle de vie.
    • Les notifications liées aux transactions inconnues sont supprimées.
    • Pour iOS, toutes les notifications de serveur peuvent être redirigées vers vos propres serveurs.

 Marche à suivre pour l'intégration des revenus des IAP et abonnements

Veuillez suivre précisément les instructions de configuration listées dans le tableau ci-dessous pour garantir des résultats fiables et des rapports complets des revenus des IAP et abonnements auto-renouvelables, et de tous les événements de cycle de vie. Le non-respect de la procédure peut entraîner des erreurs permanentes dans les rapports. Les détails complets de chaque étape sont indiqués après le tableau.

Étape Opérations à effectuer
1

Configurer les notifications pour les revenus des IAP et abonnements de Google Play.

2

Configurer les notifications pour les revenus des IAP et abonnements provenant de l'App Store iOS.

3
  • Intégrer le connecteur SDK d'achat AppsFlyer pour Android et iOS.
  • Recommandé pour les propriétaires d'apps d'abonnement : pour identifier plus rapidement votre base d'abonnés, configurez les notifications du serveur avant de publier la version de votre app contenant le connecteur SDK.
4

Intégrer l'API de taxe sur les revenus réels. Cette option n'est nécessaire que si vous souhaitez modifier les taux fiscaux par défaut. Sinon, les taxes sont rapportées pour chaque transaction mesurée par ROI360.

5

Tester l'intégration pour vérifier que :

  • Le connecteur SDK est correctement intégré.
  • Les notifications du serveur sont correctement configurées et transmises à AppsFlyer.
6

Publier les versions des apps Android et iOS avec les connecteurs SDK d'achat.

Étape 1 : Configurer les notifications de Google Play

Avant de commencer :

  • La configuration des revenus des IAP et abonnements Nous vous recommandons de garder les onglets Google Cloud Platform et AppsFlyer ouverts tout au long de l'installation.
  • L'installation depuis l'interface utilisateur d'AppsFlyer requiert des autorisations d'admin.

Suivez les instructions de l'onglet ci-dessous pour configurer les notifications de Google Play :

Étape 1 : connecter votre compte Google Play Developer à votre projet Google Cloud

  1. Dans Google Play Console, ouvrez votre Compte Google Play Developer.
  2. Reliez le compte à votre projet Google Cloud. Pour obtenir les instructions, consultez la rubrique assistance de Google.
  3. Activer l'API Google Play pour les développeurs. Pour obtenir les instructions, consultez la rubrique assistance de Google.

1.2 Créer un compte de service

  1. Allez dans Google Cloud et ouvrez le projet que vous venez de connecter à l'étape 1.1
  2. Dans votre projet, allez dans IAM et Admin > Comptes de service, et cliquez sur Créer un compte de service

01.png

  1. Sur la page Créer un compte de service, renseignez les Infos du compte de service.

02.png

  1. Cliquez sur Créer et continuer.
  2. Quand vous êtes à l'étape Autoriser ce compte de service à accéder au projet, sélectionnez le rôle  Pub/sub abonné.

03.png

  1. Cliquez sur Continuer > Terminé.

1.3 Télécharger la clé privée du compte.

  1. Sur la page Comptes de service , recherchez le compte de service concerné, cliquez sur  ellipsis.png  puis sur Gérer les clés.

08.png

  1. Dans l'onglet Clés de la page du compte de service, cliquez sur AJOUTER UNE CLÉ > Créer une nouvelle clé.

10.png

  1. Dans la boîte de dialogue Créer une clé privée, sélectionnez le type de clé JSON .
  2. Cliquez sur Créer. Le fichier JSON de la clé privée est téléchargé.
  3. Dans AppsFlyer, allez dans ROI360 > Paramètres des revenus.

41.png

  1. Sélectionnez votre application dans la liste.
  2. Dans l'onglet Achats et abonnements, cliquez sur upload-2.png pour importer le fichier JSON. 

40.png

 

1.4 Définir les autorisations d'accès à l'API

  1. Dans la console Google Play, allez dans Utilisateurs et autorisations.
  2. Dans la liste Utilisateurs et autorisations, recherchez le compte de service que vous avez créé à l'étape 1.2,puis cliquez sur Gérer.

14.png

  1. Dans l'onglet Autorisations , allez dans la section Autorisations du compte, et sélectionnez les deux éléments suivants :
    • Afficher les données financières.
    • Gérer les commandes et abonnements.

15.png

  1. Cliquez sur Inviter l'utilisateur puis sur Envoyer l'invitation.

(Au choix) Étape 1.5 envoyer les notifications Google Play directement à AppsFlyer

Sélectionnez l'une des deux méthodes pour recevoir de Google Play les données des revenus des IAP et abonnements.

Au choix :

  • Créez un sujet où AppsFlyer reçoit directement les notifications RTDN de Google Play (continuez dans cette étape)

ou

  • Configurez AppsFlyer en tant qu'abonné à votre sujet PUB/SUB préexistant (passez à l'étape suivante).

Pour créer un sujet dans lequel AppsFlyer reçoit directement les notifications RTDN, procédez comme suit :

  1. Dans AppsFlyer, allez dans ROI360 > Paramètres des revenus > Achats et abonnements, puis sélectionnez Autoriser le sujet AppsFlyer à recevoir des messages RTDN directement depuis Google.

42.png

  1. Copiez le sujet AppsFlyer dans le presse-papiers.
  2. Dans Google Play Console > Toutes les apps, sélectionnez votre application. Le tableau de bord s'ouvre.

18.png

  1. Allez dans Paramètres de monétisation, et dans la section Facturation Google Play , dans le champ Nom du sujet, collez l'adresse du sujet AppsFlyer que vous avez copié durant l'étape 2.

19.png

  1. Cliquez sur Enregistrer les modifications.

OR 1.6 Transférer les notifications Google Play vers AppsFlyer

La seconde méthode permettant de recevoir des notifications pour les revenus des IAP et abonnements s'applique lorsque vous avez déjà un sujet qui reçoit des notifications de Google Play. Dans ce cas, définissez AppsFlyer comme abonné à votre rubrique PUB/SUB préexistante plutôt que de créer un nouveau sujet (comme dans l'étape précédente).

Définir AppsFlyer comme abonné à votre sujet PUB/SUB préexistant

  1. Dans AppsFlyer, allez dans ROI360 > Paramètres des revenus > Achats et abonnements, sélectionnez Faire suivre vos messages sur les sujets RTDN à AppsFlyer.
  2. Copier l'URL du point de terminaison dans le presse-papiers.

52.png

  1. Dans Google Cloud Platform, dans votre projet, recherchez Pub/Sub.

21.png

  1. Dans Pub/Sub, allez dans la section Sujets, et vérifiez que vous avez un sujet pub/sub dédié aux abonnements.

22.png

  1. Allez dans la section Abonnements et cliquez sur Créer un abonnement.

25.png

  1. Saisissez l'identifiant de l'abonnement.
  2. Sélectionnez le sujet de l'abonnement pub/sub dans la liste déroulante.

26.png

  1. Comme Type de transfert, sélectionnez Push.
  2. Saisissez l'URL du point de terminaison que vous avez enregistré au cors de l'étape 2.
  3. Dans Délai d'expiration, sélectionnez N'expire jamais.

28.png

  1. Cliquez sur Enregistrer.
  2. Allez dans la section Abonnements et copiez le nom du sujet dans le presse-papiers.

46.png

  1. Dans Google Play Console, allez dans Paramètres de monétisation, et dans la section Facturation Google Play , dans le champ Nom du sujet, collez le nom du sujet AppsFlyer que vous avez copié durant l'étape précédente.

19.png

  1. Cliquez sur Enregistrer.

1.7 Configurer les services automatiques

  1. Dans AppsFlyer, allez dans ROI360 > Paramètres des revenus > Achats et abonnements
    , activez l'une des options, ou les deux :
    • Valider les achats avec Google Play.
    • Attribuer et enregistrer les abonnements auto-renouvelables.

50.png

  1. [Optionnel] Cochez Autoriser AppsFlyer à dédupliquer les transactions qui ont déjà été rapportées. Ainsi vous aurez la garantie qu'aucune transaction n'est enregistrée deux fois.
  2. Cliquez sur Enregistrer.
Remarque : Il peut s'écouler un certain temps (parfois 24 heures) après que les informations et autorisations du compte de service ont été définies avant de pouvoir les utiliser. Vous recevrez alors un message d'erreur lorsque vous tenterez de vous connecter à Google RTDN.

Étape 2 : Configurer les notifications à partir de l'App Store iOS

Avant de commencer :

  • La configuration des revenus des IAP et abonnements se fait en plusieurs étapes réalisées dans App Store Connect et dans l'interface utilisateur d'AppsFlyer. Nous vous recommandons de garder les onglets App Store Connect et AppsFlyer ouverts tout au long de l'installation.

  • L'installation depuis l'interface utilisateur d'AppsFlyer requiert des autorisations d'admin.

Pour configurer les revenus des IAP et abonnements :

  1. Dans App Store Connect, allez dans Fonctionnalités > Abonnements, et cliquez sur Gérer pour obtenir la clé secrète partagée d'App Store Connect.
    app_store_connect_shared_secret.png
  2. Dans AppsFlyer, allez dans ROI360 > Paramètres des revenus > Achats et abonnements. Vous verrez s'ouvrir la page de configuration des revenus.ARS-VIAP.png
  3. Saisissez votre clé secrète partagée App Store Connect.
  4. Copiez le point de terminaison AppsFlyer et saisissez-le dans votre configuration App Store Connect :
    1. Dans App Store Connect, sélectionnez votre application.
    2. Dans la section Détails de l'app, faites défiler jusqu'à Notifications du serveur de l'App store, et collez le point de terminaison AppsFlyer dans les champs URL du serveur de production et URL du serveur Sandbox.
      ASSN.png
    3. Cliquez sur Enregistrer.
  5. [Option] Sélectionnez l'envoi des notifications du serveur à votre point de terminaison, et saisissez votre point de terminaison. 
  6. Dans la page AppsFlyer de configuration de revenus des IAP et abonnements, activez soit l'une des options suivantes, soit les deux :
    • Attribuer et rapporter les abonnements auto-renouvelables.
    • Valider les achats avec l'Apple App Store.
  7. [Optionnel] Cochez Autoriser AppsFlyer à dédupliquer les transactions qui ont déjà été rapportées. Ainsi vous aurez la garantie qu'aucune transaction n'est enregistrée deux fois.
  8. [Optionnel] Cochez Supprimer les doublons des revenus pour les achats de partage familial.
    Vous aurez ainsi la garantie qu'aucun revenu n'est enregistré en double pour les achats de partage familial. Les événements de revenus pour les différents membres de la famille incluent le paramètre purchase_ownership_type=FAMILY_SHARED et affichent des revenus nuls.

Remarque :

  • Apple ne peut envoyer des notifications de serveur qu'à un seul point de terminaison.
  • Les clients peuvent envoyer des notifications au serveur Apple depuis leur backend directement à l'URL du point de terminaison des notifications, mais les demandes doivent être parfaitement identiques à ce qui est envoyé par l'App Store.

Étape 3 : Intégrer le connecteur SDK d'achat

L'intégration du connecteur SDK d'achat permet à votre application d'enregistrer automatiquement les achats in-app et les abonnements renouvelables. Vous pouvez choisir d'enregistrer soit l'un, soit les deux types de revenus dans AppsFlyer sur la page Paramètres des revenus > Achats et abonnements, soit pour pour Android soit pour iOS.

Pour intégrer le connecteur SDK :

  1. Demandez à votre développeur Android d'intégrer le connecteur SDK d'achat Android AppsFlyer.
    • Le connecteur d'achat Android V1 AppsFlyer prend en charge la bibliothèque de facturation Google 4.
    • Le connecteur d'achat Android V2 AppsFlyer prend en charge la bibliothèque de facturation Google 5.
  2. Demandez à votre développeur iOS d'intégrer le connecteur SDK d'achat AppsFlyer.

Remarque : Pour les apps créées à l'aide du framework Unity, consultez la documentation du connecteur Unity.

Étape 4 : Intégrer l'API de True Revenue Tax

True Revenue est un élément commercial créé pour servir la solution de revenus des IAP et abonnements AppsFlyer. Il calcule automatiquement et en temps réel la valeur des revenus nets pour chaque transaction entrante, puis il l'inclut dans un rapport. La taxe est déclarée par défaut pour chaque transaction mesurée par ROI360, et selon la configuration du taux fiscal par défaut. La configuration peut être modifiée à l'aide de l'API fiscale dédiée.

En savoir plus sur True Revenue

Pour modifier la configuration des taxes à l'aide de l'API fiscale :

  1. À transmettre à votre développeur :
    • Le jeton V2 de l'API à utiliser comme clé d'autorisation.
    • Les paramètres et les valeurs qui contiennent les informations sur les taxes à calculer, comme indiqué dans le tableau suivant.

  2. Demandez à votre développeur de suivre les instructions sur l'API fiscale pour créer les règles de taux d'imposition. Remarque: l'API permet d'inclure un fichier JSON dans le corps de la demande. Ce fichier JSON contient tous les pays et taux d'imposition liés. Le développeur peut le modifier ou l'utiliser tel quel dans l'API.

Paramètres et valeurs à utiliser dans l'API

Paramètre Obligatoire Remarques Enregistrer la valeur (pour que votre développeur puisse l'utiliser)
tax_name Oui
  • Nom affiché sur la facture du client qui décrit le type de taxe. 
  • Exemple : ventes, TVA, TPS
 
tax_rate Oui
  • Nombre comportant jusqu'à 4 décimales qui représente le pourcentage à taxer.
  • Exemple : 7,25
 
tax_exclusive Non
  • Paramètre booléen (true ou false).
  • False indique que la taxe est comprise dans les revenus globaux.
  • True indique que la taxe doit s'ajouter au total des revenus. Par exemple, comme aux États-Unis ou au Canada où le prix affiché est hors TVA.
  • La valeur par défaut est false.
 
country Non  
subdivision Non
  • Dans certains pays, il peut y avoir une sous-division (État ou Région) supplémentaire.
  • Traitement selon les codes de sous-division ISO 3166-2.
  • Doit inclure le code du pays et le code de la sous-division.
  • Exemple : US-CA
 
postal_code Non
  • Suite de lettres et/ou de chiffres
  • Exemple : L4J8E3
 
deduction_order Non
  • Enum, soit 0, 1 ou 2 :
    • 0 signifie que les frais du store sont d'abord déduits du revenu brut, et que la taxe est déduite du montant restant.
    • 1 signifie que la taxe est d'abord déduite du revenu brut, et que les frais du store sont déduits du montant restant.
    • 2 signifie que la taxe et les frais du store sont déduits du revenu total.
 

Étape 5 : tester les revenus des IAP et abonnements

Nous vous conseillons de valider les intégrations des revenus des IAP et abonnements dans un environnement sandbox pour que le connecteur SDK soit correctement intégré et que les notifications du serveur sont bien configurées et transmises à AppsFlyer.

Avant de procéder au test, assurez-vous que votre développeur configure l'environnement Sandbox dans le connecteur SDK (en paramétrant Sandbox sur true). Dans le cadre des tests, cela permet à ROI360 de créer uniquement des événements in-app Sandbox avec 0 revenu. Les données de production ne sont donc pas affectées.

Remarques sur l'environnement sandbox

Dans un environnement de type sandbox :

  • Seuls les événements d'achat initial amènent le connecteur SDK à produire un événement enregistré par AppsFlyer. Un événement IAP se nomme af_purchase_sandbox_sdk. Un événement d'abonnement se nomme af_ars_sandbox_sdk.
  • Tous les autres événements d'achat sont ignorés, ce qui signifie que le connecteur SDK ne génère pas d'événement.
  • Les notifications entrantes du serveur ne sont traitées que si le connecteur SDK enregistre d'abord la transaction originale. Dans ce cas, un événement IAP est généré sous le nom af_purchase_sandbox_s2s. Un événement d'abonnement est généré, il se nomme af_ars_sandbox_s2s.
  • Un événement ne sera jamais généré pour une notification de serveur dont le connecteur SDK n'a pas d'abord enregistré la transaction originale.
  • Pour iOS, vérifiez que dans App Store Connect > Notifications du serveur App Store, le point de terminaison AppsFlyer est défini sur URL de serveur sandbox.
    ASSN.png
  • Pour Android, les tests effectués par les testeurs de licence entraînent des événements Sandbox même si l'environnement Sandbox du SDK n'est pas configuré.

Tester les revenus des IAP et abonnements

Pour tester les revenus des IAP et abonnements :

  1. Demandez à vos développeurs de suivre les instructions  Android , iOS , et Unity pour configurer l'environnement Sandbox dans le connecteur SDK.
  2. Effectuez un achat test. Les transactions effectuées par License Tester sur Google Play et par TestFlight sur iOS sont également prises en charge.
    Remarque : Un produit d'abonnement ne peut être testé qu'une seule fois sur chaque appareil de test. Vous ne pouvez donc pas enregistrer plusieurs achats-tests avec un même abonnement et un même appareil, puisqu'ils ne seront pas enregistrés.
  3. Vérifiez ensuite que l'événement s'affiche dans le tableau de bord d'activité AppsFlyer. Un événement IAP porte le nom af_purchase_sandbox_sdk. Un événement d'abonnement porte le nom af_ars_sandbox_sdk. Ces événements comportent :
    • Une valeur de revenu de 0 (pour ne pas fausser les rapports réels d'AppsFlyer).
    • Un paramètre af_sandbox_revenue qui comprend la valeur de revenu du produit acheté pour que vous puissiez vérifier que le revenu rapporté est le bon.
  4. Si vous testez un produit d'abonnement, prévoyez un temps avant qu'AppsFlyer ne reçoive la notification du serveur. Elle arrive généralement quelques minutes après l'achat initial. 
  5. Vérifiez qu'un événement s'affiche dans le tableau de bord d'activité AppsFlyer. Un achat d'abonnement auto-renouvelable porte le nom af_ars_sandbox_s2s. L'événement contient :
    • Une valeur de revenu de 0 (pour ne pas fausser les rapports réels d'AppsFlyer).
    • Un paramètre af_sandbox_revenue qui comprend la valeur de revenu du produit acheté pour que vous puissiez vérifier que le revenu rapporté est le bon.

Étape 6 : publier la version de l'app avec le connecteur SDK

Avant que votre développeur ne publie la nouvelle version de l'app contenant le connecteur SDK d'achat intégré, vérifiez les points suivants :

  • Les événements in-app que vous souhaitez tracer comme IAP ou abonnement ne sont pas bloqués par l'une des règles de validation que vous avez définies dans AppsFlyer.
  • Tous les flags sandbox de votre développeur doivent être sur false.
  • Pour iOS, vérifiez que dans App Store Connect > Notifications du serveur App Store, le point de terminaison AppsFlyer est défini sur URL de serveur sandbox.
    ASSN.png

Référence

Événements et paramètres liés aux IAP

Les sections suivantes présentent les événements liés aux IAP qui sont mesurés par AppsFlyer, ainsi que les paramètres enregistrés pour chaque événement. Consultez le dictionnaire des paramètres d'événement pour en savoir plus sur les paramètres inclus.

Tous les événements générés :

  • Sont considérés comme des événements S2S.
  • Sont accessibles dans les rapports de données brutes (en tant qu'événements in-app organiques ou non organiques).
  • Peuvent être envoyés aux partenaires via postback.
  • Peuvent être utilisés dans le studio de conversion SKAN.

Remarque : Selon la plateforme de l'appareil de l'utilisateur, les paramètres ne sont pas toujours indiqués pour un événement in-app.

Achat (af_purchase)

Description

Enregistré lorsqu'un utilisateur effectue un achat.

Paramètres

  • app_id
  • customer_user_id
  • af_currency
  • af_original_transaction_id
  • af_order_id
  • Af_purchase_token
  • af_transaction_id
  • af_product_id
  • android_id
  • idfa
  • ip
  • appsflyer_id
  • af_purchase_date_ms
  • af_store
  • af_environment
  • af_net_revenue
  • af_net_revenue_tax_name
  • af_net_revenue_tax_rate
  • af_net_revenue_tax_exclusive
  • af_net_revenue_country
  • af_net_revenue_subdivision
  • af_net_revenue_postal_code
  • af_net_revenue_factors

Achat annulé (af_purchase_canceled)

Description

Enregistré lorsqu'un utilisateur annule un achat.

Paramètres

  • app_id
  • customer_user_id
  • af_currency
  • af_original_transaction_id
  • af_order_id
  • Af_purchase_token
  • af_transaction_id
  • af_product_id
  • android_id
  • idfa
  • ip
  • appsflyer_id
  • af_purchase_date_ms
  • af_store
  • af_environment

Achat en attente (af_purchase_pending)

Description

Enregistré lorsqu'un utilisateur a effectué un achat mais que le paiement n'est pas encore été traité.

Paramètres

  • app_id
  • customer_user_id
  • af_currency
  • af_original_transaction_id
  • af_order_id
  • Af_purchase_token
  • af_transaction_id
  • af_product_id
  • android_id
  • idfa
  • ip
  • appsflyer_id
  • af_purchase_date_ms
  • af_store
  • af_environment

Remboursement (af_purchase_refund)

Description

Enregistré lorsqu'un achat est remboursé.

Paramètres

  • app_id
  • customer_user_id
  • af_currency
  • af_original_transaction_id
  • af_order_id
  • af_purchase_token
  • af_transaction_id
  • af_product_id
  • android_id
  • idfa
  • ip
  • appsflyer_id
  • af_purchase_date_ms
  • af_store
  • af_environment
  • af_discount_type
  • event_revenue_usd
  • event_revenue (inclus dans l'événement lorsque le revenu est supérieur à zéro)
  • store_commission
  • af_net_revenue
  • af_net_revenue_factors
  • af_net_revenue_tax_name
  • af_net_revenue_tax_rate
  • af_net_revenue_tax_exclusive
  • af_net_revenue_country
  • af_net_revenue_subdivision
  • af_net_revenue_postal_code

Achat test (af_purchase_sandbox_sdk)

Description

Enregistré lors du test d'un achat traité par le SDK dans un environnement sandbox.

Paramètres

  • app_id
  • customer_user_id
  • af_currency
  • af_original_transaction_id
  • af_order_id
  • Af_purchase_token
  • af_transaction_id
  • af_purchase_state
  • af_product_id
  • android_id
  • idfa
  • ip
  • appsflyer_id

Achat test (af_purchase_sandbox_s2s)

Description

Enregistré lors du test d'un achat rapporté via S2S dans un environnement sandbox.

Paramètres

  • app_id
  • customer_user_id
  • af_currency
  • af_original_transaction_id
  • af_order_id
  • Af_purchase_token
  • af_transaction_id
  • af_purchase_state
  • af_product_id
  • android_id
  • idfa
  • ip
  • appsflyer_id

Événements et paramètres liés à l'abonnement

Les sections suivantes présentent les événements liés aux abonnements qui sont mesurés par AppsFlyer, ainsi que les paramètres enregistrés pour chaque événement. Consultez le dictionnaire des paramètres d'événement pour en savoir plus sur les paramètres inclus.

Tous les événements générés :

  • Sont considérés comme des événements S2S.
  • Sont accessibles dans les rapports de données brutes (en tant qu'événements in-app organiques ou non organiques).
  • Peuvent être envoyés aux partenaires via postback.
  • Peuvent être utilisés dans le studio de conversion SKAN.

Remarque : Selon la plateforme de l'appareil de l'utilisateur, les paramètres ne sont pas toujours indiqués pour un événement in-app.

Début de l'essai (af_ars_trial_started)

Description

Enregistré lorsqu'un abonné commence une période d'essai.

Paramètres

  • app_id
  • customer_user_id
  • af_currency
  • af_expires_date_ms
  • Af_subscription_ownership_type
  • af_original_transaction_id
  • af_order_id
  • Af_purchase_token
  • af_transaction_id
  • af_product_id
  • android_id
  • idfa
  • ip
  • appsflyer_id
  • af_purchase_date_ms
  • af_store
  • af_environment
  • af_period_type

Essai annulé (af_ars_trial_canceled)

Description

Enregistré lorsqu'un abonné annule le renouvellement automatique de l'abonnement durant la période d'essai. Si l'utilisateur ne rétablit pas le renouvellement automatique au cours de la période d'essai, un événement de désabonnement se produit.

Paramètres

  • app_id
  • customer_user_id
  • af_currency
  • af_expires_date_ms
  • Af_subscription_ownership_type
  • af_original_transaction_id
  • af_order_id
  • Af_purchase_token
  • af_transaction_id
  • af_product_id
  • android_id
  • idfa
  • ip
  • appsflyer_id
  • af_purchase_date_ms
  • af_store
  • af_environment
  • af_period_type

Essai résilié (af_ars_trial_churned)

Description

Enregistré lorsqu'un abonné se désabonne après une période d'essai. Se produit après l'annulation du renouvellement automatique et l'expiration de la période d'essai. Peut également être causé par un problème de facturation ou un problème technique avec le renouvellement de l'abonnement, qui entraîne alors un désabonnement.

Paramètres

  • app_id
  • customer_user_id
  • af_currency
  • af_expires_date_ms
  • Af_subscription_ownership_type
  • af_original_transaction_id
  • af_order_id
  • Af_purchase_token
  • af_transaction_id
  • af_product_id
  • android_id
  • idfa
  • ip
  • appsflyer_id
  • af_purchase_date_ms
  • af_store
  • af_environment
  • af_period_type
  • af_reason

Essai converti (af_ars_trial_converted)

Description

Enregistré lorsqu'un renouvellement au tarif plein commence, après une période d'essai. 

Paramètres

  • app_id
  • customer_user_id
  • af_currency
  • af_expires_date_ms
  • Af_subscription_ownership_type
  • af_original_transaction_id
  • af_order_id
  • Af_purchase_token
  • af_transaction_id
  • af_product_id
  • android_id
  • idfa
  • ip
  • appsflyer_id
  • af_purchase_date_ms
  • af_store
  • af_environment
  • af_period_type
  • af_discount_id
  • af_discount_type
  • event_revenue_usd
  • af_revenue (inclus dans l'événement lorsque le revenu est supérieur à zéro)
  • store_commission
  • af_net_revenue
  • af_net_revenue_factors
  • af_net_revenue_tax_name
  • af_net_revenue_tax_rate
  • af_net_revenue_tax_exclusive
  • af_net_revenue_country
  • af_net_revenue_subdivision
  • af_net_revenue_postal_code

Abonnement démarré (af_ars_subscription_started)

Description

Enregistré lorsqu'un abonnement à tarif réduit ou plein commence.

Remarque :

  • Les nouveaux abonnements ne peuvent être enregistrés que via le connecteur SDK.
  • Pour iOS, , si un abonné achète à nouveau un abonnement qu'il possède déjà, le connecteur SDK signale à l'application une confirmation de validation, mais il n'enregistre pas de nouvelle transaction dans AppsFlyer.

Paramètres

  • app_id
  • customer_user_id
  • af_currency
  • af_expires_date_ms
  • af_subscription_ownership_type
  • af_original_transaction_id
  • af_order_id
  • af_purchase_token
  • af_transaction_id
  • af_product_id
  • android_id
  • idfa
  • ip
  • appsflyer_id
  • af_purchase_date_ms
  • af_store
  • af_environment
  • af_period_type
  • af_discount_id
  • af_discount_type
  • event_revenue_usd
  • event_revenue (inclus dans l'événement lorsque le revenu est supérieur à zéro)
  • store_commission
  • af_net_revenue
  • af_net_revenue_factors
  • af_net_revenue_tax_name
  • af_net_revenue_tax_rate
  • af_net_revenue_tax_exclusive
  • af_net_revenue_country
  • af_net_revenue_subdivision
  • af_net_revenue_postal_code

Abonnement annulé (af_ars_subscription_canceled)

Description

Enregistré lorsqu'un abonnement auto-renouvelable est annulé au cours d'une période de facturation. Si l'utilisateur ne rétablit pas le renouvellement automatique au cours de la période d'essai, un événement de désabonnement se produit.

Paramètres

  • app_id
  • customer_user_id
  • af_currency
  • af_expires_date_ms
  • af_subscription_ownership_type
  • af_original_transaction_id
  • af_order_id
  • af_purchase_token
  • af_transaction_id
  • af_product_id
  • android_id
  • idfa
  • ip
  • appsflyer_id
  • af_purchase_date_ms
  • af_store
  • af_environment
  • af_period_type

Abonnement mis en pause (af_ars_subscription_paused) - Android uniquement

Description

Enregistré lorsqu'un utilisateur met en pause un abonnement actif.

Paramètres

  • app_id
  • customer_user_id
  • af_currency
  • af_expires_date_ms
  • af_subscription_ownership_type
  • af_original_transaction_id
  • af_order_id
  • af_purchase_token
  • af_product_id
  • android_id
  • idfa
  • ip
  • appsflyer_id
  • af_purchase_date_ms
  • af_store
  • af_environment
  • af_period_type

Reprise de l'abonnement (af_ars_subscription_resumed)

Description

Enregistré lorsqu'un abonnement à tarif plein est relancé après un abandon ou une demande de remboursement d'abonnement.

Paramètres

  • app_id
  • customer_user_id
  • af_currency
  • af_expires_date_ms
  • af_subscription_ownership_type
  • af_original_transaction_id
  • af_order_id
  • af_purchase_token
  • af_transaction_id
  • af_product_id
  • android_id
  • idfa
  • ip
  • appsflyer_id
  • af_purchase_date_ms
  • af_store
  • af_environment
  • af_period_type
  • af_discount_id
  • af_discount_type
  • af_reason
  • event_revenue (inclus dans l'événement lorsque le revenu de l'événement est supérieur à zéro)
  • store_commission
  • af_net_revenue
  • af_net_revenue_factors

Abonnement résilié (af_ars_subscription_churned)

Description

Enregistré lorsqu'un abonné se désabonne. Se produit généralement après l'annulation du renouvellement automatique ou l'expiration de la période d'essai. Peut également être causé par un problème de facturation ou un problème technique avec le renouvellement de l'abonnement, qui entraîne alors un désabonnement.

Paramètres

  • app_id
  • customer_user_id
  • af_currency
  • af_expires_date_ms
  • Af_subscription_ownership_type
  • af_original_transaction_id
  • af_order_id
  • Af_purchase_token
  • af_transaction_id
  • af_product_id
  • android_id
  • idfa
  • ip
  • appsflyer_id
  • af_purchase_date_ms
  • af_store
  • af_environment
  • af_period_type
  • af_reason

Abonnement remboursé (af_ars_subscription_refunded)

Description

Enregistré lorsqu'un abonné perçoit un remboursement.

Remarque :

  • Cet événement est souvent généré avec une valeur négative. Lorsqu'il est impossible de savoir quelles transactions ont été remboursées ou que les détails du remboursement ne figurent pas dans la notification, l'événement de remboursement n'indique aucune valeur.

Paramètres

  • app_id
  • customer_user_id
  • af_reason
  • af_subscription_ownership_type
  • af_discount_id
  • af_discount_type
  • af_original_transaction_id
  • af_order_id
  • af_purchase_token
  • af_refunded_transaction_ids
  • event_revenue_usd
  • event_revenue (inclus dans l'événement lorsque le revenu est supérieur à zéro)
  • af_product_id
  • android_id
  • idfa
  • ip
  • appsflyer_id
  • af_store
  • af_environment
  • af_period_type
  • store_commission
  • af_net_revenue
  • af_net_revenue_factors
  • af_net_revenue_tax_name
  • af_net_revenue_tax_rate
  • af_net_revenue_tax_exclusive
  • af_net_revenue_country
  • af_net_revenue_subdivision
  • af_net_revenue_postal_code

Période de grâce pour la facturation des abonnements (af_ars_subscription_billing_grace)

Description

Enregistré lorsqu'un renouvellement d'abonnement échoue suite à un problème de facturation, et que l'abonné entre dans la période de grâce de facturation.

Paramètres

  • app_id
  • customer_user_id
  • af_currency
  • af_expires_date_ms
  • Af_subscription_ownership_type
  • af_original_transaction_id
  • af_order_id
  • Af_purchase_token
  • af_transaction_id
  • af_product_id
  • android_id
  • idfa
  • ip
  • appsflyer_id
  • af_purchase_date_ms
  • af_store
  • af_environment
  • af_period_type

Abonnement renouvelé (af_ars_subscription_renewed)

Description

Enregistré lors d'un renouvellement automatique de l'abonnement.

Paramètres

  • app_id
  • customer_user_id
  • af_currency
  • af_expires_date_ms
  • af_subscription_ownership_type
  • af_original_transaction_id
  • af_order_id
  • af_purchase_token
  • af_transaction_id
  • af_product_id
  • android_id
  • idfa
  • ip
  • appsflyer_id
  • af_purchase_date_ms
  • af_store
  • af_environment
  • af_period_type
  • af_discount_id
  • af_discount_type
  • event_revenue_usd
  • event_revenue (inclus dans l'événement lorsque le revenu est supérieur à zéro)
  • store_commission
  • af_net_revenue
  • af_net_revenue_factors

Abonnement modifié (af_ars_subscription_xgraded)

Description

Enregistré lorsqu'un abonné passe à un abonnement supérieur, ou inférieur, ou qu'il change d'abonnement.

Paramètres

  • app_id
  • customer_user_id
  • af_currency
  • af_expires_date_ms
  • af_subscription_ownership_type
  • af_original_transaction_id
  • af_order_id
  • af_purchase_token
  • af_transaction_id
  • af_product_id
  • android_id
  • idfa
  • ip
  • appsflyer_id
  • af_purchase_date_ms
  • af_store
  • af_environment
  • af_period_type
  • af_discount_id
  • af_discount_type
  • event_revenue_usd
  • event_revenue (inclus dans l'événement lorsque le revenu est supérieur à zéro)
  • store_commission
  • af_net_revenue
  • af_net_revenue_factors

Abonné existant (af_ars_existing_subscriber)

Description

Enregistré lorsque le connecteur SDK est notifié à propos d'un abonné au cours d'un cycle de facturation, et ce avant de recevoir la notification de suivi du serveur qui fait entrer l'abonné dans une autre étape du cycle de vie. Cet événement est souvent généré au cours de la période d'intégration et d'adoption du connecteur SDK.

Paramètres

  • app_id
  • customer_user_id
  • country
  • af_currency
  • af_expires_date_ms
  • af_subscription_ownership_type
  • af_original_transaction_id
  • af_order_id
  • af_purchase_token
  • af_transaction_id
  • af_product_id
  • android_id
  • idfa
  • ip
  • appsflyer_id
  • af_purchase_date_ms
  • af_store
  • af_environment
  • af_period_type
  • af_cuids
  • af_validated

Achat test (af_ars_sandbox_sdk)

Description

Enregistré lors du test d'un achat traité par le SDK dans un environnement sandbox.

Paramètres

  • app_id
  • customer_user_id
  • country
  • af_currency
  • af_expires_date_ms
  • af_subscription_ownership_type
  • af_discount_id
  • af_discount_type
  • af_original_transaction_id
  • af_order_id
  • af_purchase_token
  • af_transaction_id
  • af_product_id
  • android_id
  • idfa
  • ip
  • appsflyer_id
  • af_purchase_date_ms
  • af_store
  • af_environment
  • af_period_type
  • af_cuids
  • af_validated

Achat test (af_ars_sandbox_s2s)

Description

Enregistré lors du test d'un achat rapporté via S2S dans un environnement sandbox.

Paramètres

  • app_id
  • customer_user_id
  • country
  • af_currency
  • af_expires_date_ms
  • af_subscription_ownership_type
  • af_discount_id
  • af_discount_type
  • af_original_transaction_id
  • af_order_id
  • af_purchase_token
  • af_transaction_id
  • af_product_id
  • android_id
  • idfa
  • ip
  • appsflyer_id
  • af_purchase_date_ms
  • af_store
  • af_environment
  • af_period_type
  • af_cuids
  • af_validated

Dictionnaire des paramètres

Les paramètres des événements liés aux IAP et abonnements s'affichent dans les rapports de données brutes, soit sous forme de colonnes distinctes, soit en tant que valeur de l'événement.

Les paramètres qui ont leurs propres colonnes sont les suivants :

  • app_id
  • customer_user_id
  • country_code
  • af_currency
  • event_revenue_usd
  • af_revenue
  • android_id
  • ip
  • idfa
  • appsflyer_id

Consultez le dictionnaire des champs de données pour en savoir plus sur ces paramètres.

Le tableau suivant décrit les paramètres de données brutes disponibles dans les événements ARS et VIAP.

Paramètre Remarques Produit
af_cancelation_date_ms Date de l'annulation IAP
af_reason
  • Dans les événements liés à l'annulation ou au désabonnement, le motif pour lequel l'utilisateur a résilié ou annulé son abonnement. Valeurs possibles :
    • iOS :
      • cancell_intent
      • billing_issue
      • declined_price_increase
      • product_unavailable
    • Android :
      • Je n'utilise pas suffisamment ce service
      • Problèmes techniques
      • problème de coûts
      • J'ai trouvé une meilleure app
      • Autre
  • Dans les événements liés au retour d'abonnement, le motif pour lequel l'utilisateur a repris son abonnement. Valeurs possibles :
    • Android :
      • mis en pause et repris
      • auto-renouvellement désactivé puis activé
  • Dans les événements liés à un remboursement,la raison pour laquelle l'utilisateur a perçu un remboursement. Valeurs possibles :
    • iOS :
      • 1 : problème avec votre application
      • 0 : autre raison
  • IAP
  • Abonnement
af_expires_date_ms

Date d'expiration du cycle de facturation de l'abonnement en cours

Abonnement

af_subscription_ownership_type

FAMILY_SHARED signifie que l'utilisateur a un accès via partage familial.  PURCHASED signifie que l'utilisateur payant a effectué l'achat.

Abonnement

af_discount_id

L'ID de l'offre donnée à l'utilisateur lors de l'achat initial. L'ID n'est renseigné que lorsqu'un code de réduction existe.

  • IAP
  • Abonnement
af_discount_type

Le type de réduction utilisé par l'utilisateur. Valeurs possibles :

  • IOS
    • introductory
    • abonnement
  • Android
    • intro price
    • one_time_code
    • vanity_code
Abonnement
af_original_transaction_id
  • L'identifiant de la transaction originale
  • iOS uniquement
  • IAP
  • Abonnement
af_order_id
  • L'identifiant de commande de la transaction
  • Android uniquement
  • IAP
  • Abonnement
af_purchase_token
  • Le jeton d'achat pour la transaction
  • Android uniquement
  • IAP
  • Abonnement
af_transaction_id
  • L'identifiant de la transaction
  • iOS uniquement
  • IAP
  • Abonnement
af_purchase_state

Valeurs possibles :

  • Acheté
  • Annulé
  • En attente

IAP 

af_original_transaction_id
  • L'identifiant original de la transaction
  • iOS uniquement
  • IAP
  • Abonnement
af_refunded_transaction_ids
  • Un tableau de tous les identifiants de transaction remboursées
  • iOS uniquement
  • IAP
  • Abonnement
af_product_id

L'identifiant du produit d'abonnement

  • IAP
  • Abonnement
af_purchase_date_ms

Date d'achat de l'événement in-app de l'ID de produit rapporté

  • IAP
  • Abonnement
af_store

L'app store auprès où le produit d'abonnement a été acheté

  • IAP
  • Abonnement
af_environment

L'environnement à partir duquel les données sont transmises, production ou sandbox

  • IAP
  • Abonnement
af_period_type
  • Type d'abonnement ou de période d'essai.
  • Valeurs possibles :
    • Essai
    • intro
    • Normal

Abonnement

store_commission
  • Le pourcentage calculé des frais que le store perçoit sur le produit acheté.
  • Affiché en nombre à deux chiffres.
  • Exemple : 30
  • IAP
  • Abonnement
af_net_revenue

Les revenus nets sont calculés sen prenant en compte tous les facteurs. Cf af_net_revenue_factors.

  • IAP
  • Abonnement
af_net_revenue_factors
  • L'ensemble de tous les facteurs qui génèrent le montant rapporté de af_net_revenue.
  • Exemple de valeur : store_commission
  • IAP
  • Abonnement

af_net_revenue_tax_name

  • Nom affiché sur la facture du client qui décrit le type de taxe. 
  • Exemple : ventes, TVA, TPS
  • IAP
  • Abonnement

af_net_revenue_tax_rate

  • Nombre comportant jusqu'à 4 chiffres qui représente le pourcentage taxé.
  • Exemple : 7,25
  • IAP
  • Abonnement

af_net_revenue_tax_exclusive

  • Paramètre booléen (true ou false).
  • False indique que la taxe est comprise dans les revenus globaux.
  • True indique que la taxe doit s'ajouter au total des revenus. Par exemple, comme aux États-Unis ou au Canada où le prix affiché est hors TVA.
  • IAP
  • Abonnement

af_net_revenue_country

  • IAP
  • Abonnement

af_net_revenue_subdivision

  • Dans certains pays, il peut y avoir une sous-division (État ou Région) supplémentaire. Suit le format de sous-division aux normes ISO 3166-2.
  • Doit inclure le code du pays et le code de la sous-division.
  • Exemple : US-CA
  • IAP
  • Abonnement

af_net_revenue_postal_code

  • Suite de lettres et/ou de chiffres
  • Exemple : L4J8E3
  • IAP
  • Abonnement
af_cuids
  • Dans le cadre de l'ARS, ce paramètre contient un tableau avec tous les CUID.
  • Le tableau des CUID s'affiche indépendamment des ID des appareils. Ainsi, les mêmes CUID peuvent s'afficher pour plus d'un numéro d'identification d'appareil.
Abonnement

True Revenue

True Revenue est un élément commercial créé pour servir la solution de revenus des IAP et abonnements AppsFlyer. Il calcule automatiquement et en temps réel la valeur des revenus nets pour chaque transaction entrante et il l'inclut dans un rapport. True Revenue prend en compte les facteurs suivants dans le calcul du revenu brut/net : 

  • Frais du store :
    • Sont calculés et rapportés automatiquement. Aucune action de votre part n'est requise.
    • Pour les achats, la commission du store est de 30 %.
    • Pour les abonnements, la commission est automatiquement calculée pour chaque abonné, en tenant compte de la Lifetime Value de l'abonné (App Store : les frais commencent à 30 % et passent à 15 % après un an. Play Store : 15% de frais).
    • Les paramètres relatifs au revenu net sont disponibles dans les rapports de données brutes.
  • Taxe : la taxe est déclarée par défaut pour chaque transaction mesurée par ROI360, et selon la configuration du taux fiscal par défaut. La configuration peut être modifiée à l'aide de l' API fiscale dédiée.

Lors de l'affichage de True Revenue dans les rapports, les paramètres suivants contiennent les données des revenus nets. Consultez le dictionnaire des paramètres pour en savoir plus.

Paramètre Facteur de revenu net

store_commission

Frais du store

af_net_revenue_tax_name

Taxe

af_net_revenue_tax_rate

Taxe

af_net_revenue_tax_exclusive

Taxe

af_net_revenue_postal_code

Taxe

af_net_revenue_country

Taxe

af_net_revenue_subdivision

Taxe
af_net_revenue
  • Frais du store
  • Taxe
af_net_revenue_factors
  • Frais du store
  • Taxe

Caractéristiques et limitations

Caractéristique Produit Remarques
Enregistrer l'installation et anonymiser
  • IAP
  • Revenus d'abonnement
Non pris en charge
Bibliothèques de facturation Google V6
  • IAP
  • Revenus d'abonnement
Non pris en charge
Nouveaux abonnements

Revenus d'abonnement

Enregistré uniquement via le SDK d'achat AppsFlyer
Changement de tarif

Revenus d'abonnement

Si les revenus d'abonnement ne reçoivent pas de notification de la part du SDK avec le nouveau tarif du produit, alors les revenus d'abonnement continuent de rapporter les revenus avec l'ancien tarif du produit. Une fois que le nouveau tarif du produit est reçu par le SDK d'achat, le nouveau prix est enregistré.
Revenu brut
  • IAP
  • Revenus d'abonnement
Prise en charge
Revenu net
  • IAP
  • Revenus d'abonnement
Pris en charge uniquement pour les données brutes
Taxe

Revenus d'abonnement

Prise en charge
Frais du store des revenus nets
  • IAP
  • Revenus d'abonnement
  • Pour iOS, les 15% pour les abonnés de plus d'un an : pris en charge dans les données brutes uniquement 
  • Programmes pour les PME : non pris en charge
Remboursements IAP Peut être rapporté jusqu'à 180 jours après l'achat initial.
Déduplication
  • IAP
  • Revenus d'abonnement
Prise en charge des transactions rapportées jusqu'à 180 jours après la date de l'événement.
Mode strict du SDK
  • IAP
  • Revenus d'abonnement
Les abonnements ROI360 et VIAP sont pris en charge en mode strict du SDK.
Devise
  • IAP
  • Revenus d'abonnement
Les revenus sont rapportés dans la devise d'origine (à l'aide du paramètre event_revenue) et en USD (à l'aide du paramètre event_revenue_usd).