API d'événements serveur à serveur pour PBA (Web-S2S)

En bref : Utilisez l'API d'événements Web Server-to-Server (Web-S2S) pour signaler à PBA les événements et les conversions qui ne sont pas signalés par le SDK Web.

5107_Infographic_Web_S2S_759x270_option1.jpg

API d'événements de serveur à serveur Web pour PBA

L'API Web-S2S pour l'attribution basée sur les personnes complète le SDK Web en permettant aux spécialistes du marketing de signaler les événements qui se produisent sur leurs sites web mais qui ne sont pas couverts par le SDK Web. Par exemple, un visiteur du site web (un internaute) déclenche un paiement en ligne, traité par des systèmes en arrière-plan. Après traitement, l’arrière-plan signale l'événement à AppsFlyer via l'API S2S.

Événements envoyés par l'API S2S :

  • sont enregistrés de la même manière que les événements signalés par le SDK Web
  • sont inclus dans les tableaux de bord PBA s'ils sont définis comme des événements de conversion
  • alimenter les données brutes PBA avec le champ event_source réglé sur web S2S

Instructions d'utilisation de l'API

Créez votre appel API à l'aide des sections suivantes. 

Non. Élément Remarques
1 ID unique de l'utilisateur
  • Efforcez-vous de nous fournir le meilleur ID utilisateur unique disponible. Cela a un impact significatif sur l'analyse des données.
  • La bonne pratique consiste à envoyer customerUserId. S'il n'est pas disponible, il envoie afUserId, qui est l'ID du cookie du site web défini par WebSdk.
  • Lorsque vous associez votre ID d'utilisateur client(CUID) à afUserId, un message setCuID() avec les deux ID est envoyé.
2 Horodatage
  • Nous supprimons votre horodatage si l'événement arrive en retard. Cela signifie que les événements dont l'horodatage est le lundi doivent arriver avant le mardi minuit UTC.
  • Les horodatages sont basés sur le système UTC. Si nécessaire, convertir l'heure locale en heure UTC avant de renseigner le paramètre.
3 Revenus et devises Vous devez renseigner eventRevenueCurrency et eventRevenue même s'ils sont contenus dans eventValue. Nous les utilisons dans nos tableaux de bord.

Principes de base de l'API

La mise en œuvre de l'API nécessite les informations d'identification suivantes, disponibles dans le tableau de bord :

  • ID de bundle (ou ID du bundle de marques)
  • Clé dev web

Pour obtenir les informations d'identification : 

  1. Dans AppsFlyer, dans le menu supérieur, sélectionnez Mes applications > Voir les bundles de marques.
    La liste des bundles s'affiche.
  2. Copiez et enregistrez les données appropriées :
    • ID de bundle de marques
    • Clé dev web

Principes de base de l'API Web S2S

Chemin

https://webs2s.appsflyer.com/v1/bundleId/method

  • bundleId : l'identifiant du bundle d'applications est-il disponible dans le tableau de bord ? 
  • method soit l'un des éléments suivants :
    • event: envoi pour les événements d’arrière-plan à signaler
    • setCuId : envoyé lors de l'association de afUserId avec votre CUID
Méthode HTTP POST
Type de contenu accepté application/json 
Limitation de charge utile JSON 

Taille de la charge utile JSON : maximum 1 Ko

Limitation de taux

Volume de limitation POST : 60 000 POST par minute. Pour augmenter la limite, contactez votre MSC.

Protocole TLS

Méthode setCuId

Nom de la méthode

setCuId

Cas d'utilisation 

Pour l'association d'un CUID à un visiteur de votre site web. Par exemple, chaque fois que vous faites correspondre le site web afUserId avec l'ID de votre client. Cela permet à la PBA de faire correspondre des données provenant de différentes sources. Cette fonction est similaire à setCustomerUserId sur le site web.

Chemin de la méthode

https://webs2s.appsflyer.com/v1/bundleId/setcuid

Charge utile

La charge utile JSON se compose des paramètres énumérés ici. Tous les paramètres sont obligatoires.

 Exemple Curl setCuId


curl --location --request POST 'https://webs2s.appsflyer.com/v1/bundleId/setcuid' \ --header 'Accept-Encoding: application/json' \ --header 'Content-Type: application/json' \ --data-raw '{ "customerUserId": "1234567890abcdef", "afUserId":"9999999-f848-4963-a091-568f0bf9a361", "webDevKey" : "99999999-9999-9999-9999-999999999999"}

Méthode d'événement

Nom de la méthode

événement

Cas d'utilisation Envoyer
Chemin de la méthode

https://webs2s.appsflyer.com/v1/bundleId/event

 Informations détaillées La section Détails de la méthode d'événement de cet article contient des détails sur la charge utile, un exemple Curl, un exemple Python et des suggestions de test.

Détails de la méthode d'événement

Paramètres de charge utile

Les paramètres de la charge utile sont divisés en identifiants d'utilisateurs et en paramètres d'événements. 

  • ID utilisateur : Vous devez envoyer au moins un paramètre d'identification de l'utilisateur.
  • Événement : Envoyer les paramètres obligatoires et les paramètres optionnels si nécessaire.

Paramètres d'identification de l'utilisateur (envoyer au moins un paramètre)

Paramètre de l'ID utilisateur  Description

customerUserId

L'ID d'utilisateur client (CUID) est un identifiant unique que vous définissez.

  • Utilisez le même identifiant pour les événements signalés à AppsFlyer par quelque moyen que ce soit. Cela signifie que le même identifiant est utilisé dans le SDK Web, le SDK mobile et les API S2S.
  • ID utilisateur du client SDK Web
  • Format : Chaîne
  • Exemple :"customerUserId" : "663274"
  • Remplit le champ de données brutes : customer_user_id

afUserId

L'ID utilisateur unique attribué par le SDK Web à chaque utilisateur qui visite votre site web. Vous devrez transmettre la valeur du cookie à vos serveurs d’arrière-plan.

  •  Détails du cookie :
    • Nom : afUserId
    • Valeur : attribuer cette valeur à afUserId
    • Domaine : website-domain
  • Exemple : "afUserId" : "unique_cookie_uuid"
  • Remplit le champ de données brutes : af_web_id

Paramètres d'événement

Nom du paramètre Obligatoire Description

webDevKey

Oui

Remplir à l'aide de la clé web dev disponible sur le tableau de bord.

  • Exemple :"webDevKey" : "ffffffff-ffff-ffff-ffff-ffffffffffff"
eventType Oui

Identifiant d'attribut d'événement à usage interne d'AppsFlyer. Toujours réglé sur EVENT.

  • Exemple :"eventType" : "EVENT"
eventName Oui
  • Nous utilisons ce paramètre pour différencier les événements de conversion et de non-conversion à l'aide de la liste de conversion des événements établie par le responsable marketing dans les paramètres PBA. 
  • Veillez à l'alimenter avec des valeurs conformes à la logique de conversion de l'agent de marketing.
  • Format : chaîne.
  • Exemple :"eventName" : "web_purchase"
  • Remplit le champ de données brutes : event_name
Horodatage Non

Heure à laquelle l'événement s'est produit, en millisecondes. Envoyer sous la forme d'un horodatage Unix de 13 chiffres.

  • Si aucun horodatage n'est envoyé, l'heure est fixée en utilisant l'heure du serveur. 
  • Les événements qui arrivent en retard sont horodatés en fonction de l'heure actuelle du serveur. L'arrivée tardive signifie l'arrivée après minuit UTC le jour suivant l'événement. Par exemple, un événement survenant le lundi doit être traité avant le mardi à minuit UTC. 
  • Les événements dont l'heure se situe dans le futur (par rapport à l'heure actuelle du serveur) sont horodatés avec l'heure du serveur.
  • Format : Int
  • Exemple :"timestamp" : 1584835200123
  • Remplit le champ de données brutes : event_time
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.
  • Remarque relative aux revenus : Vous pouvez renseigner ce paramètre avec les détails du revenu. Vous devez également renseigner eventRevenue et eventRevenueCurrency.
  • Format : JSON
  • Exemple : Pour envoyer le SKU ABC123, d'une couleur bleue et d'un prix unitaire de 3,99 $, définissez eventValue ainsi :
    {"Purchase": {"sku" : "ABC123", "color": "blue", "unit_price":3.99,"currency": "USD"}}
  • Limitation : 1000 caractères. Ne dépassez pas cette limite, sinon la valeur sera tronquée.
  • Remplit le champ de données brutes : event_value
eventRevenueCurrency Non

Code devise d'un fait générateur de recettes, à savoir un code devise ISO 4217 à trois caractères.

  • Par défaut : USD
  • Format : chaîne
  • Exemple : "eventRevenueCurrency" : "EUR"
  • Remplit le champ de données brutes : event_revenue_currency
eventRevenue Non 

Revenus (valeur monétaire) affectés à un événement.

Important ! Si les recettes sont déclarées dans eventValue, elles sont également déclarées dans eventRevenue et remplissent eventRevenueCurrency. 

  • Les valeurs négatives sont autorisées. Par exemple, un remboursement.
  • Format : Float 
  • Exemple de valeurs : 1 1.2 1234.20 -1234.20
  • Remplit le champ de données brutes : event_revenue
eventCategory Non  Ce paramètre est obsolète et sera supprimé du système à une date ultérieure. Utilisez plutôt eventValue.
eventLabel Non 

Ce paramètre est obsolète et sera supprimé du système à une date ultérieure. Utilisez plutôt eventValue.

Référent Non

Référent HTTP

  • Format : chaîne
  • Exemple :"referrer" : "https://www.google.com/"
  • Remplit le champ de données brutes : http_referrer
userAgent Non 

Requête de l'agent utilisateur envoyée par le navigateur au serveur.

  • Dans la mesure du possible, envoyez cette valeur, car elle permet de déterminer le type d'appareil. 
  • Format : chaîne
  • Exemple : "userAgent" : "Chrome/80.0.3987"
  • Remplit le champ de données brutes : user_agent
ip Non

Adresse IP de l'utilisateur

  • Dans la mesure du possible, envoyer la valeur de ce champ. Il permet de déterminer la géolocalisation de l'utilisateur.
  • Format : chaîne
  • Exemple :"ip": "192.0.2.1"
  • Remplit le champ de données brutes : ip
 

Exemple Curl

curl --location --request POST 'https://webs2s.appsflyer.com/v1/bundleId/event' \
--header 'Accept-Encoding: application/json' \
--header 'Content-Type: application/json' \
--data-raw '{
	"customerUserId": "1234567890abcdef",
	"afUserId":"9999999-f848-4963-a091-568f0bf9a361",
    "webDevKey" : "99999999-9999-9999-9999-999999999999",
    "ip" : "192.0.2.1",
	"eventType":"EVENT",
	"timestamp" : 1234567890123,
	"eventName":"my_web_event",
	"eventRevenueCurrency" : "EUR",
	"eventRevenue" : 1234.56,
	
		"eventValue": {
		"purchase":{
		 "shoes": "color",
		 "quantity" : "3",
		 "Revenue" : "1234.56",
		 "Currency" : "ZAR"
		}
	}

}'

Exemple Python

''' using the requests python package, install using pip install requests  '''
import requests
url = "https://webs2s.appsflyer.com/v1/bundleId/event"
payload = {
    "customerUserId": "1234567890abcdef",
    "afUserId": "9999999-f848-4963-a091-568f0bf9a361",
    "webDevKey": "99999999-9999-9999-9999-999999999999",
    "ip": "192.0.2.1",
    "eventType": "EVENT",
    "timestamp": 1234567890123,
    "eventName": "my_web_event",
    "eventRevenenuCurrency": "EUR",
    "eventRevenue": 1234.56,
    "eventValue":
        {
            "purchase":
            {
                "shoes": "color",
                "quantity": "3",
                "Revenue": "1234.56",
                "Currency": "ZAR"
            }
        }
    }
headers = {
    'Accept-Encoding': 'application/json',
    'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, json=payload)
print(response.text.encode('utf8'))

Test

À des fins de test, envoyez plusieurs événements comme suit :

  1. Envoyer un événement.
  2. Assurez-vous que vous obtenez un code de retour 200 OK. Si ce n'est pas le cas, prenez des mesures correctives à l'aide des codes de retour et des messages d'erreur.
  3. Attendez plusieurs heures après minuit UTC pour voir l'événement reporté dans les données brutes du PBA. Vous devez attendre, car les données PBA sont traitées une fois par jour. 

Informations supplémentaires

Obtenir la clé Web Dev

 Pour obtenir la clé de dev Web :

  1. Dans AppsFlyer, allez dans la section Mes applications.
  2. Cliquez sur Voir le bundle de marques.

    GetWebDevKeyPba_us-en.pn

  3. Copiez la  clé de développement web requise. 

Extraction de afUserID du SDK Web

  • Le afUserId est un identifiant unique, défini par le SDK Web lorsqu'un utilisateur visite votre site pour la première fois.
  • Si vous avez besoin de afUserId, utilisez l'une des méthodes suivantes.


Obtenir afUserId à partir de l'en-tête du cookie HTTP

  • afUserId est envoyé par le navigateur des visiteurs lorsqu'ils visitent votre site.
  •  L'extraire de l'en-tête du cookie HTTP si nécessaire.


Affichage de afUserId dans le navigateur du visiteur

  •  Afficher afUserId dans le navigateur du visiteur, à des fins de dépannage et de débogage.
  • Pour qu'il soit disponible, le visiteur doit d'abord avoir consulté au moins une fois une page contenant le SDK Web. 
  • Le cookie contenant afUserId est un cookie first party lié à votre domaine.
  • La procédure qui suit a été préparée à l'aide de Chrome 81. Il peut y avoir des différences entre les navigateurs et les systèmes d'exploitation.

Pour obtenir l'afUserId du navigateur du visiteur :

  1. Dans votre navigateur, allez sur votre site web.
  2. Cliquez avec le bouton droit de la souris et sélectionnez Inspecter
    La fenêtre d'inspection des éléments du navigateur s'ouvre.

    S2S_inspect.jpg

  3. Aller à la (A) Application (A).
  4. Dans le menu latéral, (B) développez Cookies.
  5. Sélectionnez votre site web. S’il ne s'affiche pas, actualisez le navigateur.
  6. Dans le filtre (C) entrez afUserId
    La valeur de afUserID s'affiche. 

Codes de réponse

Code de réponse Message Gestion
200 OK  
404 Pas de résultat
  • Vérifier le point de terminaison 
  • Vérifier que l'identifiant de bundle est correct
400 Demande incorrecte
  • Il y a une erreur dans le JSON. Voir le message d'erreur pour plus de détails. 

Dépannage

  • Symptôme : les codes de retour HTTP ne sont pas renvoyés
    Solution : liste des serveurs autorisés AppsFlyer

Notes de mise à jour


Notes de mise à jour du SDK Web
Date  Version du point de terminaison* Remarques
2020-05-12 1  Version initiale
2020-05-24 1  
* Le numéro de version correspond au numéro de version du point de terminaison. https://webs2s.appsflyer.com/v1/method