DEV Community

Why Your Pages Aren't Showing Up on Google (And How I Fixed It)

You ship a page. You check Google a few days later. Nothing.

If you've built a product, a blog, or a side project and wondered why it's invisible in search, this post is for you. It's not about "SEO tricks" - it's about a step almost every dev skips: confirming your pages are actually indexed.

Publishing ≠ Indexed

This trips up a lot of technical people, because it feels like it should just work. It doesn't. Before Google can show your page in search results, it goes through three stages:

  • Discovery - Google learns the URL exists
  • Crawling - Googlebot fetches and reads the page
  • Indexing - Google stores it in its searchable database

Only step 3 makes you findable. A page that's live on your server but not indexed is functionally invisible to Google - zero impressions, zero clicks, zero rankings. Same goes for backlinks: a link on a page that isn't indexed passes no authority at all.

The Real Fix: Google's Indexing API

Google actually offers a way to skip the wait - the Indexing API. Instead of hoping Googlebot finds your page on its normal crawl schedule, you notify Google directly that a URL is ready.

The basic flow:

  1. Enable the Indexing API in Google Cloud Console
  2. Create a service account, download the JSON key
  3. Add the service account as an Owner in Search Console
  4. Authenticate and POST to the endpoint
const { google } = require('googleapis');
const jwtClient = new google.auth.JWT(
  serviceAccount.client_email,
  null,
  serviceAccount.private_key,
  ['https://www.googleapis.com/auth/indexing'],
  null
);

async function submitUrl(url) {
  await jwtClient.authorize();
  const res = await fetch('https://indexing.googleapis.com/v3/urlNotifications:publish', {
    method: 'POST',
    headers: {
      Authorization: `Bearer ${jwtClient.credentials.access_token}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({ url, type: 'URL_UPDATED' }),
  });
  return res.json();
}

This works well - for one or two URLs. Where it gets annoying: managing service accounts, handling quotas, writing your own status-tracking logic, and checking whether each URL actually made it into the index (submitting ≠ indexed, same problem as before, just one layer down).

What I Built Instead

I got tired of wiring this up manually every time, so I built GoogleIndexer - a free tool that wraps the whole workflow:

  • Submit URLs (and backlinks) in bulk - no API setup required
  • Automatic status tracking per URL - pending → indexed
  • Clear confirmation when a page actually goes live in search

It's the same underlying problem - submit, then verify - just without writing and maintaining the plumbing yourself. Free, no credit card, built because I needed it for my own projects.

TL;DR

  • Publishing a page doesn't mean it's indexed. Confirm, don't assume.
  • Google's Indexing API lets you request indexing directly instead of waiting on the crawl schedule.
  • Setting it up yourself is doable but has real overhead (auth, quotas, tracking).
  • GoogleIndexer handles bulk submission + tracking for free if you'd rather skip the setup.

Curious how others here handle indexing at scale - anyone rolled their own tracking system, or found a good OSS option?

Comments

No comments yet. Start the discussion.