Meta Pixel et API Conversions — suivi dédoublonné
Meta Pixel & Conversions API for Odoo — le navigateur et le serveur envoient le même achat avec le même identifiant, Meta n'en compte qu'un. Sans cela, le bloqueur de publicité efface la moitié du chiffre d'affaires mesuré.
Captures d'écran
Le pixel seul perd une part des conversions ; les deux voies ensemble les comptent deux fois
Pixel et API Conversions envoyés avec le même identifiant d'événement : Meta rapproche et ne compte qu'une fois. C'est tout l'enjeu, et c'est ce que la plupart des intégrations ratent.
| Odoo 20 Community — On Premise | ✔ |
| Odoo.sh | ✔ |
| Odoo Online (SaaS) | ✘ |
Le constat
Un pixel seul perd une part importante des conversions : bloqueurs de publicité, Safari, refus de suivi. L'API Conversions envoie l'événement depuis le serveur, que le navigateur ait laissé passer le pixel ou non.
Mais brancher les deux sans les apparier crée des doublons — et un chiffre d'affaires doublé fausse toutes les décisions d'achat média qui en dépendent. L'appariement n'est pas un détail d'implémentation : c'est la raison d'être du module.
Un seul identifiant d'événement
Le navigateur et le serveur envoient le même achat avec le même identifiant. Meta rapproche, et n'en compte qu'un.
Les événements du parcours
ViewContent, AddToCart, InitiateCheckout et Purchase — avec la devise, la valeur et le détail des articles, repris de la couche de données.
Les données client hachées avant de partir
Courriel et téléphone réduits en SHA-256 côté serveur, comme Meta l'exige : la donnée en clair ne quitte jamais Odoo.
Le consentement décide
Sans accord publicitaire, ni le pixel ni le serveur n'envoient quoi que ce soit.
Ce que fait l'application
Un bouton de test de connexion
Il dit si le jeton est valide, refusé ou expiré, avec le message de Meta en clair — plutôt que de découvrir six semaines plus tard que rien n'est jamais parti.
Le code de test
Pour voir arriver les événements dans le gestionnaire d'événements avant de passer en production. À vider ensuite, et le champ le rappelle.
Branché sur le socle
Il consomme la couche de données de dyo_tracking_base : mêmes valeurs que GA4, donc des chiffres qui se comparent.
Le jeton protégé
Stocké en champ masqué, jamais rendu dans une page.
Le parcours, en vrai

Odoo Online. Ce module appelle l'API de Meta depuis le serveur, il n'est donc pas portable en ligne. Le socle et le module GA4, eux, le sont.
L’application en mouvement
Le module en marche, enregistré dans le vrai client Odoo 19 : Meta — pixel et API Conversions puis Meta — pixel et API Conversions. Ce n’est pas un montage — ce sont les trames du navigateur sur le module livré, pris sur sa propre base. Ce module n’ouvre pas d’application : il ajoute son bloc à la page de paramétrage d’Odoo. Le parcours montre donc cette page, puis le bloc isolé par sa recherche.
Vidéo MP4 — 167 ko, 1280 px, 1.7 s, 2 écrans. Une amorce animée est aussi livrée en GIF (182 ko, 560 px) pour les contextes qui n’affichent pas la balise vidéo.
Ce que le module ne fait pas
- Il ne crée pas de catalogue produit chez Meta — c'est l'objet du flux Merchant Center.
- Il ne gère ni les audiences, ni les campagnes.
- Il n'envoie rien à Google.
- Il ne pose pas de bandeau de consentement : il lit celui d'Odoo.
Fiche technique
| Modèles étendus | res.config.settings, website |
| Langue | Français |
| Dépendances | dyo_tracking_base |
| Licence | OPL-1 (Odoo Proprietary License v1.0) |
| Prix | GRATUIT |
| Version | 20.0.1.0.0 |
| Nom technique | dyo_tracking_meta |
DYONYSOS — welcome@dyonysos.fr
Ce que l'application ne fait pas
- Il ne crée pas de catalogue produit chez Meta — c'est l'objet du flux Merchant Center.
- Il ne gère ni les audiences, ni les campagnes.
- Il n'envoie rien à Google.
- Il ne pose pas de bandeau de consentement : il lit celui d'Odoo.
Applications du magasin nécessaires
- Couche de données e-commerce — socle de traçage (gratuit)
dyo_tracking_base
Modules Odoo Community utilisés
Aucun.
| Série | Version | État | Publiée le |
|---|---|---|---|
| 20.0 | 20.0.1.0.0 | Disponible | 02/10/2026 |
| 19.0 | 19.0.1.0.0 | Disponible |
Fiche générée depuis le code de l'éditeur (dépôt privé, branche 20.0) : le code source n'est pas publié.
Contrôle automatique du magasin (distinct de l'éditeur), appliqué à toutes les applications. Conforme.
| Contrôle | Résultat | Effet si absent |
|---|---|---|
| Manifeste lisible sans exécution | conforme | bloquant |
| Licence reconnue (OPL-1) | conforme | bloquant |
| Aucune dépendance vers Odoo Enterprise | conforme | bloquant |
| Aucun import de code Enterprise | conforme | bloquant |
| Aucun en-tête de licence Enterprise | conforme | bloquant |
| Icône static/description/icon.png | conforme | déclasse |
| Description (static/description/index.html ou README) | conforme | déclasse |
| Tests automatisés (tests/test_*.py) | conforme | déclasse |
| Traduction française (i18n/fr.po) | absent | info |
| Section « Ce que le module ne fait pas » | conforme | info |
| Titre de 70 caractères au plus (49 actuellement) | conforme | info |
| Résumé en français | conforme | info |
Guide utilisateur — Meta Pixel et API Conversions
1. Ce qu'il faut récupérer chez Meta
Dans le gestionnaire d'événements de Meta :
- l'identifiant du pixel — un nombre à quinze chiffres ;
- un jeton d'accès pour l'API Conversions — Paramètres → API Conversions → Générer un jeton d'accès. Gardez-le : Meta ne le réaffiche pas.
2. Configurer
Site web → Configuration → Suivi et SEO → Meta. Collez le pixel et le jeton, puis cliquez sur Tester la connexion.
Le bouton dit la vérité : jeton expiré, pixel inconnu, ou connexion établie. Ne passez pas à la suite tant qu'il n'est pas vert — sinon vous découvrirez dans six semaines que rien n'est jamais parti.
3. La période de vérification
Renseignez le code de test que Meta vous donne dans l'onglet Test Events. Les événements y arrivent alors sans être comptés : vous vérifiez que tout passe sans polluer vos statistiques.
Videz ce champ pour la production. Tant qu'il est rempli, rien n'est compté.
4. Pourquoi deux voies
Un pixel seul perd une part importante des conversions : bloqueurs de publicité, Safari, refus de suivi. L'API Conversions envoie depuis le serveur et passe dans tous ces cas.
Mais deux voies, c'est deux fois le même achat — sauf si elles portent le même
identifiant. C'est ce que fait ce module : chaque événement part avec un
event_id, et sur un achat cet identifiant dérive de la référence de
commande. Meta rapproche et ne compte qu'une vente, même si le client recharge
la page de confirmation.
5. Les données client
Courriel et téléphone sont hachés en SHA-256 avant de partir, après normalisation — minuscule, sans espaces, comme Meta l'exige. La donnée en clair ne quitte jamais Odoo.
Cette normalisation n'est pas un détail : sans elle, Meta accepte la requête et n'associe l'événement à personne. L'échec est totalement silencieux.
6. Le consentement
Sans accord publicitaire du visiteur, ni le pixel ni le serveur n'envoient. Il n'y a pas de voie de contournement, et c'est délibéré.
7. Si Meta ne reçoit rien
- Tester la connexion — commencez toujours par là.
- Le code de test est-il encore rempli ? Les événements partent alors dans Test Events, pas dans vos statistiques.
- Le visiteur a-t-il accepté le suivi publicitaire ?
- Dans le gestionnaire d'événements, l'onglet Diagnostics de Meta signale les événements reçus mais mal formés.
Ce que le module ne fait pas
Il ne crée pas de catalogue produit chez Meta — c'est le flux Merchant Center. Il ne gère ni audiences ni campagnes. Il n'est pas portable sur Odoo Online : il appelle Meta depuis le serveur.
Avis des clients connectés. Un avis noté par client ; l'éditeur peut y répondre. Connectez-vous pour laisser un avis.
- Éditeur
- DYONYSOS
- contact@omnifloo.com
- Clients Omnifloo
- Support inclus selon votre formule : centre d'aide.
