ChatGPT conversion tracking that survives ad blockers

Convrail sends every conversion twice, once from the browser through the OAIQ pixel and once from your order webhooks through the Conversions API, with the same event ID. OpenAI keeps one copy, your bidding trains on the full picture, and no email or phone number ever leaves in clear text.

Why one pixel is not enough

A browser pixel is the easiest thing to install and the easiest thing to lose. Ad blockers, consent banners that fire late, Safari storage limits and closed tabs all remove events before they reach OpenAI. The Conversions API closes the gap by sending the same events from your server, where nothing is blocked. The two layers only work together when each event carries one shared identifier: without it, OpenAI counts the sale twice and your oCPC bids learn from inflated numbers.

✗ pixel only: part of your conversions never reach the auction
✓ browser + server with one event_id: complete and counted once

How it works

  1. The pixel is installed without touching your theme

    On Shopify, Convrail registers a web pixel through the official Web Pixel API. It runs in the sandbox Shopify provides and follows the store’s customer privacy settings. On WooCommerce, the plugin adds the snippet through wp_footer.

  2. Each event is fired from the browser

    The pixel implements the OAIQ protocol natively: it captures the oppref click identifier from the landing URL, stores it in a first-party cookie for 7 days, and fires the event to OpenAI’s image endpoint with your pixel ID.

  3. The same event is relayed to Convrail

    The pixel posts a compact copy of the event to Convrail with the same event_id. No personal data is included at this step.

  4. Orders arrive server-side from your webhooks

    When Shopify or WooCommerce fires the paid-order webhook, Convrail builds an order_created event with the ID order_<orderId>, the exact same ID the pixel used at checkout. Emails and phone numbers are SHA-256 hashed at this moment, before anything is stored.

  5. Events are batched and sent to the Conversions API

    Events are grouped per store in batches of up to 1,000, the limit of the API, and sent with a bearer token. Failed batches retry with exponential backoff; after the last attempt they land in a dead-letter queue and open a health alert instead of vanishing.

Events that are tracked

Convrail maps the standard storefront events to the OAIQ taxonomy. Amounts are converted to minor units (2599 for 25.99 EUR) as the API requires, with zero-decimal and three-decimal currencies handled correctly.

Mapping between storefront events and OAIQ event types
Store eventOAIQ eventSent from
page_viewedpage_viewedbrowser
product_viewed, collection_viewedcontents_viewedbrowser
search_submittedpage_viewedbrowser
product_added_to_cartitems_addedbrowser
checkout_startedcheckout_startedbrowser
checkout_completedorder_createdbrowser and server, one event_id

Personal data never leaves in clear text

Advanced matching improves attribution, but it must not turn into a data leak. Convrail normalizes and hashes emails and phone numbers with SHA-256 before storing or sending them, so the only user fields that reach OpenAI are emails_sha256, external_ids_sha256, IP address and user agent.

  • An automated guard inspects every outgoing payload and refuses to send it if it contains an email pattern, a forbidden key such as email, phone or first_name, or a hashed field that is not a valid digest.
  • The guard is covered by an automated test that tries to smuggle clear personal data through and must fail.
  • Hashed values are validated as 64 lowercase hexadecimal characters; anything else is rejected before the network call.
  • GDPR webhooks are honored: a customer deletion request purges their events by hashed identifier; a store uninstall purges the store.
  • When the visitor has declined tracking, the event is recorded as skipped_consent and never sent.

Reliability you can audit

MechanismWhat it does
BatchingUp to 1,000 events per request, flushed by size or after a short delay
RetriesExponential backoff on 429 and 5xx responses; 4xx responses are not retried
Dead-letter queueBatches that exhaust their attempts are kept with the HTTP status and error summary
Replay safetyExact duplicates (same store, event ID and source) are stored once; OpenAI deduplicates browser and server copies by ID
Test modeNew stores start in test mode: events are validated by OpenAI with validate_only and never counted
Live credential checkYour pixel ID and API token are verified against OpenAI when you save them

The Events screen in the app shows every event with its source, status and timestamp, so you can watch a browser event and its server twin arrive side by side.

Frequently asked questions

Do I need to edit my theme to install the pixel?

No. On Shopify the pixel is registered through the Web Pixel API and runs in Shopify’s sandbox. On WooCommerce the plugin injects it. Uninstalling removes it completely.

Will OpenAI count my sales twice?

No. The browser event and the server event share the same event ID, `order_<orderId>`, and OpenAI deduplicates on that ID. Sending both is the recommended setup: the browser copy carries the click context, the server copy carries the hashed customer data.

What happens when the Conversions API is down?

Batches retry with exponential backoff. If all attempts fail, the batch is parked in a dead-letter queue with its error, and a health alert opens in the app and by email. Nothing is silently dropped.

Which customer data is sent to OpenAI?

Only SHA-256 hashes of the email and customer ID, plus IP address and user agent, as OpenAI’s advanced matching expects. An automated guard blocks any payload that contains personal data in clear text.

Can I test without polluting my real data?

Yes. Every store starts in test mode, where events are sent with OpenAI’s `validate_only` flag: they are checked for format but never recorded. Switch to live mode from the settings when you are ready.

How long is the attribution window?

The `oppref` click identifier is stored in a first-party cookie for 7 days, matching OpenAI’s click attribution window. Orders placed within that window carry the identifier to both the pixel and the server event.

Measure the ChatGPT channel this week

Free during early access while we onboard the first stores. Leave your email and we send the install link when your spot opens.

No newsletter. One email with the install link, nothing else.