01What OpenAI actually documents
Before the architecture, the factual floor. Most articles on this topic describe a targeting system that does not exist, so let's separate the disclosed mechanics from the speculation.
Ads arrived in ChatGPT on 9 February 2026 for logged-in adults on the Free and Go tiers in the United States, with Plus, Pro, Business, Enterprise and Education remaining ad-free. Units render below the answer, labelled as sponsored, and OpenAI states plainly that the ad system runs separately from the chat model. Answer independence is the first principle on the page: advertising cannot shape, rank or alter what ChatGPT says.
On selection, OpenAI's own Ads in ChatGPT documentation names the signal set: the context and intent of the current conversation, the ad's landing page, its title and copy, advertiser-provided context hints, advertiser targeting selections, and — only when ads personalization is enabled — select signals from the user's broader ChatGPT experience. Starting in February 2026, that broader set can include past chats, stored memory, and the user's history of interacting with ads.
Then the boundary that defines the whole discipline: advertisers never receive chats, chat history, memories, name, email address, precise location, IP address, or sensitive categories such as health, mental health and political topics. Reporting is aggregated — views and clicks, not conversations.
You cannot target a user's history. You can only become the answer that history makes plausible. Everything technical below serves that sentence, because every operational decision follows from it.
Two things worth holding in mind. First, personalized ads were not initially available in the European Economic Area or Switzerland, so any multi-market plan has to assume a different relevance regime per region. Second, ads do not appear in Temporary Chats at all, which is the cleanest user-side control in the product and a useful thing to explain to a nervous client.
02Three tiers of "chat history"
"Chat history" is used loosely in marketing conversations, and the looseness causes bad decisions. In systems of this class, three distinct memory tiers operate on completely different clocks, and they enter ad selection differently. Treating them as one thing is how agencies end up promising personalization they cannot deliver.
-
Tier 1 — Live thread (in-context state)
Lifetime: the session · Milliseconds to minutes
Everything currently resident in the model's context window: turns, tool results, the assistant's own replies, uploaded files. It is the richest signal per token because it is unfiltered and immediate. This tier works whether or not personalization is enabled, which is why contextual relevance is strong even for users who opted out.
-
Tier 2 — Episodic memory (recent-chat retrieval)
Lifetime: days to weeks · Retrieved per query
Prior conversations pulled back in when semantically adjacent to the current need. Mechanically this behaves like retrieval over past sessions: the system embeds candidate memories, compares them to the live context, and injects the nearest few. This is where cross-session continuity lives — and the first tier that requires the user's personalization consent.
-
Tier 3 — Consolidated profile (durable memory entries)
Lifetime: months to indefinite · Persisted, editable, deletable
Durable facts the system chose to retain and compact: stated preferences, recurring projects, constraints, norms of address. These are deliberately lossy summaries rather than transcripts — a consolidation step proves far cheaper than replaying history, and it produces the topical priors that make an ad feel eerily well-aimed. Users can inspect, edit and delete these entries, and deletion propagates on a documented delay of up to 30 days.
The practical consequence: tier 1 explains most of the relevance you observe, tier 3 explains most of the relevance that surprises you. When a roofer tells me a ChatGPT ad felt uncannily specific to a job discussed three weeks earlier, that is almost always tier 3 firing — a consolidated entry about a renovation project, reactivated by an unrelated prompt about financing.
If you want the mechanics of how tiers 1 and 2 are turned into commercially useful retrieval, our episode on latent intent inference and probabilistic lead qualification goes deeper into the inference layer. For the campaign-level view, the ChatGPT Ads agency practice page sets out how we structure accounts around these tiers.
03The disclosure boundary
No public document describes OpenAI's internal memory ranking, fusion weights or calibration method. Any article claiming otherwise is inventing architecture. So here is the honest map: what is documented, and what experienced operators can reasonably infer from observable behaviour.
| Claim | Status | Basis |
|---|---|---|
| Personalization requires the user's opt-in | Documented | OpenAI Ads in ChatGPT help article; Settings → Ad Controls |
| Past chats and memory are governed by a separate toggle from personalization | Documented | Same, and mirrored in the iOS control panel |
| Advertisers receive only aggregate performance data | Documented | Explicit privacy commitment |
| Landing page and ad copy are ad-selection inputs | Documented | Named in the signal list |
| Sensitive topics excluded; no ads to under-18 accounts; no ads in Temporary Chats | Documented | Placement policy |
| Personalization was initially unavailable in the EEA and Switzerland | Documented | Regional availability note |
| Memory is consolidated into lossy summaries rather than replayed verbatim | Inferred | Cost and latency economics, plus observed "preference" behaviour |
| Ranking uses a relevance-weighted, second-price-style auction | Inferred | Practitioner documentation of Ads Manager bidding; not an OpenAI specification |
| A personalized prior blends with live-thread intent before retrieval | Inferred | Observable: relevance holds when the live thread is generic |
| Creative is rewritten per user by auto-generated variants | Documented | Ads Manager "Text customization" toggle, default on |
Read that table as a due-diligence instrument. If an agency presents a "chat-history targeting strategy", ask which rows they are relying on. The documented rows give you four levers. The inferred rows give you hypotheses worth testing. Neither gives you an audience.
For a worked architectural treatment of the same system from the commerce side, including retrieval design and feed structure, the hyper-technical architecture of ChatGPT Ads for DTC and e-commerce brands is the companion piece.
04The write path: how a conversation becomes memory
Memory is a pipeline, not a recording. Understanding its stages explains why some conversations leave a durable trace and others vanish by Thursday.
Stage one — salience extraction
Not every turn is a candidate for retention. A salience pass scores candidate facts on novelty (is this already known?), durability (will this still be true in six weeks?), and specificity (is it an attribute or a mood?). "I'm renovating a 1970s semi in Markham and my budget ceiling is 60k" scores high on all three. "This is frustrating" scores low on durability and specificity. Only the high-salience residue proceeds; the rest dies with the session.
Stage two — normalisation into a structured entry
Extracted facts get resolved against entities and canonical attributes: locality, property type, project stage, budget band, preference axis. This is where coreference resolution matters — "it", "the other quote", "my contractor" have to be bound to the right referent or the memory is worse than useless. It is also where a brand's entity clarity pays off, a point we cover under AI search optimization, because ambiguous entities produce ambiguous memories.
Stage three — consolidation and compaction
Over time, entries are merged, superseded and summarised. An old "considering refacing" entry may be rewritten as "refacing completed in spring" if evidence accumulates. This is the step that makes memory affordable, and the step that destroys detail you might have wanted. Designers of these systems trade fidelity for tractability, at a compression ratio nobody publishes.
Stage four — expiry, deletion and propagation
Users can delete stored memories and clear ads data; OpenAI documents that cleared ads data may take up to 30 days to be fully removed from systems. That delay matters commercially: a segment whose memory state is mid-expiry is behaving differently from one that is settled, and campaign performance sampled across that window is quietly biased.
Interactions with ads — hiding, reporting, viewing, clicking — do not enter ChatGPT memory. If a user shares an ad with the assistant and asks questions about it, that conversation can be referenced later only if "reference chat history" is on. And temporary chats write nothing and show no ads. Your ad performance is therefore sampled from a self-selected subset of the user base, which is a measurement problem, not a targeting one.
05The read path: from prior to placement
This is the part worth diagramming, because it explains why bid optimisation underperforms in this channel. Six stages, in strict order, and your budget only touches the last two.
Stage 1 and 2 — computing a personalised intent state
The prior does its work before retrieval. Mechanically, a user's memory and recent-session signals contribute a low-dimensional bias on the intent representation: it can nudge the reconstructed need toward a known project, a known constraint, a known preference axis. In probabilistic terms, the live thread gives you a likelihood and the history gives you a prior, and the fused posterior is what everything downstream sees.
That is why the effect feels uncanny and stays invisible. A prompt as thin as "what would that run me?" carries almost no retrievable content on its own. Fused with a prior about a 1970s semi, a 60k ceiling and an unresolved contractor decision, it becomes a dense, highly specific request state that a specific advertiser's landing page can match.
Stage 3 and 4 — retrieval, then reranking
Retrieval in systems of this class is typically a dual-encoder problem: the intent state and every candidate ad are projected into a shared vector space, and approximate nearest-neighbour search (ANN, often implemented with graphs such as HNSW) pulls the top few hundred candidates in milliseconds. Cheap, fast, and coarse. A second cross-encoder stage then reads each candidate and the intent together, scoring the pair at much higher fidelity, and reorders them.
The practical split matters enormously. Dual encoders reward broad topical alignment; cross-encoders reward the specific detail in your copy. If you write a topical but generic ad, you survive stage 3 and lose stage 4. If you write an ad so narrow that even topical alignment fails, you never reach stage 4 at all. The optimisation target is precise topicality — adjacent to the need, specific about the constraint.
Our long-form treatment of this retrieval problem, including embedding alignment and inference-time behaviour, is in the episode on inference-time intent embedding alignment for LLM-mediated commerce. The product-feed side of the same pipeline is covered in the product discovery playbook.
06Auction mechanics under personalization
Once candidates are scored and calibrated into probabilities, an auction decides the order. Practitioner documentation of Ads Manager describes a relevance-weighted, second-price-style mechanism — the highest-ranked ad pays roughly the minimum needed to hold position. Here is the shape operators should hold in their heads, with the caveat that the exact objective is not published.
where p̂CTR and p̂CVR are calibrated probabilities conditioned on the fused intent state,
v is your declared objective weight, q is a quality term, and γ is bounded well below 1
Two implications follow directly from that shape, and both are expensive to learn the hard way.
First, calibration dominates raw score. A model whose scores are well ordered but poorly calibrated will misprice every relevant conversation. This is why feeding clean downstream events — a qualified lead, a booked estimate, a closed deal — outperforms feeding form fills. It is also why our Conversions API setup guide is the first document we hand a new client, before any campaign structure discussion.
Second, bid is exponent-bounded. If relevance enters as a multiplicative factor and bid enters with a damped exponent, then raising bids in a low-relevance position produces sublinear gains while spending linearly more. We have measured accounts where a 40% max-CPC increase moved impression share by low single digits. The same money spent on a copy and landing rewrite moved it by an order of magnitude.
If your ad's impression share is low and your relevance or CTR signals are weak, you have a stage-3 or stage-4 problem. If impression share is low but CTR is strong, you have an auction or eligibility problem. Same symptom, opposite fixes — and the only way to tell them apart is to look at whether your ad is being retrieved at all. That triage is the first thing we run in a ChatGPT Ads consulting engagement.
07The consent gate and the aggregation floor
Personalization in this channel is built on explicit user control, and the controls are unusually granular for adtech. The summary below follows the Ads in ChatGPT help documentation, which is worth reading in full before quoting any of it to a client's legal team.
What the user controls
- A personalization master switch. Off means ads still appear, but selection leans on the current thread only — no past chats, no ad history, no broader experience signals.
- A separate "past chats and memory" toggle. Even with personalization on, a user can exclude history from ad relevance entirely. This is the single most consequential control for anyone modelling reach.
- Transparency and deletion. Users can view which ads they saw and which topics were used, dismiss an ad, request a "why am I seeing this" explanation, and delete ads data — with propagation taking up to 30 days.
- Temporary Chats. No ads, and no memory written. Structurally invisible to advertisers.
- Ad-free paths. Paid tiers carry no ads at all; Free users can choose an ads-free mode with reduced limits.
What the law adds
In the EEA, personalization for advertising requires a lawful basis, and consent under Article 6(1)(a) of the General Data Protection Regulation is the only viable one for behavioural personalization. That is consistent with personalized ads being withheld from the EEA and Switzerland at launch. In Canada, PIPEDA requires meaningful consent for the collection and use of personal information, which shapes both the product's controls and your own first-party data flows if you operate in both markets. Our Canada-specific practice, including market-by-market availability caveats, lives at ChatGPT advertising agency Canada.
The aggregation floor is a privacy control, not a reporting quirk
Custom audiences provide the clearest illustration. Uploading hashed emails or phone numbers to build an inclusion or exclusion list requires a minimum matched population — practitioner documentation puts it at 25,000 matched users for inclusion targeting and bid adjustments, with materially higher volumes recommended. That is a k-anonymity floor wearing a media-buying costume: below the threshold, list-based targeting is blocked because a small matched cohort could imply individual-level knowledge.
For a regional contractor, this is decisive. You will never have a 25,000-person matched list, so list-based tactics are structurally unavailable. What remains is the part that has always worked: being the most legible answer for a specified kind of need in a specified place. That reality is the entire reason our ChatGPT Ads work for trades is built around intent coverage rather than audiences — see ChatGPT Ads for roofers for the worked example, and our East Coast practice for the US market view.
08The asymmetry, and the four levers that remain
Summarise the architecture in one sentence and the strategic position becomes obvious: the system knows a great deal about the user and will tell you none of it, while it will read everything you publish about yourself. That asymmetry defines the job.
-
Lever 1 — Legibility
Make your offer computable. Named problem, named constraint, named geography, one defensible number. If a retrieval model cannot vector-match your page to a need, nothing upstream matters.
-
Lever 2 — Context hints
Hints are natural-language descriptions of situations, not keywords. Write them as scenarios with a stage and an obstacle, and expect them to guide rather than guarantee placement.
-
Lever 3 — Outcome fidelity
Send qualified and closed events, not raw form submits. Calibration is trained on what you tell it, and a polluted event stream teaches the system to optimise for the wrong probability.
-
Lever 4 — Landing parity
The destination page is a selection input. Parity between promise and page is not a conversion tactic in this channel; it is a targeting tactic that happens to also lift conversion.
Notice what is absent: audiences, lookalikes, retargeting pools, dayparting, demographic layers. Those are not withheld features waiting for a roadmap; they are inconsistent with a system that refuses to expose user-level data. Anyone selling you "chat-history targeting" is selling one of the four levers under a different label. When that happens, the technical conversation is usually worth having in person — which is what our AI advertising agency work is structured around, and what we run through B2B manufacturer programmes where specification-level legibility decides the outcome.
09Writing for a creative that rewrites itself
Here is the detail most advertisers miss, and it changes copywriting more than personalization does. Ads Manager includes a text customization toggle, on by default, whose own helper text states that the system automatically generates personalised and translated versions of your headlines and descriptions, which may be shown without your individual review or approval.
Read that twice. Your title and body copy are a starting point, not the rendered ad. A generative layer adapts them per user and per language. That has three non-obvious consequences.
- Write inputs, not final sentences. If a variant may be rewritten, the assets must be composed of atomic, self-sufficient claims: one problem, one mechanism, one number, one qualifier. Compound sentences with dependent clauses get mangled when a generator adapts them.
- Avoid wordplay, puns and idiom. Anything whose meaning depends on a cultural reference or a fixed phrase will degrade under translation and adaptation. If it cannot survive being paraphrased into another language, it is not an asset.
- Protect regulated strings. If legal review must see every rendered string, turn the toggle off and accept the coverage penalty — or restrict claims to language your compliance team has pre-approved in atomic form. That trade-off belongs in a written policy, not in a launch-week improvisation.
Character ceilings make this discipline concrete: titles cap around 50 characters and copy around 100, with OpenAI's own guidance recommending considerably shorter, and square creative up to 1200×1200. That is not much room for a dependent clause, which is exactly the point. Our headline testing playbook covers experimental design for testing variants when the system is also generating variants, and the write-to-the-wound principle explains why problem-first phrasing survives rewriting better than feature-first phrasing.
Auto-generated variants plus automatic translation means a claim you wrote for one market can appear, paraphrased, in another. For anything regulated — financial, medical, home-improvement warranty language — audit rendered variants in each market rather than assuming your source copy is what ships. This is the failure mode nobody flags at kickoff and everybody discovers at month three.
10The adversarial surface
Any system that ingests third-party text to compute relevance inherits an attack surface. In this channel, the advertiser's landing page is one of those ingested inputs, which raises a question every technically curious client eventually asks: can you write your page to influence matching?
Yes, in the legitimate sense — and no, in the illegitimate sense, with a caveat worth stating plainly.
The legitimate version is alignment. A landing page that states the problem, the constraint, the geography and the numbers is the intended mechanism. Clear language matches better. That is the whole game, and it is why our parity work earns its fee.
The illegitimate version is context poisoning: embedding instructions, hidden text, or prompt-injection style payloads aimed at a model that reads the page. It is a bad idea on three grounds. It is a policy violation with account consequences. It is technically fragile, because contemporary systems apply an instruction hierarchy that subordinates text found in retrieved or crawled content to system-level instructions, so injected commands land as noise. And it is self-defeating: a page optimised for injection scores worse on genuine semantic alignment, which is the metric that actually routes traffic.
Your landing page must permit OpenAI's ads crawler. A robots rule, WAF challenge or edge rule blocking it silently removes the page from the selection pipeline — the ad stays live and simply never matches. We find at least one blocked crawler in roughly a third of the accounts we audit. This is a five-minute check and a five-figure mistake.
Adjacent integrity risks — spoofed brand bidding, misleading offer language, unverifiable claims — are ordinary ad-policy problems with an unusual sting here, because the assistant next to your ad can contradict you in the same screen. Credibility is not a branding nicety in this channel; it is a survivable-claim requirement.
11Measurement without user-level data
You cannot see conversations, so classic attribution is unavailable. What you get is aggregate delivery plus whatever your own properties can observe after a click: a pixel storing an opaque first-party click reference, and server-side conversion events including hashed identifiers and coarse location. That is enough to measure, provided you stop trying to measure the wrong thing.
Three measurement regimes, in order of reliability
- Geo holdouts. The cleanest incrementality test available. Split comparable metros, run ads in half, hold out the rest, compare qualified-lead volume. Slow, unglamorous, and the only method that survives a CFO's follow-up question.
- Pre/post with a control series. Treat as directional only, and correct for seasonality with an untreated series. Conversational demand is spiky; naive pre/post comparisons overstate lifts by a wide margin.
- Platform-reported conversions. Useful for optimising the model, useless for proving causation. Report it as an input to bidding, never as a business result.
Off-policy reasoning when you have no propensity scores
In mature ad systems you would estimate counterfactual performance with inverse propensity weighting — reweighting observed outcomes by the probability that each impression was shown. Here, per-impression propensity is not exposed, so exact off-policy evaluation is off the table. What you can do is coarse propensity stratification: bucket by country, platform, creative family and context-hint group, and compare like-for-like. It is a weaker instrument, and stating that weakness is more professional than pretending otherwise.
The sample-size trap
Multiple verticals route through the same small ad-surface population: Free and Go users who did not opt out, in markets where ads are live, excluding sensitive topics and Temporary Chats. Segments get thin fast. Before you declare a winner on a 3% lift, run the arithmetic — at typical small-business volumes, most "wins" we are asked to verify are inside the noise band. Cohort shrinkage toward the account mean is the correct prior when sample sizes are small, and it is also the honest answer.
Instrumentation detail changes all of this, so it belongs first in the build. Our Canada and city-level engagements are structured around exactly that sequence — see Toronto, Vancouver and Montreal for the local-market variants, and the Digital Marketing Strategies podcast series for the ongoing technical discussion behind these methods.
12The 30-day build
Sequence matters more than effort in a channel with this much hidden state. Four weeks, four deliverables, and a clear rule: nothing touches bidding until week four.
What each week must produce
- Week 1: verified click reference, server-side conversion events, a mapping from CRM stages to platform events, and a written definition of "qualified" that your sales team agrees with. No ads yet.
- Week 2: crawler access confirmed, one landing section rewritten for parity on each of your three strongest needs, and six to ten context hints written as situations rather than keywords.
- Week 3: atomic creative set — one problem, one mechanism, one number per asset — plus a rendered-variant audit covering each language you sell in.
- Week 4: bid and budget decisions, geo holdout design, and a baseline document that states what would count as failure.
That last item is the one teams skip. Write down in week one what a bad result looks like, at what threshold, and by when. In a channel where the hidden state is genuinely hidden, pre-registering the evaluation is the only defence against motivated reasoning in month three.
13Questions we get asked
Including the two that make procurement relax.
Do advertisers get access to users' chat history?
No. OpenAI states that advertisers never receive chats, chat history, memories, name, email address, precise location, IP address, or sensitive information such as health, mental health and political topics. Reporting is aggregated: impressions, clicks and conversion counts. Past chats and memory influence selection inside OpenAI's systems, for users who opted into personalization, but that signal is never exposed and cannot be targeted directly.
Can I target someone because they discussed my category last month?
Not in the sense of building an audience. There is no segment for "discussed kitchens in October" and no way to bid on it. What can happen is that a user with personalization enabled arrives at a new conversation carrying a prior about kitchen renovation, which raises the probability that a kitchen-adjacent ad is retrieved. You benefit by being the most legible match for that need, not by owning the profile.
How much of ad selection depends on history versus the current conversation?
OpenAI does not publish weights, and any specific percentage you read is invented. What the documentation supports is order: current-conversation context is always used, while history contributes only when personalization is on. Our working model treats the live thread as the dominant signal and history as a prior that sharpens it — which is also why relevance is strong even for users who turned personalization off.
What happens when a user turns personalization off?
Ads still appear, but selection leans on the current thread plus limited context such as general location and language. Ads do not reduce in number; they reduce in tailoring. Users also have a separate "past chats and memory" toggle, and Temporary Chats show no ads at all. Plan capacity on the assumption that a meaningful share of impressions come from non-personalized sessions.
Is this available in Europe?
Personalized ads were not initially available in the EEA or Switzerland, which is consistent with GDPR consent requirements for behavioural advertising. Non-personalized contextual ads operate in markets where the ads product has launched. If you run a pan-European plan, assume a different relevance regime per country and do not project US personalization performance onto European inventory.
Why can't I use my customer email list at full strength?
Custom audiences require a minimum matched population — practitioner documentation cites around 25,000 matched users for inclusion targeting and bid adjustments, with higher volumes advised. That threshold functions as a k-anonymity floor: small lists are blocked because they could imply individual-level knowledge. Most local businesses will never clear it, which is why intent coverage beats audience tactics for SMB advertisers.
Does my landing page really affect whether my ad is shown?
Yes — it is a documented selection signal, alongside title and copy. That makes parity a targeting decision, not just a conversion one. It also means a blocked ads crawler, a WAF challenge, or a page whose promise contradicts the creative will suppress delivery before any auction consideration. We check crawler access before we check bids.
How do you report on performance if you cannot see conversations?
Three layers. Weekly: aggregate delivery, click quality and cost per qualified lead. Monthly: creative-family and context-hint comparisons, with sample sizes stated. Quarterly: a geo holdout that measures incremental qualified lead volume. We label each layer's reliability, because presenting platform conversions as causal is the most common reporting failure in this channel.
Is auto-generated ad text safe for regulated industries?
It requires a decision, not a default. Text customization can produce personalised and translated variants that may serve without your individual review. For regulated claims, either disable the toggle and accept narrower coverage, or constrain source copy to atomic, pre-approved claims and audit rendered variants per market. Put the policy in writing before launch.
14Glossary
The technical vocabulary used above, defined once, in plain language.
| Term | Meaning |
|---|---|
| Prior | A probability distribution describing what is likely before new evidence arrives. A user's history supplies the prior; the current conversation supplies the evidence. |
| Intent state | The structured representation of what a conversation is asking for: task, constraints, urgency, stage, location. |
| Dual encoder | A retrieval design that embeds queries and candidates separately into one vector space so similarity can be computed fast. Cheap and coarse. |
| Cross encoder | A reranking model that reads query and candidate together for a higher-fidelity score. Expensive and precise; runs on the shortlist. |
| ANN search | Approximate nearest neighbour search. Finds the closest vectors without exhaustive comparison, which is what makes sub-100ms retrieval possible. |
| Calibration | How well predicted probabilities match observed frequencies. Well-ordered but poorly calibrated scores misprice every auction. |
| k-anonymity floor | A minimum population size below which data cannot be used, because a small group could reveal an individual. The 25,000 matched-user rule for custom audiences is one. |
| Propensity | The probability that a given impression was shown, needed to reweight observed outcomes for counterfactual analysis. |
| Instruction hierarchy | A design where instructions from system level outrank text found in retrieved or crawled content, which is why prompt injection into a landing page fails. |
| Context poisoning | Deliberately embedding instructions in content a model ingests, to influence its behaviour. A policy violation and, on current architectures, ineffective. |
| Geo holdout | An incrementality test that withholds advertising from comparable markets and compares qualified-lead volume against treated ones. |
| Deletion propagation | The delay between a user deleting data and that deletion completing across systems. OpenAI documents up to 30 days for cleared ads data. |