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?
Top comments (0)