Evergreen Growth & Marketing - B2B LinkedIn Ads Agency
    ChatGPT Ads · Tracking

    ChatGPT Ads tracking: Pixel, CAPI, UTMs and GA4, explained properly

    On a channel this new, with no search terms report and no sight of the conversation that triggered the ad, measurement isn't admin. It's the only lever you have. Get it wrong and you'll spend a month arguing about whether the platform works when the honest answer is that you never knew either way. Here's the full stack, in build order, plus the two places the numbers reliably disagree.

    12 min read• James Green• Updated 2026
    Pixel
    Browser side
    CAPI
    Server side
    oppref
    Click reference
    4 sources
    That must agree

    The short answer

    Install the OpenAI Pixel sitewide and fire one meaningful conversion event from it. Add the Conversions API so the same event arrives server side and survives blocked scripts. Preserve the oppref click reference through the whole journey so clicks and conversions can be matched. Tag every destination URL with UTMs so GA4 and your CRM can see the channel independently. Then reconcile four numbers every month: platform clicks, GA4 sessions, form submissions and CRM records with a ChatGPT source.

    Pixel
    Browser
    CAPI
    Server
    oppref
    Matching
    CRM
    Truth

    If you haven't built the account yet, start with the UK setup guide and come back here before you spend anything.

    01
    The lever

    The OpenAI Pixel

    The Pixel is the browser side of measurement. It loads on your site, watches for the events you define and reports them back so OpenAI can connect a conversion to an eligible ad click. Nothing about conversion reporting or conversion bidding works without it.

    How to install it without regretting it later
    • Sitewide, on every page, not just the thank you page. Pageview coverage is what lets you see the journey rather than the endpoint.
    • Through your tag manager if you have one, gated behind analytics or marketing consent in the regions that require it.
    • One standard conversion event that means something commercially. Lead submitted or meeting booked.
    • Deduplicated against the server side event, so the same conversion doesn't get counted twice.
    Screw-up to avoid
    Installing the Pixel only on the confirmation page
    Fastest install going, and it costs you everything downstream. No pageview data means you can't see whether ChatGPT clicks bounce on arrival, and you have nothing to look at while conversion volume is still thin.
    02
    The lever

    The Conversions API

    CAPI sends the same conversion from your server rather than the visitor's browser. It matters more here than on most channels, because B2B journeys are long, browser storage is fragile, and a meaningful share of your audience is running blockers.

    Run both together with deduplication rather than choosing one. Browser side catches the immediate conversion with rich context. Server side catches the ones the browser drops, and it can carry an outcome that happens later, such as a lead your sales team actually qualified.

    The point

    Browser tracking measures what happened on the page. Server tracking measures what happened to the business. On a nine month sales cycle only one of those pays the bills.

    If your CRM can post back a qualified lead or an opportunity, that's the version of this channel's performance worth having. Raw form fills tell you the ad worked. Qualified leads tell you the targeting worked.

    03
    The lever

    Advanced Matching, carefully

    Automatic Advanced Matching takes supported information from your forms, normalises it and hashes it before it's sent, so conversions can be matched to users more reliably than cookies alone allow. For a B2B lead generation advertiser this is the difference between a matched conversion and a missing one.

    Before you switch it on
    • Check your privacy notice actually describes it. Hashing isn't a get-out from disclosure.
    • Gate it behind consent where your regions require consent. In DACH particularly, this isn't optional.
    • Make sure no raw personal data ever lands in a URL, an analytics event or your attribution storage.
    • Expect matching to be imperfect on business email addresses that never touch a consumer OpenAI account.

    That last point is worth sitting with. Your buyer signs into ChatGPT with a personal address and fills in your form with a work one. Matching doesn't magically bridge that, and it's one of the quiet reasons platform-reported conversions and CRM reality drift apart on B2B accounts.

    Want this run for you?

    Want the whole tracking chain built and QA'd?

    Book a 30 minute call. Tell us your stack and we'll be straight about what it takes and what it will still miss.

    04
    The lever

    oppref and UTMs

    Every ChatGPT ad click can carry an OpenAI click reference called oppref. Preserve it through the journey and click to conversion matching gets substantially better. Strip it with a redirect on the first hop and you have thrown away the strongest identifier the platform gives you.

    // Persist the OpenAI click reference for the whole session
    // and carry it onto forms and outbound booking links.
    const p = new URLSearchParams(window.location.search);
    const oppref = p.get('oppref');
    
    if (oppref) {
      sessionStorage.setItem('oppref', oppref);
      // Also store alongside first-touch attribution if the
      // sales cycle is longer than the session.
      localStorage.setItem('oppref_first', oppref);
    }

    Alongside it, tag everything. UTMs are what let GA4 and your CRM see this channel without asking OpenAI's permission:

    utm_source=chatgpt
    utm_medium=paid
    utm_campaign={CAMPAIGN_NAME}
    utm_content={ad_id}
    utm_term={ad_group_id}
    campaign_id={campaign_id}
    oppref={oppref}
    The three places this breaks
    • Redirects. A marketing redirect, a cookie wall or a locale bounce that drops query strings kills both oppref and your UTMs in one go.
    • Booking tools. Calendly, HubSpot Meetings and the rest are a new domain and a new session. Append the stored values to the link before the click.
    • Single page apps. Read the query string before your router rewrites the URL, not after.
    05
    The lever

    GA4, and why the numbers disagree

    Expect a gap between clicks reported in the OpenAI ads manager and sessions arriving in GA4. Several early practitioners have reported it, and Search Engine Land's guidance is to run third party tracking alongside the native Pixel for exactly this reason. A gap is normal. A chasm is a bug.

    GapUsual cause
    Under 15%Normal. Bounced clicks before the tag fires, blockers, consent refusal. Leave it alone.
    15% to 40%Consent gating heavier than you thought, slow landing page, or the in-app browser handoff. Check page speed on mobile first.
    Over 40%Something is broken. A redirect stripping parameters, the tag not firing on the landing page, or a UTM typo splitting the channel into two rows.
    Set GA4 up so the channel is visible
    • A custom channel group that puts chatgpt / paid in its own row rather than lumping it into Unassigned or Paid Other.
    • Cross-domain measurement covering your booking tool and any CRM hosted forms.
    • Referral exclusions for those same domains, so a form handoff doesn't reset the session.
    • Engaged session rate and average engagement time as the two quality metrics you watch weekly.

    That second pair matters more than usual here. One controlled comparison on a site with roughly 1,500 comparable users found Google Ads traffic at 41 seconds average engagement and a 3.71% conversion rate against ChatGPT Ads traffic at 17 seconds and 0.21%. Whatever your own numbers turn out to be, engagement quality is the early warning you get weeks before the conversion data is thick enough to judge.

    06
    The lever

    CRM, where the real answer lives

    Platform conversions tell you an event fired. The CRM tells you whether it was worth having. On a channel this uncertain, judging it from inside the ads manager is how people talk themselves into a second month of bad spend.

    The fields to add
    • First touch source, medium and campaign, set on create and locked so no workflow overwrites them.
    • Latest touch equivalents, free to change.
    • The oppref value, stored as plain text. It costs nothing and it's the only key that reconciles cleanly against the platform.
    • A visible "how did you hear about us" field. Unfashionable, and the only signal that survives consent refusal and device switching.

    Then build one report: closed-won and open pipeline grouped by first touch source, with cost per qualified lead per channel next to it. That single view is what turns a scale, extend or stop decision from an argument into a reading.

    Which event to optimise toward

    Conversion bidding charges you per click but bids toward the event you nominate, which means your choice of event is effectively an instruction about what kind of person to find. Nominate something cheap and easy and the system will dutifully go and find people who do cheap easy things.

    Worth optimising toward
    • Lead form submitted
    • Meeting booked
    • Qualified lead, posted back from the CRM
    • Opportunity created
    Not worth optimising toward
    • Button clicks
    • Scroll depth
    • Time on page
    • Newsletter signups, on a high value B2B offer
    Screw-up to avoid
    Turning on conversion bidding while the signal is still thin
    Conversion bidding needs healthy tracking, a supported standard event and enough volume to learn from. Feed it three noisy conversions a week and you've added a second unknown to a channel that already gives you no search terms report. Run clean CPC until the measurement holds up.

    The QA pass before spend starts

    Thirty minutes, done once, saves the month.

    1
    Click a live ad on a phone

    Confirm oppref and every UTM survive the landing. Then check they survive the second page too.

    2
    Submit a real form

    The event should appear in the ads manager, in GA4 and on a CRM record. Three places, one action.

    3
    Book through the scheduler

    Confirm the source lands on the CRM record, not just inside the booking tool.

    4
    Decline the cookie banner and repeat

    You should fail cleanly, not silently store something you have no consent for.

    5
    Reconcile after 72 hours

    Platform clicks against GA4 sessions. Reporting lags several hours, so don't do this on day one.

    Read next

    Common questions

    Typical engagement: Starter (£1,250/mo) for tracking work, Growth with campaigns

    If you want ChatGPT Ads measurement built to the same standard as the rest of your stack

    • OpenAI Pixel sitewide, consent gated, with one commercially meaningful conversion event.
    • Conversions API with deduplication, and a CRM postback for qualified leads where the stack allows it.
    • oppref persistence through redirects, forms and booking handoffs, plus hidden fields on every form.
    • GA4 custom channel group, cross domain and referral exclusions so the channel is visible on its own row.
    • A monthly reconciliation of platform clicks, GA4 sessions, submissions and CRM records, with the gap explained.
    Pricing

    Starter £1,250/mo, Growth £1,725/mo, Scale £4,025+/mo. Usually two to three weeks inside the retainer. Standalone tracking builds are quoted on the stack involved.