How to Show Up in ChatGPT
The order we use on clients: OAI-SearchBot, a public page with the claim in HTML, then Promptwatch for the answer log and chatgpt.com referrals.
When a client says they want to show up in ChatGPT, we translate that into OpenAI's words, not a content slogan. The publisher FAQ says any public site can appear in ChatGPT search, and summaries and snippets need OAI-SearchBot allowed. Referrals use utm_source=chatgpt.com. We run the program on Promptwatch, the platform we use for client work, because the platform is what stores the answer log and the referral side by side.
The translation step is the one that decides whether the program works. A client who says "show up in ChatGPT" means a specific thing, usually that their brand gets named when a buyer asks a relevant question. The work is to turn that wish into the concrete steps OpenAI's own documentation describes, because the wish by itself does not produce a citation. The publisher FAQ is the source, and the OAI-SearchBot token is the lever. A team that starts from the wish and skips the source ends up writing content for a bot they blocked, which is the most common failure mode in this category.
We also split the ask in the kickoff, because the three outcomes get conflated into one number that means nothing. Named without a link is a mention. A source URL they control is a citation. A session with that UTM is a referral. Mixing those three into one "ChatGPT score" is how QBRs go sideways, because a quarter that looked great on mentions can look flat on referrals, and the slide that averages them hides the real story.
The three-way split is the part that keeps the report honest, because the three outcomes are not interchangeable. A mention is a brand name in the answer text, with no link. A citation is a source URL the brand controls, with a link. A referral is a session that arrived on the UTM. A quarter with high mentions and low referrals is a quarter where the brand is being talked about but not clicked, which is a different problem from a quarter with low mentions and high referrals, which is a quarter where the few mentions that happen drive outsized traffic. The single score hides both stories. The split shows both, and the split is what lets the team fix the right one.
Engineering before copy
We read robots.txt with the security team. SearchBot allowed. Published IP ranges allowed. GPTBot is a separate, training-shaped decision, and the two tokens are not the same lever even though they share a vendor. Legal often wants to block "AI" as a category. If they block SearchBot while trying to block training, the ChatGPT Search conversation is over before we write a paragraph, and the content work becomes irrelevant. About a day for robots.txt to propagate, so this check goes first on the timeline.
The engineering-first order is the one that gets resisted by teams who want to start with content, because content feels like progress and a robots.txt review feels like overhead. The order exists because the content is wasted without the engineering. A page written for a bot that cannot fetch it is a page that never gets cited, and the week spent writing it is a week spent on output that cannot produce an outcome. The robots.txt check takes an hour and saves the content week, which is the trade, and the trade is why the check goes first.
ChatGPT-User is user-initiated, the token that fires when a person asks a question in ChatGPT or runs a Custom GPT. We do not treat it as the Search robots token. OpenAI says robots.txt may not apply because a user asked, and it is not used to decide Search appearance. Conflating the two leads to blocking the wrong bot and then wondering why Search citations fell.
The ChatGPT-User distinction is the one that produces the most accidental blocks, because the two tokens sound similar and a security team that blocks one often blocks the other. The two tokens do different work. SearchBot is the crawler that builds the search index. ChatGPT-User is the token that fires on a user's live request. Blocking ChatGPT-User does not block Search appearance, because Search appearance is decided by the index, not the live request. A team that blocks ChatGPT-User to "stop AI" and expects Search citations to drop is misunderstanding which token does which job, and the misunderstanding shows up as a firewall change that does not produce the expected result.
WAF rules that block "GPT" strings often block Search by accident. We match published IP ranges, not a regex hobby, because a pattern that catches GPTBot will catch OAI-SearchBot too, and the symptom is a quiet drop in citations that no one connects to the firewall change.
The WAF rule point is the one that produces the quietest failures, because the drop in citations happens weeks after the firewall change and nobody connects the two. A regex that matches the string "GPT" matches every bot with that string in its user agent, which includes both the training bot and the search bot. The training bot block is intentional. The search bot block is the side effect, and the side effect is the one that costs the citations. Matching published IP ranges is the discipline that avoids the side effect, because the IP range is the precise identifier and the string match is the imprecise one.
If they want a URL out of Atlas title-only leftovers after a third-party pickup, the FAQ's noindex path requires the crawler to fetch the tag. We do not Disallow the page and then wonder why the tag never applied, because a disallowed page is a page the crawler never reads, and a tag it never reads is a tag that never takes effect.
The noindex-versus-disallow point is the one that catches teams who try to remove a page from the index by blocking it, which is the opposite of what works. A noindex tag is an instruction the crawler reads when it fetches the page. A Disallow rule is an instruction that prevents the fetch. A page that is disallowed is never fetched, so the noindex tag is never read, so the page stays in the index on whatever the crawler last saw. The removal requires the fetch, which requires the allow, which is the opposite of the disallow. The two mechanisms are opposites, and a team that uses the disallow to remove a page keeps the page and loses the ability to remove it.
On Professional, Business, or an agency plan, Agent Analytics shows ChatGPTBot and related CDN hits, errors, and the crawl-to-citation path. Essential has no listed crawler-log allowance. A rewrite on a 404 is how retainers waste April, because the team spends a month improving a page the bot could not fetch in the first place.
The crawler log on the higher tiers is the part that turns the engineering step from a one-time check into an ongoing signal. A robots.txt review is a point-in-time check. A crawler log is a continuous record of what the bot did, which includes the errors. A 404 in the log is a page the bot tried to fetch and could not, and a rewrite of that page is wasted work until the 404 is fixed. The log is what tells the team the rewrite is wasted, and the log is the part that makes the engineering step repeatable instead of one-time.
The page we ship
One URL per money question. Claim in visible text. Dates and numbers we can defend. We reject invented case studies in the review inbox, because a fabricated stat that lands in an answer is a fabricated stat that gets repeated, and the cost of that is higher than the cost of a thinner page.
The one-URL-per-question rule is the one that fights the urge to make a single page answer everything, because a single page that answers everything answers nothing well. A money question is a specific buyer question, and the page for it should answer that question and cite the evidence. A page that tries to answer five money questions at once is a page that buries each answer, and a buried answer is a paraphrased answer, and a paraphrased answer is one that does not cite the source. The one-URL rule is what keeps the answer extractable, and the extractable answer is the one that gets cited.
Google's optimization guide is the quality bar we already used for Search: unique, non-commodity pages. We do not tell clients Google's llms.txt dismissal is an OpenAI law. We tell them OpenAI did not make a special file the admission ticket in the FAQ. We also do not wait on a ChatGPT submit console. There isn't one.
The llms.txt point is the one that produces the most wasted effort in this category, because the file got a lot of attention and a lot of teams wrote one expecting it to be the admission ticket. Google dismissed it, and OpenAI's FAQ does not mention it as a requirement. A team that waits for an llms.txt to take effect waits for a mechanism that does not exist. The admission ticket is the public page and the allowed bot, both of which are in the FAQ, and both of which are the actual work. The submit console point is the same shape. There is no console to submit to, and waiting for one is waiting for a thing that was never announced.
Webflow or Framer publish from Content Agents only after accept. WordPress: measure in Promptwatch, write where editors already work. Essential includes 5 AEO articles at $95 a month, but no crawler logs. On Professional, Business, or an agency plan, we skip the content agent if Agent Analytics shows a 403, because publishing into a blocked path is wasted work. On Essential, we make that check at the CDN, since the in-app log is not on that tier.
The publish-after-accept rule is the one that keeps the content agent from being a liability, because an agent that publishes without a human review is an agent that can ship a wrong page. The accept step is the gate, and the gate is what makes the agent safe to use. The 403 check before publish is the one that prevents the wasted publish, because a page published into a blocked path is a page the bot cannot fetch, and a page the bot cannot fetch is a page that cannot be cited. The check is cheap and the publish is expensive, and the order is the one that respects the cost.
How we know it showed up
Frozen prompts from sales calls, including vs-queries. Same wording each week. Daily paid checks. Mention versus citation. Explore is a 10-prompt ChatGPT snapshot, not a retainer. Essential at $95 a month is the first paid desk, but it has no listed crawler-log allowance. Professional at $245 a month is the first brand plan with crawler logs and a larger prompt list, and that is the tier where the fetch story becomes part of the report.
The frozen-prompt rule is the one that makes the weekly number comparable, because a prompt that changes wording week to week produces a number that cannot be compared to last week's number. A frozen prompt is the same string every week, which means the delta between weeks is a real delta and not a wording artifact. The vs-queries are the ones that show up in sales calls, because a buyer who compares two vendors asks a vs-query, and the vs-query is the one that decides whether the brand is in the consideration set. Tracking the vs-query is tracking the question that produces a deal.
Visitor analytics, through a script or GTM, sits beside GA4 so chatgpt.com is a channel, not a myth. A referral without a stored cite can happen. A cite without a session can happen. We report both. We do not average them, because the average of two different failures is not a measurement of either.
The visitor analytics step is the one that closes the loop from citation to session, because without it the citation is a brand impression and the session is an unattributed visit. The script or GTM template is what ties the two, and the tie is what makes chatgpt.com a channel in GA4 instead of a line item a stakeholder asks about. The referral-without-cite and cite-without-session cases are the two ways the loop can break, and reporting both is what keeps the report honest about where the break is.
Otterly at $29 is a side thermometer. Profound Starter is ChatGPT-only with 50 prompts on the annual $99 desk; we will not sell it as multi-engine. We do not promise real-time alerts. Paid Promptwatch is daily.
The side thermometer framing is the one that keeps the cheap tool in its lane. Otterly at $29 is a thermometer, which means it tells you the temperature and does not change it. A team that uses it as a thermometer uses it correctly. A team that uses it as a program uses it past its design. The Profound Starter point is the one that keeps the single-engine tier off a multi-engine brief, because ChatGPT-only is not multi-engine no matter how the slide is labeled. The real-time alerts point is the one that keeps the promise honest, because the data is daily and daily is not real-time, and a team that promises real-time promises a cadence the tool does not deliver.
Show up, for us, is a prompt that cites a URL we control after a fetch we can point at. Allow the bot. Ship the page. Keep the log. That is the whole offer.
The definition is the one that keeps the work concrete. A prompt that cites a URL we control is a citation, not a mention. A fetch we can point at is a crawl record, not an assumption. The three steps, allow the bot, ship the page, keep the log, are the whole offer, and each step has a concrete artifact. The bot is allowed or it is not. The page is shipped or it is not. The log is kept or it is not. The offer is the three artifacts, and the artifacts are what make the show-up claim verifiable.