Aller au contenu principal

Conversions API

Avis de Dépréciation

L'API Conversions documentée ci-dessous est désormais obsolète et ne recevra plus de nouvelles mises à jour ou améliorations. Nous encourageons fortement tous les clients à migrer vers le Guide d'Intégration de l'API Événements, qui offre une fiabilité améliorée, une structure de données enrichie et des capacités étendues pour le suivi des conversions et la gestion des audiences.

Pourquoi ce changement ? L'Intégration de l'API Événements et Audiences fournit une interface modernisée et unifiée pour l'envoi de données de conversion et d'audience, permettant :

  • Une structure de données améliorée avec une gestion améliorée de l'identité et des attributs des utilisateurs
  • Un meilleur support pour les informations sur les appareils et les identifiants publicitaires mobiles
  • Une gestion des erreurs et des capacités de limitation de débit améliorées
  • Une interface unifiée pour les événements de conversion et les données d'audience
  • Un support évolutif pour les futurs types de données et modèles d'intégration

Support de Migration Pour vous aider dans votre migration, consultez le Guide d'Intégration de l'API Événements, qui inclut :

  • Une référence complète de l'API avec des exemples de requêtes/réponses
  • Le mapping des champs de l'API Conversions vers la nouvelle intégration
  • Les meilleures pratiques en matière d'authentification et de sécurité
  • Des conseils sur la gestion des erreurs et la limitation de débit
  • Des procédures de test et de validation

L'API Conversions fournit un moyen structuré d'envoyer des données de conversion à Rokt similaire à l'API Événement existante. Elle utilise un ensemble défini de champs au lieu de paires clé-valeur arbitraires, valide les formats de données et fournit des retours détaillés sur les problèmes sans rejeter des requêtes entières.

EndpointLien direct vers Endpoint

POST https://api.rokt.com/v1/conversions

Pour la référence complète de l'API, voir la documentation Swagger.

AuthentificationLien direct vers Authentification

Contactez votre gestionnaire de compte Rokt pour créer une paire de clés publique et secrète pour les comptes pour lesquels vous souhaitez soumettre des événements de conversion. Ces clés prennent la forme de rpub- et rsec- respectivement.

NomValeur
Clé Publique Roktrpub-********-****-****-****-************
Clé Secrète Roktrsec-********-****-****-****-************

RequêteLien direct vers Requête

En-têtesLien direct vers En-têtes

NomValeurDescription
Content-Typeapplication/jsonDoit être application/json.
AuthorizationBasic base64(rpub-...:rsec-...)En-tête standard d'authentification de base, avec la valeur des informations d'identification étant un encodage base64 de rpub- et rsec- joints par un deux-points.

CorpsLien direct vers Corps

Le corps de la requête doit être fourni au format JSON avec les champs suivants :

ChampTypeLongueur maxDescription
accountId*Chaîne64ID de compte Rokt
testBooléenLorsqu'il est défini sur true, la requête est validée sans traiter ni ingérer aucun événement. Utilisez pour tester votre intégration.
events*Liste[Objet]100 élémentsTableau d'événements de conversion. Doit contenir au moins un événement.

Chaque objet dans le tableau events peut contenir les champs suivants :

ChampTypeLongueur maxDescription
conversionIdChaîne255Identifiant unique pour la conversion. Les valeurs dupliquées dans une requête entraîneront le rejet des événements suivants.
conversionType*Chaîne255Type de conversion (par exemple, achat, inscription, abonnement).
eventTime*ChaîneHeure à laquelle l'événement de conversion s'est produit (format RFC3339). Ne peut pas être dans le futur ou avoir plus de 12 mois.
roktIdChaîne255Identifiant utilisateur Rokt.
emailChaîne255Adresse e-mail de l'utilisateur (minuscule recommandée pour la cohérence avec les valeurs hachées).
emailsha256Chaîne64Hachage SHA256 de l'adresse e-mail de l'utilisateur (chaîne hexadécimale de 64 caractères).
rclidChaîne64ID de clic Rokt (hachage SHA256, chaîne hexadécimale de 64 caractères).
mobileChaîne255Numéro de téléphone mobile de l'utilisateur.
mobilesha256Chaîne64Hachage SHA256 du numéro de téléphone mobile de l'utilisateur (chaîne hexadécimale de 64 caractères).
firstNameChaîne255Prénom de l'utilisateur.
lastNameChaîne255Nom de famille de l'utilisateur.
billingZipcodeChaîne255Code postal de facturation de l'utilisateur.
firstNamesha256Chaîne64Hachage SHA256 du prénom de l'utilisateur (chaîne hexadécimale de 64 caractères).
lastNamesha256Chaîne64Hachage SHA256 du nom de famille de l'utilisateur (chaîne hexadécimale de 64 caractères).
billingZipcodesha256Chaîne64Hachage SHA256 du code postal de facturation de l'utilisateur (chaîne hexadécimale de 64 caractères).
ipAddressString255Adresse IP de l'utilisateur.
userAgentString1024Chaîne de l'agent utilisateur du navigateur.
valueNumberValeur de la transaction (0 à 1000000).
ltvNumberValeur à vie du client (0 à 1000000).
predictedLTVNumberValeur à vie prédite du client (0 à 1000000).
currencyString255Code de devise (ISO 4217).
quantityIntegerQuantité d'articles (minimum 0). Doit être un nombre entier.
productNameString255Nom du produit.
skuString255Identifiant de l'unité de gestion des stocks.
paymentTypeString255Type de méthode de paiement.
marginNumberMarge bénéficiaire (0 à 1000000).
transactionIdString100Identifiant unique de la transaction.
confirmationRefString100Numéro de référence de confirmation. Utilisé pour la déduplication.
customAttributesObjectPaires clé-valeur personnalisées pour des données supplémentaires.
• Maximum 10 clés
• Les clés doivent être alphanumériques (pas d'espaces, de traits de soulignement ou de caractères spéciaux)
• Les clés ne doivent pas entrer en conflit avec les noms de champs du schéma d'événement
• Longueur maximale des clés 255 caractères
• Valeurs de chaîne maximum 1024 caractères
Validation des Identifiants

Chaque événement de conversion doit inclure au moins une des combinaisons d'identifiants suivantes pour permettre une correspondance et une attribution correctes :

  • N'importe lequel de : roktId, email, emailsha256, rclid, mobile, mobilesha256
  • Tous de : firstName, lastName, billingZipcode
  • Tous de : firstNamesha256, lastNamesha256, billingZipcodesha256
  • Tous de : ipAddress, userAgent

Les événements qui ne répondent pas à ces exigences échoueront à la validation.

ExemplesLien direct vers Exemples

Exemple minimal avec uniquement les champs requis :

{
"accountId": "12345",
"events": [
{
"conversionType": "purchase",
"eventTime": "2024-12-11T10:00:00Z",
"email": "user@example.com"
}
]
}

Exemple avec plusieurs événements :

{
"accountId": "12345",
"events": [
{
"conversionId": "evt_001",
"conversionType": "purchase",
"eventTime": "2024-12-11T10:00:00Z",
"email": "alice@example.com"
},
{
"conversionId": "evt_002",
"conversionType": "signup",
"eventTime": "2024-12-11T10:15:30Z",
"email": "bob@example.com"
},
{
"conversionId": "evt_003",
"conversionType": "purchase",
"eventTime": "2024-12-11T10:30:45Z",
"email": "carol@example.com"
}
]
}

Exemple complet avec tous les champs disponibles :

{
"accountId": "12345",
"events": [
{
"conversionId": "evt_123456",
"conversionType": "purchase",
"eventTime": "2024-09-11T10:00:00Z",
"roktId": "550e8400-e29b-41d4-a716-446655440000",
"email": "user@example.com",
"emailsha256": "d8a928b2043db77e340b523547bf16cb4aa483f0645fe0a290ed1f20aab76257",
"rclid": "550e8400e29b41d4a716446655440001550e8400e29b41d4a716446655440001",
"mobile": "+16175494599",
"mobilesha256": "a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456",
"firstName": "John",
"lastName": "Doe",
"billingZipcode": "12345",
"firstNamesha256": "f1e2d3c4b5a698765432109876543210fedcba9876543210fedcba9876543210",
"lastNamesha256": "1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
"billingZipcodesha256": "fedcba0987654321fedcba0987654321fedcba0987654321fedcba0987654321",
"ipAddress": "192.168.0.1",
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
"value": 99.99,
"ltv": 499.99,
"predictedLTV": 299.99,
"currency": "USD",
"quantity": 1,
"productName": "Premium Widget",
"sku": "WIDGET-001",
"paymentType": "credit_card",
"margin": 24.99,
"transactionId": "txn_789012",
"confirmationRef": "conf_456789",
"customAttributes": {
"source": "website",
"campaignId": "summer2024",
"isNewCustomer": true,
"sessionId": "abc123def456",
"couponCode": "SAVE20",
"discountPercent": 15,
"taxRate": 0.0825
}
}
]
}

RéponseLien direct vers Réponse

L'API valide les requêtes en deux étapes :

  1. Validation de la requête : vérifie l'authentification, le format JSON et les champs requis
  2. Validation des événements : traite les événements individuels si la validation de la requête est réussie

Codes de statutLien direct vers Codes de statut

Code de réponse HTTPDescription
200Événements de conversion traités avec succès (tous ou partiels).
400Mauvaise requête - erreurs de validation ou tous les événements ont échoué.
401Non autorisé - jeton d'authentification invalide ou manquant.
403Interdit - jeton non autorisé pour ce compte.
413Entité de requête trop grande - le corps de la requête dépasse la limite de 1 Mo.
429Trop de requêtes - limite de débit dépassée.
500Erreur interne du serveur.
503Service indisponible.

Erreurs de validation de la requêteLien direct vers Erreurs de validation de la requête

La réponse contient un objet data avec :

ChampTypeDescription
codeStringCode d'erreur (par exemple, EventsRequiredError, AccountIDRequiredError, InvalidJSONError).
messageStringMessage d'erreur détaillé.

Résultats du traitement des événementsLien direct vers Résultats du traitement des événements

Retourne 200 (Succès/Partiel) si au moins un événement est valide, ou 400 (Échec) si aucun événement n'est valide.

Toutes les réponses contiennent un objet data avec les champs suivants :

ChampTypeDescription
codeStringCode de statut de la réponse (Succès, Partiel ou Échec).
processedCountNumberNombre d'événements traités avec succès.
invalidCountNumberNombre d'événements ayant échoué à la validation.
errorsList[Object]Tableau d'erreurs du traitement des événements. Chaque objet suit le schéma d'erreur/avertissement ci-dessous.
warningsList[Object]Tableau d'avertissements du traitement des événements. Chaque objet suit le schéma d'erreur/avertissement ci-dessous.

Le warnings dans la réponse inclura les vérifications qui ont échoué mais ne sont pas assez graves pour entraîner le rejet de l'ensemble de l'événement de conversion. Ils n'affecteront pas le invalidCount.

Chaque objet d'erreur et d'avertissement dans les tableaux errors et warnings inclura le champ conversionId s'il a été fourni dans l'événement de requête correspondant. Cela aide à identifier quel événement spécifique a causé le problème.

Schéma d'objet d'erreur/avertissement :

ChampTypeDescription
conversionIdStringID de conversion si présent dans l'événement.
eventIndexNumberPosition de l'événement dans le tableau de requêtes (à partir de 0).
fieldStringNom du champ ayant causé l'erreur ou l'avertissement.
messageStringMessage d'erreur ou d'avertissement.

ÉchantillonsLien direct vers Échantillons

Erreur de validation de la demande :

{
"data": {
"code": "InvalidAccountIDError",
"message": "Account ID is invalid"
}
}

Succès (tous les événements valides) :

{
"data": {
"code": "Success",
"processedCount": 1,
"invalidCount": 0
}
}

Partiel (certains événements valides) :

{
"data": {
"code": "Partial",
"processedCount": 1,
"invalidCount": 1,
"errors": [
{
"eventIndex": 1,
"field": "conversionType",
"message": "conversionType is required"
},
{
"eventIndex": 1,
"field": "eventTime",
"message": "eventTime is required"
}
]
}
}

Échec (tous les événements invalides) :

{
"data": {
"code": "Failure",
"processedCount": 0,
"invalidCount": 1,
"errors": [
{
"eventIndex": 0,
"field": "eventTime",
"message": "must be a valid RFC3339 timestamp"
}
]
}
}
Cet article vous a-t-il été utile ?