Matched users are the people on an advertiser's uploaded customer or prospect list that ChatGPT Ads successfully links to ChatGPT accounts, forming the addressable audience a campaign can include, exclude, or bid on. They are not the raw rows you upload: invalid, duplicate, and unmatched identifiers drop out, so matched users are always a smaller count than your file.
Because OpenAI sets a minimum matched-user count before an audience can be used for inclusion or bid adjustments, the matched count decides whether first-party targeting is available to you. Upload a list that matches thin and your campaign falls back to broad, conversation-based delivery instead of the customers you wanted.
In ChatGPT Ads, matched users measure how many identifiers from your file OpenAI could resolve to active accounts, and that number sets the size of every custom audience you build. You upload emails, phone numbers, their hashed versions, or Google Advertising IDs, and OpenAI checks each against its user base. Only the identifiers that resolve to a real account become matched users; invalid, duplicate, and unmatched rows are discarded and never count toward the total.
What you can do depends on the matched count. Upload size by itself grants nothing. OpenAI requires each audience to reach at least 25,000 matched users before it can be used for inclusion or bid adjustments, and recommends starting lists of at least 100,000 records to clear that floor. Smaller audiences are still allowed for exclusions.
Matched users sit beneath custom audiences, the lists themselves, and separate from conversation-based targeting, which reads the topic of a live chat. AirOps helps marketers track how their brand surfaces in ChatGPT answers, so paid targeting and organic visibility inform one strategy. Ads Manager never shows you which individuals matched or lets you pick specific people.
Matched users are produced by a pipeline that runs every time you upload or refresh a custom audience. The steps below show how a raw file becomes a usable targeting control.
Upload your file. Submit a UTF-8 CSV or TXT containing emails, phone numbers, hashed versions, or Google Advertising IDs, within OpenAI's 500 MB file limit. OpenAI deletes the file after processing.
Match identifiers. OpenAI checks each identifier against its ChatGPT user base and keeps only the ones that resolve to an active account.
Tally the count. Invalid, duplicate, and unmatched rows drop out, so the matched count lands below your upload size.
Clear the threshold. The audience becomes usable for inclusion or bid adjustments only after it meets OpenAI's minimum matched-user count; below that, you can only use it to exclude.
Serve the ads. OpenAI applies the audience as a filter, then delivery still depends on the relevance of each user's live conversation.
The matched count tells you how much of your list ChatGPT could actually reach. It does not tell you which people matched, and it does not guarantee delivery, since conversation relevance still gates every impression.
Matched users decide whether ChatGPT Ads can function as a first-party channel for you or stays a broad awareness buy. The size and quality of your match sets your ceiling before you write a single ad, so it belongs in the plan when you decide how much budget to commit to the platform.
Gated access: A list that matches below the minimum cannot run as an inclusion audience at all, so a brand with a small or poorly maintained CRM is locked out of precise targeting until it grows the file.
Wasted spend: When you assume your full upload is addressable, you overestimate reach and set budgets against an audience that is a fraction of the size, draining spend on thin delivery.
Suppression wins: Even below the threshold, matched users let you exclude existing customers from prospecting campaigns, so you stop paying to reach people who already converted.
Growth marketers use matched users to retarget trial sign-ups inside ChatGPT with upgrade offers once their uploaded list clears the match threshold.
Demand gen leads use matched users to exclude closed-won accounts from prospecting campaigns so budget stays on net-new buyers.
SEO managers use matched users to layer a known-customer audience over conversation-based delivery and compare how each segment responds.
Your match rate is the share of uploaded identifiers that resolve to active ChatGPT accounts, and it determines how large a file you need to clear the minimum, since real-world match rates routinely drop a substantial slice of any customer list before precise targeting can begin.
Identifier hygiene is how clean and current your emails, phone numbers, and advertising IDs are, because invalid, duplicate, and stale entries never match and quietly shrink your usable audience well below the row count you uploaded.
Audience actions are the three ways a matched list can be applied, inclusion, exclusion, and bid adjustment, and each carries its own eligibility rules and a distinct strategic purpose within a campaign.
Reach your existing customers directly inside ChatGPT conversations instead of relying on organic discovery.
Suppress recent purchasers so prospecting budget only chases net-new demand.
Layer first-party audiences onto OpenAI's conversation-based targeting for sharper delivery.
Bring the first-party targeting you already run on Google and Meta into ChatGPT Ads.
Measure how known customers respond versus broad reach to guide future budget.
Start big: Upload the largest clean list you can, because match rates shave off a large share and you need headroom to clear the minimum.
Hash sensitive data: Submit SHA-256 hashed emails and phone numbers when your policies require it, since OpenAI accepts hashed identifiers and deletes files after processing.
Keep lists first-party: Use only data you collected directly, because rented, brokered, or scraped lists are prohibited and will get your audience rejected.
Refresh in place: Add, remove, or replace members without rebuilding the audience, so your targeting reflects current customers without losing the audience's history.
Lead with suppression: Exclude recent buyers and active subscribers first, since exclusion audiences face no size floor and deliver an immediate efficiency gain.
Watch the match count: Plan budgets against the matched count and ignore the uploaded row total, so your reach estimates stay honest.
Avoid treating your upload size as your audience size. The gap between rows submitted and users matched is where campaigns quietly overspend, because budgets set against an inflated number buy far less reach than planned.
AirOps: Tracks how your brand appears in ChatGPT's organic answers, so you can see where paid matched-user targeting reinforces visibility you already have.
OpenAI Ads Manager: The native platform where you upload customer lists, build custom audiences, and see the matched-user count before a campaign runs.
HubSpot: Stores and segments the first-party customer and prospect lists you export to build a clean matched audience.
Pull your list. Export your cleanest first-party customer or prospect list from your CRM this week, keeping only emails, phone numbers, or advertising IDs you collected directly from those customers.
Scrub the file. Remove duplicates, invalid formats, and unsubscribes, because every bad row lowers your match and none of them count toward the audience.
Estimate your match. Assume a meaningful share of records will not resolve, then confirm your cleaned list is large enough to clear the inclusion minimum with headroom to spare for match loss.
Upload and check the count. Create a custom audience in OpenAI Ads Manager, upload the file, and read the matched-user count the system returns before you build anything around it.
Choose an action. Decide whether the audience is big enough to include or only to exclude, then attach it to a campaign and set bid adjustments where it fits.
Matched users are the identifiers from your uploaded list that ChatGPT Ads successfully links to real accounts.
OpenAI counts a match only when an identifier resolves to an active ChatGPT account, so duplicates and invalid rows are excluded.
The matched count, well below your upload size, is the hard constraint on whether an audience can target at all.
The biggest risk is budgeting against raw rows and overspending on an audience a fraction of the expected size.
The leverage sits in list quality and suppression, where clean data and customer exclusions pay off fastest.
A custom audience is the list you create and manage; matched users are the subset of that list OpenAI could actually link to ChatGPT accounts. When you upload emails, phone numbers, or advertising IDs, OpenAI compares them against its user base and keeps only the ones that resolve to a live account. The custom audience is the container and the control you apply to a campaign; the matched-user count is the usable population inside it. This distinction matters operationally, because Ads Manager judges eligibility on matched users, so a custom audience built from a mid-sized contact file might hold far fewer matched users once invalid and unmatched rows fall away. You manage the audience, and OpenAI decides the match. Treat the audience as your strategy and the matched count as the reality check on whether that strategy can run as inclusion or only as suppression.
You need enough matched users to clear OpenAI's inclusion threshold before a campaign can use the audience for targeting or bid adjustments, and that floor is measured on matched users. The rows you upload do not count toward it. Because a meaningful share of any list fails to match, the practical answer is that your uploaded file has to be substantially larger than the threshold itself. OpenAI's own guidance points advertisers toward a starting list several times bigger than the minimum for exactly this reason. Timing matters too: the count is calculated after you upload and process the file, so you will not know whether you qualify until the audience is built. If you come up short, you can still use the list for exclusions, which carry no size floor. Plan the list before the campaign, because waiting until launch to discover a thin match forces a last-minute scramble or a fallback to broad delivery.
Your matched users count comes out smaller than your list because OpenAI only counts identifiers that resolve to an active ChatGPT account, and several things stop a row from resolving. Invalid or mistyped emails and phone numbers never match. Duplicates collapse into a single person. Contacts who are not ChatGPT users, or who use a different email or number with the service, simply are not in the pool. Formatting and hashing mismatches can also drop otherwise valid records. The result is a match rate that varies with how clean your data is, how much your audience overlaps with ChatGPT's user base, and how recent your contact details are. A consumer brand with current emails will usually match a larger share than a B2B list full of role-based addresses. This is why the same-sized file can produce very different matched-user counts across two advertisers, and why cleaning the file before upload is the single most reliable lever you control.
Yes, you can influence your matched users count, though you cannot control the final number directly because OpenAI runs the matching. The levers that work are all about the data you send. Upload a larger list so a given match rate yields more matched users. Clean it first, removing duplicates, fixing formats, and dropping dead addresses, so fewer rows fail on technicalities. Include more than one identifier type when you have them, since an email that fails might match on a phone number or advertising ID. Keep contact details current, because stale records match poorly. What you cannot do is pick specific people, see who matched, or push a contact into the pool who simply is not a ChatGPT user. So the honest answer is that you move the count by improving input quality and volume, and then OpenAI's match decides the rest. Treat it as something you optimize through data hygiene, while the final match stays with OpenAI.
A good matched users match rate depends on your data source, but as a rough frame, a healthy first-party list of current customer emails often resolves a solid share, while older or role-based lists resolve much less. There is no official benchmark OpenAI publishes, so judge your result against a practical test: does your cleaned upload clear the inclusion minimum with comfortable headroom? If a list in the low hundreds of thousands produces an audience large enough to target and still leaves room for list decay, your match rate is working for you. If you have to upload everything you own just to scrape past the floor, your rate is too low and the data needs work before the channel pays off. Compare your own lists over time as the most useful benchmark, since your match rate on repeat uploads tells you whether hygiene efforts are improving. Good is less about hitting a universal percentage and more about clearing the threshold with margin.