# Connect ChatGPT Ads and Compare Ad Spend With Sales

Use this guide when you run paid ads in ChatGPT and want their costs beside recorded sales. You need an eligible OpenAI Ads Manager account with Advertiser API access. The connection uses an Advertiser API key rather than a sign-in callback.

Canonical page: https://www.attriboo.com/docs/chatgpt-ads

Instructions reviewed: 2026-10-30

## Before You Start

- Be an owner or admin of the Attriboo workspace.
- Install the Attriboo script on your published website and confirm a visit arrives.
- Connect a supported payment provider and check the checkout flow you use.
- Use one ChatGPT ad account per website. Its currency must match the website. The importer supports USD, EUR, GBP, CAD, AUD, NZD, CHF, SEK, NOK, DKK, BRL, MXN and SGD.

- [Install the Website Script](https://www.attriboo.com/docs/installation)
- [Connect a Payment Provider](https://www.attriboo.com/docs/payment-connections)

## 1. Create the Advertiser API Key

Open your OpenAI Ads Manager account, then Settings. Create an Advertiser API key for that ad account. Keep the value private. This is different from the API key used to call OpenAI models and different from your ChatGPT password.

If API key creation or advertising access is not available for your account, check OpenAI’s account eligibility and permissions. Attriboo cannot grant access. You can use the daily CSV route described below if you have reporting exports.

- [Open OpenAI Ads Manager](https://ads.openai.com/)
- [OpenAI Advertiser API Overview](https://developers.openai.com/ads/api-overview)
- [OpenAI Ads Authentication](https://developers.openai.com/ads/api-reference/authentication)

## 2. Connect the Account in Attriboo

Find this setting: Setup → Import ad spend → Connect ChatGPT Ads

1. **Open Your Website in Attriboo** Choose the website that receives the ad traffic. Open Setup and find Import ad spend.

2. **Open Connect ChatGPT Ads** Paste your Advertiser API key into the password field. The key is stored encrypted on the server and is not returned in dashboard state.

3. **Select Connect and Import Costs** Attriboo checks the account and currency, reads its campaign report, then saves the connection. Wait for the import result. An empty report can be valid if there is no delivery in the selected dates.

4. **Check the Last Successful Sync** The connected account name, currency and last successful sync appear in Setup. Use Sync costs to retry or refresh. An error message means you must resolve the stated issue before relying on the import.

> **Read Requests Only** Attriboo reads account metadata, spend, clicks and impressions. It does not change ads or budgets, upload your conversion events, or access ChatGPT conversations. The Advertiser key may have broader abilities at OpenAI; keep it private.

## 3. Label Paid ChatGPT Ad Links

Use these parameters on the destination URL for each ad. Replace the example campaign value with the actual campaign ID, such as cmpn_123. Keep the same ID on every ad belonging to that campaign. A consistent exact campaign name also works once a tagged visit is recorded, but IDs avoid renamed or shared campaign names.

The paid medium is essential. With source chatgpt and medium cpc, new visits appear as ChatGPT Ads in Paid Ads. Ordinary untagged ChatGPT referrals remain AI referrals. Past visits are not relabeled automatically. Check that redirects keep the parameters on the final landing page.

Example Destination URL

```
https://yourwebsite.com/offer?utm_source=chatgpt&utm_medium=cpc&utm_campaign=cmpn_YOUR_CAMPAIGN_ID
```

- [How Campaign Labels Work](https://www.attriboo.com/docs/campaign-links)

## 4. Compare Campaign Costs With Recorded Revenue

Open Dashboard → Where Is My Money Coming From? → Ad ROAS. Keep the website, dates and attribution model consistent. Find the campaign ID or recorded label and compare imported cost with revenue credited to its recorded visits.

The first import requests the previous 90 completed UTC days. The daily job and Sync costs refresh the previous 30 completed UTC days. Current-day spend is excluded. Spend can be revised by OpenAI, so compare the same completed UTC dates in Ads Manager. Clicks, impressions and costs are not purchase records.

Revenue still depends on supported payments and matching to recorded visits. This connection does not import OpenAI-attributed purchases into Attriboo’s payment ledger or claim to measure view-through or cross-device sales.

- [Read the Ad ROAS Report](https://www.attriboo.com/docs/ad-roas)
- [Understand Recorded Revenue](https://www.attriboo.com/docs/revenue)
- [OpenAI Reporting Definitions](https://developers.openai.com/ads/reporting)

## Use a Daily CSV When You Cannot Connect the API

In Ads Manager, select the campaign reporting table, set the dates, then use the three-dot menu → Export → Export daily values. Use daily rows rather than cumulative totals.

Map the export to Attriboo’s ad-cost template: date, source, campaign, amount, currency. Use source chatgpt, a consistent campaign ID or label, YYYY-MM-DD dates, decimal costs and your website currency. Preview the rows in Setup → Import CSV files, then save only after checking them. A raw Ads Manager CSV needs this mapping.

Do not import the same campaign through both the native connection and CSV or manual costs. Attriboo blocks overlapping labels; remove the overlap or choose a distinct campaign ID before retrying.

Attriboo CSV Example

```
date,source,campaign,amount,currency
2026-10-29,chatgpt,cmpn_example,12.50,USD
```

- [Preview and Import CSV Costs](https://www.attriboo.com/docs/csv-imports)
- [OpenAI Daily Reporting Exports](https://help.openai.com/en/articles/20001214-measure-results)

## Fix a Connection or Stop Importing

- Access denied: check the Advertiser key, ad-account access and API eligibility. Do not paste a model API key.
- Currency mismatch: choose an Attriboo website in the same currency. Costs are not converted.
- Campaign label collision: remove overlapping manual or CSV costs, or use distinct campaign IDs. No costs from the failed report window are replaced.
- Expired or revoked key: use Replace API key in Setup.
- Disconnect stops updates and removes Attriboo’s stored key. Imported daily costs remain dated. Revoke the key in OpenAI Ads Manager to invalidate it there as well.

## You are done when

Setup shows a successful sync. A tagged paid ChatGPT visit appears under Paid Ads, and its recorded campaign can be compared with dated imported costs.

## Related guides

- [Read your return on ad spend](https://www.attriboo.com/docs/markdown/ad-roas.md)
- [Label your campaign links](https://www.attriboo.com/docs/markdown/campaign-links.md)
- [Import ad costs and booked deals from a CSV](https://www.attriboo.com/docs/markdown/csv-imports.md)
- [Understand recorded revenue](https://www.attriboo.com/docs/markdown/revenue.md)
- [Get more help](https://www.attriboo.com/docs/markdown/contact.md)
