This week I discovered my website didn't exist on Google. For months I had been building a SaaS product, investing in design, copy, and automations. But when I asked Claude Code to objectively check whether reply-q.ai appeared in search results, the answer was: no. Not for "ReplyQ" itself. Not for "WhatsApp chatbot." Not for anything.
In this article I walk through the complete process I ran with Claude Code to fix everything in under two hours. If you have a Next.js site (or any site) that isn't indexed, there's a good chance you're suffering from the same four problems I had. All the code below is ready to copy.
Step 1: Verify You Actually Exist on Google
Before writing a single line of code, get an objective diagnosis. I asked Claude Code to run three searches using the WebSearch tool:
1. "ReplyQ reply-q.ai WhatsApp bot"
2. "ReplyQ platform automation chatbot"
3. "WhatsApp chatbot Israeli business ReplyQ"
In all three searches, ReplyQ did not appear at all. Competitors showed up. GitHub repositories showed up. ReplyQ did not. That confirmed the problem wasn't "ranking low" — it was "not indexed at all." Then we went looking for why.
Step 2: Find the Root Cause
Claude Code ran curl against the homepage and against sitemap.xml. It found four serious problems:
Problem 1: No sitemap.xml
The sitemap file tells Google which pages exist on your site. Without it, Google relies solely on random crawling. Since my domain was only a few months old, Googlebot had organically discovered only 4 pages out of 11 that existed on the site.
Problem 2: JavaScript-Only Rendering
I was using Next.js with 'use client' as the default for most pages. When a crawler that doesn't execute JavaScript visits those pages — which is true of some crawlers and of Google's initial crawl pass — it sees only an empty div or a spinner. No H1 heading. No text content. Nothing to index.
Problem 3: No Blog, No Articles
A new domain with no content is like a new business with no signage. Google doesn't know what you do or who you serve. My competitors all had blogs with 50+ articles. They appeared authoritative to the algorithm. My site did not.
Problem 4: Unfocused Meta Descriptions
My meta description read: "AI platform for business communication management." That sounds polished, but nobody searches for that phrase. Real people search for "WhatsApp chatbot for business," "WhatsApp Business API," "automated follow-up bot." My metadata didn't contain the keywords people actually type into Google.
Step 3: Fix Everything (All the Code Is Here)
Fix 1: Dynamic sitemap.xml
In Next.js App Router, you can generate a dynamic sitemap with app/sitemap.ts. This file runs server-side and produces fresh XML on every request:
import type { MetadataRoute } from 'next'
import { allArticles } from './blog/_articles'
const BASE_URL = 'https://reply-q.ai'
export default function sitemap(): MetadataRoute.Sitemap {
const now = new Date()
const staticPages = [
{ url: `${BASE_URL}/`, lastModified: now, priority: 1.0 },
{ url: `${BASE_URL}/blog`, lastModified: now, priority: 0.9 },
{ url: `${BASE_URL}/about`, lastModified: now, priority: 0.7 },
]
const blogPages = allArticles.map((a) => ({
url: `${BASE_URL}/blog/${a.slug}`,
lastModified: new Date(a.publishedAt),
priority: 0.8,
}))
return [...staticPages, ...blogPages]
}
Fix 2: JSON-LD with Multiple Entities (Including FAQPage)
This is the technique most developers miss. Instead of a single JSON-LD entity, use a @graph array with multiple types: Organization, WebSite, SoftwareApplication, and crucially — FAQPage. The FAQPage type enables Google's Rich Results, where your Q&A content appears directly in the search results page:
{
"@context": "https://schema.org",
"@graph": [
{ "@type": "Organization", "@id": "https://reply-q.ai/#org", ... },
{ "@type": "WebSite", "@id": "https://reply-q.ai/#website", ... },
{ "@type": "SoftwareApplication", ... },
{
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "How much does ReplyQ cost?",
"acceptedAnswer": {
"@type": "Answer",
"text": "ReplyQ plans start from ₪499/month (Starter). A free 20-minute demo is available at reply-q.ai."
}
}
]
}
]
}
Fix 3: Server-Side Rendering for the Homepage
Instead of using 'use client' on the page itself, I split the component into two parts: a Server Component that renders SEO-rich HTML (H1, H2, paragraphs, lists, FAQ), and a Client Component that handles interactive behavior. The HTML delivered from the server now contains 3KB of indexable content before any JavaScript runs — exactly what Googlebot needs to understand the page on first crawl.
Fix 4: A Blog with Real Articles
I wrote six articles, each 800–1,500 words, each targeting real search queries people actually type. Every article includes schema.org Article markup, internal links back to the homepage, and a clear call to action. Within 30 minutes of publishing, Google had indexed them all.
The Result
In under two hours with Claude Code, the site went from 4 indexed pages to 11 indexed pages. Google Search Console status: "Success" across all submitted URLs. The entire pipeline — diagnosing the problem, writing the code, deploying, verifying, and submitting to GSC — happened in a single session. (Having an existing verified GSC property saved significant time.) Update (May 2026): Since this article was published, the blog has grown to 16 articles and 30+ indexed pages — living proof that this approach compounds over time.
What worked best: Instead of asking Claude Code to "fix my SEO" generically, I asked for an objective audit using curl and WebSearch. The concrete proof that "my site doesn't exist on Google" was the catalyst that made every subsequent fix targeted and fast.
What to Do Right Now If This Applies to You
- Check whether you exist on Google. Open Claude Code and ask it to search for your product name plus relevant keywords. If you don't appear, you're in the same position I was in two hours ago.
- Check your sitemap.xml. Run
curl https://your-site.com/sitemap.xml. If it returns 404, that's the first thing to fix. - Check the HTML your server delivers. Run
curl -A "Googlebot" https://your-site.com/. If the body contains only a spinner or empty divs, you have no SSR — and you're invisible to crawlers. - Write 3–5 blog articles targeting real search queries. Each should be 800+ words, include schema.org Article markup, and contain internal links to your homepage.
- Submit your sitemap to Google Search Console. Takes one minute. Without this, the rest of your work takes weeks longer to take effect.
I did all of this in under two hours with Claude Code. You can likely do it faster. Good luck.
Want to see ReplyQ in action? Schedule a free 20-minute demo — or sign up directly and the team will walk you through setup personally.