Amazon S3

L’intégration d’Adapty avec Amazon S3 vous permet de stocker de façon sécurisée les données d’événements et de visites de paywalls en un seul endroit. 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 le tableau de bord Adapty.

Note

Planification

Adapty envoie vos données toutes les 24h à 4h00 UTC.

Chaque fichier contient les données des événements créés pendant l’intégralité du jour calendaire précédent 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 en UTC.

Comment configurer l’intégration Amazon S3

Pour commencer à recevoir des données, vous aurez besoin des identifiants suivants :

  1. Access key ID
  2. Secret access key
  3. S3 bucket name
  4. Folder name inside the S3 bucket
Note

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.

2b1a6e3-CleanShot_2023-03-24_at_14.51.272x.webp

Dans l’Adapty Dashboard, les champs suivants sont nécessaires pour configurer la connexion :

ChampDescription
Access Key IDUn 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 KeyUne 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 NameUn 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 BuckerLe 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.

7af075c-CleanShot_2023-03-21_at_10.52.002x.webp

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"
        }
    ]
}
d4e474a-CleanShot_2023-03-21_at_10.56.212x.webp

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.

7dcb02f-CleanShot_2023-03-21_at_11.03.372x.webp

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.

bb612c8-CleanShot_2023-03-21_at_11.12.392x.webp

Donnez un nom à l’utilisateur, choisissez Access key – Programmatic access, puis passez aux permissions.

467ee4d-j6aoX.webp

Pour l’étape suivante, sélectionnez l’option Add user to group, puis cliquez sur le bouton Create group.

bfd0e80-CleanShot_2023-03-21_at_11.24.592x.webp

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.

df29c12-CleanShot_2023-03-21_at_11.28.052x.webp

Une fois le groupe créé avec succès, veuillez le sélectionner et passer à l’étape suivante.

1f3722e-CleanShot_2023-03-21_at_11.36.192x.webp

Comme il s’agit de la dernière étape de cette section, vous pouvez continuer en cliquant simplement sur le bouton Create User.

ea43722-CleanShot_2023-03-21_at_11.40.462x.webp

Enfin, vous pouvez soit télécharger les identifiants au format .csv, soit les copier-coller directement depuis le tableau de bord.

bcf35e1-S3created.webp

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.

466bd29-CleanShot_2023-03-21_at_12.35.252x.webp

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.

Warning

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 :

Note

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.

ColonneDescription
profile_idID utilisateur Adapty.
event_typeNom de l’événement en minuscules. Consultez la section Événements pour connaître les types d’événements.
event_datetimeDate au format ISO 8601.
transaction_idIdentifiant unique d’une transaction, comme un achat ou un renouvellement.
original_transaction_idIdentifiant de transaction de l’achat d’origine.
subscription_expires_atDate d’expiration de l’abonnement. Généralement dans le futur.
environmentPeut être Sandbox ou Production.
revenue_usdRevenus en USD. Peut être vide.
proceeds_usdRecettes en USD. Peut être vide.
net_revenue_usdRevenus nets (après taxes) en USD. Peut être vide.
tax_amount_usdMontant déduit pour les taxes en USD. Peut être vide.
revenue_localRevenus en devise locale. Peut être vide.
proceeds_localRecettes en devise locale. Peut être vide.
net_revenue_localRevenus nets (après taxes) en devise locale. Peut être vide.
tax_amount_localMontant déduit pour les taxes en devise locale. Peut être vide.
customer_user_idID utilisateur du 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.
storePeut être app_store ou play_store.
product_idID du produit sur l’Apple App Store, le Google Play Store ou Stripe. Pour un forfait avec engagement de 12 mois, la valeur est <product_id>:monthly.
base_plan_idID de forfait de base sur le Google Play Store ou ID de prix sur Stripe.
developer_idID développeur (SDK) du paywall d’où provient la transaction.
ab_test_nameNom du test A/B d’où provient la transaction. Pour un test A/B multiplacements, le nom du test sur un placement (<test name> child-N). Pour regrouper un test multiplacements entre les placements, utilisez ab_test_id.
ab_test_revisionRévision du test A/B d’où provient la transaction.
paywall_nameNom du paywall d’où provient la transaction. Pour un flow, l’ID de l’écran du paywall (scr_...). Le nom du flow est dans flow_name.
paywall_revisionRévision du paywall d’où provient la transaction.
profile_countyPays du profil déterminé par Adapty, d’après l’adresse IP.
install_dateDate d’installation au format ISO 8601.
idfvidentifierForVendor sur les appareils iOS
idfaadvertisingIdentifier sur les appareils iOS
advertising_idL’Advertising ID est un code unique attribué par le système d’exploitation Android que les annonceurs peuvent utiliser pour identifier de façon unique l’appareil d’un utilisateur.
ip_addressIP de l’appareil (IPv4 ou IPv6, avec préférence pour IPv4 si disponible). Mise à jour à chaque changement d’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_idUn AppSetId — identifiant unique par appareil et par compte développeur, réinitialisable par l’utilisateur, destiné aux usages publicitaires sans monétisation.
android_idSur Android 8.0 (API niveau 26) et versions ulté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, consultez la documentation Android.
deviceNom du modèle d’appareil visible par l’utilisateur final.
currencyCode de devise à 3 lettres (ISO-4217) de la transaction.
store_countryPays du profil déterminé par le store Apple/Google.
attribution_sourceSource d’attribution.
attribution_network_user_idID attribué à l’utilisateur par la source d’attribution.
attribution_statusPeut être organic, non_organic ou unknown.
attribution_channelNom du canal marketing.
attribution_campaignNom de la campagne marketing.
attribution_ad_groupGroupe d’annonces d’attribution.
attribution_ad_setEnsemble d’annonces d’attribution.
attribution_creativeMot-clé créatif d’attribution.
attributesJSON des attributs utilisateur personnalisés. Inclut tous les attributs personnalisés que vous avez configurés pour être envoyés depuis votre application mobile. Pour l’activer, activez l’option Send User Attributes sur la page Integrations -> Webhooks.
integration_idsTous les IDs d’intégration associés à un profil. Dictionnaire. Exemple : {‘mixpanel_user_id’: ‘mixpanelUserId-test’, ‘facebook_anonymous_id’: ‘facebookAnonymousId-test’}
variation_idID unique du paywall d’où provient la transaction. Pour un flow, l’ID de l’écran du paywall dans le flow, et non l’ID de la variante du test A/B.
flow_idID du flow d’où provient la transaction.
flow_nameNom du flow d’où provient la transaction.
flow_variation_idID de la variante du flow sur ce placement, identique à flow.variationId dans le SDK.
ab_test_idID du test A/B d’où provient la transaction. Pour un test A/B multiplacements, identique sur tous les placements.
ab_test_variant_idID de la variante du test A/B d’où provient la transaction. Utilisez-le pour répartir les transactions par variante de test.
ab_test_variant_nameNom de la variante du test A/B.
ab_test_parent_nameNom du test A/B multiplacements. Vide pour les autres tests A/B.

Les colonnes flow et test A/B sont les dernières colonnes du fichier. Adapty les calcule au moment de l’export, donc un nom dans l’export peut différer du nom dans un événement webhook antérieur si vous avez renommé le test A/B, la variante ou le flow entre-temps. Pour le détail de ce que contient chaque colonne selon le type de test A/B, consultez Champs flow et test A/B.

Voici la structure du tableau pour les visites de paywall :

ColonneDescription
profile_idIdentifiant utilisateur Adapty.
customer_user_idIdentifiant 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_countryPays du profil déterminé par le store Apple/Google.
install_dateDate ISO 8601 de l’installation.
storePeut être app_store ou play_store.
paywall_showed_atLa date à laquelle le paywall a été affiché au client.
developer_idIdentifiant développeur (SDK) du paywall d’où provient la transaction.
ab_test_nameNom du test A/B d’où provient la transaction.
ab_test_revisionRévision du test A/B d’où provient la transaction.
paywall_nameNom du paywall d’où provient la transaction.
paywall_revisionRé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ètreDescription
Exclude Historical EventsChoisissez 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 profileChoisissez 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 AttributesSi 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.
s3-settings.webp

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.

fd5ccb9-CleanShot_2023-08-17_at_14.49.282x.webp