# 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.

Canonical: https://convrail.com/fr/tracking-conversions/

## 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.

- Without: pixel seul : une partie de vos conversions n’atteint jamais l’enchère
- With: 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 OAIQ | Envoyé depuis |
| --- | --- | --- |
| page_viewed | page_viewed | navigateur |
| product_viewed, collection_viewed | contents_viewed | navigateur |
| search_submitted | page_viewed | navigateur |
| product_added_to_cart | items_added | navigateur |
| checkout_started | checkout_started | navigateur |
| checkout_completed | order_created | navigateur 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écanisme | Ce qu’il fait |
| --- | --- |
| Lots | Jusqu’à 1 000 événements par requête, envoyés par taille ou après un court délai |
| Reprises | Délai exponentiel sur les réponses 429 et 5xx ; les réponses 4xx ne sont pas rejouées |
| File des échecs | Les lots qui épuisent leurs tentatives sont conservés avec le statut HTTP et le résumé d’erreur |
| Rejeu sans doublon | Les doublons exacts (même boutique, identifiant et source) sont stockés une fois ; OpenAI déduplique les copies navigateur et serveur par identifiant |
| Mode test | Les 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 direct | Votre 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.
