Wrong Image When You Share a Link on Facebook or LinkedIn? Fix Open Graph
Your shared link shows an old picture, your logo, a random image or none at all. Check the og:image tag, fix the image itself, then make each platform scrape the page again.
Traffic fell after the new site launched. First prove the drop is real, not broken tracking, then find which pages and queries lost out and why.
The new site looks better, loads on every phone, and the client loves it. Then, a week or two after launch, the analytics graph slopes down, inquiries dry up, and someone asks why the old site got more leads. Organic traffic has dropped after the redesign, the move to a new host, the switch to a page builder, or the domain change.
Under the hood, Google is re-learning your site. Every URL that changed, every page that disappeared, and every signal that moved (titles, headings, internal links, canonicals) has to be recrawled and reassessed. A well-handled launch causes a small, short wobble. A launch with a mechanical mistake, such as a staging noindex or missing redirects, causes a deep drop that does not recover by itself. This guide is for designers, agencies and owners who need to find out which situation they are in and fix it, in priority order.
A traffic drop after launch has three possible sources, and they need very different responses:
| Source | How it shows | Response |
|---|---|---|
| Measurement broke | Analytics down, Search Console clicks steady | Fix the tag or consent setup; no SEO problem exists |
| Mechanical SEO fault | Search Console clicks fall sharply soon after launch; pages leave the index or 404 | Fix the fault urgently (noindex, robots.txt, redirects, canonicals) |
| Content and relevance changes | Gradual decline on specific queries; pages still indexed but rank lower | Restore lost content, headings, internal links and page speed |
Google treats each URL as its own document. When /services/roof-repair/ becomes /roof-repair-services/, the old URL’s history only carries over if a 301 redirect connects them. When a long, detailed page becomes a short, image-heavy one, the new page may no longer be the best answer for the queries the old one won. Neither change is visible in a design review, which is why they slip through.
curl runs on your computer (built into macOS and Linux; on Windows use curl.exe in PowerShell, or WSL). wp commands run in an SSH terminal in the folder containing wp-config.php; some hosts call it wp-cli.Search Console counts clicks from Google’s side, so it does not depend on your analytics tag. Open Performance, Search results, choose Compare in the date filter, and compare the four weeks after launch with the four weeks before (or the same period last year if the business is seasonal). If Search Console clicks are steady while analytics shows a collapse, your traffic is fine and your measurement is broken.
Check the tag in the live HTML:
curl -s https://example.com/ | grep -o -E 'G-[A-Z0-9]{6,}|GTM-[A-Z0-9]+' | sort -u
Run this on your computer. Replace example.com with your domain. -E enables the pattern that matches Google tag IDs (starting G-) and Tag Manager containers (starting GTM-); sort -u removes repeats. Good output is exactly the ID or IDs you expect. Empty output means the tag is missing from the HTML, or added later by a consent tool or script delay, which you then confirm in the browser’s devtools Network tab by filtering for collect. A different ID than your analytics property means data is going elsewhere.
In the Performance comparison, open the Pages tab and sort by the click difference. Then open the Queries tab and do the same. You are looking for patterns:
Click a losing page, then switch to the Queries tab: Search Console filters queries to that page, so you see exactly which searches it stopped winning. Export both tabs; they become your work list.
These are the most damaging mistakes and the quickest to fix, so check them before anything subtle.
wp option get blog_public
curl -sI https://example.com/ | grep -i 'x-robots-tag'
curl -s https://example.com/ | grep -io '<meta[^>]*robots[^>]*>'
Run the first over SSH in the site folder and the others on your computer. blog_public should be 1; 0 means Settings, Reading still discourages search engines. The header check should print nothing or a line without noindex. The meta check should print nothing or a tag without noindex. Any noindex on a live page you want ranked is your first fix. Also check your SEO plugin’s per-type settings, which a staging export can carry over.
Open https://example.com/robots.txt. A Disallow: / under User-agent: * blocks the whole site. If a physical robots.txt file was uploaded from staging, it overrides WordPress’s virtual one. FG-80 covers this in detail.
curl -s https://example.com/IMPORTANT_PAGE/ | grep -io '<link[^>]*canonical[^>]*>'
wp db search 'STAGING_HOSTNAME' --all-tables --stats
Run the first on your computer and the second over SSH in the site folder. Replace IMPORTANT_PAGE with the path of a page that lost traffic and STAGING_HOSTNAME with the staging domain, for example staging.example.com. The canonical should be the live URL of that exact page. wp db search looks for the string in every table, and --stats prints a match count per table. Good output is zero matches. Matches in an SEO plugin’s tables, wp_options or builder data mean settings or content still point at staging; fix them with a careful wp search-replace after a backup, using --dry-run first (FG-40 covers search-replace for migrations).
If URLs changed, every old URL that had traffic or links needs a single 301 to its closest new equivalent. Redirecting everything to the homepage does not preserve relevance and Google may treat such redirects as soft 404s. Building the full redirect map is covered in FG-38; here you verify it.
while read -r url; do
printf '%s ' "$url"
curl -s -o /dev/null -w '%{http_code} %{redirect_url}\n' "$url"
done < OLD_URLS.txt
Run this on your computer in macOS, Linux or WSL. Replace OLD_URLS.txt with a text file of old URLs, one per line, taken from your pre-launch Search Console export or the old sitemap. -o /dev/null discards the page body, and -w prints the status code and the redirect target. Good output is 301 followed by the matching new page. Bad output is 404 (no redirect), 302 (temporary, which signals the move may not be permanent), 200 on an old URL that should have moved, or 301 to the homepage for pages that had a real equivalent. If a target itself redirects, you have a chain; FG-41 covers those.
Designers often cut text to make pages cleaner. That text may have been what ranked. For each page on your losing list, compare old and new versions side by side (the Wayback Machine helps):
Restore the useful content in the new design. Fixing a design is easier than rebuilding lost relevance later.
New menus are often smaller, and old footer links, related posts and in-text links vanish. Pages that lost internal links lose importance in Google’s eyes. Check whether body content still links to the old URLs, which now redirect:
wp db query "SELECT ID, post_title FROM $(wp db prefix)posts WHERE post_status='publish' AND post_content LIKE '%OLD_PATH%'"
Run this over SSH in the site folder. Replace OLD_PATH with an old URL path, for example /services/roof-repair/. $(wp db prefix) fills in your table prefix automatically. Good output lists no rows. Rows mean those posts still link to the old address and should be updated to the new URL. Builder content stored in post meta needs searching there as well.
Heavier themes, sliders, video backgrounds and builder markup can slow pages a lot. Speed alone rarely explains a big drop, but it matters for users and for crawl capacity on large sites. Compare old and new Core Web Vitals in Search Console under Experience, and use PageSpeed Insights on the losing pages. FG-11 covers design-driven slowness.
Google does render JavaScript, but content that appears only after clicks, scrolling or late script loading may not be seen, and rendering can be delayed. Open URL Inspection, run Test live URL, then View tested page and look at the HTML tab: search it for a sentence from the page. If it is missing, Google is not getting that text. Also compare with the raw HTML:
curl -s https://example.com/IMPORTANT_PAGE/ | grep -c 'A SENTENCE FROM THE PAGE'
Run this on your computer. Replace IMPORTANT_PAGE and the sentence with real values from the page. -c counts matching lines. A count of 1 or more means the text is in the server HTML, which is the safest state. Zero means it is injected by JavaScript; check that the rendered HTML in URL Inspection contains it, and prefer server-rendered content for anything important.
If you run language or country versions, check that hreflang annotations survived the rebuild, point at the new URLs, and are reciprocal (each version lists the others and itself). Broken hreflang can send visitors to the wrong language version rather than removing traffic entirely, so look at traffic by country in Search Console.
For a domain change, confirm both domains are verified, the old domain 301s every URL to the matching new URL, and you have submitted the move using the Change of Address tool in the old property’s settings. Keep the old domain registered and redirecting for the long term.
Work top to bottom. Each item is ordered by how much damage it causes and how fast it can be fixed.
After fixing, request indexing for your most important pages, watch the Page indexing report (FG-78 explains each status), and compare clicks week over week. Realistically, fixes to mechanical faults show effects as Google recrawls, often within days for major pages and longer for the rest. Content and relevance losses take longer and are not guaranteed to return to previous levels.
To spot faults automatically, crawl the live site with a desktop crawler such as Screaming Frog SEO Spider or Sitebulb and filter for non-200 status codes, noindex pages, canonicals pointing to another host, and pages with few inbound internal links.
Open a ticket if you find an X-Robots-Tag header or robots.txt you did not create, if old URLs return server errors instead of redirects, if the server is much slower than before the move, or if the migration left the old site live on another address. Include:
curl -sI output for each.Our diagnostic tools can check redirects, status codes and headers for old and new URLs. If the new site is actually down or erroring, go to the Emergency Room first.
Did this fix it?
Still stuck? Start again from what you can see in the Emergency Room.
Still stuck?
Print a free one-page checklist to keep, or open the Emergency Room if the symptom does not match.
Get the free checklistsKeep reading
Search the field manual
Or jump straight to a symptom
Press / to search from any page, Esc to close