Fix guide · Any website · medium · about 30 min
OpenAI Pixel tracks a button on desktop but not on mobile
For the finding “Mobile buttons are tracked differently from desktop”.
What this means
On your page, a button or link sends an OpenAI Pixel event (for example lead_created) when it is clicked on a desktop screen, but not when the same button is tapped on a phone, or the other way round.
We report this as possible: a site can legitimately behave differently on phones. Check it yourself before changing anything.
Why it can cost you money:
- A large share of ad traffic is on phones. If the mobile button is silent, conversions from mobile visitors never reach ChatGPT Ads.
- Campaigns that optimize for conversions then learn mostly from desktop visitors.
- Reports undercount the device where people actually convert.
How to confirm it yourself
- Open the page in a private (incognito) window, open developer tools (F12), go to Network and filter by
bzr.openai.com. Accept cookies. - Click the button on the desktop layout and note the event that leaves (check the
typein the request payload). - Turn on device emulation (the phone icon in Chrome’s developer tools, or Responsive Design Mode in Firefox and Safari), choose a phone, reload and accept cookies again.
- Tap the same button. If no event leaves, or a different one does, you have the mismatch. Confirm on a real phone if you can: some sites switch layouts on the device type, not only on the screen width.
How to fix
The cause is almost always that the phone and desktop versions are different elements, and the tracking is attached to only one of them.
-
Find out whether there are two buttons. Right-click the button and choose Inspect in both layouts. If the element, its ID or its classes differ, your site renders a separate mobile copy (common in site builders, sticky mobile bars, mobile menus and responsive “show on mobile only” blocks).
-
Attach the event to every copy. Options, from simplest:
- give both copies the same identifying attribute (for example a class like
js-book-callor adata-attribute) and attach the code to that, instead of to one element’s ID; - in a tag manager, change the click trigger so it matches both copies (for example “Click Classes contains
js-book-call” instead of a single Click ID), and check the trigger in Preview mode on both layouts; - if the button is a link to another page (for example a booking page), send the event on that page’s load instead of on the click, so it no longer depends on which copy was tapped.
- give both copies the same identifying attribute (for example a class like
-
Send the event once per action. If both copies end up in the page at the same time (one hidden by CSS), make sure a single tap does not fire two events.
-
Check mobile-only links. On phones, a “Call us” or “WhatsApp” button often becomes a
tel:or app link. If that is your conversion, track it on the mobile element too, with the same event name as on desktop. -
Check the call itself. The event must use the same name and data shape on both layouts, for example:
oaiq("measure", "lead_created", { type: "customer_action" }, { event_id: crypto.randomUUID() }); -
Publish your changes and clear any cache.
Common causes
- The site builder renders separate desktop and mobile versions of a section, and only the desktop button carries the tracking code or the tag manager selector.
- A sticky mobile call-to-action bar was added later without tracking.
- The click trigger uses an element ID that exists only in one layout.
- The desktop button submits a form (tracked on submit), while the mobile button links to a different page or app.
- A script waits for a mouse event (
mouseover,mousedown) that touch screens do not send the same way.
How to verify the fix
- Repeat the test in desktop and phone layouts: the same button sends the same event once in both.
- Re-run the check on IsPixelWorking. The finding should be gone.
Sources
- OpenAI Developers, Measurement Pixel (
measurecalls, event options): https://developers.openai.com/ads/measurement-pixel - OpenAI Developers, Supported Events (event names and data shapes): https://developers.openai.com/ads/supported-events
- Chrome for Developers, Simulate mobile devices with device mode: https://developer.chrome.com/docs/devtools/device-mode
- Google Tag Manager Help, Click trigger: https://support.google.com/tagmanager/answer/7679320
More OpenAI guides
- OpenAI Pixel fires before cookie consent: how to fix it
- OpenAI Pixel not firing after cookie consent: how to fix it
- Repeated OpenAI event IDs drop ChatGPT Ads conversions
- Duplicate OpenAI Pixel events: how to find and remove them
- OpenAI Pixel event_id missing: fix ChatGPT Ads deduplication
- ChatGPT Ads click ID (oppref) lost after an ad click
- Two OpenAI Pixel IDs on one site: when it's fine, how to fix
- OpenAI Conversions API deduplication: match the pixel event_id
- OpenAI Ads Pixel setup: install the ChatGPT Measurement Pixel
- How to set up the OpenAI Conversions API for ChatGPT Ads