You ask Perplexity which AI visibility monitoring tools are worth paying for. The answer lists five vendors with numbered source badges, each pointing to a competitor homepage. Your site is not one of them, and last week you added GPTBot to your robots.txt allowlist, assuming the job was done.
The problem is not content quality. Perplexity does not use the same citation path as ChatGPT: it runs two crawlers under two different rulebooks, and most teams fix only one of them. The seven steps below run in execution order, from the server layer up to the content layer, and each one can be verified on its own.
Perplexity Citations Come From Two Crawlers With Different Rules
Perplexity visibility is governed by two separate crawlers: PerplexityBot builds the index behind search results, while Perplexity-User fetches pages live when a user asks a question, and the official docs state that the latter generally ignores robots.txt.
The documentation draws the line clearly. PerplexityBot is "designed to surface and link websites in search results on Perplexity," and is explicitly not used to crawl content for training foundation models. Perplexity-User visits a page to help answer a specific user question and to link that page in the response. Each crawler publishes its own IP range JSON endpoint, and the docs recommend using those endpoints as the source of truth for firewall configuration (see Perplexity Crawlers).
| User-Agent | Purpose | Obeys robots.txt | What you configure |
|---|---|---|---|
| PerplexityBot | Builds the index used for Perplexity search results | Yes | Allow in robots.txt and allow its IP ranges in the WAF |
| Perplexity-User | Live fetch triggered by a user question | Generally no | Allow separately; robots rules do not apply |
The practical consequence: robots.txt governs the index layer only, not the live fetch layer. If a firewall also blocks the crawler, both layers fail at once while your robots file still reads "allowed." That gap is the single most common reason a month of content work produces no citation movement.
Step 1: Allow PerplexityBot in robots.txt, Not Just GPTBot
Allowing GPTBot, Googlebot and Bingbot while omitting PerplexityBot is the most common single-point omission on the server side, and it takes one line to fix.
Check in a fixed order: a global Disallow: /, then any AI-crawler group, then whether a CDN-managed robots file is overriding yours. Many hosting platforms generate a default robots.txt, which means the copy you edited locally may never be served. Matching behavior for wildcards and longest-match rules follows RFC 9309, the formal specification.
User-agent: PerplexityBot
Allow: /
Do not stop at the file. Fetch the live URL and confirm the served version matches your edit. Directory-level blocks are easier to miss than root-level ones, and /blog/ is usually exactly where you want citations to come from.
Step 2: Fix the WAF Layer Before Blaming Your Content
robots.txt grants permission, but the firewall decides whether the request arrives; the docs note specifically that Cloudflare Bot Fight Mode cannot be bypassed with WAF custom rules.
Perplexity publishes configuration paths for Cloudflare and AWS WAF with the same logic: match the User-Agent, verify the request against the official IP ranges, set the action to Skip or Allow, and place the rule above anything that blocks or challenges. The Cloudflare caveat matters. Bot Fight Mode sits outside custom rule control, so a correctly configured Skip rule still will not protect PerplexityBot while that mode is on. Either disable Bot Fight Mode or move to a plan with configurable bot management.
Never hardcode the IP list. PerplexityBot addresses are published at the perplexitybot.json endpoint and are updated periodically, so pull them on a schedule and refresh the rule automatically. Hardcoded ranges fail silently months later: nothing in the logs looks broken, citations simply decay toward zero.
Step 3: Write Every Section’s First Sentence as a Standalone Answer
AI engines extract paragraphs, not pages, so a 40–80 word conclusion at the top of each H2 section gets cited far more often than a warm-up paragraph.
The difference is easy to see. A warm-up reads: "As AI search becomes more widespread, more companies are paying attention to how their brand appears in AI answers, which involves a series of complex mechanisms…" Strip the context and nothing usable remains. A standalone answer reads: "Perplexity attaches source links to every answer, which makes its citations easier to observe than ChatGPT’s." That sentence carries a subject, a claim and a boundary, and can be quoted as-is.
Three rules do most of the work. Keep each opening paragraph to two or three sentences, with the claim first and the evidence after. Convert parallel information into lists or tables, because parsers handle structured lists more reliably than dense prose. Define key terms once and reuse the exact wording site-wide, since rephrasing the same concept blurs entity recognition. Writing AI-friendly content covers the sentence-level mechanics in more detail.
Step 4: Structured Data and Entity Consistency
Structured data does not earn citations by itself, but it lowers the cost of parsing your page; Article and FAQPage are the two types worth implementing first.
Work in this order: Organization with brand name, logo and sameAs profiles, then Article with author and publication dates, then FAQPage for question-answer pairs. The schema.org FAQPage specification requires the markup to match visible page content, so hiding extra Q&A in JSON-LD is a violation that damages trust once detected.
Entity consistency is the part teams skip. If your brand appears under three different spellings across your site, WeChat, LinkedIn and industry directories, engines treat them as three entities and split the authority. One spelling and one positioning sentence beat ten extra schema properties. The test is simple: search your brand in any AI engine and check whether the description matches the sentence on your homepage.
Step 5: Understand What llms.txt Can and Cannot Do
llms.txt is a community proposal rather than a formal standard, and Perplexity’s documentation makes no commitment to read it, so treat it as a supplement and never as the main fix.
llmstxt.org proposes a Markdown file at the site root listing core pages with short descriptions, so models can grasp site structure quickly. It reduces comprehension cost, but it does not replace robots.txt and guarantees nothing about crawling. Write one anyway, since the cost is trivial, but when citations drop, audit robots and the firewall first and check llms.txt last.
If you have not written one yet, the llms.txt guide includes a template you can adapt directly. Submit it separately from your sitemap so crawlers discover the file early.
Step 6: Build a 20-Query Citation Baseline
Without a baseline there is no optimization: fix 20 queries, 10 category questions and 10 brand questions, and re-run them at the same time each week while recording what gets cited.
Category queries test whether you are in the candidate set, for example "how do manufacturers approach AI search optimization." Brand queries test how the engine describes you, for example "what is AiVisible." The two failure modes differ: missing from category answers usually points to structure or crawling, while a wrong brand description points to inconsistent entity data. Merging them into one score hides which problem you actually have.
Record three columns: whether you were cited, which URL was cited, and which sentence was quoted. The third column gets skipped most often and matters most, because it tells you where to edit. If the engine quotes a two-year-old page instead of your new one, the new page never made it into the index, and the bottleneck is crawling rather than writing. Use a consistent AI visibility score definition to keep weekly comparisons honest.
Step 7: Close Citation Gaps Page by Page, Not With a Rewrite
Sequence fixes by gap type: correct pages that are cited but cited wrongly, then add coverage for category questions where you never appear, then expand long-tail topics.
The first gap offers the best return. A page that already gets cited has working crawl and index access, so a stale or vague paragraph is a local fix, and the change can surface in the next live fetch. The second gap requires new or restructured pages and takes weeks. The third is slowest and belongs after the baseline stabilizes.
Run 30-day cycles: week one for crawl and configuration, weeks two and three for content structure, week four for reviewing baseline movement. Do not read daily numbers, since index refresh timing is outside your control and single-day swings are noise. The GEO optimization checklist works as a line-by-line companion to this process.
A 60-Second Self-Audit
Five questions, asked in order, tell you within a minute whether the bottleneck sits in crawling or in content.
| Question | If no, the gap is | Fix |
|---|---|---|
| Does robots.txt allow PerplexityBot? | Crawl layer | Step 1 |
| Does the WAF allow the official IP ranges? | Crawl layer | Step 2 |
| Does each H2 open with a standalone answer? | Content layer | Step 3 |
| Is your brand description consistent everywhere? | Entity layer | Step 4 |
| Do you have a fixed 20-query baseline? | Measurement layer | Step 6 |
The first two questions are binary: skip them and your score is zero, fix them and the effect is immediate. The last three are graded and improve over time. Most sites stall on the first two without noticing, because the robots file looks correct.
To skip the manual pass, run AiVisible with your brand name and three core terms. You get current citation status across Perplexity, ChatGPT, DeepSeek and other engines plus a gap list within about ten minutes, and you can return to the seven steps in priority order.
Check how Perplexity cites your brand for free → open the AI visibility scan
FAQ
Does Perplexity respect robots.txt?
It depends on the crawler. PerplexityBot builds the search index and obeys robots.txt, while Perplexity-User performs live fetches triggered by user questions and generally ignores robots.txt. Use robots rules for the index layer and firewall rules for the live fetch layer.
Will adding llms.txt get my site cited by Perplexity?
No guarantee. llms.txt is a community proposal, not a formal standard, and Perplexity does not commit to reading it. It only reduces the cost of understanding your site; robots configuration, firewall access and quotable content structure drive citations.
Should I build a separate page just for Perplexity?
No. A single URL can serve every AI engine, and duplicating pages per engine creates duplicate content that dilutes authority. Restructure existing pages into quotable sections so one version works across engines.
How is a Perplexity citation different from a ChatGPT citation?
Perplexity attaches source links to every answer, so citations are visible and you can see both the cited URL and the quoted sentence. Many ChatGPT answers carry no links, which makes citations harder to observe, so Perplexity movement works well as a leading indicator.
How long does it take to see citation changes?
It splits by layer. The live fetch layer reacts quickly to changes in accessibility and paragraph structure, while index refresh timing is controlled by Perplexity and not publicly scheduled. Judge trends over a 30-day window rather than single-day data.