Skip to content
Shiftrank

Blog AEO

An AEO checklist for SaaS companies

Twenty-two checks across access, content, structure, and measurement — ordered so the diagnostic work happens before the writing, and grouped by who on your team actually owns each one.

· Updated August 7, 2026 Markdown for agents

Most AEO advice is a content brief in disguise. That is the wrong order. If GPTBot gets a 403 on your pricing page, rewriting the pricing page changes nothing — and you will not find that out, because nothing you currently measure records the 403.

This checklist runs diagnosis first, content second, and measurement throughout. Twenty-two items, grouped by owner.

Access — can crawlers reach you (platform / infra)

1. Read your robots.txt line by line. Not the intent — the file. Check for a wildcard Disallow: / and for named-agent groups that silently exclude the wildcard rules you assumed applied. See robots.txt for AI crawlers.

2. Decide about training and retrieval separately. Blocking GPTBot is a defensible business decision. Blocking ChatGPT-User is almost never one, and it is usually collateral damage from a wildcard.

3. Fetch your own pages as each agent. curl -A 'GPTBot/1.2' https://example.com/pricing -sI. Look for 200s. A 403, a 429, or a redirect to a challenge page means you are absent from answers and no one has noticed.

4. Check what a crawler actually receives, not just the status. curl -A 'GPTBot/1.2' https://example.com/pricing | wc -c. If the body is a 3KB shell that assembles content client-side, the crawler saw nothing. Server-render anything you want quoted.

5. Audit bot management. Cloudflare Bot Fight Mode, WAF rate limits, and managed rules all challenge unfamiliar agents by default. Add explicit allowances for the operators you have decided to permit.

6. Verify your CDN is not stripping or caching per-agent. A cached challenge page served to every crawler for an hour is a common and invisible failure.

7. Confirm every important page is in your sitemap and returns a canonical URL. Basic, still frequently wrong on marketing sites after a rebrand.

Machine-readable surfaces (platform / marketing)

8. Publish llms.txt. One H1, one blockquote summary, fifteen to twenty curated links with real one-line summaries. Absolute URLs. Served as text, not wrapped in your app shell. See the llms.txt guide.

9. Add Organization and SoftwareApplication structured data to your homepage, with your real name, URL, and description.

10. Add Article structured data to every blog post, with datePublished, dateModified, and an author.

11. Add FAQPage structured data where you genuinely answer questions. Do not manufacture questions to get the markup; a model quoting a fake FAQ is worse than no markup.

12. Offer markdown renderings of key pages. Either a .md companion URL or content negotiation on Accept: text/markdown. This removes extraction ambiguity entirely.

13. Keep pricing on a crawlable page. “Contact us” pricing means the model answers the question with a competitor’s number, or with a guess about yours.

Content — is it quotable (content / marketing)

14. Put the claim in the first sentence of every section. Models extract paragraph-scale units. A paragraph whose point arrives in sentence four will be cut before it gets there.

15. Write self-contained definitions. If quoting a sentence requires the two paragraphs above it, it will not be quoted. Repeat the subject rather than leaning on “it” and “this”.

16. Use descriptive headings. ## Pricing for usage-based billing, not ## Plans. The heading is often the only context that travels with the extracted text.

17. Include specifics. Numbers, versions, named competitors, dates, limits. Generic claims are unquotable because they are already in the model’s weights.

18. Answer comparison questions directly, on your own site. “X vs Y” queries are among the highest-intent AI prompts in software, and they will be answered with or without you. An honest comparison page that concedes where you lose is more likely to be cited than a rigged one.

19. Date and maintain your content. dateModified is a retrieval input for many systems, and stale pages are downranked by systems that check.

Measurement (data / growth)

20. Record AI crawler traffic server-side. Your client-side analytics reports zero because crawlers do not execute JavaScript. Origin logs, edge logs, middleware, or a proxy — pick one and start before you change content, so you have a baseline. See measuring AI crawler traffic.

21. Build an AI referral segment. Referrers from chatgpt.com, perplexity.ai, claude.ai, and copilot.microsoft.com. Low volume, high intent. See tracking AI referral traffic.

22. Review demand signals monthly and let them set the content calendar. The paths answer engines re-fetch most are telling you which questions keep arriving. Write against that list rather than a keyword tool’s estimate of a search volume that is itself declining.

Sequencing

Items 1 through 7 are a day of work for one platform engineer and they gate everything else. Items 20 and 21 should happen in the same week, because they are what tell you whether items 8 through 19 worked.

The content items are a quarter, not a sprint. Start with your three highest-intent commercial pages — pricing, the main product page, and your strongest comparison page — because those are the pages where being quoted converts.

Common questions

What should a SaaS company do first for AEO?
Confirm that AI crawlers can fetch your pages and receive a 200 with real content. Access problems — a wildcard robots.txt block, a WAF challenge, or a JavaScript-only render — cause total absence from AI answers and cannot be fixed by better writing. Verify access, start recording crawler hits to get a baseline, and only then work on content.
How long does AEO take to show results?
Access fixes show up in crawler logs within days, because crawlers retry quickly. Content changes propagate to live retrieval surfaces such as ChatGPT browsing and Perplexity in days to weeks, since those fetch pages at query time. Training-corpus effects follow model release cycles and are measured in many months, so never treat them as a campaign outcome.
Do I need separate content for AI and for humans?
No, and serving different content to crawlers than to humans is cloaking, which carries real risk with search engines. The right move is one set of pages written so both audiences are served: claims stated plainly and early, semantic structure, and machine-readable restatements of the same facts through structured data, llms.txt, and markdown renderings.

Keep reading

See which answer engines already read this page

Shiftrank records every AI crawler hit from the moment your DNS resolves.

Start free