A WooCommerce store sells on ChatGPT in three ways: ChatGPT search reads its public product pages when OpenAI’s crawler is allowed, a product feed delivers the catalog to OpenAI, and ChatGPT Ads buys extra reach. To know what each one earns, the store needs the pixel and Conversions API, consent handled through the WP Consent API, and attribution on every paid order.
How a WooCommerce store reaches ChatGPT
Shopify merchants get an organic ChatGPT channel through Shopify Catalog. WooCommerce has no equivalent built into the platform, so a WooCommerce store assembles the same result from three pieces.
| Piece | What it does | Who runs it | What you need |
|---|---|---|---|
| ChatGPT search | Surfaces public web pages, including product pages, in ChatGPT answers | OpenAI | Allow OAI-SearchBot in robots.txt, clear product pages |
| Product feed | Gives ChatGPT structured catalog data: titles, prices, availability, images | You, a plugin or a connector | A feed that matches OpenAI’s spec, delivered daily |
| ChatGPT Ads | Paid placement in ChatGPT, optimized on your conversions | OpenAI, through Ads Manager | An ad account, a pixel, ideally the Conversions API |
Purchases happen on your WooCommerce checkout in every case: the buyer clicks through to your store. That keeps your payment methods and your order data, and it means every ChatGPT sale is a WooCommerce order you can attribute.
Piece 1: let ChatGPT search read your products
OpenAI documents that “OAI-SearchBot is used to surface websites in search results in ChatGPT’s search features”, recommends “allowing OAI-SearchBot in your site’s robots.txt file”, and warns that “sites that are opted out of OAI-SearchBot will not be shown in ChatGPT search answers, though can still appear as navigational links” (OpenAI).
On WordPress, robots.txt is often generated by an SEO plugin or a security plugin. Open https://your-store.com/robots.txt and check that nothing disallows OAI-SearchBot, either by name or through a blanket rule against unknown bots. Then make your product pages readable: a clear title, a description that says what the product is and for whom, a visible price and availability, and product structured data, which most WooCommerce SEO plugins already output.
Piece 2: the product feed
What OpenAI expects
OpenAI’s onboarding guide sets the shape of the feed:
| Rule | OpenAI’s specification |
|---|---|
| Feed type | Full snapshot: “a complete catalog export treated as the source of truth” |
| Cadence | At least daily |
| Delivery | Push to OpenAI via SFTP |
| Formats | Parquet preferred (ideally zstd compression); jsonl.gz, csv.gz and tsv.gz also supported |
| Encoding | UTF-8 |
| Size | Up to 500,000 items per shard recommended, shard files under about 500 MB |
| Removal | A product removed from the snapshot can remain for up to 14 days |
Access is gated: OpenAI states that onboarding product feeds “is currently available to approved partners”, with an application form (get started). The same guide recommends providing “the entire feed once a day via file upload, and then send updates throughout the day via the API”.
For ChatGPT Ads, your catalog also has to reach Ads Manager so that product ads can be built from it.
What breaks a WooCommerce feed
The OpenAI spec is strict, and a malformed line is dropped without a visible error on your store. The usual WooCommerce causes:
- Variable products exported as one line. Each variation is a separate item with its own price, stock and attributes, linked to its parent by a group identifier.
- Prices with the wrong format or currency, especially with multi-currency plugins.
- Missing identifiers. WooCommerce has no GTIN field by default; it lives in a plugin or a custom field, and many stores never fill it.
- Relative or non-HTTPS image URLs produced by CDN or media plugins.
- Brand missing, because WooCommerce has no native brand field on older versions.
The field-by-field rules are in the OpenAI product feed spec explained, the format trade-offs in parquet vs JSONL vs CSV for the OpenAI feed, and the differences with what you already send to Google in Google Shopping feed vs OpenAI feed.
Piece 3: ChatGPT Ads tracking on WooCommerce
The pixel and the Conversions API
ChatGPT Ads learns from the conversions you send. OpenAI provides two channels:
- The Measurement Pixel, a script at
https://bzrcdn.openai.com/sdk/oaiq.min.js, initialized withoaiq("init", { pixelId })and fired withoaiq("measure", eventName, eventData). It captures theopprefattribution identifier from the landing URL (pixel reference). - The Conversions API,
POST https://bzr.openai.com/v1/events?pid=<PIXEL-ID>, called from your server. Batches hold up to 1,000 events, timestamps must be “within the last 7 days and no more than 10 minutes in the future”, andvalidate_onlylets you test without saving (Conversions API reference).
Send each order from both, with the same identifier: OpenAI’s rule is to “reuse the same value as the API id and pixel event_id”, and it keeps one copy. Emails, phones and names go out only as SHA-256 hashes. The reasoning is in OAIQ pixel vs Conversions API and the privacy side in server-side tracking without leaking personal data.
Which WooCommerce hook to use
Send the server copy when the order is paid, not when it is created. A WooCommerce order created with a deferred payment method (bank transfer, cash on delivery) may never be paid; counting it at creation inflates conversions and teaches campaigns the wrong thing. Use the payment completion and status change hooks, and send the order once it reaches a paid status.
Cancellations and refunds matter too. OpenAI’s Conversions API cannot retract a conversion already sent, but your own revenue reporting should drop a refunded order. Convrail rectifies refunded and cancelled orders in your dashboard for that reason.
Consent on WooCommerce: the WP Consent API
What it standardizes
On WordPress, cookie banners and tracking plugins come from different vendors. The WP Consent API standardizes how plugins tell each other which kinds of consent a visitor has accepted. It defines five consent types (functional, preferences, statistics-anonymous, statistics, marketing) and a function, wp_has_consent('marketing'), that any plugin can call.
Advertising measurement belongs to the marketing category, defined as storage “required to create user profiles to send advertising or to track the user”.
What a well-behaved tracking plugin does
- Before consent: no cookie is written and nothing is sent to OpenAI from the browser. Events wait in memory.
- Consent given: the waiting events are sent, and tracking continues normally.
- Consent refused: nothing goes to OpenAI from the browser. The order still exists, so your own reporting should count it, without personal data.
- No consent plugin installed: WordPress exposes no consent state. The plugin behaves as configured, and your cookie policy applies.
This is how the Convrail plugin works. On refusal, the order is reported to your Convrail dashboard without any customer detail (no email, no phone, no city, no postcode), so your revenue figures stay right while the visitor’s choice is respected.
Attribution: which orders ChatGPT really brought
A ChatGPT sale on WooCommerce is attributed from evidence the order carries:
| Evidence | Channel | How it reaches the order |
|---|---|---|
oppref in the landing URL | ChatGPT Ads | Captured on landing, kept in a first-party cookie, attached to the order |
ChatGPT referrer or utm_source | Organic ChatGPT | Landing URL and referrer stored in first-party cookies, attached to the order |
| Neither | Another channel | Not counted as ChatGPT |
The split matters for money: an organic sale has no ad cost, an ad sale does. Mixing them inflates your return on ad spend. The method and its limits are in ChatGPT organic vs ChatGPT Ads attribution.
What a ChatGPT plugin for WooCommerce must do
Whether you build it or install one, use this list to judge it:
- Build a feed that matches OpenAI’s spec, variations included, and show which products are refused and why.
- Install the pixel without theme edits, and wait for marketing consent through the WP Consent API.
- Send paid orders server-side with the same event ID as the pixel, amounts in minor units, identifiers hashed.
- Keep the click context (landing URL, referrer,
oppref) until checkout, in first-party storage. - Never block the sale on tracking: a refusal, an ad blocker or an OpenAI outage must not break the checkout.
- Retry failed sends with the same IDs, and alert you when retries are exhausted.
- Keep the WordPress side light: heavy work (validation, batching, retries) belongs on a server, not in a PHP request on your store.
Step by step with Convrail
- Install and activate the Convrail plugin, which requires WordPress 6.0 or later and PHP 7.4 or later.
- Open WooCommerce > Convrail and click “Connect this store”. The platform verifies that your site controls its domain, then stores a scoped token.
- In Settings, paste your Ads Manager key. Convrail creates your pixel and Conversions key, or you enter your Pixel ID and Conversions key by hand if automatic setup is not open on your ad account yet.
- Products sync automatically. Each one is checked against the OpenAI spec before it is sent, with the exact fix for every refusal and optional AI rewrites that apply to the feed only, never to your store.
- Orders are tracked from the next checkout: browser and server copies counted once, consent respected.
- Read your numbers: revenue from ChatGPT with ads and organic apart, return on ad spend, and net margin per product once your product costs and ad spend are in.
- Let the alerts watch for you: tracking, sending and feed delivery are checked continuously, with an email when something breaks and a weekly ChatGPT sales report.
The WooCommerce details are on the WooCommerce page, and plans on the pricing page.
Common mistakes
- Blocking OAI-SearchBot by accident through a security plugin’s bot rules.
- Sending orders at creation instead of payment, so unpaid orders become conversions.
- Loading the pixel before consent in regions that require it.
- Exporting variable products as a single item, so the buyer’s size or color never matches.
- Trusting Ads Manager as your revenue figure. It reports what OpenAI attributes to ads, not your organic ChatGPT sales, and not your margins.
Where Convrail fits
The Convrail plugin is a thin connector to the Convrail platform: your catalog, your paid orders and your settings go through an authenticated bridge, and validation, batching, retries and feeds run on the platform. It covers conversion tracking, the product feed, attribution, profit per product, alerts and AI search visibility for WooCommerce stores.
Sources
Frequently asked questions
Is there a built-in ChatGPT sales channel for WooCommerce?
Not as part of WooCommerce itself. A WooCommerce store reaches ChatGPT through ChatGPT search, which reads public product pages when OAI-SearchBot is allowed, through a direct product feed to OpenAI, open to approved partners, and through ChatGPT Ads, which you run from OpenAI's Ads Manager.
Which file formats does OpenAI accept for a product feed?
OpenAI's onboarding guide prefers parquet, ideally with zstd compression, and also supports jsonl.gz, csv.gz and tsv.gz, encoded in UTF-8. The feed is a full snapshot of the catalog, sent at least daily, with up to 500,000 items per shard recommended.
Does the ChatGPT Ads pixel need consent on a WooCommerce store?
In most European setups, yes, because it tracks visitors for advertising. The WP Consent API standardizes this: a tracking plugin checks wp_has_consent('marketing') before it sets a cookie or sends an event, and waits for the visitor's choice.
If a visitor refuses tracking, is the sale lost for my reporting?
It should not be. With Convrail, the order is still reported to your Convrail dashboard without any customer detail (no email, no phone, no city, no postcode), so your own revenue figures stay right. Nothing is sent to OpenAI from the browser.
How does WooCommerce know an order came from a ChatGPT ad?
An ad click lands with an oppref identifier in the URL. The plugin keeps the landing URL and the referrer in first-party cookies, attaches them to the order, and the order is then matched to ChatGPT Ads (oppref), organic ChatGPT (ChatGPT referrer or UTM source) or another channel.