Skip to content

Measurement setup

Install & verify the ChatGPT Ads pixel in Google Tag Manager

Install and verify the ChatGPT Ads pixel in Google Tag Manager. Use Pixel Helper and Advarde receipts when GTM Preview looks green but Test events stay empty.

A browser action passes through a configured tag to an event receipt.

Use this guide to install the pixel code generated by an Advarde conversion setup in a GTM web container. You will create one base tag, three data-layer variables and one event tag, then test a confirmed business action. You need an eligible advertiser account, an Advarde setup and permission to edit the website and GTM container.

This workflow uses Advarde’s generated helper. It is not a standalone native OpenAI GTM template. The booking example below uses synthetic values; replace them with your application’s confirmed action ID and the event selected in your setup.

Jump to a step in this guide

When Preview looks green but Test events stay empty

GTM Preview can look green while Ads Manager or Advarde Test events stay empty. A fired GTM tag is not an accepted conversion. Follow the diagnostic order below so a missing website push is not mistaken for a reporting delay.

  1. Confirmed business action and dataLayer push on the website
  2. Tag Assistant shows buro_conversion with the three current variables
  3. Helper consent granted (no automatic replay of earlier blocked events)
  4. Browser measurement call observed with Pixel Helper
  5. Receipt appears in Advarde Test events
  6. Attribution checked separately from the receipt

Prepare the setup

In Advarde, open Conversion tracking → Set up conversions for the intended advertiser and website. Select the events you actually measure and the primary conversion, then review and create the setup. Reuse the website’s existing tracking source where appropriate.

Open Installation → Google Tag Manager and download the instructions. Keep base-pixel.html, gtm-event-tag.html and data-layer-example.js together. The base file supplies the pixel ID and allowed events. Do not mix files from different setups. Keep destination campaign tags consistent when you test landing URLs — build them with the UTM URL Generator so analytics can separate paid ChatGPT Ads arrivals from other traffic.

Advarde Google Tag Manager installation instructions for a booking funnel
Actual Advarde interface, captured on 11 September 2026 in a local rehearsal workspace. Account names and results are synthetic. Select the image to view it at full size.

Install one base tag

In GTM, choose Tags → New → Custom HTML. Name the tag “Advarde — base pixel” and paste the complete base-pixel.html snippet. Choose a page-load trigger limited to the pages for this funnel. Check the site for a direct installation first: install the helper once.

Under Advanced Settings → Tag firing options, select Once per page. The event tag will also use this tag as its setup tag. Re-running the base code would reset its local consent state, so do not configure it to run before every event without this limit.

The helper initially denies measurement. Your consent-manager integration must call window.buroConversions.setConsent with the actual grant or withdrawal after the helper exists. If your container also uses GTM consent requirements, configure those with your existing consent manager and GTM’s consent APIs; a helper call does not configure GTM Consent Mode.

Create the three data-layer variables

In Variables → User-Defined Variables → New, choose Data Layer Variable. Create the following three variables with the exact GTM variable names shown. Use Data Layer Version 2. Keep conversion_data as an object, not a JSON string.

The generated event tag references these names directly. Renaming a GTM variable requires the same change in the tag. Clear conversion_data before each event push, then supply all three current values together. An empty object alone does not clear fields previously merged by a Version 2 variable.

GTM variable nameData Layer Variable NameValue for a confirmed booking
conversion_nameconversion_nameappointment_scheduled (string)
conversion_idconversion_idThe confirmed booking ID (string)
conversion_dataconversion_dataAn object, such as {} when no optional fields apply

Connect the event tag and trigger

Create a Custom Event trigger named “Advarde — confirmed conversion” with event name buro_conversion. Leave regular-expression matching off. Choose All Custom Events for this exact event name, or add the website/funnel conditions your setup needs.

Create a second Custom HTML tag named “Advarde — conversion event” using gtm-event-tag.html, then attach that trigger. In Advanced Settings → Tag Sequencing, select the base pixel as the setup tag and prevent the event tag from firing if the setup tag fails. Keep the base tag’s Once per page setting.

Use Once per event for the conversion tag so later, distinct bookings can be measured. This tag dispatches the event; it does not determine whether a booking succeeded or prevent repeated business callbacks.

<script>
window.buroConversions.track({{conversion_name}}, {{conversion_id}}, {{conversion_data}});
</script>

Push only a confirmed business action

Call dataLayer.push after your application receives a successful booking response. Replace the example ID with that response’s stable ID. A click, form submission attempt or thank-you URL alone is insufficient when it can also occur after failure.

Prevent repeated dispatch in the application. Preserve the same ID for a retry of the same action; a new ID would describe a different action. The helper does not deduplicate repeated track calls. If browser and server both send an action, follow the platform’s shared-ID rules separately.

window.dataLayer = window.dataLayer || [];
window.dataLayer.push({ conversion_data: null }); // Clear earlier optional fields.
window.dataLayer.push({
  event: "buro_conversion",
  conversion_name: "appointment_scheduled",
  conversion_id: "booking_example_1042", // Replace with the confirmed booking ID.
  conversion_data: {}
});

Verify with Pixel Helper

After the consent matrix in Preview, inspect the browser call with ChatGPT Pixel Helper. Start inspection before the action, then check that the observed pixel ID and consent state match the setup you are testing. An observed call still needs a receipt check.

When Test events stay empty after a visible call, follow the missing-conversions checklist.

Troubleshoot the first failed check

Start with the earliest failed stage. This keeps a missing website trigger from being confused with delayed reporting.

ObservationNext check
No buro_conversion in Tag AssistantConfirm the business action succeeded and the application pushed to window.dataLayer.
Variables are undefined or belong to an earlier actionMatch case-sensitive keys and send every field in the same event push.
window.buroConversions is undefinedCheck base-tag firing, sequencing, the selected container and script errors.
Tag fires, but no measure call appearsCheck the helper’s current consent state, base-tag repetition and event-name validation.
Pixel Helper shows an unknown pixel or consentStart inspection before the action; earlier initialization calls may already have been consumed.
A call appears, but no receipt is visibleCheck pixel identity, browser request errors, CSP and the receipt sample’s time range.

Publish the reviewed container and verify receipts

After the cases pass in Preview, review the intended GTM container version and publish it. Repeat a permitted action on the published website. Open Advarde → Conversion tracking → Test events and compare the selected source with recent browser receipts.

Record the container version, pixel, event, test time and outcome. The installation checkbox is an operator confirmation. An observed browser call, a received event and an attributed campaign conversion remain separate checks.

Add Conversions API and shared-ID dedupe

When browser and server both describe the same action, add the Conversions API path and follow the platform’s shared-ID deduplication rules. Keep that work separate from the GTM install and receipt checks above. Keep the Conversions API secret on the server — see which ChatGPT Ads API keys belong in which surface before you install measurement.

Sources and verification

Editorial refresh September 29, 2026: failure-mode diagnostic order, Pixel Helper verification path, and CAPI cross-link. Installation steps still match Advarde’s generated helper and the linked documentation last reviewed September 18, 2026. The linked demo uses a synthetic SDK; it does not verify a live GTM container, OpenAI receipt or attribution. Your account may expose a different set of features. Examples are illustrative unless a dataset is explicitly supplied.

Take the next step

Open conversion tracking ↗