← Back to glossary

Checkout Started (checkout_started)

Checkout Started (checkout_started) is a standard ChatGPT Ads conversion event you fire when a shopper begins the checkout flow, signaling purchase intent to OpenAI's measurement pixel and Conversions API. It sits one step below order_created in the funnel and counts intent to buy, so it is not a completed purchase and should never be fired at payment confirmation.

If you run performance campaigns on ChatGPT, treating checkout_started as an optimization signal lets you feed bidding a higher-volume event when purchases are too sparse to train on. Skip it and you optimize blind toward rare orders, or misfire it on the wrong page and poison attribution while wasting spend.

What is a Checkout Started (checkout_started) event?

A checkout_started event records the moment a visitor enters your checkout process after clicking a ChatGPT ad, giving OpenAI a mid-funnel action to attribute to the campaign that drove it. OpenAI defines it as one of its standard conversion events, grouped with the contents data type alongside contents_viewed, items_added, and order_created. You send it from the browser with the oaiq pixel or server-side through the Conversions API.

The event carries a typed payload. With the contents shape you pass the cart amount, a currency code, and a contents array listing each item by id, name, content type, and quantity. A shared event identifier travels with it so OpenAI can match the same checkout sent from both the pixel and the Conversions API, counting it once.

checkout_started sits between items_added and order_created in the ecommerce funnel. It measures buying intent, and it stops short of recording completed revenue. Teams that register it as a conversion event in Ads Manager can optimize toward it when completed orders are too sparse to train bidding. AirOps helps you check whether the pages feeding these campaigns earn visibility inside ChatGPT.

Resources: see how to structure ChatGPT Ads conversion events and pixel setup end to end

How the Checkout Started (checkout_started) event works

The event is a signal you plant at one point in your funnel and wire into OpenAI's measurement and bidding. Setup and firing happen in a fixed order.

  1. Install the pixel. Add OpenAI's base oaiq snippet to every page so it sets a first-party cookie and captures the oppref click ID from incoming ad traffic.

  2. Place the event. Put the checkout_started call on the step that loads when checkout actually begins, never on a button click or the cart page.

  3. Attach the payload. Pass the contents data type with the cart amount, currency, and an array of items so the event carries the value behind the checkout.

  4. Deduplicate. Send the same event server-side through the Conversions API with a matching event ID so OpenAI counts the checkout once.

  5. Register and optimize. Create the conversion event in Ads Manager, then set it as the goal your conversion-optimized bidding trains against.

Once live, the event tells you how many ad-driven sessions reached checkout and which campaigns produced them. It does not tell you how many of those checkouts turned into paid orders, so you still need order_created to measure revenue.

The importance of Checkout Started (checkout_started) for marketers

Whether you bother wiring up checkout_started comes down to one buying decision: how you want ChatGPT Ads to spend your budget. Conversion-optimized bidding can only chase the events you feed it, so the events you fire decide what the algorithm learns to buy.

  • It gives bidding enough volume to learn. Purchases are often too rare for OpenAI's bidding to train on quickly, and checkout_started fires several times more often, so it hands the model a denser signal to optimize toward while order volume builds.

  • It exposes funnel leaks. When checkout_started fires far more than order_created from the same campaigns, you can see shoppers abandoning between checkout and payment, and fix the page before you pour more spend into it.

  • It protects your attribution. Firing the event on the wrong page is a concrete failure mode: place it on a cart view or a button click and OpenAI counts phantom checkouts, inflating reported conversions and training bidding toward clicks that never buy.

Marketer use cases

  1. Growth marketers use checkout_started to give ChatGPT Ads bidding a high-volume signal when completed purchases are too sparse to optimize against directly.

  2. Ecommerce SEO managers use checkout_started to compare checkout entries against orders and spot where ad-driven shoppers abandon the funnel.

  3. Demand gen leads use checkout_started to qualify which ChatGPT campaigns drive real purchase intent before shifting budget toward them.

Key concepts

Contents data type

The contents shape that checkout_started uses, carrying the cart amount, a currency code, and an array of items so the event reports both what sits in the cart and what it is worth, which is what makes checkout value usable for bidding.

Event deduplication

The rule that lets you send the same checkout from both the browser pixel and the server-side Conversions API without double-counting, because OpenAI matches on Pixel ID, event name, and a shared event ID and keeps only one.

Firing placement

The discipline of triggering the event only at the exact moment checkout begins, because firing it early on a cart view or a button click inflates the count and quietly trains bidding on the wrong behavior.

Benefits

  • Feed ChatGPT Ads bidding a denser signal than purchases while order volume is still thin.

  • Spot checkout abandonment by comparing checkout_started counts against order_created from the same campaigns.

  • Attribute mid-funnel intent back to the exact ChatGPT campaign, ad group, and ad that drove it.

  • Pass cart value and currency so bidding can weight higher-value checkouts.

  • Deduplicate browser and server events automatically through a shared event ID.

Checkout Started (checkout_started) best practices

  • Fire checkout_started only when checkout truly begins, so your counts reflect real intent instead of page loads.

  • Send the event from both the pixel and the Conversions API, because the server-side path keeps firing when browsers block scripts.

  • Attach amount and currency on every call, so bidding can tell a high-value checkout from a low one.

  • Use one shared event ID per checkout, so OpenAI deduplicates the browser and server copies into a single event.

  • Register checkout_started as a named conversion event in Ads Manager before you rely on it for optimization.

  • Keep one standard event per distinct conversion, so reports never blur two different actions together.

Avoid firing checkout_started on the cart page or a button click to boost volume. It is the mistake competent teams make when purchases look too sparse, and it floods bidding with checkouts that never had payment intent, which costs you more than the missing signal ever would.

Tools and technologies

AirOps: tracks whether the landing pages and content behind your ChatGPT Ads actually earn visibility and citations in ChatGPT, so the traffic your checkout_started events depend on keeps showing up.

OpenAI Ads Manager: where you create the data source, register checkout_started as a conversion event, and set it as a bidding goal.

Google Analytics 4: cross-checks ad-driven checkout and purchase behavior against your own funnel data for a second read on the same sessions.

Getting started with Checkout Started (checkout_started)

  1. Map your conversion. This week, decide that "checkout begins" is the action worth tracking and find the exact page or step where it actually happens. No budget or approval needed.

  2. Install the base pixel. Add OpenAI's oaiq snippet to every page so it can set the first-party cookie and read the oppref click ID from incoming ad traffic.

  3. Fire the event. Place the checkout_started call on the checkout-entry step with the contents payload, passing the cart amount, a currency code, and the items in the cart.

  4. Add server-side backup. Send the same event through the Conversions API with a matching event ID so pixel gaps do not lose checkouts and OpenAI counts each one once.

  5. Register and optimize. Create the conversion event in Ads Manager, confirm it is recording, then set it as your bidding goal once volume looks stable enough to train on.

Key takeaways

  • checkout_started is a standard ChatGPT Ads conversion event that marks when a shopper begins checkout after clicking an ad.

  • You capture it with OpenAI's browser pixel or Conversions API, carrying cart amount, currency, and items in the contents payload.

  • It measures purchase intent, so it will always overcount relative to the orders that actually complete.

  • Firing it on the wrong page inflates conversions and trains bidding toward traffic that never buys.

  • Its real leverage is giving conversion-optimized bidding a dense, early signal while completed-order volume is still too thin to train on.

Frequently asked questions about the Checkout Started (checkout_started) event

How is checkout_started different from order_created in ChatGPT Ads?

checkout_started and order_created sit next to each other in the funnel, but they capture different moments. checkout_started fires the instant a shopper enters your checkout flow, so it records intent to buy. order_created fires only when the transaction completes, so it records actual revenue. Both use OpenAI's contents data type and both can carry amount and currency, but the difference matters for how you read the numbers and how you bid. checkout_started will always show a higher count because many people start checkout and never finish. If you optimize toward checkout_started, you teach bidding to chase sessions that reach the payment screen. If you optimize toward order_created, you teach it to chase completed purchases, which is cleaner but needs more volume to learn from. Most ecommerce setups send both, use checkout_started as an early training signal, and switch to order_created once orders are frequent enough to optimize against directly.

When should I fire checkout_started during the checkout process?

Fire checkout_started at the exact moment the checkout flow actually begins, which usually means the first checkout page loads or the shopper commits to the checkout step. Do not fire it earlier on the cart page, on an add-to-cart button, or when a checkout modal is merely opened, because those are not the same action and they inflate your numbers. The guiding rule from OpenAI is to fire conversion events when the action is genuinely completed, so treat the start of checkout as its own completed step. Fire it once per checkout and never on every page inside a multi-step flow, or you will count a single shopper several times. If you send the event from both the browser pixel and the Conversions API, use one shared event identifier for that checkout so the two copies collapse into one. Placed correctly, the event reflects real checkout entries and gives bidding a signal it can trust.

Why does my checkout_started count vary so much from my order count?

Your checkout_started count outruns your order count because starting checkout and finishing it are two different behaviors, and plenty of shoppers abandon in between. People get surprised by shipping costs, hit a payment error, comparison shop in another tab, or simply change their mind after seeing the final total. That gap is normal, and the size of it tells you something useful about your checkout experience. A very wide gap often points to friction: a slow page, a forced account creation, limited payment options, or unexpected fees. A narrow gap suggests your checkout is doing its job. The ratio also shifts with traffic quality, since ad clicks that arrive with weaker intent start more checkouts they never complete. Seasonality, promotions, and device mix move it too. Do not expect the two counts to match. Track the ratio over time and investigate when it swings, because a sudden change usually signals a broken step or a shift in who your ads are reaching.

Can I use checkout_started as my ChatGPT Ads bidding goal?

Yes, you can set checkout_started as your conversion goal in ChatGPT Ads, and it is often the smart choice early on. OpenAI lets you optimize bidding toward any registered standard event, and because checkout starts happen far more often than completed orders, they give the bidding model enough data to learn from while your account is still new. The tradeoff is that you are optimizing toward intent, so bidding will favor traffic that reaches checkout even if those sessions do not all convert to revenue. That is usually fine as a starting point, and many teams begin on checkout_started, then move the goal to order_created once purchases are frequent enough to train on. You directly influence the signal through where and how you fire the event: clean placement gives bidding an honest target, while sloppy placement teaches it the wrong lesson. You cannot use a custom event as an optimization goal, but checkout_started is a standard event and qualifies.

What is a good checkout_started to order_created ratio to aim for?

There is no universal good ratio for checkout_started to order_created, because healthy numbers depend on your industry, price point, and audience. A useful honest answer is to benchmark against yourself instead of a published figure. Pull your own checkout-to-order ratio over a stable period and treat that as your baseline, then watch for movement. As a rough orientation, many ecommerce stores see a meaningful share of started checkouts never complete, so a gap is expected and not a problem on its own. What matters is the trend and the comparison across campaigns: if one ChatGPT campaign starts far more checkouts per order than the rest, its traffic is lower intent or its landing experience is leaking. Segment by device, since mobile checkouts abandon more often than desktop. Instead of chasing a magic number, decide what completion rate your margins can live with, set that as your internal target, and work the checkout experience until your ratio holds steady above it.