# ChatGPT Ads

> Connect ChatGPT Ads to AnyTrack. AnyTrack sends your conversions to OpenAI through the Conversion API, loads the ChatGPT Ads pixel for you, maps your standard events, and shows ChatGPT Ads spend and results in the Campaign Report.

This guide covers the ChatGPT Ads integration in AnyTrack. Connect your ChatGPT Ads account with one Ads API key. AnyTrack then sends your conversions to OpenAI through the Conversion API. AnyTrack also loads the ChatGPT Ads pixel on your website and fetches your campaign metrics into the [Campaign Report](/docs/campaign-report).

Watch the complete setup. The video shows how to connect your ad account, connect a pixel, add the UTM tracking template, verify your conversions in Ads Manager, and read your ChatGPT Ads results in the Campaign Report.

<YouTube id="se0E2hBKZck" posterQuality="max" title="ChatGPT Ads Conversion API with AnyTrack: Setup and Verification" />

### Key Features and Benefits

- **Conversion API delivery**. AnyTrack sends each conversion to OpenAI server-side, with the OpenAI click reference attached. Conversion-optimized campaigns learn from real sales, not from browser events alone.
- **Tag management**. The AnyTrack Tracking Tag loads the ChatGPT Ads pixel for you. You do not install the OpenAI snippet on your pages.
- **Automatic conversion events**. AnyTrack creates the standard conversion events in your ChatGPT Ads account and maps your AnyTrack conversions to them.
- **Campaign metrics**. AnyTrack fetches spend, impressions, clicks, and results from ChatGPT Ads. The Campaign Report shows cost, conversions, revenue, and ROAS per campaign, ad group, and ad.
- **UTM tracking template**. One template attributes every ChatGPT Ads click to the campaign, ad group, and ad that served the ad.

## How the Integration Works

1. A person clicks your ad in ChatGPT. OpenAI adds the `oppref` click reference to your landing page URL. The UTM tracking template adds the campaign, ad group, and ad IDs.
2. The AnyTrack Tracking Tag collects the UTM parameters and the `oppref` value, and loads the ChatGPT Ads pixel. AnyTrack stores the click reference with the visitor journey.
3. The visitor converts on your website or in a connected conversion source. AnyTrack records the conversion and attributes the conversion to the ChatGPT Ads click.
4. AnyTrack sends the conversion to OpenAI through the Conversion API. The conversion carries the ChatGPT Ads standard event name that you selected.
5. AnyTrack fetches the campaign metrics from ChatGPT Ads and merges them with your conversions in the Campaign Report.

<Callout icon="📘" theme="info">
**Plan availability.** Every plan tracks ChatGPT Ads traffic and shows the conversions in your reports. AnyTrack sends conversions to ChatGPT Ads through the Conversion API on the Starter plan and higher. See the <a href='/docs/plan-comparison'>plan comparison</a>.
</Callout>

## How to Set Up ChatGPT Ads in AnyTrack

Complete the setup in three steps. You do not need code.

<Prerequisites
  title="Before you begin"
  items={[
    { label: "You have an active AnyTrack property with the Tracking Tag installed on your landing pages", done: true },
    { label: "You have admin access to your ChatGPT Ads account in OpenAI Ads Manager", done: true },
    { label: "You have at least one ChatGPT Ads campaign to track", done: true },
  ]}
/>

## 1. Connect Your ChatGPT Ads Account

Connect your ad account with an Ads API key. Each Ads API key belongs to one ad account.

1. In AnyTrack, open **Tracking Pixels**.
2. On the **ChatGPT Ads** card, click **Connect Pixel**. The **New Pixel** page opens.
3. Click **Connect ChatGPT Ads**. The **Connect ChatGPT Ads** window opens.
4. Click **Open Ads Manager**. In Ads Manager, open **Settings**, then **General**.
5. In the **API Keys** section, click **Create New Key**. Enter a name you recognize, for example `AnyTrack`, and click **Create**.
6. Copy the key. In AnyTrack, paste the key in the **Ads API key** field and click **Connect account**.
7. In **Choose a conversion pixel**, select an existing pixel from your ad account, or click **Create a new pixel**. Click **Connect**.

If your ChatGPT Ads account is already connected, the card shows **Add Pixel** instead of **Connect Pixel**. The **Add Pixel** button connects one more pixel from the same account. A second pixel of the same type on one property requires the [Advance plan](/docs/advance-plan).

<Callout icon="⚠️" theme="warning">
**Use an Ads API key, not a conversion key.** OpenAI Ads Manager offers two key types. The Ads API key connects your ad account to AnyTrack. A conversion key works only with the Conversion API endpoint of OpenAI. AnyTrack rejects a conversion key in the <strong>Ads API key</strong> field.
</Callout>

AnyTrack sends the key to OpenAI once and never shows the key again. To replace the key, open the pixel, select the **Conversions** tab, and click **Manage connection** under **Account Connection**.

## 2. Enable the Conversion API and Map Your Events

After the connection, AnyTrack opens the pixel page. Select the **Conversions** tab.

1. Under **Account Connection**, verify the status reads **Connected via** followed by your ad account name.
2. Under **OpenAI Conversions API** (the Conversion API section), verify that **Enable server-to-server tracking** is on.
3. Under **Conversion Event Mapping**, review the events. Each row maps one AnyTrack conversion to one ChatGPT Ads event.
4. To send an event, select the checkbox and select the ChatGPT Ads event name from the drop-down list. To stop an event, clear the checkbox.
5. Click **Save**.

AnyTrack applies the default mapping below when you connect the account.

| AnyTrack conversion | ChatGPT Ads event |
|---|---|
| `PageView` | `page_viewed` |
| `Lead` | `lead_created` |
| `CompleteRegistration` | `registration_completed` |
| `Purchase` | `order_created` |
| `Upsell` | `order_created` |
| `Schedule` | `appointment_scheduled` |
| `CombinedOrder` | `order_created` |

ChatGPT Ads accepts twelve standard events: `page_viewed`, `contents_viewed`, `items_added`, `checkout_started`, `order_created`, `lead_created`, `registration_completed`, `appointment_scheduled`, `subscription_created`, `trial_started`, `app_installed`, and `app_opened`. AnyTrack sends the order value and the currency with each conversion that carries a value. For the full list of AnyTrack events, see [Standard Events](/docs/standard-events).

<Callout icon="📘" theme="info">
**AnyTrack creates the conversion events in ChatGPT Ads for you.** For each mapped event, AnyTrack creates the matching standard conversion event in your ChatGPT Ads account. When you create a conversion-optimized campaign in Ads Manager, select one of these conversion events as the campaign goal. OpenAI requires exactly one active standard conversion event per conversion-optimized campaign.
</Callout>

## 3. Install the ChatGPT Ads UTM Tracking Template

The UTM tracking template tells AnyTrack which campaign, ad group, and ad served each click. Without the template, the Campaign Report still identifies the traffic as ChatGPT Ads, because the `oppref` click reference passes with each click. The traffic and conversions do not align with your campaigns, ad groups, and ads, and those fields show `(not set)`.

1. Copy the template below.
2. In Ads Manager, open the **Campaigns** page.
3. Click the three-dot menu on the campaign and select **Edit campaign**.
4. Paste the template in the **Landing page query parameters** field.
5. Save your changes.

```http
utm_source=chatgpt&utm_medium=cpc&utm_id={campaign_id}&ad_group_id={ad_group_id}&ad_id={ad_id}&utm_content={ad_group_id}&utm_campaign={campaign_id}
```

Set the template once per campaign. Ads Manager applies the most specific setting, so a template on one ad group or ad overrides the campaign template. For the macro list, the precedence rules, and the parameter breakdown, see [ChatGPT Ads UTM Parameters](/docs/chatgpt-ads-utm-parameters).

Complete! You now send conversions to ChatGPT Ads with AnyTrack. Verify your setup.

***

## Verify Your ChatGPT Ads Setup

Verify the integration in AnyTrack first, then in Ads Manager.

### 1. Verify in AnyTrack

1. Click one of your ChatGPT Ads. As an alternative, open your landing page with `?oppref=test` and the UTM parameters from the template.
2. Open the [Conversions Report](/docs/conversions-report). The `PageView` event shows the source `chatgpt` and the medium `cpc`.
3. Complete a test conversion, for example a lead form or a test order.
4. In the Conversions Report, open the conversion. The attribution touchpoints show the ChatGPT Ads click.
5. Open the [Campaign Report](/docs/campaign-report) and filter by the source `chatgpt`. The campaign metrics from ChatGPT Ads show on the campaign rows.

### 2. Verify in Ads Manager

1. In Ads Manager, open the conversions section and select the pixel you connected.
2. Compare the recent events with the events in your AnyTrack Conversions Report.

<Callout icon="📘" theme="info">
**OpenAI reports conversions with a delay.** Impressions and clicks show in Ads Manager within minutes. Spend and cost metrics arrive later. OpenAI states that conversion reports need at least one day to populate and continue to update through daily processing. A conversion that you see in AnyTrack today shows in Ads Manager reports tomorrow.
</Callout>

### 3. Remove Your Own ChatGPT Ads Pixel

Verify that conversions reach Ads Manager first. Then remove the OpenAI pixel snippet that you installed on your pages yourself, or with a plugin. The AnyTrack Tracking Tag loads the ChatGPT Ads pixel for you. Two pixels on one page send the `page_viewed` event twice.

<Callout icon="❗" theme="error">
**Free plan.** On the Free plan, AnyTrack does not send conversions to ChatGPT Ads. Keep your own pixel and conversion setup in place. Remove the pixel only after you upgrade and verify that AnyTrack delivers your conversions.
</Callout>

***

## The oppref Click Reference

OpenAI appends the parameter `oppref` to every landing page URL from a ChatGPT Ads click. The `oppref` value is the OpenAI click reference, comparable to `gclid` on Google Ads or `fbclid` on Meta Ads. You do not add `oppref` to your tracking template, and AutoTag does not add the parameter.

AnyTrack reads the `oppref` value from the landing page URL and classifies the visit as ChatGPT Ads traffic. AnyTrack stores the value with the visitor journey. AnyTrack keeps the value through redirects and [cross-domain](/docs/cross-domain-tracking) journeys. When the visitor converts, AnyTrack sends the `oppref` value with the conversion through the Conversion API. OpenAI then attributes the conversion to the ad click. The ChatGPT Ads pixel also stores the value in a first-party cookie named `__oppref`.

## ChatGPT Ads Attribution Windows

OpenAI attributes a conversion to an ad click within the click attribution window of the campaign, for example 30 days. You set the window in Ads Manager. OpenAI attributes a conversion to an impression within one day of the impression. When a conversion qualifies for both, the click takes precedence. The Conversion API endpoint of OpenAI accepts events with a timestamp up to 7 days in the past. A conversion that a connected source reports more than 7 days after the event does not reach ChatGPT Ads.

AnyTrack attributes the same conversion with the attribution model and window that you set in [Property Settings](/docs/property-settings). The Campaign Report and Ads Manager show different figures when the windows differ. See [Attribution Delays](/docs/attribution-delays).

***

## Troubleshoot ChatGPT Ads

| Symptom | Cause | Fix |
|---|---|---|
| **Connect account** fails | The key is a conversion key, or belongs to another ad account | Create an Ads API key in Ads Manager under **Settings**, **General**, **API Keys**. Paste the new key. |
| Conversions show in AnyTrack but not in Ads Manager | **Enable server-to-server tracking** is off, the event is not mapped, or the report has not updated yet | Open the pixel **Conversions** tab. Turn the toggle on and map the event. Allow one day for the Ads Manager report. |
| ChatGPT Ads traffic shows `(not set)` for campaign, ad group, and ad in the Campaign Report | The UTM tracking template is missing on the campaign | Add the template to the **Landing page query parameters** field of the campaign. |
| Ads Manager shows twice the page views | Your own OpenAI pixel snippet is still installed | Remove the snippet after you verify the AnyTrack delivery. |
| A conversion is missing in Ads Manager after a late postback | OpenAI accepts events up to 7 days old | Check the conversion source for delayed postbacks. Conversions older than 7 days do not reach ChatGPT Ads. |

***

<FaqAccordion
  title="ChatGPT Ads and AnyTrack FAQs"
  icon="fa-duotone fa-circle-question"
  items={[
    {
      question: "Which AnyTrack accounts can connect ChatGPT Ads?",
      answer: "Every AnyTrack account. You do not request access. Open Tracking Pixels and connect ChatGPT Ads with an Ads API key. On the Free plan, AnyTrack tracks ChatGPT Ads traffic and shows the conversions in your reports. On the Free plan, AnyTrack does not send the conversions to ChatGPT Ads through the Conversion API."
    },
    {
      question: "Does AnyTrack send conversions to ChatGPT Ads?",
      answer: "Yes. AnyTrack sends each mapped conversion to OpenAI through the Conversion API, server to server. Each conversion carries the <code>oppref</code> click reference and the order value. AnyTrack sends conversions on the Starter plan and higher."
    },
    {
      question: "Do I need to install the OpenAI pixel on my website?",
      answer: "No. The AnyTrack Tracking Tag loads the ChatGPT Ads pixel for you when you connect a pixel in step 1. If you installed the OpenAI snippet yourself, verify that conversions reach Ads Manager first. Then remove the snippet. Two pixels send the <code>page_viewed</code> event twice."
    },
    {
      question: "Which key do I paste in AnyTrack?",
      answer: "An Ads API key from OpenAI Ads Manager, under Settings, General, API Keys. Each Ads API key belongs to one ad account. Do not paste a conversion key. A conversion key works only with the Conversion API endpoint of OpenAI. AnyTrack rejects a conversion key in the Ads API key field."
    },
    {
      question: "Do I need the UTM tracking template when AnyTrack reads oppref?",
      answer: "Yes. The <code>oppref</code> value attributes the conversion for OpenAI. The UTM parameters attribute the conversion for your AnyTrack reports. Without the template, the Campaign Report still identifies the traffic as ChatGPT Ads through <code>oppref</code>, but the campaign, ad group, and ad fields show (not set). See the <a href='/docs/chatgpt-ads-utm-parameters'>UTM parameters guide</a>."
    },
    {
      question: "Why does Ads Manager show fewer conversions than AnyTrack?",
      answer: "Three reasons apply. OpenAI conversion reports need at least one day to populate. OpenAI counts only the conversions within the attribution window of the campaign. AnyTrack counts every conversion with the attribution model and window in your Property Settings. Compare the same date range in both tools. Allow one day before you compare the totals."
    },
    {
      question: "Can I create a conversion-optimized campaign with the events AnyTrack sends?",
      answer: "Yes. AnyTrack creates the standard conversion events in your ChatGPT Ads account for each mapped event. In Ads Manager, select one of these conversion events as the goal of the conversion-optimized campaign. OpenAI requires exactly one active standard conversion event per conversion-optimized campaign."
    }
  ]}
/>

## Related Articles

- [ChatGPT Ads UTM Parameters](/docs/chatgpt-ads-utm-parameters)
- [Campaign Report](/docs/campaign-report)
- [Conversion API](/docs/conversion-api)
- [Install the AnyTrack Tracking Tag](/docs/install-anytrack-tag)
