Intégrations analytics
Adapty envoie tous les événements d’abonnement aux services d’analyse, tels qu’Amplitude, Mixpanel et AppMetrica. Nous pouvons également envoyer des événements à votre serveur via l’intégration webhook. Le meilleur dans tout ça, c’est que vous n’avez pas à vous occuper de l’envoi des événements — nous le faisons pour vous. Configurez simplement l’intégration dans l’Adapty Dashboard.
Adapty prend en charge l’intégration avec les services d’analyse tiers suivants :
Votre fournisseur d’analyse n’est pas dans la liste ?
Faites-le nous savoir ! Créez une demande de fonctionnalité et nous l’examinerons.
Propriétés des événements
Les événements webhook sont envoyés au format JSON. Tous les événements suivent la même structure, mais leurs champs varient selon le type d’événement, le store et votre configuration.
Adapty convertit les autres devises en USD au taux de change de currencylayer.com (actualisé toutes les 8 heures). Le taux est fixé au moment de la transaction — les variations ultérieures n’affectent pas le résultat de la conversion.
| Propriété | Type | Description |
|---|---|---|
| profile_id | uuid | Identifiant utilisateur Adapty. |
| currency | str | Devise locale (USD par défaut). |
| price_usd | float | Prix du produit avant la commission Apple/Google. Revenu. |
| proceeds_usd | float | Prix du produit après la commission Apple/Google. Revenu net. |
| net_revenue_usd | float | Revenu net (revenu après la commission Apple/Google et les taxes) en USD. Peut être vide. |
| price_local | float | Prix du produit avant la commission Apple/Google en devise locale. Revenu. |
| proceeds_local | float | Prix du produit après la commission Apple/Google en devise locale. Revenu net. |
| transaction_id | str | Identifiant unique d’une transaction, comme un achat ou un renouvellement. |
| original_transaction_id | str | Identifiant de la transaction d’achat d’origine. |
| purchase_date | ISO 8601 date | Date et heure d’achat du produit. |
| original_purchase_date | ISO 8601 date | Date et heure de l’achat d’origine. |
| environment | str | Peut être Sandbox ou Production. |
| vendor_product_id | str | ID du produit dans l’Apple App Store, le Google Play Store ou Stripe. |
| base_plan_id | str | ID du plan de base dans le Google Play Store ou ID de prix dans Stripe. |
| event_datetime | ISO 8601 date | Date et heure de l’événement. |
| store | str | Peut être app_store ou play_store. |
| trial_duration | str | Durée de la période d’essai en jours. Envoyée au format « days », par exemple « 7 days ». |
| cancellation_reason | str | Raison pour laquelle l’utilisateur a résilié un abonnement. Peut être iOS & Android voluntarily_cancelled, billing_error, refund iOS price_increase, product_was_not_available, unknown Android new_subscription_replace, cancelled_by_developer |
| subscription_expires_at | ISO 8601 date | Date d’expiration de l’abonnement. Généralement dans le futur. |
| consecutive_payments | int | Nombre de périodes durant lesquelles l’utilisateur est abonné sans interruption. Inclut la période en cours. |
| rate_after_first_year | bool | Booléen indiquant que l’abonnement est éligible à un taux de commission réduit (généralement 15 %) après un an de renouvellement continu. Les taux de commission varient selon l’éligibilité au programme et le pays. Voir Commission du store et taxes pour plus de détails. |
| promotional_offer_id | str | ID de l’offre promotionnelle tel qu’indiqué dans la section Produit de l’Adapty Dashboard. |
| store_offer_category | str | Peut être introductory ou promotional. |
| store_offer_discount_type | str | Peut être free_trial, pay_as_you_go ou pay_up_front. |
| paywall_name | str | Nom du paywall d’où provient la transaction. |
| paywall_revision | int | Révision du paywall d’où provient la transaction. La valeur est définie à 1. |
| developer_id | str | ID développeur (SDK) du placement d’où provient la transaction. |
| ab_test_name | str | Nom du test A/B d’où provient la transaction. |
| ab_test_revision | int | Révision du test A/B d’où provient la transaction. La valeur est définie à 1. |
| cohort_name | str | Nom de l’audience à laquelle appartient le profil. |
| profile_event_id | uuid | Identifiant d’événement unique pouvant être utilisé pour la déduplication. |
| store_country | str | Le pays transmis par le store. |
| profile_ip_address | str | IP du profil (peut être IPv4 ou IPv6, IPv4 étant préférée si disponible). Mise à jour à chaque changement d’IP de l’appareil. |
| profile_country | str | Déterminé par Adapty, à partir de l’IP du profil. |
| profile_total_revenue_usd | float | Revenu total du profil, remboursements inclus. |
| variation_id | uuid | Identifiant unique du paywall sur lequel l’achat a été effectué. |
| access_level_id | str | ID du niveau d’accès payant. |
| is_active | bool | Booléen indiquant si le niveau d’accès payant est actif pour le profil. |
| will_renew | bool | Booléen indiquant si le niveau d’accès payant sera renouvelé. |
| is_refund | bool | Booléen indiquant si la transaction est remboursée. |
| is_lifetime | bool | Booléen indiquant si le niveau d’accès payant est à vie. |
| is_in_grace_period | bool | Booléen indiquant si le profil est en délai de grâce. |
| starts_at | ISO 8601 date | Date et heure de début du niveau d’accès payant pour l’utilisateur. |
| renewed_at | ISO 8601 date | Date et heure du début de la période en cours du niveau d’accès payant. Correspond à activated_at jusqu’au premier renouvellement. |
| expires_at | ISO 8601 date | Date et heure d’expiration du niveau d’accès payant. |
| activated_at | ISO 8601 date | Date et heure d’activation du niveau d’accès payant. |
| billing_issue_detected_at | ISO 8601 date | Date et heure du problème de facturation. |
| profile_has_access_level | Bool | Booléen indiquant si le profil dispose d’un niveau d’accès actif (Webhook uniquement). |
Chaque événement possède les propriétés suivantes :
transaction_id, original_transaction_id, purchase_date, original_purchase_date, environment, vendor_product_id, event_datetime, store.
De plus, certains événements ont des propriétés supplémentaires. Pour les événements subscription_refunded et non_subscription_purchase_refunded, il est obligatoire de fournir les valeurs de price_usd et proceeds_usd comme propriétés supplémentaires.
| Nom de l’événement | Propriétés |
|---|---|
| subscription_initial_purchase | price_usd, proceeds_usd, subscription_expires_at, consecutive_payments, rate_after_first_year, trial_duration |
| subscription_renewed | price_usd, proceeds_usd, subscription_expires_at, consecutive_payments, rate_after_first_year, trial_duration |
| subscription_cancelled | cancellation_reason, trial_duration |
| trial_started | subscription_expires_at, trial_duration |
| trial_converted | price_usd, proceeds_usd, subscription_expires_at, consecutive_payments, rate_after_first_year, trial_duration |
| trial_cancelled | cancellation_reason, trial_duration |
| non_subscription_purchase | price_usd, proceeds_usd |
| billing_issue_detected | subscription_expires_at, trial_duration |
| entered_grace_period | subscription_expires_at, trial_duration |
Exemple d’événement
{
"price_usd": 9.99,
"proceeds_usd": 6.99,
"transaction_id": "1000000628581600",
"original_transaction_id": "1000000628581600",
"purchase_date": "2020-02-18T18:40:22.000000+0000",
"original_purchase_date": "2020-02-18T18:40:22.000000+0000",
"environment": "Sandbox",
"vendor_product_id": "premium",
"event_datetime": "2020-02-18T18:40:22.000000+0000",
"store": "app_store"
}
Adapty envoie des événements à votre serveur et à des systèmes d’analyse tiers.
La propriété profile_ip_address est synchronisée avec l’adresse IP de l’appareil actuel. Chaque fois que les serveurs Adapty reçoivent des informations du SDK, l’adresse IP est mise à jour si elle diffère de celle enregistrée.
Définition de l’identifiant du profil
- Définissez l’identifiant du profil pour l’analytique sélectionnée en suivant les instructions pour définir les attributs utilisateur dans votre application iOS, Android, React Native, Flutter, et Unity .
Éviter les doublons
N’oubliez pas de désactiver l’envoi d’événements d’abonnement depuis les appareils et votre serveur pour éviter les doublons.
Désactivation de l’analytique externe pour un client spécifique
Vous pouvez vouloir arrêter l’envoi d’événements analytiques pour un client spécifique. C’est utile si votre application propose une option de désinscription aux services analytiques.
Pour désactiver l’analytique externe pour un client, utilisez la méthode updateProfile(). Créez un objet AdaptyProfileParameters.Builder et définissez-y la valeur correspondante.
Lorsque l’analytique externe est bloquée, Adapty n’envoie aucun événement à aucune intégration pour cet utilisateur spécifique. Si vous souhaitez désactiver une intégration pour tous les utilisateurs de votre application, désactivez-la simplement dans l’Adapty Dashboard.
Bloquer les analyses externes arrête la livraison d’événements à toutes les intégrations pour cet utilisateur, y compris les webhooks personnalisés. Ne l’utilisez pas si votre backend s’appuie sur les événements webhook pour gérer l’accès de cet utilisateur.
Ce paramètre n’est pas rétroactif : les événements créés avant sa configuration sont tout de même envoyés. Il n’affecte pas non plus les analyses propres à Adapty — les transactions de l’utilisateur sont toujours comptabilisées dans les graphiques du tableau de bord.