A brand-new domain has no history, no backlinks and no trust. Most "our SEO isn't working" tickets I've seen in 20+ years of shipping sites weren't caused by content. They came from something technical that slipped through at launch, like a staging noindex or a Disallow: / nobody removed.
This is the checklist I run on every launch, with the dev-side details spelled out.
The mental model: crawl → index → rank
- Crawl: Googlebot discovers URLs through links and your sitemap.
- Index: Google renders the page, works out what it's about and stores it.
- Rank: for each query, Google picks the results it considers most helpful.
Each stage gates the next. A page that can't be crawled can't be indexed, and an unindexed page can't rank. When debugging, work through the stages in that order.
Realistic expectations: new sites usually need 3–6 months of consistent work before rankings build momentum, and longer in competitive niches. Nobody can guarantee a #1 position, and Google says so itself. Good engineering gives your pages a fair shot. It doesn't guarantee a result.
1. Make the site crawlable
robots.txt
Ship a deliberate robots.txt and point it at your sitemap:
User-agent: *
Disallow: /admin/
Disallow: /cart/
Sitemap: https://www.example.com/sitemap.xml
The most common launch bug is a staging Disallow: / that gets deployed to production. Add a CI check for it:
curl -s https://www.example.com/robots.txt | grep -qE '^Disallow:\s*/\s*$' && echo "BLOCKED" && exit 1
Remember that robots.txt controls crawling, not indexing. To keep a page out of the index, use noindex, and don't also block that URL in robots.txt, because then Google never sees the tag.
Leftover noindex
Check the HTML and the headers:
curl -sI https://www.example.com/ | grep -i x-robots-tag
curl -s https://www.example.com/ | grep -i 'name="robots"'
Your build should only emit <meta name="robots" content="noindex"> for environments that are not production. Gate it on an env var, not a CMS checkbox someone forgets to untick.
XML sitemap
Generate the sitemap at build time from your routes. Include only canonical, indexable, 200-status URLs, and use a real lastmod:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://www.example.com/services/</loc>
<lastmod>2026-11-04</lastmod>
</url>
</urlset>
2. One site, one address
- Force HTTPS and choose one host (www or apex). 301 every other variant to it.
- Add a self-referencing canonical on every page:
<link rel="canonical" href="https://www.example.com/services/">
- Settle on trailing-slash and lowercase rules and enforce them consistently.
- Choose clean URL slugs (
/seo-checklist/, not/page?id=48392) before launch. Changing them later means maintaining redirect maps.
3. Get indexed with Search Console
- Verify a Domain property (DNS TXT record), which covers every protocol and subdomain.
- Submit
sitemap.xmlunder Sitemaps. - Use URL Inspection → Test live URL on key pages. It shows the rendered HTML, the canonical Google selected, and whether indexing is allowed. Then click Request indexing.
- Check the Pages (indexing) report weekly at first. "Crawled – currently not indexed" usually points to a content-quality or duplication problem rather than a technical one.
If your content depends on client-side JS, check the rendered HTML in URL Inspection. Server-render or pre-render anything you need indexed. Titles, H1s, body copy and internal links should be in the initial HTML.
4. Core Web Vitals
Google's targets, measured at the 75th percentile of real users:
| Metric | Measures | Good |
|---|---|---|
| LCP | main content render | ≤ 2.5 s |
| INP | interaction responsiveness | ≤ 200 ms |
| CLS | layout stability | ≤ 0.1 |
Practical wins:
<!-- LCP image: don't lazy-load it, give it priority -->
<img src="/hero.avif" width="1200" height="630" fetchpriority="high" alt="...">
<!-- Below the fold: lazy-load, always set dimensions to avoid CLS -->
<img src="/team.webp" width="800" height="533" loading="lazy" alt="Our team on site in Denver">
- Serve AVIF/WebP and use responsive
srcset. - Defer non-critical JS. Third-party tags are the usual INP killers.
- Reserve space for embeds and ads, and use
font-display: swapwith preloaded fonts. - Cache aggressively and put static assets behind a CDN.
Use PageSpeed Insights for field data (CrUX) and Lighthouse for lab debugging. Keep in mind that a new site often has no field data yet.
5. Structured data
Use JSON-LD where it honestly describes the page: Organization/LocalBusiness, WebSite, Article, BreadcrumbList, and FAQPage where it applies.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "SEO for New Websites",
"author": { "@type": "Person", "name": "Jai Nischal Verma" },
"datePublished": "2026-11-04",
"image": "https://www.example.com/cover.jpg"
}
</script>
Validate it with the Rich Results Test. Schema helps Google understand a page, but it doesn't buy you rankings, and markup that doesn't match the visible content can get you a manual action.
6. On-page basics
These aren't technical, but they're cheap to get right in templates:
- A unique
<title>and meta description per page. Generate them from content fields and fail the build if they're empty or duplicated. - One
<h1>, with a logical H2/H3 hierarchy. - Descriptive image file names and
alttext. - Two or three contextual internal links per page, with descriptive anchor text.
- Mobile-first, responsive layout with tap-friendly targets. Google indexes the mobile version.
7. Content and links (the part you can't automate)
- Target long-tail, intent-matched queries first. A new domain won't win "seo".
- Give each page one primary keyword so your own pages don't compete.
- Write people-first content with a real author and real experience (E-E-A-T).
- Organise it into topic clusters: a pillar page plus supporting posts, all internally linked.
- Earn links from partners, suppliers, directories and genuinely useful tools or data. Never buy links, because it breaks Google's spam policies.
8. Measure
- Search Console: impressions move first, then clicks. Filter for queries at average position 8–20. Those "striking distance" pages are your best ROI.
-
GA4: track the conversions that matter (form submits,
tel:clicks) as events. - Review monthly, not daily.
A 90-day plan
- Days 1–30: set up GSC and GA4, ship the sitemap, audit robots.txt and noindex, set up HTTPS and canonical host redirects, fix titles, meta and CWV.
- Days 31–60: publish 4–6 helpful long-tail pages, link them together, add alt text, and give every service its own URL.
- Days 61–90: earn your first backlinks, improve striking-distance pages, review the data and plan the next quarter.
I'm Jai. I run Sites You Own, a remote web studio in New Delhi that builds fast, fixed-price sites for small businesses (from $349). Whatever the stack, these foundations go in at launch, and the client owns the domain, hosting and every login.
📖 Full guide (all 25 tips): SEO for New Websites: 25 Practical Tips
📄 Free printable PDF (7 pages, no email): The Launch Playbook: SEO for New Websites
Top comments (0)