ChatGPT Ads
Activate Bullseye Lists in ChatGPT Ads Custom Audiences by exporting an OpenAI-ready hashed email file and uploading it in ChatGPT Ads Manager.
Unlike Meta Ads and Google Ads, ChatGPT Ads does not use OAuth auto-sync today - OpenAI’s public Advertiser API does not expose Audiences yet. Bullseye prepares the exact file format OpenAI requires; you upload it in Ads Manager.
Overview
- Export List audiences as a UTF-8 CSV with
email_sha256hashes - Upload the file in ChatGPT Ads Manager → Custom Audiences
- Include or exclude the audience on campaigns; optionally set ad-group bid multipliers
- No plaintext emails leave Bullseye in this export
Prerequisites
- Access to ChatGPT Ads Manager
- Owner or admin access to your Bullseye organization
- A Bullseye List with enriched emails (Lists are built from Search and typically synced once via Meta or Google Ads so contacts are enriched)
Setup
- In Bullseye, go to Integrations → Ad Targeting
- Find ChatGPT Ads and click Export audience
- Pick a List (or open Lists and use Export for ChatGPT Ads on a row)
- Click Download OpenAI audience file
- In ChatGPT Ads Manager: Settings → Audiences → Create custom audience
- Choose SHA-256 hashed email address
- Upload the downloaded file → Create
- Wait for Processing → Ready (or Too small / Failed)
- In a campaign, Include and/or Exclude the audience; optionally set bid multipliers at the ad group
File format
| Rule | Detail |
|---|---|
| Encoding | UTF-8 CSV |
| Header | email_sha256 (required) |
| Values | One 64-character lowercase hex SHA-256 digest per row |
| Deduping | Bullseye removes duplicate emails before hashing |
| Privacy | Plaintext emails are never included in this file |
OpenAI also supports hashed phone uploads (phone_number_sha256). Bullseye’s first release exports hashed email only.
See OpenAI Help: Set up Custom Audiences.
Using the audience
Once the audience status is Ready:
- Add it as an include or exclude on campaigns
- Optionally apply bid multipliers at the ad-group level
- Match rate is not 100% - uploaded rows ≠ matched ChatGPT users
Limits and refresh
| Topic | Detail |
|---|---|
| Minimum size | About 25,000 matched users before the audience can be used (OpenAI recommends ≥ 100k) |
| Max upload | Up to ~5M identifiers / ~500MB per OpenAI |
| Immutable | Custom Audiences cannot be updated in place |
| Refresh | Re-export from Bullseye → create a new audience → archive the old one |
Smaller lists can still be exported (e.g. suppression seeds or lists you will grow). They may show as Too small after matching.
Privacy
Exports contain only hashed first-party identifiers prepared for OpenAI’s Custom Audience upload. See Data & Privacy for how Bullseye handles visitor data.
FAQ
How is this different from Meta / Google?
Meta and Google connect via OAuth and auto-sync Lists as Custom Audiences / Customer Match. ChatGPT Ads is export → upload until OpenAI ships an Audiences API.
Why is my audience Too small?
OpenAI requires ~25k matched ChatGPT users. Your Bullseye list size is an upper bound before matching. Grow the List or combine audiences.
Why don’t I see plaintext emails in the CSV?
OpenAI requires SHA-256 hashed emails. Bullseye hashes them for you so the download is upload-ready and safer to handle.
Can I auto-sync later?
When OpenAI adds Audiences to the Advertiser API, Bullseye can add a native Connect / Sync path. CSV export will remain as a fallback.
API export
Programmatic export uses GET /lists/{id}/chatgpt-ads-export?organizationId=.... See Lists API.