Offline conversions are purchases, closed deals, and booked appointments that happen outside the browser — in a CRM follow-up, a sales call, or a payment processed days after the original click. OpenAI Ads can optimize toward these events, but only if you send them back. Most advertisers never do. ConversionLoop automates the entire pipeline: capture the click identifier, receive your CRM or Stripe webhook, match the conversion, and upload it to OpenAI Ads in under 90 seconds.


OpenAI Ads ships with a pixel for browser tracking and a CAPI endpoint for server-side events. But neither of those captures what happens in your sales process after the click. If a lead clicks your ad, books a call, and converts three days later in a Zoom call — the pixel missed it. If a Stripe subscription upgrades after a 14-day trial — the pixel only saw the trial start. Those are your highest-value conversions, and they are invisible to your campaigns unless you explicitly send them back.
Why the manual process breaks — and what changes when you automate it
ConversionLoop captures the click at the top of the funnel, then waits. When your CRM or payment platform fires a conversion event — days or weeks later — ConversionLoop matches it to the original click and uploads it to OpenAI Ads immediately.
Add cl.js to your landing page (one script tag or via GTM). It captures the oppref click ID and stores it against the visitor's email and session.
The visitor converts — fills out a form, starts a trial, or books a call. Their email is now linked to their click.
Days later, the real conversion happens: deal closed in CRM, subscription activated in Stripe, invoice paid in your billing system.
That system fires a webhook to ConversionLoop with the conversion data and the customer email.
ConversionLoop looks up the stored oppref for that email, formats the conversion payload, and uploads it to OpenAI Ads CAPI.
OpenAI Ads attributes the revenue back to the original campaign and updates your conversion data.
Follow these steps once. Everything after is automatic.
Payment SucceededStripe or billing system. Pass the exact charge amount for value-based campaign optimization.
Deal Closed WonCRM event. The highest-value offline signal — ties ad spend directly to closed revenue.
Subscription CreatedTrial converted to paid. Critical for SaaS campaigns where trials are the main CTA.
Invoice PaidFor service businesses. Links ad campaigns to actual revenue, not just booking volume.
Lead QualifiedWhen your team marks a lead as SQL in the CRM. Useful for lead gen campaigns with a long sales cycle.
OpenAI Ads currently supports a 30-day click attribution window for offline conversions. Conversions uploaded within 30 days of the original ad click will be attributed to the campaign. ConversionLoop uploads within 90 seconds of the webhook receipt, well within the window.
No. Offline conversion upload via CAPI works independently of the browser pixel. The cl.js script on your landing page captures the click ID — that is the only client-side component required.
ConversionLoop also supports polling integrations for CRMs like HubSpot and Salesforce that can push data via Zapier or Make. Contact support and we will help configure the right data path for your stack.
Yes, and you should. Passing the exact deal or payment value with each conversion enables value-based bidding in OpenAI Ads, which consistently outperforms target CPA bidding for advertisers with varied deal sizes.


Stop optimizing on guesswork. Every invoice, treatment, and booking — tracked and attributed automatically.
Start free — 14 days on usNo credit card required · 10-minute setup · Cancel anytime