Amazon S3
L’intégration d’Adapty avec Amazon S3 vous permet de stocker les données d’événements et de visites de paywall de façon sécurisée en un seul endroit centralisé. Vous pouvez enregistrer vos événements d’abonnement dans votre bucket Amazon S3 sous forme de fichiers .csv.
Pour configurer cette intégration, vous devrez suivre quelques étapes simples dans la console AWS et dans l’Adapty Dashboard.
Planification
Adapty envoie vos données toutes les 24h à 4h00 UTC.
Chaque fichier contiendra les données des événements créés au cours de l’intégralité de la journée calendaire précédente en UTC. Par exemple, les données exportées automatiquement à 4h00 UTC le 8 mars contiendront tous les événements créés le 7 mars de 00:00:00 à 23:59:59 UTC.
Comment configurer l’intégration Amazon S3
Pour commencer à recevoir des données, vous aurez besoin des identifiants suivants :
- Access key ID
- Secret access key
- S3 bucket name
- Folder name inside the S3 bucket
Répertoires imbriqués
Vous pouvez spécifier des répertoires imbriqués dans le champ Amazon S3 bucket name, par exemple : adapty-events/com.sample-app
Pour intégrer Amazon S3, rendez-vous dans Integrations -> Amazon S3, activez le bouton (de off à on) et renseignez les champs.
Commencez par saisir vos identifiants afin d’établir la connexion entre Amazon S3 et les profils Adapty.
Dans l’Adapty Dashboard, les champs suivants sont nécessaires pour configurer la connexion :
| Champ | Description |
|---|---|
| Access Key ID | Un identifiant unique utilisé pour authentifier l’accès d’un utilisateur ou d’une application à un service AWS. Cet identifiant se trouve dans le fichier csv téléchargé. |
| Secret Access Key | Une clé privée utilisée conjointement avec l’Access Key ID pour authentifier l’accès d’un utilisateur ou d’une application à un service AWS. Cette clé se trouve dans le fichier csv téléchargé. |
| S3 Bucket Name | Un nom unique au niveau mondial qui identifie un bucket S3 spécifique dans le cloud AWS. Les buckets S3 sont un service de stockage simple permettant aux utilisateurs de stocker et de récupérer des objets de données, tels que des fichiers et des images, dans le cloud. |
| Folder Inside the Bucker | Le nom du dossier que vous souhaitez créer dans le bucket S3 sélectionné. Notez que S3 simule les dossiers en utilisant des préfixes de clé d’objet, qui correspondent essentiellement à des noms de dossiers. |
Comment créer des identifiants Amazon S3
Ce guide vous aidera à créer les identifiants nécessaires dans votre AWS Console.
1. Créer une politique d’accès
Commencez par accéder au tableau de bord des politiques IAM dans votre console AWS et sélectionnez l’option Create Policy.
Dans l’éditeur de politiques, collez le JSON suivant et remplacez adapty-s3-integration-test par le nom de votre bucket :
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowListObjectsInBucket",
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::adapty-s3-integration-test"
},
{
"Sid": "AllowAllObjectActions",
"Effect": "Allow",
"Action": "s3:*Object",
"Resource": [
"arn:aws:s3:::adapty-s3-integration-test/*",
"arn:aws:s3:::adapty-s3-integration-test"
]
},
{
"Sid": "AllowBucketLocation",
"Effect": "Allow",
"Action": "s3:GetBucketLocation",
"Resource": "arn:aws:s3:::adapty-s3-integration-test"
}
]
}
Une fois la configuration de la politique terminée, vous pouvez ajouter des tags (facultatif), puis cliquer sur Next pour passer à l’étape finale. Dans cette étape, nommez votre politique et cliquez sur Create policy pour finaliser la création.
2. Créer un utilisateur IAM
Pour permettre à Adapty de téléverser des rapports de données brutes dans votre bucket, vous devrez lui fournir l’Access Key ID et la Secret Access Key d’un utilisateur disposant d’un accès en écriture sur le bucket concerné.
Pour ce faire, accédez à la console IAM et sélectionnez la section Utilisateurs. Cliquez ensuite sur le bouton Add users.
Donnez un nom à l’utilisateur, choisissez Access key – Programmatic access, puis passez aux permissions.
Pour l’étape suivante, sélectionnez l’option Add user to group, puis cliquez sur le bouton Create group.
Ensuite, vous devez attribuer un nom à votre groupe d’utilisateurs et sélectionner la politique que vous avez créée précédemment. Une fois la politique sélectionnée, cliquez sur le bouton Create group pour finaliser le processus.
Une fois le groupe créé avec succès, veuillez le sélectionner et passer à l’étape suivante.
Comme il s’agit de la dernière étape de cette section, vous pouvez continuer en cliquant simplement sur le bouton Create User.
Enfin, vous pouvez soit télécharger les identifiants au format .csv, soit les copier-coller directement depuis le tableau de bord.
Export manuel des données
En plus de l’export automatique des données d’événements vers Amazon S3, Adapty propose également une fonctionnalité d’export manuel de fichiers. Grâce à cette fonctionnalité, vous pouvez sélectionner un intervalle de temps spécifique pour les données d’événements et les exporter manuellement vers votre bucket S3. Cela vous offre un meilleur contrôle sur les données que vous exportez et sur le moment où vous les exportez.
La plage de dates spécifiée sera utilisée pour exporter les événements créés entre la date A à 00:00:00 UTC et la date B à 23:59:59 UTC.
Structure de la table
Dans l’intégration AWS S3, Adapty fournit une table pour stocker les données historiques des événements de transaction et des visites de paywall. La table contient des informations sur le profil utilisateur, les revenus et les produits, ainsi que le store d’origine, entre autres données. Ces tables enregistrent essentiellement toutes les transactions générées par une application pour une période donnée.
Notez que cette structure peut évoluer au fil du temps — de nouvelles données peuvent être introduites par nous ou par les tiers avec lesquels nous travaillons. Assurez-vous que votre code qui la traite est suffisamment robuste et s’appuie sur des champs spécifiques, mais pas sur la structure dans son ensemble.
Voici la structure du tableau pour les événements :
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.
| Colonne | Description |
|---|---|
| profile_id | ID utilisateur Adapty. |
| event_type | Nom de l’événement en minuscules. Consultez la section Événements pour connaître les types d’événements. |
| event_datetime | Date au format ISO 8601. |
| transaction_id | Identifiant unique d’une transaction, comme un achat ou un renouvellement. |
| original_transaction_id | Identifiant de transaction de l’achat d’origine. |
| subscription_expires_at | Date d’expiration de l’abonnement. Généralement dans le futur. |
| environment | Peut être Sandbox ou Production. |
| revenue_usd | Revenu en USD. Peut être vide. |
| proceeds_usd | Recettes en USD. Peut être vide. |
| net_revenue_usd | Revenu net (après taxes) en USD. Peut être vide. |
| tax_amount_usd | Montant déduit pour les taxes en USD. Peut être vide. |
| revenue_local | Revenu en devise locale. Peut être vide. |
| proceeds_local | Recettes en devise locale. Peut être vide. |
| net_revenue_local | Revenu net (après taxes) en devise locale. Peut être vide. |
| tax_amount_local | Montant déduit pour les taxes en devise locale. Peut être vide. |
| customer_user_id | ID utilisateur développeur. Par exemple, il peut s’agir de votre UUID utilisateur, d’un e-mail ou de tout autre identifiant. Null si vous ne l’avez pas défini. |
| store | Peut être app_store ou play_store. |
| product_id | ID du produit dans l’Apple App Store, le Google Play Store ou Stripe. |
| base_plan_id | ID du plan de base dans le Google Play Store ou ID de prix dans Stripe. |
| developer_id | ID développeur (SDK) du paywall depuis lequel la transaction est originaire. |
| ab_test_name | Nom du test A/B depuis lequel la transaction est originaire. |
| ab_test_revision | Révision du test A/B depuis lequel la transaction est originaire. |
| paywall_name | Nom du paywall depuis lequel la transaction est originaire. |
| paywall_revision | Révision du paywall depuis lequel la transaction est originaire. |
| profile_county | Pays du profil déterminé par Adapty, d’après l’adresse IP. |
| install_date | Date d’installation au format ISO 8601. |
| idfv | identifierForVendor sur les appareils iOS |
| idfa | advertisingIdentifier sur les appareils iOS |
| advertising_id | L’Advertising ID est un code unique attribué par le système d’exploitation Android que les annonceurs peuvent utiliser pour identifier de manière unique l’appareil d’un utilisateur. |
| ip_address | IP de l’appareil (peut être IPv4 ou IPv6, IPv4 étant préférée lorsqu’elle est disponible). Elle est mise à jour à chaque changement d’adresse IP de l’appareil. |
| cancellation_reason | Raison pour laquelle l’utilisateur a annulé un abonnement. Peut être : iOS & Android voluntarily_cancelled, billing_error, refund iOS price_increase, product_was_not_available, unknown, upgraded Android new_subscription_replace, cancelled_by_developer |
| android_app_set_id | Un AppSetId - ID réinitialisable par l’utilisateur, unique par appareil et par compte développeur, destiné aux cas d’usage publicitaires non monétisants. |
| android_id | Sur Android 8.0 (niveau d’API 26) et versions supérieures, un nombre 64 bits (exprimé en chaîne hexadécimale), unique pour chaque combinaison de clé de signature d’application, d’utilisateur et d’appareil. Pour plus de détails, voir la documentation Android developer. |
| device | Nom du modèle d’appareil visible par l’utilisateur final. |
| currency | Code devise à 3 lettres (ISO-4217) de la transaction. |
| store_country | Pays du profil déterminé par le store Apple/Google. |
| attribution_source | Source d’attribution. |
| attribution_network_user_id | ID attribué à l’utilisateur par la source d’attribution. |
| attribution_status | Peut être organic, non_organic ou unknown. |
| attribution_channel | Nom du canal marketing. |
| attribution_campaign | Nom de la campagne marketing. |
| attribution_ad_group | Groupe d’annonces d’attribution. |
| attribution_ad_set | Ensemble d’annonces d’attribution. |
| attribution_creative | Mot-clé créatif d’attribution. |
| attributes | JSON des attributs utilisateur personnalisés. Inclut tous les attributs personnalisés que vous avez configurés pour les envoyer depuis votre application mobile. Pour les envoyer, activez l’option Send User Attributes sur la page Integrations -> Webhooks. |
| integration_ids | Tous les IDs d’intégration associés à un profil. Dictionnaire. Exemple : {‘mixpanel_user_id’: ‘mixpanelUserId-test’, ‘facebook_anonymous_id’: ‘facebookAnonymousId-test’} |
Voici la structure du tableau pour les visites de paywall :
| Colonne | Description |
|---|---|
| profile_id | Identifiant utilisateur Adapty. |
| customer_user_id | Identifiant utilisateur développeur. Par exemple, il peut s’agir d’un UUID, d’un e-mail ou de tout autre identifiant. Null si non défini. |
| profile_country | Pays du profil déterminé par le store Apple/Google. |
| install_date | Date ISO 8601 de l’installation. |
| store | Peut être app_store ou play_store. |
| paywall_showed_at | La date à laquelle le paywall a été affiché au client. |
| developer_id | Identifiant développeur (SDK) du paywall d’où provient la transaction. |
| ab_test_name | Nom du test A/B d’où provient la transaction. |
| ab_test_revision | Révision du test A/B d’où provient la transaction. |
| paywall_name | Nom du paywall d’où provient la transaction. |
| paywall_revision | Révision du paywall d’où provient la transaction. |
Événements et tags
Vous pouvez gérer les données transmises par l’intégration. Celle-ci propose les options de configuration suivantes :
| Paramètre | Description |
|---|---|
| Exclude Historical Events | Choisissez d’exclure les événements survenus avant que l’utilisateur ait installé l’application avec le SDK Adapty. Cela évite la duplication des événements et garantit des rapports précis. Par exemple, si un utilisateur a activé un abonnement mensuel le 10 janvier et mis à jour l’application avec le SDK Adapty le 6 mars, Adapty ignorera les événements antérieurs au 6 mars et conservera les événements suivants. |
| Include events without profile | Choisissez d’inclure les transactions qui ne sont pas liées à un profil utilisateur dans Adapty. Il peut s’agir d’achats effectués avant l’installation du SDK Adapty ou de transactions reçues depuis les notifications du serveur du store qui ne peuvent pas être immédiatement associées à un utilisateur spécifique. |
| Send User Attributes | Si vous souhaitez envoyer des attributs spécifiques à l’utilisateur, comme les préférences de langue, et que votre forfait OneSignal prend en charge plus de 10 tags, sélectionnez cette option. L’activer permet d’inclure des informations supplémentaires au-delà des 10 tags par défaut. Notez que dépasser les limites de tags peut entraîner des erreurs. |
Sous les paramètres d’intégration, vous trouverez trois groupes d’événements que vous pouvez exporter, envoyer et stocker dans Amazon S3 depuis Adapty. Activez simplement ceux dont vous avez besoin. Consultez la liste complète des événements proposés par Adapty ici.