Article

Tracking – Catégorisation de produits

La catégorisation de produits est une intégration avancée qui répartit vos conversions par type de produit acheté. Chaque catégorie reçoit sa propre clé Affilae, et le script déclenche la conversion correspondant aux produits réellement présents dans le panier.

Vous pouvez ainsi rémunérer différemment une vente de mobilier et une vente de livres, avec une règle de commissionnement par catégorie.

Prérequis : c’est une intégration avancée. Elle demande la maîtrise du DataLayer e-commerce, la connaissance des variables GTM et de leur structure, des compétences en JavaScript pour la personnalisation, et l’accès aux identifiants produits dans votre système e-commerce.

Ce que fait une intégration en catégorisation de produits

Cette intégration consiste à :

  • segmenter les produits par catégories métier (par exemple électronique, vêtements, livres) ;
  • attribuer des clés Affilae spécifiques à chaque catégorie ;
  • calculer automatiquement les montants par catégorie lors d’une commande ;
  • déclencher les conversions appropriées selon les produits présents dans le panier.
À ne pas confondre : cette page traite du tracking des conversions par catégorie. Elle ne concerne pas le flux produits, qui est le fichier catalogue (CSV, XML ou JSON) mis à disposition de vos éditeurs. Pour ce sujet, voyez Flux produits : à quoi ça sert et ce que doit contenir votre fichier.

Prérequis techniques

Configuration requise

  • Un DataLayer e-commerce correctement configuré.
  • La catégorie de chaque produit dans ce DataLayer, par exemple item_category avec Google Analytics 4.
  • Le tag de suivi Affilae doit être chargé sur la page de confirmation.

Deux façons de poser l’intégration

  • Intégration GTM (client-side) : avec un tag HTML personnalisé.
  • Intégration custom (code natif) : intégration directe dans le code de la page de confirmation.

Code d’exemple

Voici un exemple pour deux catégories, plus une clé par défaut pour les autres produits. Il lit la catégorie de chaque produit dans le DataLayer GA4 et envoie une conversion par clé, avec le même numéro de commande.

<script>
// Send one Affilae conversion per product category found in the order.

// GTM variables
var items = {{dl_ecommerce.items}};
if (Object.prototype.toString.call(items) !== '[object Array]') { items = []; }

var orderId = gtmString('{{dl_ecommerce.transaction_id}}');
var coupon = gtmString('{{dl_ecommerce.coupon}}');
var currency = 'EUR';

// Category, exactly as in item_category of your dataLayer -> Affilae key of its rule
var keysByCategory = {
  'Mobilier': 'RULE_ID_MOBILIER-PROGRAM_ID',
  'Livres': 'RULE_ID_LIVRES-PROGRAM_ID'
};

// Key for products of any other category ('' to send nothing for them)
var defaultKey = 'RULE_ID_AUTRES-PROGRAM_ID';

// Add up amount and product ids per key
var conversionsByKey = {};

items.forEach(function (product) {
  var category = gtmString(product.item_category);
  var key = keysByCategory.hasOwnProperty(category) ? keysByCategory[category] : defaultKey;
  if (!key) return;

  if (!conversionsByKey[key]) {
    conversionsByKey[key] = { amount: 0, products: [] };
  }
  conversionsByKey[key].amount += toNumber(product.price) * toQuantity(product.quantity);

  var productId = gtmString(product.item_id);
  if (productId) conversionsByKey[key].products.push(productId);
});

// No order id -> the tracking endpoint rejects the hit anyway, do not fire
if (orderId) {
  Object.keys(conversionsByKey).forEach(function (key) {
    if (conversionsByKey[key].amount > 0) {
      sendAffilae(key, conversionsByKey[key].products, conversionsByKey[key].amount);
    }
  });
}

// A missing GTM variable is substituted as the literal string 'undefined'
function gtmString(value) {
  return (value === null || value === undefined || value === 'undefined') ? '' : String(value);
}

// Prices may arrive as strings, with a comma as decimal separator
function toNumber(value) {
  var n = parseFloat(String(value === null || value === undefined ? 0 : value).replace(',', '.'));
  return isFinite(n) ? n : 0;
}

// Default to 1 only when the quantity is absent, never when it is explicitly 0
function toQuantity(value) {
  if (value === null || value === undefined || value === '') return 1;
  var n = toNumber(value);
  return n > 0 ? n : 0;
}

// Push conversion to Affilae
function sendAffilae(key, products, amount) {
  var encodedProducts = [];
  for (var i = 0; i < products.length; i++) {
    encodedProducts.push(encodeURIComponent(products[i]));
  }

  var aeEvent = {
    key: key,
    Conversion: {
      id: encodeURIComponent(orderId),
      amount: amount.toFixed(2),
      payment: 'online',
      voucher: encodeURIComponent(coupon),
      currency: currency,
      product: encodedProducts.join(';')
    }
  };

  if (('AeTracker' in window) && typeof AeTracker.sendConversion === 'function') {
    AeTracker.sendConversion(aeEvent);
  } else {
    (window.AE = window.AE || []).push(aeEvent);
  }
}
</script>

Adapter le code à votre boutique

  1. Créez dans GTM les variables de couche de données dl_ecommerce.items, dl_ecommerce.transaction_id et dl_ecommerce.coupon (chemins ecommerce.items, ecommerce.transaction_id, ecommerce.coupon).
  2. Listez vos catégories dans keysByCategory, écrites exactement comme dans votre DataLayer : la comparaison tient compte des majuscules et des accents.
  3. Associez à chaque catégorie la clé de sa règle, au format Rule ID-Program ID, telle qu’affichée dans l’onglet Tracking.
  4. Choisissez defaultKey : la clé d’une règle qui couvre tous les autres produits, ou '' si vous ne rémunérez pas les autres catégories.
  5. Vérifiez le montant : chaque conversion reçoit la somme prix × quantité de ses produits. Le champ price de votre DataLayer doit être hors taxes ; une remise appliquée à toute la commande n’y est pas déduite.
  6. Remplacez EUR par une devise de vos règles : une devise absente des Devises de la règle fait refuser la conversion.
  7. Si votre DataLayer range la catégorie ailleurs (par exemple item_category2), adaptez la ligne qui lit item_category.

Où trouver vos clés et vos identifiants

  1. Dans la barre latérale, cliquez sur Programmes, puis sur le nom de votre programme.
  2. Cliquez sur Configuration.
  3. Ouvrez l’onglet Tracking.
  4. Dépliez la section Intégration via un module Affilae : vous y trouvez le Program ID. Choisissez la règle dans la liste : la section affiche son Rule ID, sa Devise et sa Clé/Key.
La section Intégration via un module Affilae avec les valeurs Program ID, Rule ID, Devise et Clé/Key
La section « Intégration via un module Affilae » de l’onglet Tracking, où se trouvent les valeurs à reporter dans le code.
Astuce : créez d’abord vos règles de commissionnement, une par catégorie, plus une règle pour defaultKey si vous rémunérez les autres produits, puis relevez leur clé. Une clé correspond à une règle : si vous ajoutez une catégorie plus tard, il vous faudra une nouvelle règle et une nouvelle clé.

Points d’attention

  • Vérifiez la structure de votre DataLayer avant de poser le tag.
  • Testez avec des commandes réelles.
  • Contrôlez les montants calculés et les différents déclenchements des catégories.
  • Un produit dont la catégorie n’est pas listée part sur defaultKey, ou ne déclenche aucune conversion si defaultKey est vide.

Articles liés

Questions
fréquentes

Vérifiez le Program ID. C’est la valeur qui rattache le script de clics à votre programme. Vous la retrouvez dans Programmes, votre programme, Configuration, onglet Tracking, section Intégration via un module Affilae.

Vérifiez trois choses dans cet ordre. Les variables de votre dataLayer, les noms de catégories que vous avez listés dans le code, et les clés Affilae utilisées pour chaque catégorie. Une seule de ces trois valeurs fausse suffit à faire disparaître la conversion ou à la rattacher à la mauvaise règle, sans message d’erreur.

Dans la configuration de votre programme, onglet Tracking, section Intégration via un module Affilae. Vous y lisez le Program ID, le Rule ID, la Devise et la Clé/Key. La clé a la forme Rule ID-Program ID.

Oui. Sur Affilae, un événement, ici la vente d’un produit d’une catégorie donnée, correspond à une règle de commissionnement, donc à une clé. Vous créez donc autant de règles que de catégories à traquer, plus une règle pour defaultKey si vous rémunérez les autres produits.

Il est envoyé avec defaultKey. Si defaultKey est vide, aucune conversion n’est déclenchée pour ce produit.

Non, le test est obligatoire avant la mise en production. Passez une commande réelle par catégorie, puis contrôlez les montants calculés et le déclenchement de chaque conversion. En cas de doute, contactez le support Affilae avec le détail de vos configurations.

Besoin d’aide ?

Restez informés des dernières tendances en affiliation marketing et ne manquez aucun de nos articles.

Contactez-nous