Un suivi des conversions ChatGPT qui résiste aux bloqueurs

Convrail envoie chaque conversion deux fois, une fois depuis le navigateur par le pixel OAIQ et une fois depuis vos webhooks de commande par la Conversions API, avec le même identifiant d’événement. OpenAI n’en garde qu’une, vos enchères apprennent sur l’image complète, et aucun email ni téléphone ne sort en clair.

Pourquoi un pixel seul ne suffit pas

Un pixel navigateur est ce qu’il y a de plus simple à installer, et de plus simple à perdre. Bloqueurs de publicité, bandeaux de consentement qui se déclenchent tard, limites de stockage de Safari et onglets fermés retirent des événements avant qu’ils n’atteignent OpenAI. La Conversions API comble l’écart en envoyant les mêmes événements depuis votre serveur, où rien n’est bloqué. Les deux couches ne fonctionnent ensemble que si chaque événement porte un identifiant commun : sans lui, OpenAI compte la vente deux fois et vos enchères oCPC apprennent sur des chiffres gonflés.

✗ pixel seul : une partie de vos conversions n’atteint jamais l’enchère
✓ navigateur + serveur avec un event_id : complet et compté une fois

Comment ça fonctionne

  1. Le pixel s’installe sans toucher à votre thème

    Sur Shopify, Convrail enregistre un web pixel via l’API officielle Web Pixel. Il s’exécute dans le bac à sable fourni par Shopify et respecte les réglages de confidentialité de la boutique. Sur WooCommerce, l’extension ajoute le script via wp_footer.

  2. Chaque événement part du navigateur

    Le pixel implémente nativement le protocole OAIQ : il capture l’identifiant de clic oppref dans l’URL d’atterrissage, le conserve 7 jours dans un cookie first-party, et envoie l’événement au point de terminaison image d’OpenAI avec votre identifiant de pixel.

  3. Le même événement est relayé à Convrail

    Le pixel transmet une copie compacte de l’événement à Convrail avec le même event_id. Aucune donnée personnelle n’est incluse à cette étape.

  4. Les commandes arrivent côté serveur par vos webhooks

    Quand Shopify ou WooCommerce déclenche le webhook de commande payée, Convrail construit un événement order_created avec l’identifiant order_<orderId>, exactement celui que le pixel a utilisé au paiement. Emails et téléphones sont hashés en SHA-256 à cet instant, avant tout stockage.

  5. Les événements sont regroupés et envoyés à la Conversions API

    Les événements sont regroupés par boutique en lots de 1 000 au maximum, la limite de l’API, et envoyés avec un jeton porteur. Les lots en échec sont rejoués avec un délai exponentiel ; après la dernière tentative ils rejoignent une file des échecs et ouvrent une alerte au lieu de disparaître.

Les événements suivis

Convrail fait correspondre les événements standard de la vitrine à la taxonomie OAIQ. Les montants sont convertis en unités mineures (2599 pour 25,99 EUR) comme l’exige l’API, avec un traitement correct des devises à zéro ou trois décimales.

Correspondance entre les événements de la vitrine et les types OAIQ
Événement boutiqueÉvénement OAIQEnvoyé depuis
page_viewedpage_viewednavigateur
product_viewed, collection_viewedcontents_viewednavigateur
search_submittedpage_viewednavigateur
product_added_to_cartitems_addednavigateur
checkout_startedcheckout_startednavigateur
checkout_completedorder_creatednavigateur et serveur, un seul event_id

Les données personnelles ne sortent jamais en clair

L’advanced matching améliore l’attribution, mais il ne doit pas devenir une fuite de données. Convrail normalise et hashe les emails et les numéros de téléphone en SHA-256 avant de les stocker ou de les envoyer : les seuls champs utilisateur qui atteignent OpenAI sont emails_sha256, external_ids_sha256, l’adresse IP et le user agent.

  • Un garde-fou automatique inspecte chaque envoi et refuse de le transmettre s’il contient un motif d’email, une clé interdite comme email, phone ou first_name, ou un champ hashé qui n’est pas un vrai condensat.
  • Ce garde-fou est couvert par un test automatisé qui tente de faire passer des données personnelles en clair et doit échouer.
  • Les valeurs hashées sont validées comme 64 caractères hexadécimaux minuscules ; tout le reste est rejeté avant l’appel réseau.
  • Les webhooks RGPD sont honorés : une demande de suppression client purge ses événements par identifiant hashé ; une désinstallation purge la boutique.
  • Quand le visiteur a refusé le suivi, l’événement est enregistré comme skipped_consent et n’est jamais envoyé.

Une fiabilité que vous pouvez auditer

MécanismeCe qu’il fait
LotsJusqu’à 1 000 événements par requête, envoyés par taille ou après un court délai
ReprisesDélai exponentiel sur les réponses 429 et 5xx ; les réponses 4xx ne sont pas rejouées
File des échecsLes lots qui épuisent leurs tentatives sont conservés avec le statut HTTP et le résumé d’erreur
Rejeu sans doublonLes doublons exacts (même boutique, identifiant et source) sont stockés une fois ; OpenAI déduplique les copies navigateur et serveur par identifiant
Mode testLes nouvelles boutiques démarrent en mode test : les événements sont validés par OpenAI avec validate_only et jamais comptés
Vérification en directVotre identifiant de pixel et votre jeton API sont vérifiés auprès d’OpenAI à l’enregistrement

L’écran Événements de l’application affiche chaque événement avec sa source, son statut et son horodatage : vous voyez arriver côte à côte un événement navigateur et son jumeau serveur.

Questions fréquentes

Dois-je modifier mon thème pour installer le pixel ?

Non. Sur Shopify, le pixel est enregistré via l’API Web Pixel et s’exécute dans le bac à sable de Shopify. Sur WooCommerce, l’extension l’injecte. La désinstallation le retire complètement.

OpenAI va-t-il compter mes ventes deux fois ?

Non. L’événement navigateur et l’événement serveur partagent le même identifiant, `order_<orderId>`, et OpenAI déduplique sur cet identifiant. Envoyer les deux est la configuration recommandée : la copie navigateur porte le contexte du clic, la copie serveur porte les données client hashées.

Que se passe-t-il quand la Conversions API est indisponible ?

Les lots sont rejoués avec un délai exponentiel. Si toutes les tentatives échouent, le lot est mis de côté dans une file des échecs avec son erreur, et une alerte s’ouvre dans l’application et par email. Rien n’est perdu en silence.

Quelles données client sont envoyées à OpenAI ?

Uniquement des hashes SHA-256 de l’email et de l’identifiant client, plus l’adresse IP et le user agent, comme l’attend l’advanced matching d’OpenAI. Un garde-fou automatique bloque tout envoi contenant des données personnelles en clair.

Puis-je tester sans polluer mes vraies données ?

Oui. Chaque boutique démarre en mode test : les événements partent avec l’indicateur `validate_only` d’OpenAI, ils sont vérifiés sur la forme mais jamais enregistrés. Passez en mode réel depuis les réglages quand vous êtes prêt.

Quelle est la fenêtre d’attribution ?

L’identifiant de clic `oppref` est conservé 7 jours dans un cookie first-party, ce qui correspond à la fenêtre d’attribution au clic d’OpenAI. Les commandes passées dans cette fenêtre portent l’identifiant à la fois dans l’événement pixel et dans l’événement serveur.

Mesurez le canal ChatGPT dès cette semaine

Gratuit pendant l'accès anticipé, le temps d'intégrer les premières boutiques. Laissez votre email et vous recevez le lien d'installation dès qu'une place s'ouvre.

Pas de newsletter. Un seul email avec le lien d'installation, rien d'autre.