Stop losing sales to ad blockers
Paid orders are sent from your store’s server, so a blocked pixel or a closed tab no longer hides a sale from your ChatGPT Ads account.
Conversion tracking
Convrail sends each conversion from the browser with the OpenAI pixel and from your store’s server through the Conversions API, then deduplicates the two. Sales hidden by ad blockers or closed tabs still reach your ChatGPT Ads account, each one counted a single time, so your campaigns learn from your real sales.
Sales tracked today
3 sales sent to OpenAI, 0 duplicates
Paid orders are sent from your store’s server, so a blocked pixel or a closed tab no longer hides a sale from your ChatGPT Ads account.
The browser copy and the server copy of an order share one identifier. OpenAI keeps one and drops the other: no inflated numbers, no revenue counted twice.
Conversion-optimized bidding learns from the conversions it receives. Complete, deduplicated data gives it the real picture of what sells.
Registered through Shopify’s official Web Pixel API, without touching your theme. On WooCommerce, the plugin adds it for you.
Paid orders go out through the Conversions API from your order webhooks, where ad blockers cannot reach.
One identifier per order on both paths, derived from the order itself, so the two copies collapse into one at OpenAI.
The pixel keeps OpenAI’s click identifier in a first-party cookie. A shopper who comes back days later to buy is still credited to ChatGPT.
Emails, phone numbers and names are normalized exactly as OpenAI documents it, then hashed before anything is stored or sent.
Events leave in batches of up to 1,000 with automatic retries. A send that keeps failing opens an alert instead of vanishing.
Your Ads Manager key, or your pixel ID and Conversions key, are checked with OpenAI on the spot, then stored encrypted.
OpenAI checks every event while nothing is counted in your ads account, until you switch test mode off.
The Activity screen lists each event, where it came from and whether it was sent, so you can check any sale yourself.
On Shopify or WooCommerce. Nothing to change in your theme.
Paste one key from Ads Manager: Convrail creates your pixel and Conversions key when OpenAI has enabled automatic setup, otherwise you enter them by hand. Convrail tests them with OpenAI right away.
Visits, carts and orders flow from the browser and from your server, deduplicated, with an alert if anything breaks.
For technical teams and agencies: how each event travels, what is sent to OpenAI, and how failures are handled.
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
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.
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.
The pixel posts a compact copy of the event to Convrail with the same event_id. No personal data is included at this step.
When Shopify or WooCommerce fires the paid-order webhook, Convrail builds an order_created event whose ID is derived from the order (ord_ + SHA-256 of 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.
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.
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.
| Store event | OAIQ event | Sent from |
|---|---|---|
| page_viewed | page_viewed | browser |
| product_viewed, collection_viewed | contents_viewed | browser |
| search_submitted | page_viewed | browser |
| product_added_to_cart | items_added | browser |
| checkout_started | checkout_started | browser |
| checkout_completed | order_created | browser and server, one event_id |
Advanced matching improves attribution, but it must not turn into a data leak. Convrail normalizes and hashes emails, phone numbers, first and last names and customer IDs with SHA-256 before storing or sending them. Only these hashes reach OpenAI, with the city, postal code, region and country of the order, the IP address and the user agent, which OpenAI’s API expects in clear for matching. All of them are sent only when the visitor’s consent allows it.
email, phone or first_name, or a hashed field that is not a valid digest.| Mechanism | What it does |
|---|---|
| Batching | Up to 1,000 events per request, flushed by size or after a short delay |
| Retries | Exponential backoff on 429 and 5xx responses; 4xx responses are not retried |
| Dead-letter queue | Batches that exhaust their attempts are kept with the HTTP status and error summary |
| Replay safety | Exact duplicates (same store, event ID and source) are stored once; OpenAI deduplicates browser and server copies by ID |
| Test mode | New stores start in test mode: events are validated by OpenAI with validate_only and never counted |
| Live credential check | Your Ads Manager key, pixel ID and Conversions key are verified with OpenAI when you save them |
The Activity 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.
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.
No. The browser event and the server event share the same event ID, derived from the order (`ord_` + SHA-256 of `order_<orderId>`), and OpenAI deduplicates on that ID. It is hashed because OpenAI asks that no order number ever appear in a URL. Sending both is the recommended setup: the browser copy carries the click context, the server copy carries the hashed customer data.
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.
SHA-256 hashes of the email, phone number, first name, last name and customer ID, plus, in clear as OpenAI’s matching expects, the city, postal code, region and country of the order, the IP address and the user agent. They are sent only when the visitor’s consent allows it; otherwise the sale is reported without them and marked as opted out. An automated guard blocks any payload that contains personal data in clear text.
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.
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.
Convrail starts with a Free plan, and paid plans begin with a free trial. Leave your email and we send the install link when your spot opens.