# SEO for SaaS startups: the first 90 days

SEO for SaaS startups in the first 90 days: the technical basics, buyer-intent queries, comparison pages, AI citations, and when to hire help.

Canonical: https://ignura.com/blog/seo-for-saas-startups
Last updated: 2026-10-28
Author: Jawad Jalal

SEO for a SaaS startup in the first 90 days means making the site readable, then publishing a short list of pages for the questions buyers already type and ask. Hire help when that list is clear and your team will not keep writing, checking and fixing it.

This is written for a B2B founder, pre-seed to Series A, with a product people can try and a few sales calls behind them. The same page types work for a prosumer tool. The examples stay with the buyer who compares software before they book a demo.

Google [says plainly](https://developers.google.com/search/docs/fundamentals/do-i-need-seo) that showing up in organic results costs nothing, and that paying for ads does not change those results. What it costs is a few weeks of careful pages. This post is the order we would do them in, and the point at which hiring is the sensible next step.

## The short version

- Week 1 is technical. If Google and the AI crawlers cannot read the page, nothing else matters.
- Pick queries a buyer would type the month they might buy: "best X for Y", "X vs Y", "X alternatives", "X pricing".
- Ship one page per question. Answer in the first two sentences. Date every price.
- Programmatic pages are fine when each URL has facts a reader cannot get elsewhere. A template with one word swapped is not.
- Ask the same buyer prompts in ChatGPT, Perplexity and Google every week, and log who gets named.
- Count sign-ups from search. Do not count a rank on a head term in week two.
- Hire when the work is clear and it is slipping. Do not hire to invent the list of questions for you.

If you have no budget and want the in-house version with free tools only, our guide to [SEO for startups with no budget](https://ignura.com/blog/seo-for-startups-no-budget) covers that path. This one is the 90-day decision, including when to bring someone in.

## Technical basics, in the first week

Most new SaaS sites do not need a technical project. They need a morning where you check that the pages you care about can be fetched, rendered and indexed. The longer version, with each crawler's own docs, is on our [technical SEO page](https://ignura.com/technical-seo).

Do these in order.

1. **Verify the domain in [Google Search Console](https://search.google.com/search-console/about).** It is free. Submit your sitemap there. Google's [sitemap docs](https://developers.google.com/search/docs/crawling-indexing/sitemaps/overview) treat a sitemap as optional on a small, well-linked site, and still the simplest list of the URLs you want found. Add the site in [Bing Webmaster Tools](https://www.bing.com/webmasters/about) as well. [OpenAI's help centre](https://help.openai.com/en/articles/9237897-searching-the-web-with-chatgpt) says ChatGPT search partners with search providers, and Microsoft is one of them.
2. **Read robots.txt.** A single "block AI" rule often blocks the crawlers that fetch pages for answers, not only the ones that train models. OpenAI documents [separate crawlers](https://developers.openai.com/api/docs/bots): GPTBot is for training, and OAI-SearchBot is for ChatGPT search. Perplexity documents [PerplexityBot](https://docs.perplexity.ai/guides/bots) for search. Anthropic documents [ClaudeBot](https://support.claude.com/en/articles/8896518-does-anthropic-crawl-data-from-the-web-and-how-can-site-owners-block-the-crawler) for training, and says blocking its search crawler may reduce visibility in Claude's search. Google documents [Google-Extended](https://developers.google.com/search/docs/crawling-indexing/google-common-crawlers) separately from Googlebot. Leave Googlebot, OAI-SearchBot, PerplexityBot and the search crawlers allowed unless you have a reason to leave those answers.
3. **One URL per page.** Pick https, one host, and a [canonical](https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls) that matches the URL you want indexed. Redirect the other versions. A marketing site and an app on the same domain is fine. A second copy of the homepage at `/home` and `/index.html` is not.
4. **Put the important text in the HTML.** Google [renders JavaScript](https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics) in a later step, after the crawl. [Vercel](https://vercel.com/blog/the-rise-of-the-ai-crawler) found that the major AI crawlers it studied in late 2024 fetched JavaScript without running it. Only Google's and Apple's crawlers rendered pages. If your pricing, docs or product pages are empty until a script runs, render them on the server.
5. **Give every indexable page its own title and meta description.** Put the query in the title in the words a buyer would type. Our free [SERP preview](https://ignura.com/tools/serp-preview) shows how a title and description may sit in Google, in pixel widths. Google may still rewrite them.
6. **Check speed on real visits, not a lab score you chase for a week.** [Core Web Vitals](https://web.dev/articles/vitals) are measured at the 75th percentile: LCP within 2.5 seconds, INP of 200 milliseconds or less, CLS of 0.1 or less. Fix the template if a whole section is slow. Do not open a performance project before the pages exist.
7. **Link the pages you want found.** Google uses links between your pages to work out what each one is about. A pricing page, a docs index and the first comparison should be linked from the homepage. A page linked from nowhere is easy to miss.

Skip schema you cannot back with text on the page. Google's [AI features guide](https://developers.google.com/search/docs/appearance/ai-features) says there is no special markup just for AI Overviews or AI Mode. A page has to be indexed and eligible to show with a snippet. Since August 2023, [FAQ rich results](https://developers.google.com/search/blog/2023/08/howto-faq-changes) are limited to well-known, authoritative government and health sites, and Google's [update log](https://developers.google.com/search/updates) says they stopped appearing from 7 May 2026. You don't need to remove FAQ markup, but don't expect the dropdowns. A short FAQ is still worth writing for the reader. [Schema markup for SaaS sites](https://ignura.com/blog/schema-markup-for-saas) covers the types that still do something in Google.

[llms.txt](https://llmstxt.org/), proposed by Jeremy Howard in September 2024, is a markdown file at the root of the site that points agents at your important pages. Google's AI features do not require it. Add it if it takes an hour. Do not treat it as the work.

## Picking queries with buyer intent

Nobody searches a startup they have not heard of. They search the job, the category, the tool they might leave, and the price.

Start from the last ten sales calls, not from a keyword tool. After each call, write the questions in the buyer's words. The repeats are the queries.

| What they asked on the call | The query to publish for | What the page must do |
|---|---|---|
| How do you compare with the tool we use? | "[category] vs [tool]" and "[tool] alternatives" | A fair comparison, with dated prices |
| What does this cost for a team our size? | "[category] pricing" and "how much does [category] cost" | Real numbers, or a clear way to get them |
| Will this work for a team of eight? | "best [category] for small teams" | Who it fits, and who it does not |
| How long does setup take? | "how to [the job] in a week" | The steps, including the ones that hurt |
| Do you replace our spreadsheet? | "best [category] for [the job they named]" | The job in their words, then the product |

For each phrase, keep it only if all three answers are yes:

1. Would someone searching this be able to trial or buy in the next month?
2. Can we write a page, from our own product, that a buyer would trust more than what ranks today?
3. Are the current results thin, old, or written for a different buyer?

A list of fifteen is enough. Ship five in the first month. Leave the head term ("CRM", "project management software") alone until you have pages for the narrower questions. [Ahrefs](https://ahrefs.com/blog/how-long-does-it-take-to-rank/) found that 72.9% of pages in Google's top 10 were more than three years old, and that 13.7% were under a year old. A new domain does not win "best CRM" in a quarter. It can win "best [your category] for [a specific team]".

> **Tip: Use their words**
>
> If a buyer said "we need this before the auditor shows up", that sentence is a better heading than your feature name. Google's [starter guide](https://developers.google.com/search/docs/fundamentals/seo-starter-guide) makes the same point: experts and newcomers do not search in the same words.

Two traps are worth naming.

**Brand queries.** Tracking your own name is useful later, as a way to see if people who heard of you can find you. It is not a growth plan in month one.

**Definitions with no buyer.** "What is SaaS" and "what is SOC 2" attract students and browsers. Write one only when your buyers actually ask it, and when the page can move them to a comparison.

## Comparison pages and programmatic pages

On 27 October 2026 we asked six B2B buyer questions on ChatGPT search and Perplexity. Of the 122 pages those answers cited, 72 were comparisons, "best" lists or alternatives pages: 42 comparisons, 21 "best" lists and 9 alternatives pages. The raw log is [published here](https://ignura.com/data/search-2026-10-27.json). That is one category on one day, not a law of the internet. It is a reason to write those page types first. Our [content page](https://ignura.com/content) is the longer version of how we build that set.

### A comparison a buyer can trust

Your "us vs them" page will be read by people who know "them". Say where they are the better fit. Date the prices and link the vendor's own pricing page. Say who each product is for in one sentence.

A page that always lets you win gets ignored. A page that states the trade-off gets quoted, including by people who then pick you for a different reason.

Give each comparison its own URL, linked from the homepage and from the pricing page. A dated blog post is a fine place for a story. It is a weak place for the page you want to keep current for a year. Update the prices when they change. A comparison with last year's prices loses to one with this year's.

Use this shape:

- **Who each product is for,** in one sentence, before any table.
- **The jobs,** not the feature checklist. "Closes the books" beats "has a dashboard".
- **Prices, dated,** with a link to the source page you read.
- **Where the other product wins.** One honest paragraph is enough.
- **The first week on each.** Setup time, who has to be involved, what usually breaks.

### Programmatic pages, only when each one is a page

A programmatic page is one URL generated from a row of data: one per integration, one per use case, one per role. They work when a reader who lands on that URL learns something they could not get from the template.

They fail when the only change is the name. "Acme integrates with {tool}" repeated forty times is the pattern Google's [March 2024 spam update](https://developers.google.com/search/blog/2024/03/core-update-spam-policies) describes as scaled content abuse: many pages made mainly to rank, whether a person or a model wrote them. The [spam policies](https://developers.google.com/search/docs/essentials/spam-policies) say the same thing in the standing rules.

If you have integrations, a good page for one of them includes:

- What syncs, and what does not.
- Which fields, and how often.
- The setup steps, including the permission the customer always forgets.
- A limit or a failure you have actually seen.
- Who it is for.

Write five by hand. If you cannot fill that outline for the sixth, do not generate the other thirty-five. Read a sample of any generated page before it is linked. [Google's helpful content guide](https://developers.google.com/search/docs/fundamentals/creating-helpful-content) asks you to judge a page by who made it, how, and why. "To match a pattern" is a weak why.

## Getting cited by ChatGPT, Perplexity and Google AI Overviews

SEO is the list of links. GEO, generative engine optimisation, is being named or cited when someone asks ChatGPT, Perplexity, Claude, Gemini or a Google AI Overview which tool to use. AEO, answer engine optimisation, is another name for the same job, and Google's own guide treats both as SEO. [AEO vs SEO vs GEO](https://ignura.com/blog/aeo-vs-seo-vs-geo) compares the three. You do not need three programmes. You need pages that answer one question early, and a weekly check of whether the answers name you.

The full method is in [how to get cited in AI answers](https://ignura.com/blog/how-to-get-cited-in-ai-answers). The part that belongs in the first 90 days is smaller.

**Answer first.** The first two sentences should answer the query. Most pages warm up. The page that states the answer is the one an assistant can quote.

**Say who you are.** If the site never states what you do and for whom, an answer cannot name you with confidence. One sentence on the homepage and on each comparison is enough. Shape: "[Product] is [category] for [who], so they can [job]."

**Be eligible.** For Google AI Overviews and AI Mode, the [AI features guide](https://developers.google.com/search/docs/appearance/ai-features) says the usual search rules apply. Indexed, and allowed to show a snippet. [Perplexity](https://www.perplexity.ai/help-center/en/articles/10352895-how-does-perplexity-work) searches the web and adds numbered citations. ChatGPT search may cite sources when it searches. Blocking the search crawler takes you out of that product's answers. Blocking only the training crawler does not.

**Show up on pages you do not own.** Answers often cite a list, a docs page or a Reddit thread rather than your homepage. Useful places are a docs page that states a fact, an honest reply on a public thread where you say who you are, and a third-party list in your category that will actually update. Do not buy mentions. Do not post as a customer.

**Expect fewer clicks on the blue links.** [Pew Research](https://www.pewresearch.org/short-reads/2025/07/22/google-users-are-less-likely-to-click-on-links-when-an-ai-summary-appears-in-the-results/) found that people clicked a traditional result in 8% of visits that showed an AI summary, and in 15% of visits that did not. A click on a link inside the summary happened in 1% of those visits. [Ahrefs](https://ahrefs.com/blog/ai-overviews-reduce-clicks/) found the top result's click-through rate 34.5% lower when an AI Overview was present, compared with similar informational queries without one. Being the page the answer cites is part of the job now. It is not a ranking you can buy.

## Measuring it

Pick numbers you can check without a new tool, and ignore the rest until those move.

**Google Search Console, weekly.** Queries, impressions, clicks, and the pages that earned them. Filter to queries that are not your brand name. That is the non-brand demand you are trying to create. A page with impressions and no clicks needs a clearer title. A page with neither, after a month, is a candidate to improve or to stop pushing.

**Sign-ups, not sessions.** In [GA4's default channel groups](https://support.google.com/analytics/answer/9756891), Organic Search is its own channel. Tag the sign-up so you can see which landing page it came from. A visit from an AI answer sometimes arrives with a referrer and sometimes does not. When you can see it, count it. When you cannot, do not invent a number for the board.

**A prompt log.** Twenty questions, in the buyer's words. Once a week, ask each one in ChatGPT, Perplexity and Google. Write the date, who got named, and which URL was cited. Five columns. A spreadsheet is the whole system. The point is to see a gap: no page of yours, a weak first paragraph, or a competitor page that answers better. Fix one gap, then ask those prompts again the next week.

**What not to report in month one.** A rank for a head term. A domain score. A count of "AI mentions" with no URL and no sign-up behind it. Mentions move from week to week. Sign-ups are what you can run a company on.

Give a broad query a quarter before you judge it, because of the age of the pages that already rank. Give a narrow query a few weeks, and give a live answer engine as long as it takes to fetch the new page. Then look at the log.

## A 90-day sequence

This assumes one founder, a few hours a week, and no agency yet. If a week slips, slip the later weeks. Do not skip week 1.

### Days 1 to 7

Run the technical list above. Fix anything that blocks crawling or hides the pricing and docs behind JavaScript. Write the fifteen buyer queries from your calls. Circle five.

### Days 8 to 30

Publish five pages. A sensible first set:

1. One "best [category] for [a specific buyer]".
2. One "[incumbent] alternatives".
3. One "[you] vs [the tool they name most]".
4. One pricing page that states what you charge, or how a buyer gets a number, with the date.
5. One how-to for the job your product does, written so it is useful even if they never sign up.

Link them from the homepage. Put the answer in the first two sentences of each. Start the prompt log in week 3, even if every cell says you are absent. That is the baseline.

### Days 31 to 60

Publish the next five queries from the list. Add internal links between the set, using the words a buyer would search. Update any price that has gone stale. In Search Console, open the queries report and write down which of the first five pages have impressions.

### Days 61 to 90

Put more into the pages that have impressions. Rewrite the title on any page that is seen and not clicked. Leave the pages with no impressions alone for now, or merge them into a stronger page if they answer the same question. Read the prompt log. If a rival is named and you have no page for that question, that question is next, not a new head term.

At day 90 you should be able to say: these are the queries, these pages exist, this is who the answers name, and these sign-ups came from search. That is the brief, whether you keep it in-house or hand it to someone.

## When to hire help

Hire when the brief is clear and the writing has stopped. The usual version: the founder is the only person who can write a true comparison, and the product is slipping because of it. Another version: the first ten pages exist, the prompt log is a habit, and the next month of updates will not happen.

Do not hire in week one to "do SEO". A new site with no call notes and no pages gives an agency nothing to aim at, and it gives you nothing to judge them by. Do not hire a promise of page-one rankings on a head term inside 30 days. The age of the pages that already rank makes that promise unserious.

If you keep it in-house, stay on the [no-budget guide](https://ignura.com/blog/seo-for-startups-no-budget) and the weekly log. If you want a team to run the search work, the prices on our [pricing page](https://ignura.com/pricing) are the ones to use.

The free 15-minute Growth Check is the right first conversation either way. You leave with the gap, whether or not you hire us.

## FAQ

### What should a SaaS startup do for SEO in the first 90 days?

Make the site crawlable, publish about ten pages for buyer-intent queries, and check each week whether Google and the AI answers cite you. Judge it on impressions for those queries and on sign-ups, not on a head-term ranking.

### How is GEO different from SEO and AEO?

SEO is the list of links in a search engine. GEO is being named or cited in an AI answer. AEO is another name for being used in the answer itself, and Google treats both as part of SEO ([AEO vs SEO vs GEO](https://ignura.com/blog/aeo-vs-seo-vs-geo)). The pages are the same. The check is different: Search Console for the links, a prompt log for the answers.

### Do programmatic pages work for a new SaaS site?

They work when each URL carries facts a reader cannot get from the others, such as what an integration syncs and where it fails. A template that only swaps a name is the pattern Google describes as scaled content abuse. Write five by hand before you generate any.

### How long before SEO brings demo requests?

Narrow queries can show impressions in a few weeks. Broad category terms usually take longer, because most pages in Google's top 10 are years old. Engines that search the live web can cite a new page once they fetch it. Count sign-ups as they arrive. Do not forecast a number you have not measured.

### Should we block GPTBot?

That is a choice about training, and OpenAI treats GPTBot as separate from OAI-SearchBot. Blocking OAI-SearchBot, PerplexityBot or Googlebot takes you out of those products' answers. If you are unsure, allow the search crawlers and decide on training later.

### When is it too early to hire an SEO or GEO team?

Before the site can be crawled, and before you can list the questions buyers ask on calls. After that, hire when the pages and the weekly log are slipping. A free Growth Check is enough to see the gap. You do not need a retainer to learn which five pages to write first.

## If search is the problem

The crawl, the pages and the weekly log are the work. Our [technical SEO page](https://ignura.com/technical-seo) is where we do the part that stops Google and the AI engines reading you. The citation habit is in [how to get cited in AI answers](https://ignura.com/blog/how-to-get-cited-in-ai-answers). If you're at seed stage, [SEO and GEO for seed-stage SaaS](https://ignura.com/seed-stage-saas) cuts this plan down to what a team with no content hire can ship.

If you want a second pair of eyes on the five pages you should write first, book a free 15-minute Growth Check. You tell us the buyer. We name what is in the way.

[Book your free Growth Check](https://ignura.com/book?utm_content=seo-for-saas-startups)

Book a 15-minute call about your website: https://ignura.com/book
