Skip to content
← All articles

Paid Media

Can OpenAI Ads Do Offline Conversions?

A ChatGPT ad click in March and a closed deal in June are two events in two systems. Whether OpenAI's platform can join them, what you have to build, and the two things to confirm against their docs before you start.

September 24, 2026 · 8 min read

An ad click carrying an oppref tag, three weeks of dashed line, a closed deal worth $24,000, and a path returning the conversion to the click

A B2B buyer clicks a ChatGPT ad on Tuesday, fills in your form, talks to sales for three weeks, and signs in October. The click happened in one system, the money happened in another, and nothing about the ad platform's default setup connects them.

Google solved that years ago with offline conversion import. Meta has its own version. The question worth asking of any newer ad platform is whether it can do the same thing, because for a business with a sales cycle it is the difference between optimising toward forms and optimising toward revenue.

For OpenAI's ads the answer is yes, with one caveat about the shape of it that is worth understanding before you build anything.

What counts as an offline conversion?

A conversion that happens somewhere the browser cannot see, reported back to the ad platform afterwards and matched to the click that caused it.

Three things have to be true for it to work anywhere. The click has to leave an identifier. Your systems have to keep that identifier attached to the person all the way to the outcome. And the platform has to accept a conversion sent later, from a server, carrying that identifier.

Miss the first and there is nothing to match on. Miss the second, which is where most setups actually fail, and the identifier is sitting in a browser somewhere having never reached your CRM. Miss the third and you have the data and nowhere to send it.

Does OpenAI's ad platform support it?

It has the pieces, which is the part that matters.

OpenAI appends oppref to your landing page URL on every ad click. It is the ChatGPT equivalent of Google's GCLID and Meta's fbclid: a reference to one specific click, and the thing any later conversion has to carry to be credited to the right campaign, ad group and ad.

And OpenAI has a Conversions API, which accepts events server to server rather than from the browser. That endpoint is the same one a well-built setup already uses to report the conversions that do happen on the site, running alongside the pixel with a shared event id so the platform counts one conversion rather than two.

An offline conversion is that same API, called later, by a different system, with an identifier you stored weeks earlier. There is no separate offline product to enable. The call your CRM makes when a deal closes is the call your website makes on a thank-you page, from a different machine at a different time.

That is the caveat about shape. If you are expecting Google's offline conversion import, with its scheduled file uploads and its own screen in the interface, you will go looking for something that is not there. The capability is real and the plumbing is different.

What you have to build

Four steps, and the middle two are the ones people underestimate.

Capture oppref on arrival. Read it off the URL on the landing page and store it somewhere it will survive a navigation. This is the same job GCLID capture does for Google Ads, and it fails the same ways, which our piece on missing GCLID capture covers in detail. A first-party cookie or local storage, written on the first page, read at submit.

Put it on the form. A hidden field, populated from storage when the form renders, submitted with everything else. If your forms are embedded from a CRM or a form builder, you need a custom property on the object to receive it. This is the step that quietly does not exist on most sites: the identifier is captured, nothing ever reads it back, and it expires unused.

Store it against the record. On the contact or the deal in your CRM, so it is still there when the opportunity closes. Alongside it, store the click time, because you will want to know how long these take.

Send the event when the outcome happens. When the deal moves to closed won, your CRM calls the Conversions API with the stored oppref, the event name, the value, and the time it happened. Hash the customer's email and phone to SHA-256 first and send those too. Hashed identifiers are what lets the platform match the conversion when the click reference alone is not enough, and they let you send raw personal data nowhere.

Which event should a closed deal be?

OpenAI supports a set of standard events, among them lead_created, order_created, subscription_created and trial_started, plus a custom option. Standard events are what the platform can optimise delivery against, so use one wherever it fits.

For a B2B pipeline the useful pattern is two events rather than one. lead_created when the form is submitted, which is fast and frequent enough for the algorithm to learn from, and order_created with the real value when it closes. Then optimise toward the first while judging performance on the second, which is the same discipline our piece on conversion tracking for leads that close argues for on Google Ads.

Value matters more than most people expect. A conversion sent without one tells the platform that every closed deal is worth the same, and the whole point of feeding back closed revenue is that they are not.

What to check before you build this

Two things, against OpenAI's current documentation rather than against this article, because both decide whether the design above survives contact with the platform.

How late an event can arrive and still be attributed. Every platform has a window. Google's offline import has a limit measured in months, and a sales cycle longer than the window is a real constraint on what you can report, not a detail. If your average deal takes four months to close, this is the first number to find out.

Whether the API accepts a conversion timestamp in the past. Offline conversion import depends on it: the event happened when the deal closed, not when your integration got around to sending it. An API that stamps everything at receipt time reports your pipeline as a series of things that happened on batch day.

Neither of these is a reason to wait. The capture work is the same whatever the answers are, it is the part that takes longest to get right, and an identifier you did not capture is one you cannot use later.

The honest limitation

None of this makes ChatGPT ads measurable in the way a mature platform is. The reporting is younger, the attribution windows are less documented, and the volume most advertisers are running is too low for conversion-optimised bidding to have much to learn from in the first month.

What offline conversions buy you is the ability to answer the only question that matters when the invoice arrives: did the money that came out of this channel exceed the money that went into it. That answer does not require sophisticated bidding. It requires a click reference that survived the journey and a system that reports what happened at the end of it.

Start capturing oppref now, whether or not you send a single offline conversion this quarter. The rest is an integration. The capture is a decision you can only make before the clicks happen.

FAQ

Can OpenAI ads track conversions that happen offline?

Yes. OpenAI's Conversions API accepts events server to server, so a CRM can report a closed deal weeks after the click, carrying the oppref click reference captured when the visitor first arrived. There is no separate offline import product as Google has: it is the same API used for on-site conversions, called later by a different system.

What is oppref and why does offline tracking depend on it?

oppref is the identifier OpenAI appends to your landing page URL on an ad click, filling the role GCLID plays for Google and fbclid for Meta. It refers to one specific click. Without it stored against the lead, a conversion reported later can be counted but cannot be credited to the campaign, ad group or ad that earned it, which is most of the reason to report it at all.

Do I need hashed customer data as well as the click reference?

Send both. The click reference is the strongest match, and hashed email and phone give the platform a second route when it is missing or stale, which happens more than the tidy version of this suggests. Hash to SHA-256 in the normalised form the platform specifies, before anything leaves your systems.

How long after the click can a conversion still be attributed?

Check OpenAI's current documentation rather than assuming it matches Google's. Every platform has an attribution window, and if your sales cycle runs longer than it, some closed deals cannot be credited however well the integration is built. It is the first number to establish if your deals take months.

Is this worth doing at low ad volume?

The reporting is, the bidding is not yet. At low volume conversion-optimised delivery has too few events to learn from, so the gain is not smarter bidding but a straight answer on whether the channel returned more than it cost. That answer is worth having before you decide whether to scale the channel.

Want help with ChatGPT Ads Tracking & OpenAI CAPI?

Pixel, oppref click capture, and server-side Conversions API setup, so your ChatGPT ad spend reports conversions you can scale on.

More reading

Paid Media

September 24, 2026 · 8 min read

Meta Offline Conversions: Sending Closed Deals Back

Meta matches on the person, not the click, which is why a setup copied from Google Ads underperforms. What to send, how to hash it, and why your conversion count should fall.

Read article
Paid Media

September 24, 2026 · 7 min read

LinkedIn Offline Conversions and the Sales Cycle Problem

LinkedIn is the most expensive place most B2B companies advertise and the one where form fills mislead most. The catch is that B2B sales cycles outrun the attribution window, and what to do about it.

Read article