Skip to content
S-09

My traffic dropped or I vanished from Google

Search clicks fell sharply, pages left the index, or the site no longer shows in Google.

Do this first

Your first three moves

  1. Compare Search Console clicks with analytics sessions for the same dates. Steady clicks mean tracking broke, not traffic.
  2. Run curl -sI https://YOURSITE.com/ and look for X-Robots-Tag: noindex. Then check wp option get blog_public prints 1.
  3. Run a lost page through URL Inspection, then check Manual actions, Removals and the Search Status Dashboard for that date.

Diagnose it

Work out what is really wrong

What you are seeing

"Traffic dropped" covers several problems, and only some involve Google. First work out whether visitors disappeared or only your measurement of them did. Then find which step lost you: crawling, indexing or ranking.

What you seeWhat it usually means
Analytics sessions fall to near zero from one day to the nextThe tracking tag stopped firing. Real search traffic rarely vanishes in a single day unless the site is down or blocked.
Analytics down, but Search Console clicks steady for the same datesA measurement problem: the tag was removed, a consent banner now blocks it, or someone changed the property or a filter.
Search Console clicks and impressions both falling over days or weeksA real loss of search visibility.
Page indexing report: a jump in Excluded by 'noindex' tagSomething started telling Google not to index your pages.
A jump in Blocked by robots.txtA robots.txt rule stops Google crawling those URLs.
A jump in Not found (404) or Page with redirect after a redesignOld URLs changed or disappeared without redirects to the new ones.
A jump in Server error (5xx)Googlebot got errors: downtime, a firewall, or a rate limit.
Duplicate, Google chose different canonical than userGoogle sees two versions of the page and picked the other one, sometimes a staging copy.

Search Console keeps 16 months of data. Compare with the same weeks last year first: seasonal businesses dip on schedule.

Confirm it in two minutes

1. Check the headers a crawler gets.

curl -sI -A 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)' https://example.com/LOST_PAGE/ | grep -iE '^(HTTP|x-robots-tag|location|server)'

Run it in your own computer’s terminal (on Windows, type curl.exe). Replace example.com with your domain and LOST_PAGE with the path of a page that lost traffic (leave it out for the home page). -A sends Googlebot’s user agent, so a plugin or firewall that treats crawlers differently shows itself; -I fetches headers only. Good: 200 and no x-robots-tag line. Bad: x-robots-tag: noindex, a 403, 429 or 503, or a location elsewhere. Firewalls that check the crawler’s IP can still treat the real Googlebot differently; check 5 covers that.

2. Look for a robots meta tag and the canonical link.

curl -s https://example.com/LOST_PAGE/ | grep -ioE '<(meta[^>]+name=.robots[^>]*|link[^>]+rel=.canonical[^>]*)>'

Run it on your own computer. It prints the robots meta tag and the canonical link from the page’s HTML. Good: no robots tag, or one without noindex, and a canonical pointing at this exact URL. Bad: noindex, or a canonical pointing at the staging site, the home page, or the http:// version.

3. Check the WordPress visibility setting.

wp option get blog_public

Run it in an SSH terminal inside the site’s folder (the one that contains wp-config.php). Good: 1. Bad: 0, which means "Discourage search engines from indexing this site" is checked under Settings, Reading. WordPress then prints <meta name='robots' content='noindex, nofollow' /> on every page. It is often left on when a staging site goes live.

4. Read robots.txt.

curl -s https://example.com/robots.txt

Run it on your own computer. Good: the WordPress default, Disallow: /wp-admin/ and Allow: /wp-admin/admin-ajax.php, plus a Sitemap: line if an SEO plugin adds one. Bad: Disallow: / under User-agent: * or User-agent: Googlebot, which blocks the whole site. A real robots.txt file in the site folder overrides the one WordPress generates.

5. See what the real Googlebot gets from your server.

grep -i 'googlebot' ACCESS_LOG | awk '{print $9}' | sort | uniq -c | sort -rn
host CRAWLER_IP

Run these in an SSH terminal. ACCESS_LOG is the path to your raw access log, shown in your hosting panel. awk '{print $9}' picks out the status code in the standard combined log format. Good: mostly 200 and 304. Bad: many 403, 429 or 503. CRAWLER_IP is an IP from one of those lines. A genuine Google crawler resolves to a name ending in googlebot.com, google.com or googleusercontent.com, and host on that name returns the same IP. Anything else is a fake.

6. Ask Search Console directly. Paste a lost URL into URL Inspection: URL is not on Google comes with a reason. Then open Security & Manual actions, Removals, and Settings, Crawl stats, which shows whether Google had trouble reaching your server.

Most likely causes, in order

  1. Analytics broke, not traffic. Tell: a sudden analytics drop while Search Console clicks stay flat, after a theme change, a consent plugin, or a script optimization setting. Fix: confirm your measurement ID is in the page source with curl -s https://example.com/ | grep -o 'G-[A-Z0-9]*' | sort -u, then watch the realtime report while you browse.
  2. Noindex left on after a launch or redesign. Tell: check 3 prints 0, or an SEO plugin marks a post type or category as noindex, and Excluded by 'noindex' tag climbs from the launch date. Fix: remove it, resubmit the sitemap, and request indexing for your most important pages.
  3. URLs changed without redirects. Tell: Not found (404) rises after a redesign or migration, and last year’s top pages in Search Console now return 404. Fix: a 301 redirect from each old URL that had traffic to its closest new page.
  4. Googlebot blocked by a firewall or bot protection. Tell: check 5 shows 403, 429 or 503 for verified Google IPs, and Crawl stats reports host problems. Fix: allow verified search engine crawlers in the firewall or CDN bot settings, and ask your host about rate limits.
  5. An algorithm update. Tell: technical checks are clean, pages are still indexed, positions slipped across many queries, and the drop began during a core or spam update listed on the Google Search Status Dashboard at status.search.google.com. Rollouts are usually announced as taking up to about two weeks. Fix: no technical switch exists. Wait for the rollout to finish, then review your pages against Google’s people-first content guidance.
  6. A hack. Tell: site:example.com shows pages you never wrote, or Security issues lists hacked content. Fix: the hacked site steps.
  7. A manual action. Tell: the Manual actions report names an issue and the affected pages. Fix: correct it and file a reconsideration request from that report.
  8. A removal request. Tell: the Removals report lists a request for your URLs or the whole site, sometimes made by a former contractor with access. Fix: cancel it. A temporary removal otherwise lasts about six months.

What it usually is not

  • A secret penalty. Manual actions appear in Search Console. If that report shows no issues, there is no manual action, and an algorithm update is not something you can appeal.
  • The site: count. It is not a full list of indexed pages. Use the Page indexing report.
  • Fixed by requesting indexing again and again. Requesting indexing does not override a noindex, a block, or a ranking change. Fix the cause first.

What to send your host or the relevant provider

  • To your host: verified Google crawler IPs with the times and status codes from check 5, and a request to check firewall, rate limit and bot protection logs for those requests.
  • The date the drop started, in UTC, and any launch, migration, DNS, CDN or plugin change around then.
  • Screenshots of the Page indexing and Crawl stats reports, with dates visible.
  • To your developer: an export of top pages from Search Console, with what each old URL returns today.
  • The output of checks 1 to 4.

The full fix

Field guides for this symptom

FG-129 Performance

How to Fix Largest Contentful Paint (LCP) on WordPress

Search Console or PageSpeed Insights says your LCP is too slow. Find the LCP element, see which of its four parts is slow, and fix the hero image, server time or render blocking.

Read the guide
12 min read
FG-130 Performance

How to Fix Cumulative Layout Shift (CLS) on WordPress

Content jumps as the page loads and Search Console reports a CLS issue. Find the element that moves and why, then reserve space for images, embeds, ads, fonts and banners.

Read the guide
10 min read
FG-140 SEO

How to Fix Page Titles, Meta Descriptions and Headings in WordPress

Missing, duplicate or cut-off titles and descriptions, no H1 or two of them, and headings that skip levels. What each one does for search engines and screen readers, and how to fix it in Rank Math, Yoast and your page builder.

Read the guide
17 min read

Search the field manual

What is going wrong?

Press / to search from any page, Esc to close