Lapis, the YC-backed #1 AI ad generator rated 4.9/5 on G2, uses AI agents to create, launch, and optimize ads on ChatGPT, Google, Meta, and LinkedIn.
How Does ChatGPT Ads Conversion Tracking Work?
ChatGPT Ads conversion tracking connects an action on your site or server to an eligible ad click or impression through a data source you create in Ads Manager. Three objects do the work: a data source (identified by a Pixel ID) that receives events, a conversion event setting that defines which event counts and over which click window, and the campaign that the setting is attached to.
According to OpenAI's Conversion Measurement guide, a conversion is reported when OpenAI receives the event from a connected data source, the event matches a conversion configured for the campaign, it falls inside the attribution window, and OpenAI can connect it to the ad using the click reference, advanced matching, or modeled measurement where available.
The click reference is the piece most teams miss. When someone clicks your ad, OpenAI appends oppref to the landing page URL. The Pixel reads it, stores it in a first-party __oppref cookie, and attaches it to later events, so a buyer who reads three pages and converts the next afternoon still connects to the click. Server events need you to pass that value yourself.
| Method | Runs in | Best for | Captures oppref | Dedupe field |
|---|---|---|---|---|
| OpenAI Pixel | Browser (JavaScript) | Page views, product views, carts, checkouts, leads, purchases | Yes, automatically | event_id |
| Conversions API | Your server | Confirmed orders, qualified leads, phone and offline sales, app installs | No, you pass it | id |
| Image tag | Browser, no JavaScript | Page-load conversions and a no-script fallback | No, you pass it | event_id |
| Partner integrations | Shopify, HubSpot, CDPs, attribution partners | Teams that already route conversions through those systems | Set by the integration | Set by the integration |
| GA4 data source (beta) | Google Analytics 4 | Comparing attribution between Ads Manager and GA4 | Not applicable | Not applicable |
How Do You Install the OpenAI Pixel?
Create a Pixel ID in the Conversions tab of Ads Manager, paste OpenAI's snippet near the top of the <head> on every page you measure, and call oaiq("measure", ...) when a conversion happens. The snippet below matches OpenAI's Measurement Pixel documentation as of October 23, 2026.
Step 1: Create the data source
In Ads Manager, open Conversions, go to Data Sources, select Create, and copy the Pixel ID. API users create the same source with POST https://api.ads.openai.com/v1/conversions/pixels and client_type: "web", which returns a pixel_id for sending events and an id for building conversion event settings (Conversion Tracking docs). Reuse one data source per website so browser and server events share a Pixel ID.
Step 2: Paste the snippet
<script>
(function (w, d, s, u) {
if (w.oaiq) return;
var q = function () {
q.q.push(arguments);
};
q.q = [];
w.oaiq = q;
var js = d.createElement(s);
js.async = true;
js.src = u;
var f = d.getElementsByTagName(s)[0];
f.parentNode.insertBefore(js, f);
})(window, document, "script", "https://bzrcdn.openai.com/sdk/oaiq.min.js");
oaiq("init", {
pixelId: "<YOUR-PIXEL-ID>",
});
</script>The snippet defines a queue before the SDK file arrives, so measure calls that fire early are held and sent once the SDK loads. Add debug: true to the init object while testing to log SDK activity in the browser console, then remove it.
Step 3: Handle consent and security policy
- Consent: call
oaiq("consent", false)beforeinitwhere consent is required, thenoaiq("consent", true)once the visitor agrees. Events blocked while consent was off are not replayed. - Content Security Policy: add
https://bzrcdn.openai.comtoscript-src,https://bzr.openai.comandhttps://bzrcdn.openai.comtoconnect-src, andhttps://bzr.openai.comtoimg-src. - Google Tag Manager: OpenAI's Measure Results guide confirms GTM deployment works as long as the tag loads on the right pages and does not block or reorder the
initand event calls.
Platform notes
Shopify: install the official ChatGPT Ads for Shopify app instead of hand-editing theme code. Per OpenAI's Shopify setup guide, you connect your Ads Manager account, select or create the OpenAI Pixel for Shopify, and eligible commerce events flow to Ads Manager while your catalog syncs into a product feed. Keep a second pixel app from firing the same events with different IDs. Our Shopify playbook for ChatGPT ads covers the campaign side.
Next.js: load the snippet once from the root layout.tsx with next/script, then fire window.oaiq calls from client components on confirmation screens.
WordPress and form builders: inject the snippet sitewide through your header settings, then fire events on thank-you pages or inside the form plugin's success callback so a failed submission never records a lead.
Which Conversion Events Should You Send?
Send OpenAI's standard events wherever one fits, because only a standard event can become the optimization goal of a Conversions campaign. Each event carries a data object whose type matches the event, as listed in Supported Events.
| Event | Data type | Fire when |
|---|---|---|
page_viewed | contents | A visitor lands on an important page |
contents_viewed | contents | A visitor views a product, listing, or article |
items_added | contents | Items go into a cart, bundle, or selection |
checkout_started | contents | Checkout begins |
order_created | contents | A purchase completes (feeds Order Created Sales and ROAS) |
lead_created | customer_action | A lead form submits or a visitor requests contact |
registration_completed | customer_action | An account or event registration finishes |
appointment_scheduled | customer_action | A demo, meeting, or consultation is booked |
trial_started | plan_enrollment | A free trial starts |
subscription_created | plan_enrollment | A paid subscription starts |
app_installed, app_opened | customer_action | App lifecycle events, Conversions API only |
custom | custom | An action no standard event describes |
A purchase with a deduplication ID looks like this. Amounts are integers in the currency's minor unit, so 2599 means $25.99:
oaiq(
"measure",
"order_created",
{
type: "contents",
amount: 2599,
currency: "USD",
},
{
event_id: "order_12345",
}
);- Currency: required whenever
amountis present, as a three-letter ISO 4217 code. - Item prices:
contents[].amountis the price of one unit, and the event-levelamountis the value of the whole event. - Custom events: pass
custom_event_name(1 to 64 letters, numbers, underscores, or dashes, never a standard name). Custom events report fine but cannot be a Conversions campaign goal. - Funnel coverage: Event Quality Score checks for browsing, intermediate, and completed-outcome events, so send
contents_viewedandcheckout_startedorlead_createdalongside the final conversion.
How Do You Set Up the Conversions API?
Post events from your server to https://bzr.openai.com/v1/events?pid=<PIXEL-ID> with a Conversions API key as the bearer token. OpenAI calls the Conversions API "a more reliable tracking source than the pixel alone" in its Conversions API reference, which makes it the backbone for confirmed orders, qualified leads, and offline sales.
Provision the key in the Conversions tab of Ads Manager, or with POST /v1/conversions/api_keys using your Advertiser API key. The Conversions API key only authenticates event requests to bzr.openai.com; keep it on your server and out of page code.
curl -X POST "https://bzr.openai.com/v1/events?pid=${PIXEL_ID}" \
-H "Authorization: Bearer ${OPENAI_CONVERSIONS_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"events": [
{
"id": "order_12345",
"type": "order_created",
"timestamp_ms": 1773892800000,
"oppref": "<OPPREF-FROM-LANDING-URL>",
"action_source": "web",
"source_url": "https://shop.example.com/checkout/confirmation",
"data": {
"type": "contents",
"amount": 8900,
"currency": "USD"
}
}
]
}'The rules that matter
- Batches: up to 1,000 events per request. If one event fails validation, the whole batch fails.
- Timestamps:
timestamp_msis the time the action happened, in Unix milliseconds, within the last 7 days and no more than 10 minutes in the future. - Action source:
web,mobile_app,offline,physical_store,phone_call,email, orother. Web events requiresource_url; app events requiremobile_app. - Click reference: the API does not capture
oppref. Read it from the landing URL or the__opprefcookie and pass the original string unchanged. - User data: add a
userobject per event with SHA-256 hashes of normalized emails, phone numbers, external IDs, and names, raw city, region, postal code, and country, plus the real client IP address and user agent. For hybrid setups, forward the Pixel's__obrefcookie asuser.obref. - Testing: set
"validate_only": trueat the top level to validate without saving. - Speed: Event Quality Score flags server events that arrive more than one hour after the action, so stream confirmed conversions instead of uploading nightly.
How Do You Deduplicate Pixel and Conversions API Events?
Send the same Pixel ID, the same event name, and the same ID through both channels: the Pixel's event_id must equal the Conversions API id. OpenAI keeps the first event it receives for that key and ignores later copies, and for custom events the custom_event_name must match as well.
The cleanest pattern generates the ID on your server from the order or lead record, renders it into the confirmation page for the Pixel call, and sends the identical value in the server event. Retries reuse the same ID. Distinct actions get distinct IDs, because OpenAI's quality checks flag repeated callbacks and conversions piled onto one ad interaction.
1,000 events
maximum per Conversions API request, timestamped within the last 7 days
| Action | Send through | Why |
|---|---|---|
| Page and product views | Pixel | High volume, browser-native, carries oppref automatically |
| Add to cart, checkout started | Pixel plus Conversions API | Intent signals worth protecting from blocked scripts |
| Purchase | Pixel plus Conversions API, shared ID | Revenue event that feeds ROAS and oCPC or oCPM optimization |
| Lead or demo request | Pixel plus Conversions API, shared ID | Primary goal for B2B campaigns, confirmed by the server |
| Subscription renewal or billing event | Conversions API | Lives in payment webhooks, not the browser |
| Phone, in-store, or offline sale | Conversions API with the matching action_source | No browser session exists |
| App install or open | Conversions API with mobile_app | The Pixel does not support app lifecycle events, so they go server-side |
When Should You Use the Image Tag or Multiple Pixel IDs?
Use the image tag for page-load conversions on pages that cannot run JavaScript, and use multiple Pixel IDs when one website measures conversions for more than one advertiser, brand, or partner. Both are documented options in OpenAI's developer docs and both share the Pixel's deduplication rules.
The image tag
The image tag is a hidden 1 by 1 image that sends one event each time the page loads. Wrap it in <noscript> to use it as a fallback for the JavaScript Pixel:
<noscript>
<img
src="https://bzr.openai.com/v1/sdk/events?pid=<PIXEL-ID>&event=page_viewed&data[type]=contents"
width="1"
height="1"
style="display:none"
alt=""
/>
</noscript>Know its limits before you rely on it. It measures page loads only, sends one event per request with no batching, supports no user object, and does not capture oppref. OpenAI tells you to keep personal data, session IDs, customer identifiers, and order identifiers out of its query string, so use a random event_id when you pair it with a server event.
Multiple Pixel IDs
Load the SDK once, initialize each Pixel ID, and choose where each event goes. measure sends to every pixel initialized at the time of the call; measureSingle sends to one (Multiple Pixel IDs docs):
oaiq("init", { pixelId: "<PIXEL-ID-A>" });
oaiq("init", { pixelId: "<PIXEL-ID-B>" });
// Sent to both pixels
oaiq("measure", "page_viewed", { type: "contents" });
// Sent only to pixel A
oaiq("measureSingle", "<PIXEL-ID-A>", "order_created", {
type: "contents",
amount: 2599,
currency: "USD",
});A pixel initialized later does not receive earlier events, and on multi-pixel pages you always include the intended pixelId when updating user data.
How Do Attribution Windows and View-Through Conversions Work?
Ads Manager credits conversions on a 7, 14, or 30 day click-through window plus either no view-through window (0 Day) or a 1 day view-through window, using last-touch logic where a qualifying click always beats an impression. With 1 Day selected, eligible view-through conversions are included in the Conversions total, and you can split them out with the Click-through conversions and View-through conversions columns.
Per OpenAI's Measure Results guide, changing these windows affects reporting only. It does not change campaign optimization, bidding, or billing. Optimization follows the campaign you built: Conversions campaigns billed per impression (oCPM) optimize toward a broader set of conversions driven by views and clicks, while click-billed campaigns (oCPC) optimize toward conversions that follow a click, as described in Conversion-optimized Campaigns. Our ChatGPT Ads bidding guide explains when each billing option wins.
52.7%
of eligible one-day view-through conversions happened within an hour of the matched ad impression, in an early analysis of global campaigns optimized for deeper-funnel outcomes
| Setting | Options | What it controls |
|---|---|---|
| Click-through window | 7, 14, or 30 days | Which clicks earn credit in reports |
| View-through window | 0 Day (off) or 1 Day | Whether impression-only conversions join the Conversions total |
| Time basis | Ad event time (default) or conversion time | Which date a conversion lands on |
| Attribution model | Last touch | Click beats impression; no multi-touch splitting |
__oppref cookie | 30 days, reset on each new capture | How long the browser keeps the click reference |
Conversions take 24 to 48 hours to appear, and totals keep moving as recent events process. For programmatic reporting, POST /v1/conversions/insights in the Insights API returns click-through and view-through goal conversions separately (its view window defaults to 1 day), plus optional attributed events that do not need to be campaign goals. Order Created Sales and Order Created ROAS come only from attributed order_created events.
How Do You Improve Event Quality Score and Match Rates?
Event Quality Score grades each Pixel or data source daily across seven complete calendar days; clear its warnings and your measurement and optimization run on cleaner signal. OpenAI's event quality guide describes the score as a health check on your setup, separate from campaign performance, and every warning maps to a fix you control.
| Warning | Fix |
|---|---|
| Limited email or customer ID information | Send a hashed email or stable customer ID on every eligible conversion |
| Ad click information is missing or cannot be connected | Preserve oppref through redirects and pass it into server events |
| Conversions API events are delayed | Send within one hour of the action and keep the original timestamp on retries |
| Conversion matches need review | Stop repeated callbacks and reuse one event ID per action |
| Many conversions linked to the same ad interaction | Check refresh and retry loops; give distinct actions distinct IDs |
| Limited additional matching information | Add phone, name plus postal code and country, and the real client IP and user agent |
| Limited event types observed | Cover browsing, intermediate, and outcome events with standard event names |
| Limited Pixel and Conversions API activity | Confirm both channels send accepted events to the intended data source |
| Limited activity for a configured conversion goal | Match the goal's event name to the event you actually send |
Turn on automatic advanced matching
Automatic advanced matching lets the Pixel detect supported customer information from forms on your site, normalize it, and hash it with SHA-256 in the browser before it travels with conversion events. Raw customer information never goes to OpenAI through this feature, and it needs no code change. OpenAI recommends enabling it for conversion-optimized campaigns because it connects conversions to ads when a click identifier is missing.
Normalize manual matching fields
If you pass identifiers yourself, normalize before hashing: trim and lowercase emails; keep the country calling code on phone numbers and strip spaces, parentheses, periods, hyphens, the leading plus sign, and leading zeroes; lowercase names and remove whitespace and ASCII punctuation. Send geographic fields raw. OpenAI is explicit that you use real customer information and real business actions, never invented identifiers or shifted timestamps to lift a score.
How Should You Tag ChatGPT Ads for GA4 and Analytics?
Add UTM parameters built from OpenAI's dynamic URL macros, keep oppref intact, and give ChatGPT its own row in a GA4 custom channel group. Ads Manager supports {campaign_id}, {ad_group_id}, {ad_id}, and {ad_account_id} and fills them automatically at delivery time.
Set them under Landing page query parameters in Edit campaign, Edit ad group, or Edit ad. The most specific setting wins in this order: Ad URL, then Ad, then Ad Group, then Campaign, and a parameter already set at the Ad URL level is never overwritten. A clean template:
utm_source=chatgpt
&utm_medium=cpc
&utm_campaign={campaign_id}
&utm_term={ad_group_id}
&utm_content={ad_id}Use utm_medium=cpm for Views and oCPM campaigns so billing type stays visible in analytics. IDs keep reporting stable when someone renames a campaign, and they join cleanly to Ads Manager CSV exports and the Insights API. Test every redirect, link shortener, consent wall, and geo router to confirm both your UTMs and oppref survive to the final page.
Build the GA4 channel
In GA4, go to Admin > Data display > Channel groups, create a group from a copy of the default, and add a channel named "ChatGPT Ads" where Source exactly matches chatgpt and Medium matches the regex cpc|cpm. Traffic lands in the first channel it matches, so reorder ChatGPT Ads above Paid Other and Referral. Per Google's custom channel group documentation, standard properties get two custom groups of up to 50 channels, groups apply retroactively, and Campaign ID is a supported field, which pairs perfectly with the {campaign_id} macro.
Connect GA4 as a data source
OpenAI now lets you connect GA4 directly in Ads Manager under Conversions > Data Sources > Create > Google Analytics 4 to share GA4 data for optimization where eligible and to compare attribution between the two systems. Per OpenAI's GA4 guide, the feature is in beta through your account manager, supports one property per advertiser account with read-only access, and covers connection setup today; reporting requires mapping GA4 events to OpenAI events. The imported totals are property-wide across all traffic, so treat them as a sync check, not campaign conversions.
Expect Ads Manager and GA4 to disagree. OpenAI lists different attribution methods and windows, time zones, consent and browser storage, deduplication, and modeled conversions as normal causes. Our ChatGPT Ads reporting dashboard guide shows how to reconcile them in one view.
Which Measurement Partners Integrate With ChatGPT Ads?
OpenAI named its first measurement partners on October 5, 2026, covering data integrations, attribution, full-funnel measurement, incrementality, and brand lift, and it counted more than 50 technology and measurement partners in its August 31 milestone post. If your conversions already flow through one of these systems, start there.
| Job | Partners | Use when |
|---|---|---|
| Send conversion data from existing systems | Hightouch, Tealium, LiveRamp | Your warehouse or CDP already holds confirmed conversions |
| Attribution, Conversions API, click attribution | AppsFlyer, Triple Whale, Adjust, DV Rockerbox, Northbeam, Branch, Singular, Kochava, Airbridge, Tenjin | You run web or app attribution through a partner today |
| Full-funnel and advanced measurement | Fospha, Measured, INCRMNTAL | You budget across channels with modeled or full-funnel views |
| Incrementality geo experiments | Haus, Measured, WorkMagic | You need causal lift, not attributed credit |
| Brand lift (early-stage testing) | Kantar, Cint | You measure awareness and resonance for new placements |
| Commerce and CRM | Shopify (ChatGPT Ads app), HubSpot | You want catalog, Pixel, and lead follow-up inside tools you already use |
The early partner results are strong. According to OpenAI's October 5 announcement, DV Rockerbox measured WeightWatchers' attributed CPA on ChatGPT Ads at 15.3% below its blended paid-search benchmark; WorkMagic reported statistically significant lift for Dose, with 67% of incremental purchases coming from net-new customers; and Triple Whale found that 93% of Portland Leather's ChatGPT Ads visitors were new. The OpenAI Ads blog adds that WorkMagic's geo-lift study estimated 2.3x more incremental orders for Dose than last-click attribution captured. Each figure is a single-advertiser result, and together they show why click-only reporting undercounts this channel.
15.3% lower CPA
WeightWatchers' attributed CPA on ChatGPT Ads versus its blended paid-search benchmark, measured by DV Rockerbox
HubSpot is OpenAI's first CRM partner: businesses connect a ChatGPT Ads account, create ads, track performance, and follow up on leads inside HubSpot, per OpenAI's September 16 announcement. Partners that send events on an advertiser's behalf identify themselves with a stable integration_source on every Conversions API request.
How Do You Prove ChatGPT Ads Drive Incremental Revenue Across Channels?
Run a geo experiment to prove causality and keep a confirmed-outcome ledger to settle credit across channels; Lapis Wayfinder is that ledger. Attribution answers which ad touched a buyer. Incrementality answers whether the sale would have happened anyway. Finance needs both.
Run a geo holdout
Standard ChatGPT Ads campaigns target countries plus supported states, regions, cities, markets, and postal codes, so you can split comparable regions into test and holdout groups (product-feed campaigns stay at country level, per Create Campaigns). Hold spend steady elsewhere, run long enough to clear your sales cycle, and compare confirmed revenue per region. Haus, Measured, and WorkMagic now run these geo designs with OpenAI.
Count each conversion once
Every platform claims its own credit. One order can show up as a ChatGPT Ads conversion, a Google conversion, and a Meta conversion on the same day. Wayfinder connects campaign activity to confirmed sales and leads from your CRM, store, or billing system, records one conversion per business event, and assigns channel credit under one set of attribution rules across ChatGPT, Google, Meta, and LinkedIn. It carries attribution through signup and login, flags sales with no traceable ad source, and sends confirmed sales and qualified leads back to ad platforms so their bidding learns from real outcomes.
Worked example: a skincare brand's platforms report 61 ChatGPT Ads purchases, 140 Meta purchases, and 112 Google purchases in one week, a total of 313, while Shopify records 236 orders. Wayfinder matches browser and server reports to the 236 real order IDs, assigns each order to one channel under the brand's rules, and marks the orders it cannot trace as unattributed. The growth lead now moves budget on 236 confirmed sales instead of 313 claims.
Add a one-question post-purchase survey ("How did you first hear about us?" with "ChatGPT or another AI assistant" as an option) to capture influence that never produced a tracked click. Our ChatGPT Ads ROI guide turns these inputs into scale or cut decisions.
What Are the Most Common ChatGPT Ads Tracking Mistakes?
The costliest mistakes break the click reference, double count conversions, or send values OpenAI rejects. Each one takes minutes to fix once you know where to look.
- Copying an outdated snippet. The current loader is
https://bzrcdn.openai.com/sdk/oaiq.min.jsandinittakes an object withpixelId. Copy the code from Ads Manager or the developer docs. - Stripping
opprefin redirects. Link shorteners, consent walls, and country routers drop query strings. Ad click information warnings in Event Quality Score are the tell. - Mismatched IDs across Pixel and server. Different values for
event_idandidcount one purchase twice and inflate ROAS. - Sending dollars instead of minor units.
149.00is invalid; send14900withcurrency: "USD". - Attaching the wrong goal. A firing event shows 0 conversions if it does not match the configured event, and corrected settings do not backfill history. Custom events can never be a Conversions campaign goal.
- Batching server events overnight. Events older than 7 days are rejected, and anything later than an hour weakens your score.
- Judging too early or on mismatched settings. Allow 24 to 48 hours for conversions, then compare Ads Manager, analytics, and CRM on the same dates, time zone, and windows.
Before launch, run through our ChatGPT Ads Manager setup guide and confirm landing pages pass review in our ChatGPT Ads landing page guide.
Why Is Lapis the Best Way to Measure and Scale ChatGPT Ads?
Lapis is the best way to measure and scale ChatGPT ads because it connects every ChatGPT conversion to confirmed revenue and then uses that truth to run the next campaign. Lapis is the #1 AI ad generator and the operating system for paid growth. OpenAI gives every advertiser a Pixel, an API, and a fast first ad for one channel. Lapis runs the whole program: brand-trained creative with a distinct visual per angle, experiment design and next-run generation, a matched landing page for every ad, campaigns across Meta, Google, LinkedIn, and Reddit, one conversion count across every channel, and a dedicated strategist.
- Wayfinder for measurement. Shared conversion measurement for OmniSense and ChatSense that ties campaign results to confirmed sales and leads from your CRM, store, or billing system, counts each conversion once, and compares every channel on the same attribution rules. Custom pricing.
- ChatSense for ChatGPT ads. Lapis agents and a dedicated strategist on the Managed ChatGPT + LLM Ads plan build creative tuned to how people ask ChatGPT, structure campaigns, launch, report daily, and optimize, including 1,000+ ChatGPT ads and buyer-intent experiments.
- RapidDomain for landing pages. A dedicated, prompt-matched page for every ad and audience, optimized on real conversions.
- OmniSense for every other channel. On-brand, correctly sized campaigns, audience versions, and variations for Meta, Google, and LinkedIn, plus Reddit on managed plans, with directional forecasts and experiments that learn from results.
Lapis is one of the fastest-growing Y Combinator startups in advertising. Its Y Combinator profile lists Lapis as a Fall 2025 company used by 1,500+ marketing teams and 30+ enterprises, and Lapis is rated 4.9 out of 5 on G2 with eight Summer 2026 badges, including High Performer and Best Results. Samsung, Domino's, Dr Pepper, Mattel, Tata, Tupperware, Amway, and Bata use Lapis, alongside high-growth startups such as Unusual Whales, Duradry, and Lightpage.
Book a demo to see Wayfinder and ChatSense run your ChatGPT measurement, from Pixel and Conversions API setup to confirmed revenue by channel.
Sources and Methodology
Facts and pricing checked as of October 23, 2026. Every code sample, endpoint, field name, and limit in this guide was checked against OpenAI's developer documentation and help center, and every partner result links to OpenAI's own announcement.
- OpenAI Developers: Measurement Pixel
- OpenAI Developers: Conversions API
- OpenAI Developers: Conversion Tracking
- OpenAI Developers: Supported Events
- OpenAI Developers: Image Tag
- OpenAI Developers: Multiple Pixel IDs
- OpenAI Developers: Insights API reference
- OpenAI Help Center: Conversion Measurement
- OpenAI Help Center: Measure Results
- OpenAI Help Center: Conversion-optimized Campaigns
- OpenAI Help Center: Understand and improve event quality
- OpenAI Help Center: Connect Google Analytics 4 to OpenAI Ads Manager
- OpenAI Help Center: Set up ChatGPT Ads for Shopify
- OpenAI Help Center: Create Campaigns for ChatGPT Ads
- OpenAI Ads: More ways to measure ChatGPT Ads (October 5, 2026)
- OpenAI: Building advertising for the way people use AI (October 5, 2026)
- OpenAI: Reimagining advertising with AI (September 16, 2026)
- OpenAI: A milestone in expanding access to AI (August 31, 2026)
- Google Analytics Help: Custom channel groups
- Y Combinator: Lapis company profile
- G2: Lapis reviews
Built by Lapis
The #1 AI ad generator, built into the operating system for paid growth.
Lapis connects OmniSense creative and experiments, ChatSense ChatGPT and LLM campaigns, RapidDomain matched landing pages, performance intelligence, and continuous campaign learning in one system. Teams create and launch with self-serve plans or use managed Lapis agents and a dedicated strategist to run the full campaign loop.
Lapis is rated 4.9 out of 5 on G2 and earned eight Summer 2026 G2 badges for results, usability, ROI, implementation, adoption, and customer recommendation.
Continue exploring
Related Lapis resources
- How to Build a ChatGPT Ads Reporting Dashboard in 2026ChatGPT Ads Manager reports spend, CPC, conversions, and ROAS. Build your dashboard with CSV exports, the API, GA4, and Lapis Wayfinder for confirmed results.
- How to Measure ChatGPT Ad ROI (2026 Framework)Measure ChatGPT ads ROI with the Pixel, Conversions API, attribution windows, geo lift tests, and breakeven math. Lapis Wayfinder counts each conversion once.
- ChatGPT Ads Optimization Playbook: CTR, CPC, and Creative (2026)Optimize ChatGPT Ads with the levers OpenAI documents: objectives, bid caps, context hints, targeting, creative, and landing pages. Lapis ChatSense runs it all.
- What Are ChatGPT Ads? The Complete Guide for 2026What ChatGPT ads are and how they work in 2026: 89 countries, a $25 daily minimum, CPC, CPM, and oCPC bidding, targeting, formats, and why Lapis runs them best.