En bref : Intégrez AppsFlyer aux sites web à l’aide du SDK Web pour enregistrer et mesurer les visites, les événements, les conversions et les revenus.
Guide d’utilisation et d’intégration du SDK Web
- Balise JavaScript du SDK Web :
- fait partie de la solution People-Based Attribution (PBA) pour analyser les parcours des utilisateurs sur plusieurs plateformes.
- signale les visites et les actions des utilisateurs sur votre site Web à la plateforme AppsFlyer.
- est un module de plug-in de site Web qui ne nécessite aucune programmation. Il est indépendant du système d’exploitation et du navigateur du visiteur du site Web.
- Taille : 40 à 60 Ko.
- Implémentez le SDK Web en même temps que le SDK mobile AppsFlyer pour enregistrer et cartographier l’activité des utilisateurs dans votre application mobile et vos environnements web.
- Les événements se produisant en dehors du site web peuvent être enregistrés à l’aide de l’API d’événements web de serveur à serveur (Web S2S)
Intégration du SDK Web dans le site web
Installation et intégration
Considérations et mesures requises
Liste de contrôle d’intégration |
---|
Pour garantir l’enregistrement des visites et des événements, le SDK Web doit être installé sur toutes les pages du site web. |
Placez l’extrait de code de manière à ce qu’il se charge le plus tôt possible dans la page. Pour ce faire, placez le code en haut, près de la balise head. |
Si vous intégrez le SDK à l’aide de Google Tag Manager (GTM) :
|
Vous pouvez implémenter le SDK Web avec ou sans Smart Banners. Suivez les instructions qui s’appliquent dans les sections qui suivent. |
Exigences obligatoires en matière d’intégration
Valider l’intégration à l’aide de l’outil de test |
Avant de commencer :
- Vérifiez auprès du spécialiste du marketing qu’il a créé le bundle de marque.
- Pour plus de conseils, consultez le guide d’intégration de la PBA.
- N'oubliez pas : Si vous disposez déjà du SDK Web Smart Banners autonome, supprimez-le et remplacez-le par le SDK Web Smart Banners et l'attribution basée sur les personnes. Ne vous contentez pas d'ajouter seulement le SDK Web pour PBA autonome.
Procédez comme suit :
- Obtenez la clé de développement web du SDK Web. Attention ! Ce n’est pas la clé utilisée par les applications mobiles.
-
Pour obtenir la clé de dev Web :
- Dans AppsFlyer, dans le menu supérieur, sélectionnez l’onglet Mes applications.
- Cliquez sur Voir le bundle de marques.
- Copiez la clé de développement web requise. (WEB_DEV_KEY)
-
Pour obtenir la clé de dev Web :
- Si vous implémentez des bannières intelligentes, obtenez la clé Smart Banners.
-
Pour obtenir la clé Smart Banners :
- Dans AppsFlyer, dans le menu latéral, accédez à Engagement > Web to App > Smart Banners.
- Copiez la clé Smart Banners requise.
-
Pour obtenir la clé Smart Banners :
- Autorisations pour ajouter des scripts aux balises d’en-tête sur le site web.
- Si vous utilisez Google Tag Manager, il doit être intégré au site web.
Procédez à l’intégration du SDK web à l’aide de l’une des options suivantes.
Extrait de code JavaScript
Intégrez le SDK web à l’aide de l’une des méthodes suivantes.
Pour installer le SDK Web sans Smart Banners :
- Répétez la procédure qui suit sur toutes les pages de votre site web.
- Dans l’extrait de code qui suit, remplacez le
WEB_DEV_KEY
à l’aide de la clé spécifiée dans les prérequis. - Collez l’extrait de code dans la balise head de votre site web. Collez-le en haut de la balise head.
<script>
!function(t,e,n,s,a,c,i,o,p){t.AppsFlyerSdkObject=a,t.AF=t.AF||function(){
(t.AF.q=t.AF.q||[]).push([Date.now()].concat(Array.prototype.slice.call(arguments)))},
t.AF.id=t.AF.id||i,t.AF.plugins={},o=e.createElement(n),p=e.getElementsByTagName(n)[0],o.async=1,
o.src="https://websdk.appsflyer.com?"+(c.length>0?"st="+c.split(",").sort().join(",")+"&":"")+(i.length>0?"af_id="+i:""),
p.parentNode.insertBefore(o,p)}(window,document,"script",0,"AF","pba",{pba: {webAppId: "WEB_DEV_KEY"}})
</script>
Pour implémenter le SDK Web avec Smart Banners :
- Répétez la procédure qui suit sur toutes les pages de votre site web.
- Dans l’extrait de code qui suit, remplacez
WEB_DEV_KEY
etYOUR_BANNER_KEY
à l’aide des clés spécifiées dans les prérequis. - Collez cet extrait de code dans la balise head du site web. Collez-le en haut de la balise head.
<script>
!function(t,e,n,s,a,c,i,o,p){t.AppsFlyerSdkObject=a,t.AF=t.AF||function(){
(t.AF.q=t.AF.q||[]).push([Date.now()].concat(Array.prototype.slice.call(arguments)))},
t.AF.id=t.AF.id||i,t.AF.plugins={},o=e.createElement(n),p=e.getElementsByTagName(n)[0],o.async=1,
o.src="https://websdk.appsflyer.com?"+(c.length>0?"st="+c.split(",").sort().join(",")+"&":"")+(i.length>0?"af_id="+i:""),
p.parentNode.insertBefore(o,p)}(window,document,"script",0,"AF", "pba,banners",{pba: {webAppId: "WEB_DEV_KEY"}, banners: {key: "YOUR_BANNER_KEY"}});
AF('banners', 'showBanner');
</script>
Pour implémenter le SDK Web avec Google Tag Manager (GTM) :
- Accédez à Google Tag Manager.
- Créez une balise pour le SDK web AppsFlyer.
- Sélectionnez le type de balise HTML personnalisée.
- Donnez un nom significatif à la balise.
- Effectuez l'une des opérations suivantes :
- Si vous intégrez le SDK web sans Smart Banners :
- Collez l’extrait de code qui suit dans la fenêtre de configuration de la balise.
- Dans l’extrait de code, remplacez
WEB_DEV_KEY
par la clé mentionnée dans les prérequis.
<!-- AppsFlyer web SDK --> <script> !function(t,e,n,s,a,c,i,o,p){t.AppsFlyerSdkObject=a,t.AF=t.AF||function(){ (t.AF.q=t.AF.q||[]).push([Date.now()].concat(Array.prototype.slice.call(arguments)))}, t.AF.id=t.AF.id||i,t.AF.plugins={},o=e.createElement(n),p=e.getElementsByTagName(n)[0],o.async=1, o.src="https://websdk.appsflyer.com?"+(c.length>0?"st="+c.split(",").sort().join(",")+"&":"")+(i.length>0?"af_id="+i:""), p.parentNode.insertBefore(o,p)}(window,document,"script",0,"AF","pba",{pba: {webAppId: "WEB_DEV_KEY"}}) </script>
- Si vous intégrez le SDK web aux Smart Banners :
- Collez l’extrait de code qui suit dans la fenêtre de configuration de la balise.
- Dans l’extrait de code, remplacez
WEB_DEV_KEY
etYOUR_BANNER_KEY
à l’aide des clés mentionnées dans les prérequis.
<!-- AppsFlyer web SDK -->
<script> !function(t,e,n,s,a,c,i,o,p){t.AppsFlyerSdkObject=a,t.AF=t.AF||function(){ (t.AF.q=t.AF.q||[]).push([Date.now()].concat(Array.prototype.slice.call(arguments)))}, t.AF.id=t.AF.id||i,t.AF.plugins={},o=e.createElement(n),p=e.getElementsByTagName(n)[0],o.async=1, o.src="https://websdk.appsflyer.com?"+(c.length>0?"st="+c.split(",").sort().join(",")+"&":"")+(i.length>0?"af_id="+i:""), p.parentNode.insertBefore(o,p)}(window,document,"script",0,"AF", "pba,banners",{pba: {webAppId: "WEB_DEV_KEY"}, banners: {key: "YOUR_BANNER_KEY"}}); AF('banners', 'showBanner'); </script>
- Si vous intégrez le SDK web sans Smart Banners :
- Cliquez sur Enregistrer.
- Effectuez l'une des opérations suivantes :
- Pour ajouter le déclencheur à toutes les pages :
-
Pour ajouter le déclencheur à des pages spécifiques :
- Cliquez sur Enregistrer la balise.
- Dans la fenêtre principale de GTM, sélectionnez Déclencheurs. Cliquez sur Nouveau.
- Cliquez sur l’icône du stylo.
- Choisissez le type de déclencheur Page vue.
- Sélectionnez Certaines pages vues.
- Définissez la page et déclenchez les conditions selon vos besoins.
- Cliquez sur Enregistrer.
- Associez le déclencheur à la balise SDK Web AppsFlyer. Pour ce faire :
- Création d’une propriété dans Adobe Experience Cloud
- Ajout du SDK web à la propriété Adobe Launch
- Ajout de la balise Adobe Launch au site web
- Publication de l’environnement Adobe Launch
Création d’une propriété dans Adobe Experience Cloud
- Allez sur Adobe Experience Cloud > Lancer.
- Dans Adobe Experience Cloud Launch, cliquez sur Accéder au lancement.
- Cliquez sur Nouvelle propriété.
- Nommez la propriété.
- Dans Plateforme, sélectionnez Web.
- Saisissez le domaine de votre site web.
- Cliquez sur Enregistrer.
Ajout du SDK web à la propriété Adobe Launch
- Sur la page Mes propriétés Web, sélectionnez l’onglet Règles .
- Nommez la règle. Nous vous recommandons d’utiliser Charger le SDK web.
- Dans la section IF, sous EVENEMENTS, cliquez sur +Ajouter.
- Dans Type d'événement, sélectionnez Core - DOM Ready.
- Cliquez sur Conserver les modifications.
- Dans la section THEN, sous Actions, cliquez sur +Ajouter.
- Dans Type d'action, cliquez sur Code personnalisé.
- Sélectionnez JavaScript > Ouvrir l’éditeur et collez l’extrait de code du SDK Web sans les balises <script>.
- Cliquez sur Conserver les modifications pour fermer l'éditeur de code.
- Cliquez sur Enregistrer.
Ajout de la balise Adobe Launch au site web
- Sur la page Mes propriétés web, sélectionnez l'onglet Environnements.
- Trouvez la ligne avec l'environnement que vous voulez publier (développement ou production).
- Sous le header INSTALL, cliquez sur l'icône en forme de boîte sur la ligne concernée. Il s'agit généralement d'un environnement de production.
- Consultez la section relative à la publication de l'environnement Adobe Launch .
- Dans la boîte de dialogue Instructions d'installation web :
- Copiez l'extrait de code de script.
- Fermez la boîte de dialogue.
- Collez l’extrait de code dans la balise <head> du site Web.
Publication de l’environnement Adobe Launch
- Sur la page Mes propriétés web, accédez à l'onglet Publication.
- Dans la section Développement , cliquez sur Ajouter une nouvelle bibliothèque.
- Nommez la bibliothèque et choisissez un environnement.
- Dans CHANGEMENTS DE RESSOURCES, cliquez sur Ajouter une ressource.
- Cliquez sur Règles > Charger le SDK Web > Dernières > Sélectionner et créer une nouvelle révision.
- Cliquez sur Enregistrer.
- Dans la section Développement :
- À côté de la bibliothèque nouvellement créée, cliquez sur le menu Action (3 points) > sélectionnez Build de développement.
- Cliquez à nouveau sur le menu d’action > sélectionnez Soumettre pour approbation.
- Dans la section Soumis :
- Cliquez sur le menu d’action > sélectionnez Build de test.
- Cliquez à nouveau sur le menu d’action > sélectionnez Approuver pour publication.
- Dans la section Approuvé :
- Cliquez sur le menu d’action > sélectionnez Créer et publier en production.
- Le processus est maintenant terminé.
Lorsque le site web se charge sur un appareil mobile, la création active s’affiche dans la bannière. Pour afficher la bannière sur certaines pages uniquement ou selon les actions de l'utilisateur, consultez les règles Adobe Launch.
Assurez-vous que le SDK fonctionne
Une fois installé, vérifiez que le SDK Web AppsFlyer est appelé par le navigateur du visiteur et que les messages sont envoyés. Pour cela, examinez le message de connexion au réseau dans le navigateur.
Pour vous assurer que le SDK se charge et fonctionne :
- Allez sur le site Web.
- Ouvrez les outils de développement du navigateur.
- Accédez à l’onglet Réseau (A).
- Actualisez la page.
- Filtrez par wa.Appsflyer (B).
- Sélectionnez le message d’événements (C).
- Dans l’onglet En-têtes (D), assurez-vous que :
- L’URL de la demande est wa.appsflyer.com/events.
- site_id query parameter=
WEB_DEV_KEY
. - Le code d’état est 200 (E).
- Vérifiez que la valeur de site_id est égale à la valeur de
WEB_DEV_KEY
dans les paramètres de bundle de marques :- Dans AppsFlyer, dans le menu latéral, sélectionnez Paramètres > Bundles de marques.
- Cliquez sur Clé de développement Web pour copier la clé.
- Collez la clé à n’importe quel emplacement (nouvel onglet du navigateur, bloc-notes) pour l’afficher.
- Vérifiez que les site_id et
WEB_DEV_KEY
correspondent.
- Assurez-vous que le SDK ne se charge qu’une seule fois. Le chargement de plusieurs SDK peut entraîner l’arrêt du fonctionnement du SDK.
Envoi d’événements opt-in/opt-out
Le SDK Web envoie les données d’événement des visiteurs à AppsFlyer. Vous pouvez contrôler, arrêter ou démarrer l’envoi d’événements tel que décrit dans cette section.
N'oubliez pas :
- Paramètre d’état initial du SDK : détermine si le SDK envoie des événements lors du chargement initial de la page web ou s’il doit attendre une commande explicite pour commencer à envoyer des événements. Le paramètre est contenu dans l’extrait de code web.
-
Contrôle explicite : permet d’arrêter ou de démarrer l’envoi d’événements. Par exemple, si vous implémentez des bannières d’acceptation et de désactivation des données (alias bannières de consentement aux cookies), intégrez les commandes explicites dans vos contrôles de bannière pour démarrer et arrêter l’envoi d’événements. Le contrôle explicite explicite a la priorité sur le paramètre d’état initial du SDK et utilise des cookies propriétaires persistants présentant les caractéristiques suivantes :
- Définie sur le domaine du site web.
- Expire après une période définie par le SDK Web ou déterminée par le navigateur. Après l’expiration du cookie, le SDK Web revient à l’état initial.
- Le cookie du SDK Web n’interfère pas avec les paramètres de cookies spécifiques au navigateur et y est toujours soumis.
Réglage de l’état initial du SDK
Paramètre | Extrait requis |
---|---|
[Par défaut] Envoyer des événements |
Apportez la modification suivante à l’extrait de code du SDK Web. Si nécessaire, ajoutez le paramètre measurementStatus : Définir measurementStatus=true
|
Ne pas envoyer d’événements
|
Apportez la modification suivante à l’extrait de code du SDK Web. Si nécessaire, ajoutez le paramètre measurementStatus : Définir measurementStatus=false |
Contrôle explicite :
Option | Commande |
---|---|
Commencer à envoyer des événements (opt-in) | window.AF_SDK.PLUGINS.PBA.enableMeasurement() |
Arrêter d’envoyer des événements (opt-out) | window.AF_SDK.PLUGINS.PBA.disableMeasurement() |
Mettre en œuvre une stratégie de sécurité du contenu (CSP)
Certains webmasters exigent que Javascript soit sécurisé par leur CSP. Vous pouvez utiliser un certain nombre de mécanismes CSP pour ce faire, notamment :
- CSP self
- CSP nonce : Ajoutez la commande nonce à la balise de script à l’aide d’une valeur nonce aléatoire que vous avez générée.
<script nonce="random value generated by you"> !function(t,e,n,s,a,c,i,o,p){t.AppsFlyerSdkObject=a,t.AF=t.AF||function(){ .... </script>
Ignorer les paramètres de requête
Si vos paramètres de requête incluent des informations que vous ne souhaitez pas qu’AppsFlyer enregistre, vous pouvez configurer la plate-forme pour qu'elle ignore certains ou tous ces paramètres. Ces informations ne seront pas disponibles dans les données brutes ou les rapports.
Vous pouvez implémenter les méthodes décrites en ce qui concerne les URL, les référents et les header_referer.
Options de rejet de requête
Méthode | Description |
---|---|
Ignorer tous les paramètres de requête | Ajouter af_url=true à l’url |
Ignorer les paramètres de requête spécifiés |
En définissant un masque de paramètre de requête, vous spécifiez les paramètres à ignorer. Définissez le masque de rejet en utilisant Exemple : Url avec masque :
URL après rejet :
|
Principes de l’enregistrement des événements
Conversions et événements standard
- Les événements utilisateur sont enregistrés par le SDK, qui envoie l’événement à la plate-forme AppsFlyer.
- À l’aide de la liste des événements de conversion définie par le spécialiste du marketing, AppsFlyer divise les événements en événements standard et événements de conversion.
- Les données relatives aux événements de conversion sont disponibles dans les tableaux de bord PBA.
- Les données de conversion et d’événement standard sont disponibles dans les rapports de données brutes.
Événements de conversion
- Les événements de conversion fournissent des informations sur vos efforts marketing et commerciaux. Les événements de conversion comprennent les achats, les téléchargements, les inscriptions et les abonnements.
- PBA attribue les événements de conversion à la source média qui a poussé l’utilisateur à visiter le site web.
- En identifiant la source média attribuée, vous pouvez mesurer et différencier la qualité des utilisateurs apportés par différentes sources média.
- Les événements de conversion sont utilisés pour enregistrer les revenus et calculer le ROI.
- Utilisez-les pour comparer le budget des publicités pour des sources média spécifiques aux revenus générés par les utilisateurs provenant de ces sources.
Événements standard
- Les événements standard sont utilisés pour valider le parcours utilisateur et les tunnels qui mènent aux conversions.
- Utilisez-les pour mesurer l’activité des utilisateurs et mettre en évidence les sources média qui suscitent l’intérêt.
- Enregistrez l’activité des utilisateurs pour marquer ces derniers pour les campagnes de réengagement.
Enregistrement d’événements
Déclenchez le SDK Web pour enregistrer des événements lorsque certaines conditions sont remplies, par exemple, lors du chargement d’une page de destination ou lorsque les utilisateurs interagissent avec des éléments du site web. Voir des exemples d’enregistrement d’événements.
Identification des utilisateurs à l’aide de l’ID utilisateur client (CUID)
- Les utilisateurs web sont identifiés dans AppsFlyer à l’aide du CUID unique que vous leur attribuez. En règle générale, le CUID est géré par vos serveurs d’arrière plan.
- Utilisez la même valeur CUID que celle que vous utilisez dans l’environnement mobile. Cela vous permet d’avoir une vue globale de l’activité des utilisateurs sur plusieurs plate-formes. La fonction du SDK mobile est la fonction setCustomerUserId (iOS, Android, Unity).
-
Pour définir le CUID dans le SDK Web :
- Définissez le CUID au moment où vous y avez accès. La plupart du temps, cela signifie que vous devez attendre que l’utilisateur s’identifie via la connexion ou l’inscription.
-
Déclenchez l’appel JavaScript à setCustomerUserId(), comme indiqué dans l’exemple suivant.
Remarque : envoyez le CUID sous forme de chaîne, même s’il s’agit d’un nombre. Utilisez des guillemets.
- Si vous implémentez Web S2S, vous devez potentiellement informer PBA lorsque vous associez un CUID à un identifiant de visiteur web en arrière plan.
- Les CUID ne doivent pas contenir d’informations personnelles directement identifiables telles qu’un numéro de téléphone ou une adresse e-mail.
// Associate all current user web events to distinct ID 663274
AF('pba', 'setCustomerUserId' , '663274')
Paramètres d’événement du SDK Web
Nom du paramètre | Obligatoire | Description |
---|---|---|
eventType | Oui |
Type d'événement Format : Chaîne Renseignez toujours ce paramètre avec EVENT. Exemple : eventType : « ÉVÉNEMENT » |
eventName | Oui |
Nom de l'événement Format : Chaîne Exemple : Achat, abonnement |
Non |
Ce paramètre est obsolète et sera prochainement supprimé du système. Utilisez plutôt le paramètre eventValue. |
|
|
Non |
Ce paramètre est obsolète et sera prochainement supprimé du système. Utilisez plutôt le paramètre eventValue. |
eventRevenue | Non |
Revenus affectés à un événement de conversion Format : Float |
eventRevenueCurrency | Non |
Devise du revenu
Format : Chaîne |
Valeur de l'événement | Non |
Carte des paramètres de l’événement décrivant l’événement. Utilisez ce paramètre pour envoyer des évènements rich in-app, tels que la référence SKU du produit et le prix de l’article.
Format : JSON
Exemple : Pour envoyer le SKU ABC123, de couleur bleue et au prix unitaire de 3,99 $
Limitation : 1000 caractères. Ne dépassez pas cette limite, sinon la valeur sera tronquée. |
Enregistrement de scénarios d’événements
Exemple d’événement
// purchase event of shoes with associated revenue
AF('pba', 'event', {eventType: 'EVENT', eventName: 'purchase', eventRevenue: 12, eventValue: {"key1": 123, "key2": "name"}});
Les événements que vous envoyez dépendent de la nature de votre application web. Par exemple, une application de boutique en ligne nécessite un ensemble d'événements différent de celui d'un site d'actualités. Consultez les scénarios qui suivent pour avoir une idée des événements que vous devez envoyer et quand.
Boutique en ligne
Supposons que vous gériez une boutique en ligne. Voici quelques événements standard que vous voudrez peut-être enregistrer :
- Rechercher : événement standard
- Ajouter au panier : événement standard
- Retirer du panier : événement standard
- Achat : événement de conversion
Site d’actualités
Supposons que vous gériez un nouveau site d’actualités. Voici quelques événements que vous voudrez peut-être enregistrer :
- Inscription : événement de conversion
- Achat d’abonnement : événement de conversion
S’assurer que les événements sont envoyés
Cette section s’adresse aux développeurs web.
Test de l’intégration du SDK Web PBA : visualisez les événements de test en temps réel.
Pour vous assurer que les événements sont envoyés à AppsFlyer :
- Ouvrez le site web.
- Ouvrez les outils de développement du navigateur.
- Basculez vers l’onglet Réseau.
- Déclenchez l'événement.
- Filtrez par message.
- Recherchez une requête réseau qui commence par la destination wa.appsflyer.com (voir capture d’écran ci-dessous).
- Assurez-vous que :
- Le code d’état est 200.
- La charge utile de la requête s’aligne sur les paramètres de l’événement.
Exemples
Enregistrement d’événements
Le code fourni est fourni à titre indicatif. N’utilisez pas ce code tel quel.
- Hypothèses: Le SDK Web est déjà chargé par la page au moment de l’envoi de l’événement.
- Les exemples de scénarios contiennent le code d’enregistrement des événements dans les cas suivants :
- Une page de destination se charge.
- Les utilisateurs interagissent avec le site web.
Enregistrement des événements lors du chargement d’une page de destination
- Vous avez mis en place une page d’abonnement aux newsletters et souhaitez enregistrer les abonnements.
- Vous pouvez également configurer une page de remerciement et rediriger les utilisateurs vers celle-ci après leur inscription.
<html>
<head>
<!-- Assume that the server returns a response with details about the newly subscribed user -->
<!-- Alternatively, you can extract data from localStorage or cookies,
in case data was set in either of them during the subscription process
-->
<script>window.onload = function(){
AF('pba', 'event', {eventType: 'EVENT', eventValue: {'category': 'holiday_promotion', eventValue: {'label' : 'newspaper'},
eventName: 'subscription',}); } </script> </head> <body> <h1>Thank You for Subscribing to Our Newsletter</h1> </body> </html>
- Le code précédent contient une page HTML de base. La page web doit charger le SDK Web pour que vous puissiez envoyer des événements.
- Lorsque la page est chargée et que l’utilisateur y est redirigé, la méthode de chargement de la fenêtre appelle la méthode AF() pour envoyer l’événement d’abonnement à AppsFlyer.
Enregistrement des événements lorsque les utilisateurs interagissent avec le site web
- Vous avez un site web de commerce électronique et vous souhaitez enregistrer les événements de paiement.
- Lorsque l’utilisateur clique sur le bouton de paiement, le SDK Web envoie un événement à AppsFlyer.
<html>
<head>
<!-- Assume that data about products in the shopping cart
is stored in localStorage -->
<script>
window.onload = function () {
document.getElementById('checkout').addEventListener('click', function () {
AF('pba', 'event', {eventType: 'EVENT', eventValue: {'category' : 'holiday_promotion'}, eventName: 'checkout'});
});
}
</script>
</head>
<body>
<h1>Shopping Cart</h1>
<h2>Shirt</h2>
<p>
<ul>
<li>Color: Blue</li>
<li>Quantity: 2</li>
<li>Price: $20</li>
</ul>
</p>
<h2>Pants</h2>
<p>
<ul>
<li>Color: Black</li>
<li>Quantity: 3</li>
<li>Price: $15</li>
</ul>
</p>
<button id='checkout'>Checkout</button>
</body>
</html>
Le code précédent ci-dessus montre une page HTML de base. La page web doit charger le SDK Web pour que vous puissiez envoyer des événements.
- Une fois la page chargée, elle lie un écouteur de clic au bouton Paiement .
- Lorsque l’utilisateur clique sur le bouton Paiement, la fonction de rappel :
- Récupère les données de localStorage.
- Appelle la méthode AF() et lui transmet des données.
- La méthode AF() envoie l’événement à AppsFlyer.
Enregistrement des événements lors du chargement d’une page de destination
- Vous avez mis en place une page d’abonnement aux newsletters et souhaitez enregistrer les abonnements réussis.
- Vous configurez une page de remerciement vers laquelle les utilisateurs sont redirigés après s’être inscrits avec succès.
- Créez une page de remerciement
<html> <head> <script> // Google Tag Manager loads the Web SDK <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-XXXX'); </script> <script> // Assume that the server returns a response with details about the newly subscribed user function getResponseFromServer() { return JSON.stringify({ action: 'subscribe', category: 'site actions', label: userEmail }) } //Alternatively, you can extract data from localStorage or cookies, //in case data was set in either of them during the subscription process localStorage.setItem('data', JSON.stringify({ action: 'subscribe', category: 'site actions', label: 'user@email.com' })); </script> </head> <body> <h1>Thank You for Subscribing to Our Newsletter</h1> </body> </html>
Le code précédent charge GTM, qui charge à son tour le SDK Web. Par la suite, deux autres actions ont lieu dans le script. L’une est une fonction qui reçoit une réponse du serveur avec les détails de l’utilisateur. L’autre définit les données sur le stockage local. GTM a accès à la fois à la fonction et à localStorage. Vous pouvez appeler la fonction et accéder à localStorage à l’aide de GTM.
- Ajoutez une nouvelle balise pour attribuer les abonnements après le chargement de la page de remerciement
- Donnez un nom distinct à la balise et sélectionnez l’option de type de balise HTML personnalisée.
- Mettez le code suivant dans le code HTML personnalisé.
<script> AF('pba', 'event', {eventType: 'EVENT',
eventValue: {'category' : 'holiday_promotion'}
, eventName: 'subscription'}); </script> - Développez le contrôle Paramètres avancés, puis le contrôle Séquencement des balises sous la zone de texte et assurez-vous qu’il est configuré pour déclencher la conversion après l’exécution de la balise.
- Pour déclencher la balise de conversion, définissez un déclencheur. Dans l’exemple, le déclencheur est déclenché lors du chargement de la page de remerciement.
Enregistrement des événements lorsque les utilisateurs interagissent avec le site web
- Vous avez un site web de commerce électronique et vous souhaitez enregistrer les événements de paiement.
- Une fois que l’utilisateur a cliqué sur le bouton de paiement, le SDK Web envoie un événement à AppsFlyer.
- Configurez une page de paiement
<html> <head> <script> // Google Tag Manager loads the Web SDK <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-XXXX'); </script> </head> <body> <h1>Shopping Cart</h1> <h2>Shirt</h2> <p> <ul> <li>Color: Blue</li> <li>Quantity: 2</li> <li>Price: $20</li> </ul> </p> <h2>Pants</h2> <p> <ul> <li>Color: Black</li> <li>Quantity: 3</li> <li>Price: $15</li> </ul> </p> <button id='checkout'>Checkout</button> </body> </html>
Le code précédent charge le SDK Web à l’aide de GTM. Le reste est simplement du HTML qui imite une page de panier. Notez le bouton Paiement, qui contient l’ID de paiement. Il est nécessaire lors de la configuration de GTM pour gérer un clic sur ce bouton.
- Dans GTM, cliquez sur Variables, Configurer et cochez Élément de clic dans la liste des variables intégrées.
- Créez une nouvelle variable, donnez-lui un nom significatif et choisissez le type de Tous les éléments.
- Dans la configuration du déclencheur, choisissez Quelques clics, choisissez Élément de clic, qui correspond au sélecteur CSS #checkout.
- Créez une balise pour l’action de paiement, choisissez le type HTML personnalisé et définissez le déclencheur sur le déclencheur de paiement.
<script> AF('pba', 'event', {eventType: 'EVENT',
eventValue: {'category' : 'holiday_promotion'}
, eventName: 'checkout'}); </script>
- Assurez-vous que la balise de fonctions du SDK Web est chargée avant le déclenchement de l’événement.
- N’envoyez pas de caractères spéciaux dans les valeurs d’événement, comme les symboles monétaires dans la valeur des revenus.
- Les chaînes de valeur doivent être inférieures à 50 caractères.
Définition de l’ID utilisateur du client après l’inscription
Le code fourni dans ces exemples est fourni à titre indicatif uniquement. N’utilisez pas ce code tel quel. Si vous ne savez pas comment utiliser ce code, consultez votre développeur web.
Supposition: Le SDK Web est chargé par la page avant l’envoi de l’événement ; ne chargez plus le SDK.
Scénario utilisateur :
- Un utilisateur s’inscrit sur votre site web.
- Le code du site web rassemble les détails de l’utilisateur et les envoie à votre serveur.
- Le serveur génère un CUID unique pour l’utilisateur.
- Dans la page de remerciement après l’inscription, vous interrogez le serveur pour obtenir le nouveau CUID.
- À l’aide de la réponse du serveur, vous définissez le CUID AppsFlyer à l’aide de la méthode setCustomerUserId() du SDK Web.
Configurer une page d’inscription :
<html>
<head>
<!-- The Web SDK script loads first -->
<script>
!function(t,e,n,s,a,c,i,o,p){t.AppsFlyerSdkObject=a,t.AF=t.AF||function(){
(t.AF.q=t.AF.q||[]).push([Date.now()].concat(Array.prototype.slice.call(arguments)))},
t.AF.id=t.AF.id||i,t.AF.plugins={},o=e.createElement(n),p=e.getElementsByTagName(n)[0],o.async=1,
o.src="https://websdk.appsflyer.com?"+(c.length>0?"st="+c.split(",").sort().join(",")+"&":"")+(i.length>0?"af_id="+i:""),
p.parentNode.insertBefore(o,p)}(window,document,"script",0,"AF","pba",{pba: {webAppId: "WEB_DEV_KEY"}})
</script>
<script>
};
// This function stores the user email sent to the server after the user reaches the thank you page
// The response from the server is a unique CUID that should be set using the web SDK setCustomerUserId method
function storeUserEmail (){
var userEmail = document.getElementById('email').value;
localStorage.setItem('user_email', userEmail);
}
</script>
</head>
<body>
<h1>Sign Up</h1>
<form onsubmit="storeUserEmail()" action="/signup" method="post">
<div><label>Name</label>
<input type="text" name="name" id="name"></div>
<br />
<div> <label>Email</label>
<input type="email" name="email" id="email"></div>
<br />
<input type="submit" id="submit">
</form>
</body>
</html>
Le code précédent ci-dessus est un simple formulaire d’inscription. Lorsque le formulaire est soumis, l’e-mail est stocké dans localStorage. Lorsque l’utilisateur atteint la page de remerciement, son adresse e-mail est envoyée au serveur pour générer le CUID unique de l’adresse e-mail.
Configurez une page de remerciement pour les utilisateurs qui s’inscrivent :
<html>
<head>
<script>
!function(t,e,n,s,a,c,i,o,p){t.AppsFlyerSdkObject=a,t.AF=t.AF||function(){
(t.AF.q=t.AF.q||[]).push([Date.now()].concat(Array.prototype.slice.call(arguments)))},
t.AF.id=t.AF.id||i,t.AF.plugins={},o=e.createElement(n),p=e.getElementsByTagName(n)[0],o.async=1,
o.src="https://websdk.appsflyer.com?"+(c.length>0?"st="+c.split(",").sort().join(",")+"&":"")+(i.length>0?"af_id="+i:""),
p.parentNode.insertBefore(o,p)}(window,document,"script",0,"AF","pba",{pba: {webAppId: "WEB_DEV_KEY"}})
</script>
<script>
// Using the fetch API to send the user email to the server
// and get the unique user id in return
window.onload = function () {
var userEmail = localStorage.getItem('user_email');
fetch('users/' + userEmail).then(function (res) {
res.text().then(function (id) {
console.log(id);
AF('pba', 'setCustomerUserId', id);
});
});
} </script>
</head>
<body>
<h1>Thank You for Signing Up!</h1>
</body>
</html>
Le code utilise l’API fetch. Il envoie au serveur l’adresse e-mail saisie par l’utilisateur. En supposant que le serveur crée un utilisateur avec un CUID unique lors de l’inscription, l’envoi de l’adresse e-mail au serveur a pour but de recevoir un CUID unique. Le serveur répond avec un CUID unique et ce CUID unique est la valeur transmise avec la méthode setCustomerUserId.
-
Configurez une page d’inscription :
<html> <head> <script>
// Google Tag Manager loads the Web SDK (function (w, d, s, l, i) { w[l] = w[l] || []; w[l].push({ 'gtm.start': new Date().getTime(), event: 'gtm.js' }); var f = d.getElementsByTagName(s)[0], j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f); })(window, document, 'script', 'dataLayer', 'GTM-5VJ6C7R');
// This function stores the user email to be sent to the server after the user reaches the thank you page // the response from the server is a unique CUID that should be used in the web SDK setCustomerUserId method function storeUserEmail (){ var userEmail = document.getElementById('email').value; localStorage.setItem('user_email', userEmail); } </script> </head> <body> <h1>Sign Up</h1> <form onsubmit="storeUserEmail()" action="/signup" method="post"> <div><label>Name</label> <input type="text" name="name" id="name"></div> <br /> <div> <label>Email</label> <input type="email" name="email" id="email"></div> <br /> <input type="submit" id="submit"> </form> </body> </html>Le code ci-dessus est un simple formulaire d’inscription. Lorsque le formulaire est envoyé, l’adresse e-mail est stockée dans localStorage. Lorsque l’utilisateur atteint la page de remerciement, son adresse e-mail est envoyée au serveur pour obtenir le CUID unique de cet e-mail.
-
Configurez une page de remerciement pour les utilisateurs qui s’inscrivent :
(t.AF.q=t.AF.q||[]).push([Date.now()].concat(Array.prototype.slice.call(arguments)))}, t.AF.id=t.AF.id||i,t.AF.plugins={},o=e.createElement(n),p=e.getElementsByTagName(n)[0],o.async=1, o.src="https://websdk.appsflyer.com?"+(c.length>0?"st="+c.split(",").sort().join(",")+"&":"")+(i.length>0?"af_id="+i:""), p.parentNode.insertBefore(o,p)}(window,document,"script",0,"AF","pba",{pba: {webAppId: "WEB_DEV_KEY"}}) </script> <script> // using the fetch api to send the user email to the server // and get the unique user id in return window.onload = function () { var userEmail = localStorage.getItem('user_email'); fetch('users/' + userEmail).then(function (res) { res.text().then(function (id) { console.log(id); AF('pba', 'setCustomerUserId', id); }); }); } </script> </head> <body> <h1>Thank You for Signing Up!</h1> </body> </html>
Le code précédent est une page de remerciement avec un déclencheur GTM qui envoie au serveur l’adresse e-mail fournie par l’utilisateur dans le formulaire d’inscription.
En supposant qu’à l’inscription, le serveur crée un utilisateur avec un CUID unique.
L’envoi de l’e-mail au serveur a pour but de recevoir un CUID unique.
Le serveur répond avec un CUID unique qui est envoyé à l’aide de la méthode setCustomerUserId().
Continuez cette procédure pour créer le déclencheur et l’onglet. - Ajoutez une nouvelle balise pour attribuer les abonnements après le chargement de la page de remerciement.
- Donnez un nom distinct à la balise et sélectionnez l’option de type de balise « HTML personnalisé »
<script> var userEmail = localStorage.getItem('user_email'); fetch('users/' + userEmail).then(function (res) { res.text().then(function (id) { console.log(id); AF('pba', 'setCustomerUserId', id); }); }); </script>
- Développez le contrôle Paramètres avancés, puis le contrôle Séquencement des balises sous la zone de texte et assurez-vous qu’il est configuré pour déclencher la conversion après l’exécution de la balise.
- Définissez un déclencheur pour la balise de conversion afin d’indiquer quand la balise de conversion doit être déclenchée (dans l’exemple ci-dessous, elle est déclenchée lors du chargement de la page « Merci »).
La fonction setCustomerUserId peut être envoyée à n’importe quelle étape du flux utilisateur, par exemple, après la connexion et l’inscription de l’utilisateur. AppsFlyer utilise le CUID le plus récent envoyé pour mettre à jour l’utilisateur observé actuel pour les points de contact et les événements passés ou futurs.
Utilisez la même valeur CUID que dans la fonction setCustomerUserd dans l’application mobile (voir mobile setCustomerUserId pour : iOS, Android, Unity).
Informations supplémentaires
Cookies du SDK Web
Les cookies répertoriés dans le tableau ci-dessous sont définis ou utilisés par Web SDK sur votre site web.
Dans le tableau, les abréviations suivantes sont utilisées :
- AMP : pages mobiles accélérées (Accelerated Mobile Pages)
- CDN : réseau de diffusion de contenu (Content Delivery Network)
- 3PC : Cookies (Third-party Cookies)
Nom du cookie | Domaine | Durée de vie | Moment d’utilisation | Détails |
---|---|---|---|---|
afUserid | Le domaine de votre site web | 395 jours | non-AMP | Identifier un utilisateur dans le contexte des événements de chargement et de navigation web |
AF_SYNC | Le domaine de votre site web | 1 semaine | non-AMP |
|
af_id | appsflyer.com | 395 jours | non-AMP lorsque 3PC sont autorisés | Identifier un utilisateur dans le contexte des événements de lancement et de navigation de l’application |
af_id | onelink.me | 395 jours | non-AMP lorsque 3PC sont autorisés | Associer des engagements de bannières, des engagements onelink ou les deux à des événements de lancement d’application. |
amp-afUserid | AMP CDN ou le domaine de votre site web | 1 an | Pour le service de pages par AMP |
Notes de mise à jour du SDK Web
Date | Version | Remarques |
---|---|---|
2021-07-01 | 1.0 | Ignorer les paramètres de requête |
2021-06-01 | 1.0 | Mettre en œuvre une stratégie de sécurité du contenu (CSP) |
31/08/2020 | 1.0 | Ajout d’une fonctionnalité de demande de consentement |
16/04/2020 | 1.0 | La fonction customerUserId() remplace l’événement IDENTIFY pour l’envoi du CUID unique |
2020-07-30 | 1.0 |
|
Dépréciations
- Un avis d’obsolescence indique notre intention d’arrêter de prendre en charge une fonctionnalité ou une méthode. La fonctionnalité ou la méthode continue de fonctionner jusqu’à sa date d’expiration.
- Considérez les avis d’obsolescence comme une opportunité d’apporter des modifications à votre code.
Date d’obsolescence |
Avis d'échéance | Détails |
---|---|---|
16/04/2020 | À annoncer |
Méthode obsolète : Envoi de l’ID utilisateur client (CUID) dans le paramètre d’événement customUserId avec le type d’événement défini sur « IDENTIFY » Méthode actuelle : Envoyez le CUID à l’aide de la fonction setCustomerUserId(). |