Passer au contenu principal
Configurer un objectif de revenu dans Kameleoon est simple, mais nécessite des étapes minutieuses pour s’assurer que tout fonctionne correctement. Chaque site web a sa propre structure, son propre flux d’achat, sa propre configuration de suivi et ses propres cas particuliers, ce qui signifie qu’il n’existe pas de solution universelle. Sans une configuration appropriée, vous risquez de manquer des points de données clés, de compter en double les transactions ou de mal interpréter les performances. Pour vous aider à éviter ces écueils et à garantir que votre suivi des revenus est à la fois précis et significatif, cet article rassemble un ensemble de directives pratiques. Les recommandations sont conçues pour couvrir les défis les plus courants rencontrés par les utilisateurs de Kameleoon, tout en proposant des solutions flexibles que vous pouvez adapter à votre configuration.

Méthode d’implémentation

Kameleoon prend en charge plusieurs méthodes d’intégration pour suivre efficacement les objectifs de revenu, en fonction de votre type d’expérimentation et de votre configuration technique. Vous trouverez ci-dessous les approches recommandées pour Web Experimentation (WE) et Feature Experimentation (FE), y compris la prise en charge des conversions hors ligne via la Kameleoon Data API.

Web Experimentation

  • Utilisation d’un gestionnaire de balises : Vous devez implémenter kameleoonQueue, qui garantit que les événements de conversion sont déclenchés en synchronisation avec votre plateforme d’analyse, en maintenant la cohérence des données entre les outils et en améliorant les performances de votre site. Pour un guide d’implémentation détaillé dans Google Tag Manager, consultez ce guide complet et les étapes de configuration ci-dessous pour configurer l’objectif de revenu.
  • Utilisation du script personnalisé global : Si kameleoonQueue n’est pas compatible avec votre configuration, vous pouvez implémenter manuellement l’objectif de revenu en utilisant l’Activation API dans le script personnalisé global de l’application Kameleoon.

Feature Experimentation

Si vous utilisez l’un des SDK Kameleoon, vous pouvez suivre les objectifs de revenu en utilisant la méthode trackConversion(). Consultez les étapes ci-dessous pour configurer correctement l’objectif de revenu en fonction de votre environnement SDK.

Data API

(Applicable à la fois pour WE et FE) Pour les conversions hors ligne, telles que les achats effectués par téléphone ou en magasin, vous pouvez utiliser la Kameleoon Data API pour traiter les conversions d’objectifs hors ligne. Cette méthode est la meilleure lorsque l’événement de conversion se produit en dehors du parcours en ligne de l’utilisateur, mais doit néanmoins être suivi et attribué dans vos expériences Kameleoon.

Configuration

Périmètre

Avant de configurer votre objectif de revenu, vérifiez si la confirmation de transaction se produit toujours sur une page unique et cohérente. Dans certaines configurations, en particulier celles impliquant des applications mobiles, des paiements intégrés ou des prestataires de paiement tiers, la confirmation peut apparaître dans une vue web ou sur un domaine séparé. Assurez-vous que Kameleoon est correctement installé sur toutes les pages ou vues pertinentes où la confirmation peut apparaître. Cette configuration garantit que les conversions sont suivies de manière fiable et qu’aucune donnée de revenu n’est manquée. Si un utilisateur peut effectuer une transaction sur plusieurs URL (par exemple, en raison de variations dans les paramètres de requête ou de différents flux de paiement), ajoutez toutes les URL pertinentes dans les paramètres de Kameleoon pour qu’elles soient suivies. De cette façon, aucune conversion ne sera manquée.

Objectif de transaction (accès à la page de confirmation)

C’est une bonne pratique de définir un objectif pour l’accès à la page de confirmation, sans le montant des revenus. Cet objectif pourrait aider à suivre les conversions manquantes pour l’objectif de revenu. Les conversions manquées sont souvent causées par des retards dans le chargement du montant des revenus sur la page (que ce soit dans le DOM, le dataLayer ou un autre objet similaire). Pour configurer un objectif de transaction dans WE, vous pouvez choisir entre deux types d’objectifs :
  • Accès à une page : Vous devez définir l’URL dans la configuration de l’objectif. Selon la structure de l’URL, vous pouvez utiliser soit URL contient soit Correspond à l’expression régulière pour tenir compte des variations dans l’URL (différents chemins ou paramètres de requête, par exemple). Évitez d’utiliser Correspond exactement à, car l’URL inclura probablement des paramètres qui peuvent varier.
Lors de l’utilisation du type d’objectif Accès à une page, si les visiteurs peuvent recharger la confirmation sans être redirigés (vers la page d’accueil, par exemple), l’objectif peut être déclenché à nouveau. Si c’est votre configuration, il est préférable de s’appuyer sur les métriques de visites converties plutôt que sur toutes les conversions dans la page Résultats pour éviter le surcomptage.
  • Objectif personnalisé : Ce type d’objectif est utile pour s’assurer que l’objectif ne se reconvertit pas si la page de confirmation est rechargée. Vous pouvez implémenter un objectif personnalisé dans le script personnalisé global et utiliser une vérification sessionStorage pour empêcher les conversions en double (voir l’exemple de code ci-dessous). Cette approche est recommandée car vous pouvez utiliser le même code pour déclencher l’objectif de revenu, améliorant ainsi les performances en éliminant le besoin d’un objectif natif Accès à une page.
if (
   document.location.href.includes("/confirmation/") &&
   !window.sessionStorage.getItem("kameleoonGoalConverted")
 ) {
   // Set an item in sessionStorage to prevent a second conversion if the page is reloaded
   window.sessionStorage.setItem("kameleoonGoalConverted", "true");
   // Convert the transaction goal, replace the ID below
   Kameleoon.API.Goals.processConversion(355733);
 } else if (!document.location.href.includes("confirmation")) {
   // Remove the item from sessionStorage to allow conversion for a new transaction
   window.sessionStorage.removeItem("kameleoonGoalConverted");
 }

Format du revenu

Assurez-vous que le montant du revenu est correctement formaté et validé avant le traitement, notamment :
  • Remplacer les virgules (,) par des points (.) pour la cohérence décimale.
  • Supprimer les espaces (qui peuvent être présents dans les montants supérieurs à 1 000).
  • Retirer les symboles de devise (tels que $).
  • Convertir la chaîne nettoyée en un type de données numérique pour des calculs précis.
Par exemple :
let revenue = parseFloat(revenue.replace(",", ".").replace(/user-manual/[^0-9.]/g, "").replace(/user-manual/\s+/g, ""));

Devises

Un site web peut prendre en charge plusieurs devises. Assurez-vous de comparer les valeurs de conversion toutes exprimées dans la même devise pour éviter des résultats trompeurs ou des analyses incorrectes. Vérifiez que la devise utilisée dans votre suivi et vos rapports est cohérente sur toutes les conversions. Vous pouvez déclencher un objectif pour chaque devise et/ou utiliser le service web de conversion de Kameleoon. Le point de terminaison est fourni ci-dessous — assurez-vous que tous les arguments transmis sont valides.
<https://customers.kameleoon.com/kameleoon/currencies/convert?inputCurr=${inputCurr}&outputCurr=${outputCurr}&amount=${revenue}>;
Ne convertissez jamais le même objectif en utilisant des montants dans différentes devises. Vous devez soit créer un objectif distinct pour chaque devise, soit les unifier en configurant un objectif global utilisant le point de terminaison du service web ci-dessus. Ce service convertira tous les montants en une seule devise de votre choix.
Consultez l’exemple de code complet à la fin de cet article pour une implémentation détaillée du service web de conversion de devise.

ID de commande

Vous devez ajouter une donnée personnalisée pour stocker l’ID de commande (numéro de commande) et l’utiliser comme métadonnées pour l’objectif de revenu. Cette donnée personnalisée liera chaque conversion à l’ID de commande et vous aidera à faire correspondre avec précision les transactions avec votre outil d’analyse et à enquêter sur les éventuelles divergences de données. Pour configurer la donnée personnalisée, reportez-vous à la capture d’écran ci-dessous. Ajustez le format selon que l’ID de commande sur votre site est un nombre ou une chaîne.
Ensuite, associez la donnée personnalisée OrderID à votre objectif de revenu.
Enfin, consultez l’exemple de code complet ci-dessous, qui définit la valeur de la donnée personnalisée.

Exemple complet

Cet exemple est pour WE et peut être utilisé comme référence pour l’implémentation dans FE. Maintenant que vous avez examiné chaque élément clé — périmètre, logique de transaction, format du revenu, gestion des devises et suivi de l’ID de commande — vous êtes prêt à tout réunir. Vous trouverez ci-dessous un exemple complet d’implémentation de l’objectif de revenu en utilisant le script personnalisé global dans Kameleoon.
 // Amount conversion using Kameleoon's currency conversion web service
 const convertCurrency = async (revenue, inputCurr, outputCurr) => {
     if (revenue == 0) return 0;
     const response = await fetch(
         `https://customers.kameleoon.com/kameleoon/currencies/convert?inputCurr=${inputCurr}&outputCurr=${outputCurr}&amount=${revenue}`,
         {
             method: 'GET',
             headers: {
                 'Content-Type': 'text/plain',
             },
         }
     );
     return response.json();
 };
 

 // Logic to:
 // - Convert the transaction goal 
 // - Convert a goal for each currency
 // - Convert the global revenue goal
 // - Set the orderID custom data
 // repalce all goal IDs in the code
 if (document.location.href.includes("/confirmation/") && !window.sessionStorage.getItem("kameleoonGoalConverted")) {
     Kameleoon.API.Goals.processConversion(355733); // Transaction goal
     sessionStorage.setItem("kameleoonGoalConverted", "true");
 

     let revenueLayer;
     Kameleoon.API.Core.runWhenConditionTrue(() => {
         revenueLayer = window.dataLayer?.find(layer => layer.ecommerce?.purchase?.actionField?.revenue);
         return revenueLayer;
     }, () => {
         let revenue = parseFloat(revenueLayer.ecommerce.purchase.actionField.revenue);
         const inputCurr = revenueLayer.ecommerce.purchase.actionField.inputCurrency;
         const orderID = revenueLayer.ecommerce.purchase.actionField.orderID;
 

         if (!isNaN(revenue)) {
             revenue = revenue.toString().replace(",", ".").replace(/user-manual/[^0-9.]/g, "").replace(/user-manual/\s+/g, "");
             // Currency-specific revenue goals
             switch (inputCurr) {
                 case 'GBP':
                     Kameleoon.API.Goals.processConversion(355641, revenue);
                     break;
                 case 'USD':
                     Kameleoon.API.Goals.processConversion(355643, revenue);
                     break;
                 case 'EUR':
                     Kameleoon.API.Goals.processConversion(355642, revenue);
                     break;
                 default:
                     Kameleoon.API.Goals.processConversion(355649); // Other currencies (no revenue passed)
             }
             // Global revenue goal in output currency (you can use ISO 4217 codes for each country)
             const outputCurr = "USD";
             convertCurrency(revenue, inputCurr, outputCurr).then((convertedRevenue) => {
                 // The custom data must be set before the goal is converted
                 Kameleoon.API.Data.setCustomData("orderID", orderID);
                 Kameleoon.API.Goals.processConversion(353518, convertedRevenue);
             }).catch((error) => {
// Create a Custom Data to store potential errors for debugging
                 Kameleoon.API.Data.setCustomData("[KAM] - currency webservice error", `error: ${error.toString()}; revenue: ${revenue}; inputCurr ${inputCurr}; outputCurr ${outputCurr}`);
                 console.error("Error in currency conversion:", error);
             });
         }
     });
 } else if (!document.location.href.includes("/confirmation/")) {
     sessionStorage.removeItem("kameleoonGoalConverted");
 } 
Vous trouverez ci-dessous une capture d’écran de la structure dataLayer sur la page de confirmation à titre de référence.
La configuration d’un objectif de revenu fiable dans Kameleoon nécessite un alignement minutieux avec la structure de votre site, la configuration dataLayer et les formats de devise. En suivant les directives ci-dessus, que ce soit via un gestionnaire de balises ou un script personnalisé global, vous pouvez garantir un suivi précis, réduire les écarts avec vos outils d’analyse et obtenir des informations plus significatives à partir de vos expériences. N’oubliez pas de tester minutieusement et de valider votre implémentation pour maintenir l’intégrité des données.