Meta Conversions API via sGTM
La Conversions API (CAPI) envoie vos événements à Meta depuis le serveur, en parallèle ou en remplacement du pixel navigateur. Résultat : une mesure plus robuste face aux bloqueurs et à ITP, à condition de bien gérer la déduplication.
Pourquoi la CAPI ?
- Résilience : les événements partent de votre serveur, insensibles aux bloqueurs de scripts.
- Match quality : possibilité d'envoyer des données utilisateur hachées (email, téléphone) pour améliorer l'attribution.
- Contrôle : vous décidez exactement quels champs sont transmis, en fonction du consentement.
Prérequis
- Un conteneur sGTM opérationnel (voir tuto setup) recevant déjà les événements GA4.
- Un Pixel ID Meta et un accès au Business Manager.
- Un access token CAPI : Events Manager → votre pixel → Paramètres → Conversions API → « Générer un token ».
Étape 1 — Installer le template
Dans le conteneur serveur : Templates → Rechercher dans la galerie, cherchez « Meta Conversions API » (template officiel Meta) et ajoutez-le.
Créez ensuite un tag : Tags → Nouveau → Meta Conversions API.
Étape 2 — Configurer le tag
| Champ | Valeur |
|---|---|
| Pixel ID | Votre ID de pixel (ex. 1234567890) |
| API Access Token | Le token généré dans Events Manager |
| Action Source | website |
| Déclencheur | Les événements à relayer (ex. purchase, generate_lead) |
Le template mappe automatiquement les événements GA4 vers les événements Meta standards :
| Événement GA4 | Événement Meta |
|---|---|
purchase | Purchase |
add_to_cart | AddToCart |
begin_checkout | InitiateCheckout |
view_item | ViewContent |
generate_lead | Lead |
Étape 3 — Déduplication avec event_id
Si le pixel navigateur et la CAPI envoient tous deux le même événement, Meta doit pouvoir les dédupliquer. La règle : même event_name + même event_id sur les deux canaux.
// Générer un event_id unique, partagé pixel + CAPI
var eventId = "evt_" + Date.now() + "_" + Math.random().toString(36).slice(2, 10);
dataLayer.push({ ecommerce: null });
dataLayer.push({
event: "purchase",
event_id: eventId, // repris par le tag CAPI côté serveur
ecommerce: {
transaction_id: "T-2026-0042",
currency: "EUR",
value: 159.80,
items: [{
item_id: "SKU_HOODIE_VERT",
item_name: "Hoodie ABconsent Green",
price: 69.90,
quantity: 1
}]
}
});
// Si le pixel navigateur tourne aussi, il doit utiliser le même ID :
fbq('track', 'Purchase',
{ value: 159.80, currency: 'EUR' },
{ eventID: eventId }
);
Étape 4 — Données utilisateur (user_data)
Pour améliorer le matching, transmettez des identifiants hachés en SHA-256. Le template CAPI hache automatiquement les champs standards s'ils arrivent en clair côté serveur — mais rien n'empêche de hacher en amont.
dataLayer.push({
event: "generate_lead",
event_id: "evt_lead_" + Date.now(),
lead_type: "demande_demo",
user_data: {
email_address: "prospect@example.com", // haché en SHA-256 côté serveur
phone_number: "+33612345678",
address: {
first_name: "Jean",
last_name: "Dupont",
city: "Paris",
postal_code: "75002",
country: "FR"
}
}
});
user_data à Meta relève de ad_user_data (Consent Mode v2). Conditionnez le tag CAPI au consentement publicitaire recueilli par votre CMP — voir le tuto Consent Mode.Étape 5 — Tester avec Test Events
Dans Events Manager → Test Events, récupérez le code de test (ex. TEST12345) et renseignez-le dans le champ Test Event Code du tag CAPI.
Déclenchez un événement (depuis le site ou le playground) et vérifiez qu'il apparaît dans Test Events avec la mention « Traité » et le bon canal (Server).
Contrôlez la déduplication : dans le détail de l'événement, Meta indique si un doublon pixel/serveur a été fusionné grâce à l'event_id.
🧪 À rejouer en démo : l'événement generate_lead du playground inclut event_id et user_data — parfait pour illustrer la déduplication et le hachage.