NNicheStackTutorials
← All tutorials
SEO & Web Vitals

Static Blog Got 0 Google Impressions for 6 Weeks — 5 GSC Fixes

New Hugo blog indexed but zero Search Console impressions. Fix sitemap 404, wrong canonical, accidental noindex, and trailing slash traps.

·16 min read·SEO & Web Vitals
Static Blog Got 0 Google Impressions for 6 Weeks — 5 GSC Fixes cover

Site: Hugo + PaperMod blog, 23 posts, deployed on Cloudflare Pages
Timeline: Launched March 1. GSC showed 0 impressions until mid-April. Fixed 5 issues, impressions started climbing week 5.

This isn't an SEO checklist. These are the exact GSC errors I saw and what fixed each one.

TL;DR

  • Submit sitemap.xml only after confirming it returns 200.
  • Canonical must match production domain, not localhost.
  • Check tag pages aren't noindex'd; fix trailing slash consistency.

Issue 1: Sitemap returned 404

GSC → Sitemaps → submitted https://myblog.dev/sitemap.xml

Status after 3 days:

Status: Couldn't fetch
Last read: N/A
Discovered pages: 0

Checked the URL in browser:

404 Not Found

Cause: Hugo generates sitemap at build time, but Cloudflare Pages was serving from public/ and my hugo.toml had wrong baseURL:

# WRONG — was still the default
baseURL = "https://example.org/"

Fix:

# hugo.toml
baseURL = "https://myblog.dev/"
languageCode = "en-us"
title = "My Blog"

[sitemap]
  changefreq = "weekly"
  priority = 0.5

Rebuild, redeploy. Verify:

$ hugo --minify
$ ls public/sitemap.xml
# File exists

$ curl -I https://myblog.dev/sitemap.xml
HTTP/2 200
content-type: application/xml

Resubmitted in GSC. Status changed to "Success" within 48 hours.

Issue 2: Canonical pointed to localhost

GSC → Pages → one post showed:

URL: https://myblog.dev/posts/hugo-tips/
User-declared canonical: http://localhost:1313/posts/hugo-tips/
Google-selected canonical: (none — excluded)

Every page had localhost as canonical. Google refused to index them.

Cause: I ran hugo server and committed the public/ folder by mistake. The dev build's baseURL got deployed.

Fix:

# .gitignore
public/
resources/

Never commit public/. Let CI build it:

# .github/workflows/deploy.yml
- name: Build
  run: hugo --minify --baseURL https://myblog.dev/

Also add explicit canonical in theme override layouts/partials/head.html:

<link rel="canonical" href="{{ .Permalink }}" />

After redeploy, GSC → URL Inspection → "Request Indexing" on top 5 posts. Canonical issue cleared in about a week.

Issue 3: Tag pages had noindex but posts didn't link anywhere

GSC → Pages → Indexed:

Indexed: 4 pages
Not indexed: 47 pages

Drilling into "Not indexed" reasons:

Excluded by 'noindex' tag: 31 pages
Crawled — currently not indexed: 8 pages

The 31 pages were /tags/* pages. PaperMod adds noindex to tag and category pages by default — that's fine.

The real problem was the 8 "crawled but not indexed" posts. They had zero internal links. Google found them via sitemap but ranked them as low-quality orphans.

Fix: Added related posts to every article. PaperMod has built-in support:

{{/* layouts/partials/related-posts.html */}}
{{ $related := .Site.RegularPages.Related . | first 3 }}
{{ with $related }}
<nav class="related-posts" aria-label="Related posts">
  <h3>Related</h3>
  <ul>
    {{ range . }}
    <li><a href="{{ .RelPermalink }}">{{ .Title }}</a></li>
    {{ end }}
  </ul>
</nav>
{{ end }}

Also manually linked between pillar posts in the Markdown body. Rule I follow now: every post links to at least 2 other posts.

Issue 4: www vs non-www duplicate

Site was accessible at both:

  • https://myblog.dev
  • https://www.myblog.dev

Both returned 200. GSC treated them as duplicates:

Duplicate, Google chose different canonical than user

Fix: Cloudflare Page Rule (or DNS redirect):

www.myblog.dev/* → 301 → https://myblog.dev/$1

Pick one canonical domain. Stick with it in baseURL, sitemap, and all internal links.

Issue 5: Trailing slash inconsistency

Hugo generates URLs with trailing slashes: /posts/my-article/

I wrote some internal links without: /posts/my-article

Both resolve, but Google sees them as different URLs:

Page indexing → Alternate page with proper canonical tag

Fix: Always use Hugo's permalink helpers, never hardcode paths:

<!-- Wrong -->
[See this post](/posts/hugo-tips)

<!-- Right -->
[See this post]({{< relref "hugo-tips.md" >}})

Or in templates:

<a href="{{ .RelPermalink }}">{{ .Title }}</a>

Results after fixes

WeekImpressionsIndexed pages
1-404
52312
68918
834021

Not viral growth — but went from invisible to actually appearing in search. The fixes above were 90% of it. Content quality is the other 10%.

My pre-publish SEO checklist now

□ hugo --minify --baseURL https://actual-domain.com/
□ curl -I https://actual-domain.com/sitemap.xml → 200
□ View source: canonical href matches live URL (not localhost)
□ www redirects to non-www (or vice versa)
□ Internal links between posts (min 2 per article)
□ GSC property verified, sitemap submitted
□ robots.txt allows crawling:
User-agent: *
Allow: /
Sitemap: https://myblog.dev/sitemap.xml
□ Lighthouse SEO score > 90
□ Request indexing on top 3 posts after deploy

Tools I actually use

  • Google Search Console — the only tool that shows what Google actually sees
  • curl -I — faster than opening browser devtools for headers/canonicals
  • npx linkinator https://myblog.dev --recurse — catches broken internal links before deploy
  • Lighthouse (Chrome DevTools) — catches missing meta descriptions, bad tap targets

Don't obsess over SEO plugins or paid tools for a static blog. Fix what GSC tells you is broken. In my case, that was sitemap 404, localhost canonical, and orphan pages.

FAQ

Why does my static blog have 0 impressions in Google Search Console?

Common causes: sitemap 404, wrong canonical domain, noindex on templates, or site too new without indexed pages.

How do I fix Hugo sitemap 404 on Cloudflare Pages?

Ensure hugo generates sitemap.xml, output goes to correct folder, and no _redirects rule blocks /sitemap.xml.

How long until a new static blog gets impressions?

Usually 2–6 weeks after fixing technical SEO. GSC impressions lag behind actual indexing.

Tags: SEOGoogle Search ConsoleHugoStatic Blog