Order Created (order_created) is the standard ChatGPT Ads conversion event that reports a completed purchase to OpenAI so a conversion-optimized campaign can bid toward real revenue. It is a fixed purchase signal built into Ads Manager, so it carries defined order fields like amount and currency instead of the free-form shape of a custom event.
If you sell online through ChatGPT Ads, this is the event you nominate when you turn on conversion bidding, which makes it the pin your optimization and reporting hang on. Fire it loosely and OpenAI optimizes toward undercounted or mismatched orders, so you pay for clicks that never tie back to the purchases they drove.
The Order Created (order_created) event records the moment a buyer finishes checkout and sends that purchase, with its value and line items, into your ChatGPT Ads account. OpenAI documents it as the standard event used when a purchase is completed, which places it at the bottom of the funnel alongside upstream events like checkout started and items added.
Each event carries a type of order_created, an event identifier, an order amount, a currency, and a contents array describing what sold, plus hashed customer details and the oppref click identifier that links the sale to the ad click. You can send it two ways: the browser JavaScript pixel through an oaiq measure call, or your server through the Conversions API. OpenAI treats the server path as the more reliable source.
A conversion event setting wraps this event with an attribution window and a data source, and a conversion-optimized campaign nominates it as the single goal it bids toward. AirOps helps marketing teams track which AI search surfaces drive these clicks and connect that visibility to the orders this event records.
Resources: see how AirOps brings AI ads and search visibility into one workflow
The Order Created (order_created) event is the final link in a chain that starts when someone clicks your ad and ends when OpenAI counts a sale.
Create a source. In the Conversions tab of Ads Manager, create a data source to get a Pixel ID and an API key.
Capture the click. When a user clicks your ad, the landing URL carries OpenAI's oppref click identifier, and the pixel stores it in a first-party cookie.
Fire on purchase. At the confirmation step, an oaiq measure call or a Conversions API request sends order_created with its amount, currency, contents, and a shared event identifier.
Deduplicate. OpenAI matches the pixel and server copies on the Pixel ID, event name, and event identifier, and keeps the first one it receives.
Attribute and optimize. The event ties back to the oppref within your attribution window, and a conversion-optimized campaign uses it to bias delivery toward likely buyers.
The counts tell you how many tracked purchases OpenAI credited to your ads and the revenue behind them. They cannot confirm that a last-click model elsewhere would credit the same sale to your ads.
For a store running ChatGPT Ads, order_created is the number a budget decision rests on. It is the signal that tells OpenAI which clicks are worth more, and it is the figure a marketing lead reads when deciding to scale spend or cut it.
It enables conversion bidding. A conversion-optimized campaign needs exactly one active standard event as its goal, and order_created is the one that maps to revenue, so without it clean you are stuck bidding on clicks with no purchase signal behind them.
It defines what you pay for. Because the event carries order amount and currency, your reporting can show cost against real revenue instead of raw click counts, which is what lets you defend or grow the channel.
It fails quietly when fired wrong. If the event lives only in a browser tag, ad blockers, script races, and abandoned confirmation loads drop purchases, so OpenAI optimizes toward a thin, biased sample and your true winners go uncounted.
Growth marketers use order_created to turn on conversion bidding so ChatGPT Ads optimizes delivery toward clicks that end in a purchase.
Demand gen leads use order_created to report cost against real order revenue and defend the channel's ad budget.
SEO managers use order_created to confirm that AI search clicks turn into actual sales and feed that proof into channel planning.
When the same purchase arrives from both the browser pixel and the Conversions API, OpenAI uses a shared event identifier to keep one copy and discard the duplicate, so a stable identifier like the order number is what stops your sales from being counted twice and inflating your results.
The event setting defines how many days can pass between the ad click and the completed order for the sale to still count, which decides how much credit order_created can claim for slower, higher-consideration purchase decisions.
Sending the event from your backend through the Conversions API, instead of only from the browser, protects it from ad blockers and page-load failures and gives OpenAI the more reliable copy of the purchase signal.
Enables conversion-optimized bidding in ChatGPT Ads by giving oCPC a purchase goal to aim at.
Captures order amount and currency so you can measure cost against real revenue.
Deduplicates browser and server events through a shared identifier so purchases are counted once.
Works through both the JavaScript pixel and the server-side Conversions API.
Ties each sale to OpenAI's oppref click identifier for cleaner attribution.
Fire it from the order code path. Emit order_created from the same server logic that creates the order, so the conversion and the revenue record come from one source of truth.
Use the order ID as the event identifier. A stable identifier lets OpenAI dedupe the pixel and API copies cleanly and keep one accurate record.
Always send amount and currency. These fields let your reporting tie spend to revenue, so leaving them off strips the event of its value.
Run the pixel and the Conversions API together. Joining both paths by the same event identifier covers browser gaps while keeping server data as the reliable copy.
Preserve oppref from landing to checkout. Store the click identifier when the visitor arrives so it still rides along when the order completes.
Name the campaign after the event. Since the goal is frozen at creation, the campaign name is the clearest place to record which event it optimizes toward.
Avoid parking the purchase event inside a tag manager with everything else. Tag containers race against page loads and get blocked, and a dropped order_created teaches OpenAI to chase the wrong clicks.
AirOps: AirOps tracks which AI search answers and ads drive clicks to your site and connects that visibility to the orders your order_created event records.
ChatGPT Ads Manager: The Conversions tab is where you create the data source, define the event setting, and watch order_created events arrive in the event stream.
Google Tag Manager: GTM fires upstream funnel events like page views and add-to-cart, while you keep the order_created purchase event in your server code.
Create a data source. This week, open the Conversions tab in ChatGPT Ads Manager and create a data source to get your Pixel ID and API key. No budget approval is needed to start.
Install the pixel. Add the oaiq pixel to your site and fire a page_viewed event so you can confirm data is reaching the event stream before you touch purchases.
Implement order_created. On the order-confirmation step, send order_created with its amount, currency, contents array, and the order ID as the event identifier for deduplication.
Add the Conversions API. Have your backend post the same order_created event server-side with the matching event identifier, so browser gaps are covered and the server copy stays authoritative.
Launch a conversion campaign. Once events arrive cleanly, create a campaign with the Conversions objective and nominate order_created as its goal, remembering the goal is permanent after creation.
Order Created (order_created) is the standard ChatGPT Ads event that reports a completed purchase and its value to OpenAI.
You send it from the browser pixel, your server's Conversions API, or both, joined by a shared event identifier.
A conversion-optimized campaign can bid toward only one standard event, and that choice is frozen once the campaign launches.
Firing the purchase event from a browser tag alone risks dropped orders and skewed optimization.
The biggest gains come from server-side firing with the order ID as the identifier, which gives OpenAI the cleanest revenue signal.
order_created is a built-in standard event with fixed fields, while a custom event is one you define yourself. The practical difference that matters: a conversion-optimized campaign can only bid toward a standard event, so a custom event cannot serve as your oCPC goal. Order_created already carries defined purchase fields (amount, currency, contents) that OpenAI understands, so your revenue reporting works without extra mapping. A custom event is useful for tracking actions that none of the standard events describe, but it stays on the sidelines of conversion bidding. If your goal is to optimize ad delivery toward purchases, you want order_created wired up correctly. Reserve custom events for secondary signals you want to observe but not bid on. Teams that model their whole funnel into bespoke custom events often discover at campaign creation that none of them are selectable as the goal.
Fire order_created exactly once, at the moment the order is confirmed and payment succeeds, usually on the thank-you or confirmation page or in the backend logic that writes the order. It should not fire when a cart is created, when checkout starts, or when a page simply loads, because those actions have their own upstream events. Firing it too early counts orders that may never complete; firing it more than once per order inflates your numbers unless the event identifier catches the duplicate. The cleanest trigger is the same code path that records the sale in your own system, so one real order produces one event. If you rely on a confirmation page that customers sometimes skip or reload, add the server-side Conversions API call so the purchase still reports once. Tie each fire to a unique order ID so OpenAI can dedupe any accidental repeats.
The two paths see different things, so some gap is normal before dedup settles. The browser pixel misses purchases when a shopper blocks scripts, closes the tab before the confirmation page finishes, or buys in an environment where the pixel never loads. The server-side Conversions API sees every order your backend processes, so it usually reports more completely. When both run, OpenAI matches them on the Pixel ID, event name, and shared event identifier and keeps the first copy it receives, so the final count should converge toward one record per order instead of doubling. If your identifiers do not match across the two paths, the same order can land twice and your totals will overcount. If one path carries richer customer data and arrives second, OpenAI keeps the thinner first copy, which affects match quality more than raw counts. Check that both paths send the same order ID and compare against the orders in your own system to find the true number.
No. In ChatGPT Ads, both the Conversions objective and the standard event you nominate as the goal are permanent once a conversion-optimized campaign is created. You cannot swap order_created for a different event, and you cannot convert an existing click-billed campaign to conversion bidding after the fact. What you can do is build a new campaign with the correct objective and event when your goal changes. You can also keep refining how order_created itself behaves outside the campaign: improve the data you send, fix dedup identifiers, extend or tighten the attribution window on the event setting, and add the server-side path. Those changes flow into any campaign that already uses the event. Because the choice is locked, decide before launch which action truly represents your conversion, and name the campaign after the event so the frozen goal stays legible weeks later. Treat the event setup as something you perfect before you spend.
Good tracking means every real purchase produces exactly one order_created event, with its amount and currency attached, reported through both the pixel and the Conversions API and reconciled by a shared order ID. A practical benchmark is that your order_created count in Ads Manager lands close to the real order count in your own commerce system for the same window, with only a small, explainable gap from attribution timing. Match quality should be healthy, which means you are sending enough hashed customer data and preserving the oppref click identifier so OpenAI can tie sales to clicks. Duplicates should be near zero because your event identifiers are stable. If your reported conversions swing wildly, lag far behind your backend totals, or show large numbers of unmatched events, the setup needs work before you trust it for bidding. Good tracking is boring and steady, and it holds up when you compare it against your source of truth.