Aller au contenu
Pierre Bossetti

Cloudflare Zaraz

Server-side Tracking

Vos campagnes sont bloquées en phase d’apprentissage et votre coût d’acquisition ne cesse d’augmenter ? Je mets en place un tracking server-side first-party qui récupère les conversions perdues, sans ralentir votre site.

La perte de données que vous ne voyez pas : Apple ITP et bloqueurs de publicité

En ce moment, une partie de vos ventes n’arrive jamais jusqu’à Google Ads ou Meta. Rien ne semble cassé. Vos rapports affichent simplement moins de conversions que vous n’en avez réellement.

Deux causes expliquent l’essentiel de la perte :

  • Les bloqueurs de publicité. Ils bloquent les pixels côté client dans le navigateur. Le visiteur achète. Le pixel ne se déclenche jamais. La plateforme publicitaire ne voit rien.
  • Apple ITP. L’Intelligent Tracking Prevention de Safari supprime au bout de 7 jours les cookies créés par JavaScript. Un visiteur qui clique sur votre annonce et achète 8 jours plus tard ressemble à un nouvel inconnu. L’annonce ne reçoit aucun crédit.

L’impact business est direct. Des campagnes rentables perdent leur crédit. Les algorithmes publicitaires reçoivent trop peu de conversions : ils restent bloqués en phase d’apprentissage et enchérissent à l’aveugle. Votre ROAS baisse sur le papier, vous coupez le budget de campagnes qui fonctionnent, et votre coût d’acquisition (CAC) augmente.

La solution : un point d’entrée serveur first-party. Votre propre domaine reçoit les événements et crée les cookies depuis le serveur. Cela respecte les règles des navigateurs : c’est votre site qui collecte vos propres données, après consentement. La durée de vie des cookies dépasse aussi la limite de 7 jours, et les plateformes publicitaires reçoivent enfin le tableau complet.

Choix d’architecture : Cloudflare Zaraz vs. sGTM

Il n’existe pas de configuration idéale unique. Je choisis celle qui correspond à votre stack et à votre budget. Voici les deux que j’utilise.

Cloudflare Zaraz

  • Exécution à la périphérie (edge). Les balises tournent sur le réseau de Cloudflare, pas sur l’appareil de votre visiteur. Résultat : un site plus rapide et de meilleurs Core Web Vitals.
  • Aucun script tiers dans le navigateur. Le thread principal reste libre. Vos pages s’affichent plus vite et vos utilisateurs interagissent plus tôt.
  • Alignement d’IP Safari 16.4. Safari limite la durée de vie des cookies créés par le serveur quand l’IP du serveur ne correspond pas à celle de votre site. Zaraz tourne sur le même réseau que votre site : les IP correspondent et les cookies gardent toute leur durée de vie.
  • Coût faible. Aucun serveur à exploiter ni à maintenir.

Google Cloud sGTM

  • Plus flexible. Un large catalogue de balises et de modèles. Il convient aux architectures complexes avec un CRM ou de nombreux outils tiers.
  • Coût plus élevé. Vous payez des serveurs cloud, et la facture augmente avec votre trafic.
  • Plus de configuration. Il faut un proxy ou un domaine personnalisé pour être réellement first-party. Je m’en occupe, pas vous.

Ma règle : si Zaraz couvre vos outils, utilisez Zaraz. C’est moins cher et plus rapide. Si vous avez besoin d’un CRM ou d’un outil que Zaraz ne sait pas atteindre, utilisez sGTM. Dans les deux cas, je garde le navigateur léger.

Web Crypto et Meta CAPI : l’obsession de la performance

Meta note sa capacité à associer vos événements à de vraies personnes. C’est le score Event Match Quality (EMQ). Un score faible signifie que Meta ne sait pas qui a acheté, donc qu’il ne peut pas trouver d’autres acheteurs similaires.

Quand vous envoyez des données first-party, comme un e-mail haché, à l’API Conversions de Meta (CAPI), le score EMQ augmente. Je vise plus de 8,0. Un EMQ plus élevé signifie que Meta associe davantage de vos ventes à de vraies personnes. Un meilleur matching donne un meilleur ciblage, et donc un coût d’acquisition plus bas.

Hachez en natif, gardez un site rapide

Meta exige que les e-mails soient normalisés puis hachés en SHA-256. Beaucoup de marketeurs ajoutent une bibliothèque lourde comme CryptoJS pour le faire. Cela ajoute des kilo-octets de JavaScript, bloque le thread principal et ralentit chaque interaction.

Je n’embarque aucune bibliothèque. Tous les navigateurs modernes intègrent l’API Web Crypto. Elle est rapide, n’ajoute aucun octet à votre bundle et garde votre INP (Interaction to Next Paint) sous 200 ms. Voici la fonction complète :

async function hashEmail(email) {
  const normalized = email.toLowerCase().trim();
  const encoder = new TextEncoder();
  const data = encoder.encode(normalized);
  const hashBuffer = await crypto.subtle.digest('SHA-256', data);
  const hashArray = Array.from(new Uint8Array(hashBuffer));
  return hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
}

Voici ce qu’elle fait, étape par étape. Elle met l’e-mail en minuscules et supprime les espaces, de sorte que[email protected] et [email protected]donnent le même hachage. Elle encode le texte, le hache aveccrypto.subtle.digest, puis convertit le résultat en chaîne hexadécimale. L’e-mail en clair ne quitte jamais le navigateur. Seul le hachage part vers votre point d’entrée serveur, qui le transmet à Meta CAPI.

Le résultat : un pipeline first-party privé, résilient et léger. Plus de vos conversions atteignent Google Ads et Meta, vos algorithmes sortent de la phase d’apprentissage et votre coût d’acquisition baisse. J’envoie ces données uniquement après le consentement du visiteur.