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

  1. Open the page in a private (incognito) window, open developer tools (F12), go to Network and filter by bzr.openai.com. Accept cookies.
  2. Click the button on the desktop layout and note the event that leaves (check the type in the request payload).
  3. 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.
  4. 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.

  1. 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).

  2. Attach the event to every copy. Options, from simplest:

    • give both copies the same identifying attribute (for example a class like js-book-call or a data- 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.
  3. 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.

  4. 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.

  5. 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() });
  6. 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

  1. Repeat the test in desktop and phone layouts: the same button sends the same event once in both.
  2. Re-run the check on IsPixelWorking. The finding should be gone.

Sources

More OpenAI guides