{"id":5456,"date":"2026-06-12T10:00:00","date_gmt":"2026-06-12T10:00:00","guid":{"rendered":"https:\/\/frontlinenewsng.org\/?p=5456"},"modified":"2026-06-12T10:00:00","modified_gmt":"2026-06-12T10:00:00","slug":"how-to-verify-your-seo-is-intact-after-a-wordpress-domain-migration","status":"publish","type":"post","link":"https:\/\/frontlinenewsng.org\/?p=5456","title":{"rendered":"How to Verify Your SEO Is Intact After a WordPress Domain Migration"},"content":{"rendered":"<p>Changing your domain name is one of the scariest SEO decisions a WordPress site owner can make. Done right, your search rankings survive the move mostly intact. Done wrong, you can lose months of work overnight.<\/p>\n<p>I\u2019ve audited post-migration sites where everything looked fine on the surface, only for missing redirects, stale canonical tags, or a sitemap still pointing to the old domain to kill rankings for weeks. I\u2019m here to make sure that doesn\u2019t happen to you.<\/p>\n<p> In this guide, I\u2019ll walk you through the full verification process: capturing your SEO baseline before the move, confirming your redirects work, checking the canonical URLs and database links that trip most sites up, and tracking your recovery.<\/p>\n<figure class=\"wp-block-image size-full\"><img data-opt-id=1467089192  fetchpriority=\"high\" data-recalc-dims=\"1\" decoding=\"async\" width=\"640\" height=\"362\" src=\"https:\/\/mlcqvjhyzqda.i.optimole.com\/cb:UNMm.7bb\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/i0.wp.com\/www.wpbeginner.com\/wp-content\/uploads\/2026\/05\/how-to-verify-your-s-featured.jpg?resize=640%2C362&#038;ssl=1\" alt=\"How to Verify Your SEO Is Intact After a WordPress Domain Migration\" class=\"wp-image-401825\" \/><\/figure>\n<div class=\"wpb-alert style-yellow\">\n<p>\n    <strong>TL;DR:<\/strong> Use<br \/>\n    <a href=\"https:\/\/duplicator.com\/\" target=\"_blank\" title=\"Duplicator - Best WordPress Backup and Migration Plugin\">Duplicator<\/a><br \/>\n    to migrate and back up your site,<br \/>\n    <a href=\"https:\/\/aioseo.com\/\" target=\"_blank\" title=\"All in One SEO - WordPress SEO Plugin and Toolkit\">All in One SEO<\/a><br \/>\n    to verify and update your canonical URLs and redirects, and<br \/>\n    <a href=\"https:\/\/www.monsterinsights.com\/\" target=\"_blank\" title=\"MonsterInsights - WordPress Analytics Plugin\">MonsterInsights<\/a><br \/>\n    to track your ranking recovery. Most sites recover 80\u2013100% of rankings within 4\u20138 weeks when all 301 redirects are in place.\n<\/p>\n<\/div>\n<p>You can use the quick links below to navigate through the article:<\/p>\n<div class=\"wp-block-aioseo-table-of-contents\">\n<ul>\n<li><a class=\"aioseo-toc-item\" href=\"https:\/\/www.wpbeginner.com\/wp-tutorials\/how-to-verify-your-seo-is-intact-after-a-wordpress-domain-migration\/#aioseo-why-domain-migrations-put-your-seo-at-risk-7\">Why Domain Migrations Put Your SEO at Risk<\/a><\/li>\n<li><a class=\"aioseo-toc-item\" href=\"https:\/\/www.wpbeginner.com\/wp-tutorials\/how-to-verify-your-seo-is-intact-after-a-wordpress-domain-migration\/#aioseo-step-1-build-your-pre-migration-seo-baseline-16\">Step 1: Build Your Pre-Migration SEO Baseline<\/a>\n<ul><\/ul>\n<\/li>\n<li><a class=\"aioseo-toc-item\" href=\"https:\/\/www.wpbeginner.com\/wp-tutorials\/how-to-verify-your-seo-is-intact-after-a-wordpress-domain-migration\/#aioseo-step-2-migrate-your-site-with-duplicator-35\">Step 2: Migrate Your Site With Duplicator<\/a>\n<ul>\n<li><a class=\"aioseo-toc-item\" href=\"https:\/\/www.wpbeginner.com\/wp-tutorials\/how-to-verify-your-seo-is-intact-after-a-wordpress-domain-migration\/#aioseo-confirm-your-robots-txt-isnt-blocking-the-new-site-62\">Confirm Your robots.txt Isn&#8217;t Blocking the New Site<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a class=\"aioseo-toc-item\" href=\"https:\/\/www.wpbeginner.com\/wp-tutorials\/how-to-verify-your-seo-is-intact-after-a-wordpress-domain-migration\/#aioseo-step-3-set-up-301-redirects-from-your-old-domain-55\">Step 3: Set Up 301 Redirects From Your Old Domain<\/a>\n<ul><\/ul>\n<\/li>\n<li><a class=\"aioseo-toc-item\" href=\"https:\/\/www.wpbeginner.com\/wp-tutorials\/how-to-verify-your-seo-is-intact-after-a-wordpress-domain-migration\/#aioseo-step-4-register-your-new-domain-in-google-search-console-74\">Step 4: Register Your New Domain in Google Search Console<\/a>\n<ul><\/ul>\n<\/li>\n<li><a class=\"aioseo-toc-item\" href=\"https:\/\/www.wpbeginner.com\/wp-tutorials\/how-to-verify-your-seo-is-intact-after-a-wordpress-domain-migration\/#aioseo-step-5-verify-canonical-urls-are-correct-97\">Step 5: Verify Canonical URLs Are Correct<\/a>\n<ul><\/ul>\n<\/li>\n<li><a class=\"aioseo-toc-item\" href=\"https:\/\/www.wpbeginner.com\/wp-tutorials\/how-to-verify-your-seo-is-intact-after-a-wordpress-domain-migration\/#aioseo-step-6-fix-mixed-content-and-broken-links-112\">Step 6: Fix Database URLs, Mixed Content, and Broken Links<\/a>\n<ul><\/ul>\n<\/li>\n<li><a class=\"aioseo-toc-item\" href=\"https:\/\/www.wpbeginner.com\/wp-tutorials\/how-to-verify-your-seo-is-intact-after-a-wordpress-domain-migration\/#aioseo-step-7-monitor-ranking-recovery-with-aioseo-and-monsterinsights-130\">Step 7: Monitor Ranking Recovery With AIOSEO and MonsterInsights<\/a>\n<ul><\/ul>\n<\/li>\n<li><a class=\"aioseo-toc-item\" href=\"https:\/\/www.wpbeginner.com\/wp-tutorials\/how-to-verify-your-seo-is-intact-after-a-wordpress-domain-migration\/#aioseo-your-week-by-week-recovery-timeline-145\">Your Week-by-Week Recovery Timeline<\/a>\n<ul><\/ul>\n<\/li>\n<li><a class=\"aioseo-toc-item\" href=\"https:\/\/www.wpbeginner.com\/wp-tutorials\/how-to-verify-your-seo-is-intact-after-a-wordpress-domain-migration\/#aioseo-frequently-asked-questions-159\">Frequently Asked Questions About Domain Migrations &amp; SEO<\/a><\/li>\n<li><a class=\"aioseo-toc-item\" href=\"https:\/\/www.wpbeginner.com\/wp-tutorials\/how-to-verify-your-seo-is-intact-after-a-wordpress-domain-migration\/#aioseo-additional-resources-about-domain-migration-seo-176\">Additional Resources for Domain Migration SEO<\/a><\/li>\n<\/ul>\n<\/div>\n<h4 class=\"wp-block-heading\">\n    Why Domain Migrations Put Your SEO at Risk<br \/>\n<\/h4>\n<p>\n    When you change domains, Google has to discover your new URLs, process your<br \/>\n    301 redirects, and re-evaluate your content before it transfers your<br \/>\n    existing ranking authority. That process takes time, and errors at any stage<br \/>\n    can delay or permanently reduce your SEO recovery.\n<\/p>\n<p>Most ranking losses after domain migrations come from three specific failure points: <\/p>\n<ul class=\"wp-block-list\">\n<li><strong>Broken or missing <a href=\"https:\/\/www.wpbeginner.com\/beginners-guide\/beginners-guide-to-creating-redirects-in-wordpress\/\" title=\"Beginner&apos;s Guide to Creating 301 Redirects in WordPress\">301 redirects<\/a>:<\/strong> Without a 301, Google treats your new domain as a brand-new site with no ranking signals. Your old domain\u2019s authority does not transfer.<\/li>\n<li><strong>Stale <a href=\"https:\/\/www.wpbeginner.com\/glossary\/canonical-url\/\" title=\"Canonical URL\">canonical URLs<\/a>:<\/strong> A canonical URL tells search engines which version of a page is the \u201cofficial\u201d one to rank. If your new-domain pages still have canonical tags pointing to the old domain, Google will try to rank the old URL instead of the new one.<\/li>\n<li><strong>A <a href=\"https:\/\/www.wpbeginner.com\/beginners-guide\/what-is-a-wordpress-sitemap-how-to-create-a-sitemap-in-wordpress\/\" title=\"What Is an XML Sitemap? How to Create a Sitemap in WordPress\">sitemap<\/a> referencing the old domain:<\/strong> Google uses your sitemap to discover and crawl pages. A sitemap pointing to old URLs slows down the discovery of your new domain\u2019s content.<\/li>\n<\/ul>\n<p>\n    All three are fixable. The steps below walk you through checking each one in<br \/>\n    the right order, starting before you migrate.\n<\/p>\n<figure class=\"wp-block-image size-full\"><img data-opt-id=1719296173  fetchpriority=\"high\" data-recalc-dims=\"1\" decoding=\"async\" width=\"640\" height=\"326\" src=\"https:\/\/mlcqvjhyzqda.i.optimole.com\/cb:UNMm.7bb\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/i0.wp.com\/www.wpbeginner.com\/wp-content\/uploads\/2026\/05\/domain-migration-checkpoint.jpg?resize=640%2C326&#038;ssl=1\" alt=\"Domain Migration SEO Solutions\" class=\"wp-image-402269\" \/><\/figure>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n<div class=\"wpb-alert style-orange\">\n<p><strong>Note: <\/strong>I built this guide to run before and through your migration, so Step 1 captures a pre-migration baseline first. If you\u2019ve already moved your site, then skip that baseline and start your checks at Step 2.<\/p>\n<\/div>\n<h4 class=\"wp-block-heading\">\n    Step 1: Build Your Pre-Migration SEO Baseline<br \/>\n<\/h4>\n<p>Before you migrate your site, you should capture a snapshot of your <a href=\"https:\/\/www.wpbeginner.com\/wordpress-seo\/\" title=\"Ultimate WordPress SEO Guide: Rank in Google &amp; AI Search\">current SEO performance<\/a>. <\/p>\n<p>Without a baseline, you have no way to tell whether your rankings are recovering normally after the move or whether specific pages are silently losing ground.<\/p>\n<h5 class=\"wp-block-heading\">\n    Export Your Keyword Rankings<br \/>\n<\/h5>\n<p>\n    Your keyword baseline is the \u2018before photo\u2019 you\u2019ll compare against at weeks<br \/>\n    1, 2, and 4 after migration. You\u2019ll want to export your current keyword<br \/>\n    positions, clicks, and impressions before touching anything on your site.\n<\/p>\n<p>\n    You can do this for free directly from Google Search Console, or from within<br \/>\n    WordPress if you have All in One SEO\u2019s Elite plan.\n<\/p>\n<p>\n    To export from<br \/>\n    <a href=\"https:\/\/www.wpbeginner.com\/beginners-guide\/google-search-console-ultimate-guide\/\" title=\"Tips for Using Google Search Console to Grow Website Traffic\">Google Search Console<\/a>, select your site property and click \u2018Search Results\u2019 under \u2018Performance\u2019<br \/>\n    in the left sidebar. Set your date range to the last 3 months, then click<br \/>\n    \u2018Export\u2019 at the top right and choose \u2018Download CSV\u2019.\n<\/p>\n<figure class=\"wp-block-image size-full\"><img data-opt-id=709534502  data-opt-src=\"https:\/\/mlcqvjhyzqda.i.optimole.com\/cb:UNMm.7bb\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/i0.wp.com\/www.wpbeginner.com\/wp-content\/uploads\/2026\/05\/gsc-performance-report-export.jpg\"  data-recalc-dims=\"1\" decoding=\"async\" width=\"640\" height=\"321\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E?resize=640%2C321&#038;ssl=1\" alt=\"Google Search Console Performance report with Export button highlighted\" class=\"wp-image-402271\" \/><\/figure>\n<p>Before clicking export, make sure to sort your data by \u2018Impressions\u2019 or \u2018Clicks\u2019 (highest to lowest). This ensures your top 1,000 keywords are your most valuable ones.<\/p>\n<p>Then save the exported file in a dedicated migration folder on your computer. This CSV contains the four columns you\u2019ll need for your baseline: query (keyword), clicks, impressions, and average position. <\/p>\n<p><strong>Note:<\/strong> Google Search Console will export up to your top 1,000 keywords, which is plenty for tracking your core SEO baseline.<\/p>\n<p>If you have <a href=\"https:\/\/aioseo.com\/\" target=\"_blank\" title=\"All in One SEO - WordPress SEO Plugin and Toolkit\">All in One SEO\u2019s Elite plan<\/a>, then you can pull the same data without leaving WordPress.<\/p>\n<p>\n    Simply go to <strong>AIOSEO \u00bb Search Statistics<\/strong>, where your keyword<br \/>\n    positions, clicks, and impressions are already pulled in from Google Search<br \/>\n    Console. For more details, see our guide on<br \/>\n    <a href=\"https:\/\/www.wpbeginner.com\/wp-tutorials\/how-to-see-search-analytics-in-wordpress\/\" title=\"How to See Search Analytics in WordPress\">how to see search analytics in WordPress<\/a>.\n<\/p>\n<figure class=\"wp-block-image size-full\"><img data-opt-id=1211866754  data-opt-src=\"https:\/\/mlcqvjhyzqda.i.optimole.com\/cb:UNMm.7bb\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/i0.wp.com\/www.wpbeginner.com\/wp-content\/uploads\/2025\/01\/adminarea-aioseo-seostatistics-kwrankings.png\"  data-recalc-dims=\"1\" decoding=\"async\" width=\"640\" height=\"382\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E?resize=640%2C382&#038;ssl=1\" alt=\"Seeing keyword rankings in AIOSEO Search Stats\" class=\"wp-image-327203\" \/><\/figure>\n<p>\n    Click the \u2018Export\u2019 button to download a CSV of your current keyword<br \/>\n    positions. Save this alongside your Google Search Console export in the same<br \/>\n    migration folder.\n<\/p>\n<p>\n    Whichever method you use, make a note of your top 20 keywords and their<br \/>\n    current average positions before closing the tab. Also take a screenshot of<br \/>\n    the overview for a quick visual reference during the stressful<br \/>\n    post-migration period.\n<\/p>\n<p>Make sure to keep both the CSV and the screenshot in your migration folder. You\u2019ll open them again at weeks 1, 2, and 4 post-migration to measure recovery progress. <\/p>\n<h5 class=\"wp-block-heading\">\n    Crawl and Document Your Current URLs<br \/>\n<\/h5>\n<p>A complete list of every page on your site is your roadmap for setting up redirects later. If a page is missing from that list, it won\u2019t get a redirect when you move. And once its old address stops working, the search ranking that page built up is gone for good.<\/p>\n<p>You can use <a href=\"https:\/\/www.screamingfrog.co.uk\/seo-spider\/\" target=\"_blank\" rel=\"noopener nofollow\" title=\"Screaming Frog SEO Spider\">Screaming Frog SEO Spider<\/a> (free for up to 500 URLs, with unlimited crawling available on their paid plan) to crawl your current site. <\/p>\n<p>Simply enter your domain in the search bar at the top and click \u2018Start\u2019. Screaming Frog will then crawl every URL it can discover on your site.<\/p>\n<figure class=\"wp-block-image size-full\"><img data-opt-id=39459131  data-opt-src=\"https:\/\/mlcqvjhyzqda.i.optimole.com\/cb:UNMm.7bb\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/i0.wp.com\/www.wpbeginner.com\/wp-content\/uploads\/2026\/05\/screaming-frog-url-list.png\"  data-recalc-dims=\"1\" decoding=\"async\" width=\"640\" height=\"347\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E?resize=640%2C347&#038;ssl=1\" alt=\"Screaming Frog Showing a List of Crawled URLs\" class=\"wp-image-401834\" \/><\/figure>\n<p>Once the crawl is complete, you\u2019ll need to go to <strong>File \u00bb Export<\/strong> in Screaming Frog and save the full URL list as a CSV. To get a clean list of just your images, click the \u2018Images\u2019 tab in Screaming Frog before hitting export.<\/p>\n<p><strong>Tip:<\/strong> If you run a <a href=\"https:\/\/www.wpbeginner.com\/showcase\/best-free-wordpress-photography-themes\/\" title=\"Best Free WordPress Photography Themes (Expert Pick)\">photography<\/a> or <a href=\"https:\/\/www.wpbeginner.com\/showcase\/best-wordpress-themes-for-recipe-blogs\/\" title=\"Best WordPress Themes for Recipe Blogs\">recipe blog<\/a>, make sure to crawl your image assets too, so you don\u2019t lose that valuable image SEO.<\/p>\n<p>Store this file in your migration folder alongside the keyword export.<\/p>\n<p>While reviewing the crawl results, you will want to look for any URLs that already return a 301 or 302 status. These existing redirects need careful handling during migration to avoid creating redirect chains. <\/p>\n<p>Also, record your homepage canonical URL. <\/p>\n<p>Right-click your homepage, select \u2018View Page Source\u2019, and press Ctrl+F (Cmd+F on Mac) to search for <code>&lt;link rel=\"canonical\"<\/code>.<\/p>\n<figure class=\"wp-block-image size-full\"><img data-opt-id=632843745  data-opt-src=\"https:\/\/mlcqvjhyzqda.i.optimole.com\/cb:UNMm.7bb\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/i0.wp.com\/www.wpbeginner.com\/wp-content\/uploads\/2026\/05\/canonical-tag-paginated.png\"  data-recalc-dims=\"1\" decoding=\"async\" width=\"640\" height=\"237\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E?resize=640%2C237&#038;ssl=1\" alt=\"Example of a Canonical Tag in the Source Code of Paginated Content\" class=\"wp-image-400802\" \/><\/figure>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n<h4 class=\"wp-block-heading\">\n    Step 2: Migrate Your Site With Duplicator<br \/>\n<\/h4>\n<p>The method you use to migrate your site is actually your first major SEO decision. <\/p>\n<p>For the transfer itself, I strongly recommend using <a href=\"https:\/\/duplicator.com\/\" target=\"_blank\" rel=\"noopener\" title=\"Duplicator\">Duplicator<\/a> because of how safely it handles your database during the move.<\/p>\n<div class=\"wpb-alert style-yellow\">\n<p>\n    <strong>Haven\u2019t migrated yet?<\/strong> Please pause here and follow our complete guide on<br \/>\n    <a href=\"https:\/\/www.wpbeginner.com\/wp-tutorials\/how-to-properly-move-wordpress-to-a-new-domain-without-losing-seo\/\" title=\"How to Properly Move WordPress to a New Domain Without Losing SEO\">how to move WordPress to a new domain without losing SEO<\/a>. Once your transfer is finished, come right back here to run through the verification steps below.\n<\/p>\n<\/div>\n<p>\n    When you run the Duplicator installer on your new domain, it automatically<br \/>\n    updates every URL stored in your WordPress database to reflect the new<br \/>\n    domain. This includes automatically fixing your internal links and image paths.\n<\/p>\n<p>\n    This automatic URL replacement is what prevents the stale canonical and<br \/>\n    mixed-content problems covered later in this guide. Tools that skip this<br \/>\n    step leave old-domain URLs scattered throughout your database, which you<br \/>\n    then have to find and fix manually.\n<\/p>\n<p>Once your migration is complete, confirm it worked cleanly by going to <strong>Settings \u00bb General<\/strong> in your new WordPress dashboard. Both the \u2018WordPress Address\u2019 and \u2018Site Address\u2019 fields should show your new domain URL. If they do, then you are ready to move on to the next step.<\/p>\n<figure class=\"wp-block-image size-full\"><img data-opt-id=1163707682  data-opt-src=\"https:\/\/mlcqvjhyzqda.i.optimole.com\/cb:UNMm.7bb\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/i0.wp.com\/www.wpbeginner.com\/wp-content\/uploads\/2023\/03\/internalseogeneralsettings.png\"  data-recalc-dims=\"1\" decoding=\"async\" width=\"640\" height=\"245\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E?resize=640%2C245&#038;ssl=1\" alt=\"Change the WordPress Address and Site URL to Your New Domain\" class=\"wp-image-171121\" \/><\/figure>\n<div class=\"wpb-alert style-yellow\">\n<p><strong>Important:<\/strong> While you\u2019re in your new WordPress dashboard, go to <strong>Settings \u00bb Reading<\/strong> and confirm the \u2018Discourage search engines from indexing this site\u2019 checkbox is <em>not<\/em> checked.<\/p>\n<p>This setting is sometimes left on from staging or development and will block Google from indexing your new domain entirely.<\/p>\n<\/div>\n<h5 class=\"wp-block-heading\">Confirm Your robots.txt Isn\u2019t Blocking the New Site<\/h5>\n<p>The \u2018Discourage search engines\u2019 checkbox isn\u2019t the only thing that can block crawling. Your <code>robots.txt<\/code> file can do it too, and a stale rule carried over from staging is easy to miss.<\/p>\n<p>To check this, open <code>https:\/\/yournewdomain.com\/robots.txt<\/code> in your browser.<\/p>\n<p>Confirm two things. First, that no stray <code>Disallow: \/<\/code> rule (or a leftover staging rule) is blocking important content. Second, that any <code>Sitemap:<\/code> line points to your new domain\u2019s sitemap, not the old one.<\/p>\n<p>If you use <a href=\"https:\/\/aioseo.com\/\" target=\"_blank\" title=\"All in One SEO - WordPress SEO Plugin and Toolkit\">All in One SEO<\/a>, you can fix this without editing files by hand. Just go to <strong>All in One SEO \u00bb Tools<\/strong>, turn on the \u2018Enable Custom Robots.txt\u2019 toggle, and correct any outdated rule. The robots.txt editor is included in the free version.<\/p>\n<figure class=\"wp-block-image size-full\"><img data-opt-id=1054553122  data-opt-src=\"https:\/\/mlcqvjhyzqda.i.optimole.com\/cb:UNMm.7bb\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/i0.wp.com\/www.wpbeginner.com\/wp-content\/uploads\/2025\/07\/aioseo-add-a-custom-robots-txt-rule.png\"  data-recalc-dims=\"1\" decoding=\"async\" width=\"640\" height=\"336\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E?resize=640%2C336&#038;ssl=1\" alt=\"Adding a Custom Robots.txt Rule Using AIOSEO\" class=\"wp-image-357110\" \/><\/figure>\n<p>For more information on getting these rules right, see our guide on <a href=\"https:\/\/www.wpbeginner.com\/wp-tutorials\/how-to-optimize-your-wordpress-robots-txt-for-seo\/\" title=\"How to Optimize Your WordPress Robots.txt for SEO\">how to optimize your robots.txt for SEO in WordPress<\/a>.<\/p>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n<h4 class=\"wp-block-heading\">\n    Step 3: Set Up 301 Redirects From Your Old Domain<br \/>\n<\/h4>\n<p>A 301 redirect tells Google that your old URLs have permanently moved to new ones.<\/p>\n<p>Think of a 301 redirect like filing a permanent \u2018Change of Address\u2019 form with the post office so your SEO reputation forwards correctly. <\/p>\n<p>Without 301 redirects, Google treats your old and new domains as entirely separate sites, and your ranking signals stay on the old domain. <\/p>\n<p>For a complete overview of your options, see our guide on <a href=\"https:\/\/www.wpbeginner.com\/plugins\/how-to-do-a-full-site-redirect-in-wordpress-beginners-guide\/\" title=\"How to Do a Full Site Redirect in WordPress (Beginner&apos;s Guide)\">how to do a full site redirect in WordPress<\/a>.<\/p>\n<h5 class=\"wp-block-heading\">\n    Set Up a Full Site Redirect in AIOSEO<br \/>\n<\/h5>\n<p><a href=\"https:\/\/aioseo.com\/\" target=\"_blank\" rel=\"noopener\" title=\"All in One SEO - WordPress SEO Plugin and Toolkit\">All in One SEO<\/a> is the <a href=\"https:\/\/www.wpbeginner.com\/showcase\/9-best-wordpress-seo-plugins-and-tools-that-you-should-use\/\" title=\"15 Best WordPress SEO Plugins and Tools That You Should Use\">best SEO toolkit for WordPress<\/a> that lets you handle sitemaps, canonical tags, keyword tracking, and redirects all in one place.<\/p>\n<p>Its Full Site Redirect tool (Pro plan and above) is the simplest way to redirect your entire old domain to the new one. You configure it once and AIOSEO automatically sends all your old URLs to their matching pages on the new domain using 301 redirects.<\/p>\n<p>On your old WordPress site, go to <strong>All in One SEO \u00bb Redirects<\/strong>. If you are enabling this for the first time, click the \u2018Activate Redirects\u2019 button. Then click the \u2018Full Site Redirect\u2019 tab.<\/p>\n<p>You\u2019ll see a \u2018Relocate Site\u2019 toggle. Go ahead and turn it on.<\/p>\n<figure class=\"wp-block-image size-full\"><img data-opt-id=2084215433  data-opt-src=\"https:\/\/mlcqvjhyzqda.i.optimole.com\/cb:UNMm.7bb\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/i0.wp.com\/www.wpbeginner.com\/wp-content\/uploads\/2026\/05\/aioseo-relocate-site.jpg\"  data-recalc-dims=\"1\" decoding=\"async\" width=\"640\" height=\"282\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E?resize=640%2C282&#038;ssl=1\" alt=\"AIOSEO Full Site Redirect tab with Relocate Site toggle turned on\" class=\"wp-image-402280\" \/><\/figure>\n<p>\n    In the \u2018Relocate to domain\u2019 field, enter your new domain URL. Make sure to<br \/>\n    double-check the spelling. A typo here means every visitor on your old<br \/>\n    domain gets sent to the wrong place.\n<\/p>\n<p>Finally, click \u2018Save Changes\u2019. AIOSEO will now redirect all traffic from your old domain to the matching pages on your new domain automatically.<\/p>\n<div class=\"wpb-alert style-yellow\">\n<p><strong>Important Warning:<\/strong> Because this method runs from a plugin, All in One SEO must stay installed and active on your old site, and that old WordPress installation must remain live. You must keep your old domain name registered, your old web hosting active, and your old WordPress site installed. If you delete the old site, cancel the hosting, or let the domain expire, your redirects will instantly stop working.<\/p>\n<\/div>\n<h5 class=\"wp-block-heading\">\n    Test Your Redirects Before Proceeding<br \/>\n<\/h5>\n<p>Testing your redirects before notifying Google is important. Submitting a change-of-address notification with broken redirects slows the entire migration recovery. <\/p>\n<p>Instead, spend 10 minutes checking your key URLs now to avoid weeks of ranking problems later. <\/p>\n<p>I recommend visiting an external tool like <a href=\"https:\/\/httpstatus.io\/\" target=\"_blank\" rel=\"noopener nofollow\" title=\"httpstatus.io redirect checker\">httpstatus.io<\/a> rather than testing in your browser, as web browsers often \u2018remember\u2019 old redirects and can show you false results.<\/p>\n<p>Enter your old homepage URL and confirm it returns a 301 status and resolves to the correct new-domain URL.<\/p>\n<figure class=\"wp-block-image size-full\"><img data-opt-id=441609707  data-opt-src=\"https:\/\/mlcqvjhyzqda.i.optimole.com\/cb:UNMm.7bb\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/i0.wp.com\/www.wpbeginner.com\/wp-content\/uploads\/2026\/05\/httpstatus-301-status.jpg\"  data-recalc-dims=\"1\" decoding=\"async\" width=\"640\" height=\"330\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E?resize=640%2C330&#038;ssl=1\" alt=\"httpstatus.io showing 301 status for old domain URL resolving to new domain\" class=\"wp-image-402282\" \/><\/figure>\n<p>\n    You should repeat this test for your top 5 posts and your main category<br \/>\n    pages to ensure the URLs are mapping properly to the new site.\n<\/p>\n<p>If <code>httpstatus.io<\/code> shows a 302 instead of 301, or a chain of multiple hops, then go back to <strong>All in One SEO \u00bb Redirects<\/strong>. <\/p>\n<p>First, open the \u2018Full Site Redirect\u2019 tab and confirm there are no typos in the \u2018Relocate to domain\u2019 field. If that looks correct, check your standard \u2018Redirects\u2019 tab to ensure you don\u2019t have older, individual redirect rules conflicting with your new full site redirect.<\/p>\n<p><strong>Pro Tip:<\/strong> A redirect chain happens when <code>oldsite.com\/page<\/code> goes to a staging URL, which then goes to newsite.com\/page. Each extra hop in the chain passes slightly less SEO equity and adds latency for visitors. Fix chains so every old URL redirects directly to the new URL in a single 301 hop.<\/p>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n<h4 class=\"wp-block-heading\">\n    Step 4: Register Your New Domain in Google Search Console<br \/>\n<\/h4>\n<p>\n    Google treats your old and new domains as entirely separate properties. To<br \/>\n    transfer your ranking signals, you need to verify the new domain in Google<br \/>\n    Search Console, submit a change-of-address notification, and resubmit your<br \/>\n    sitemap.\n<\/p>\n<p>For the complete steps, see Step 5 of our guide on <a href=\"https:\/\/www.wpbeginner.com\/wp-tutorials\/how-to-properly-move-wordpress-to-a-new-domain-without-losing-seo\/\" title=\"How to Properly Move WordPress to a New Domain Without Losing SEO\">how to properly move WordPress to a new domain without losing SEO<\/a>. <\/p>\n<p>Here is a summary of the three things you need to do.<\/p>\n<h5 class=\"wp-block-heading\">\n    Add and Verify Your New Domain Property<br \/>\n<\/h5>\n<p>\n    You need both your old and new domains as verified properties in<br \/>\n    <a href=\"https:\/\/search.google.com\/search-console\/\" target=\"_blank\" rel=\"noopener nofollow\" title=\"Google Search Console\">Google Search Console<\/a>. Your old domain should already be there.\n<\/p>\n<p>\n    For the new one, click the property dropdown at the top left, select \u2018Add<br \/>\n    Property\u2019, choose your property type, and follow the verification steps.\n<\/p>\n<figure class=\"wp-block-image size-full\"><img data-opt-id=1519082406  data-opt-src=\"https:\/\/mlcqvjhyzqda.i.optimole.com\/cb:UNMm.7bb\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/i0.wp.com\/www.wpbeginner.com\/wp-content\/uploads\/2018\/07\/gsc-propety-type.png\"  data-recalc-dims=\"1\" decoding=\"async\" width=\"640\" height=\"394\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E?resize=640%2C394&#038;ssl=1\" alt=\"Select property type option in Google Search Console\" class=\"wp-image-375969\" \/><\/figure>\n<h5 class=\"wp-block-heading\">\n    Submit the Change-of-Address Notification<br \/>\n<\/h5>\n<p>This is the step that tells Google your site has permanently moved.<\/p>\n<p>\n    You need to switch to your old domain property in Google Search Console and<br \/>\n    go to <strong>Settings \u00bb Change of address<\/strong>.\n<\/p>\n<figure class=\"wp-block-image size-full\"><img data-opt-id=491038861  data-opt-src=\"https:\/\/mlcqvjhyzqda.i.optimole.com\/cb:UNMm.7bb\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/i0.wp.com\/www.wpbeginner.com\/wp-content\/uploads\/2024\/02\/gsc-change-of-address.png\"  data-recalc-dims=\"1\" decoding=\"async\" width=\"640\" height=\"303\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E?resize=640%2C303&#038;ssl=1\" alt=\"Google Search Console Change of Address tool\" class=\"wp-image-254772\" \/><\/figure>\n<p>Next, you should select your new domain from the \u2018Update Google\u2019 section, and click \u2018Validate &amp; Update\u2019. <\/p>\n<p>\n    Google will verify your 301 redirects are in place and walk you through a<br \/>\n    brief wizard to complete the request. If Google Search Console cannot verify<br \/>\n    the redirects, then go back to Step 3 and confirm your Full Site Redirect is<br \/>\n    active before retrying.\n<\/p>\n<figure class=\"wp-block-image size-full\"><img data-opt-id=1293568030  data-opt-src=\"https:\/\/mlcqvjhyzqda.i.optimole.com\/cb:UNMm.7bb\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/i0.wp.com\/www.wpbeginner.com\/wp-content\/uploads\/2024\/02\/gsc-newdomain.png\"  data-recalc-dims=\"1\" decoding=\"async\" width=\"640\" height=\"324\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E?resize=640%2C324&#038;ssl=1\" alt=\"Adding new domain to Google Search Console\" class=\"wp-image-254775\" \/><\/figure>\n<h5 class=\"wp-block-heading\">\n    Resubmit Your XML Sitemap<br \/>\n<\/h5>\n<p>\n    All in One SEO automatically updates your sitemap\u2019s internal links when your<br \/>\n    site URL changes, but you still need to resubmit this new map to Google<br \/>\n    Search Console manually. This queues your new domain\u2019s URLs for crawling<br \/>\n    rather than waiting for the next automated crawl cycle.\n<\/p>\n<p>First, you will want to double-check that your active sitemap is reflecting the new domain. In your <em>new<\/em> WordPress dashboard, navigate to <strong>AIOSEO \u00bb Sitemaps<\/strong> to view your configuration.<\/p>\n<figure class=\"wp-block-image size-full\"><img data-opt-id=1926544280  data-opt-src=\"https:\/\/mlcqvjhyzqda.i.optimole.com\/cb:UNMm.7bb\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/i0.wp.com\/www.wpbeginner.com\/wp-content\/uploads\/2021\/02\/aioseositemapspage.png\"  data-recalc-dims=\"1\" decoding=\"async\" width=\"640\" height=\"320\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E?resize=640%2C320&#038;ssl=1\" alt=\"Sitemap settings in All in One SEO\" class=\"wp-image-210131\" \/><\/figure>\n<p>\n    Simply click on the \u2018Open Sitemap\u2019 button to see a link to your XML sitemap.\n<\/p>\n<p>\n    Once you copy your updated sitemap URL from this screen, you can head back<br \/>\n    over to your new Google Search Console property and click \u2018Sitemaps\u2019 in the<br \/>\n    left sidebar to paste and submit it.\n<\/p>\n<figure class=\"wp-block-image size-full\"><img data-opt-id=1760024685  data-opt-src=\"https:\/\/mlcqvjhyzqda.i.optimole.com\/cb:UNMm.7bb\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/i0.wp.com\/www.wpbeginner.com\/wp-content\/uploads\/2018\/12\/searchconsolesitemapspage.png\"  data-recalc-dims=\"1\" decoding=\"async\" width=\"640\" height=\"241\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E?resize=640%2C241&#038;ssl=1\" alt=\"Add a new sitemap\" class=\"wp-image-238558\" \/><\/figure>\n<p>For a visual walkthrough on accessing this menu in your plugin and submitting the link to Google, see our step-by-step tutorial on <a href=\"https:\/\/www.wpbeginner.com\/beginners-guide\/how-to-add-your-wordpress-site-to-google-webmaster-tools\/\" title=\"How to Add Your WordPress Site to Google Search Console\">how to add an XML sitemap to Google Search Console<\/a>.<\/p>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n<h4 class=\"wp-block-heading\">\n    Step 5: Verify Canonical URLs Are Correct<br \/>\n<\/h4>\n<p>\n    A canonical URL is the \u2018official\u2019 version of a page that search engines<br \/>\n    should index and rank. After a domain migration, canonical tags that still<br \/>\n    point to your old domain are one of the most common causes of slow ranking<br \/>\n    recovery.\n<\/p>\n<p>The new-domain page effectively tells Google to rank the old URL instead.<\/p>\n<div class=\"wpb-alert style-yellow\">\n<p>\n    <strong>Note:<\/strong> If you used Duplicator to migrate your site in Step<br \/>\n    2, it automatically updates canonical URLs stored in the database during<br \/>\n    deployment. You may find that everything already looks correct. Still run<br \/>\n    the spot-check below to catch any canonical overrides set at the individual<br \/>\n    post level, which Duplicator may not update.\n<\/p>\n<\/div>\n<h5 class=\"wp-block-heading\">\n    Check Your Global Canonical Settings in AIOSEO<br \/>\n<\/h5>\n<p>\n    <a href=\"https:\/\/aioseo.com\/\" target=\"_blank\" title=\"All in One SEO - WordPress SEO Plugin and Toolkit\">All in One SEO<\/a><br \/>\n    automatically generates sitewide canonical tags based on your WordPress site<br \/>\n    URL. After migrating with Duplicator, these should already reflect your new<br \/>\n    domain.\n<\/p>\n<p>\n    What you do need to verify manually are two redirect settings that prevent<br \/>\n    duplicate-content issues on thin pages.\n<\/p>\n<p>Go to <strong>All in One SEO \u00bb Search Appearance<\/strong> and click the \u2018Advanced\u2019 tab. You will see a \u2018Paged Format\u2019 setting, which adds a page number variable to the SEO title and description of paginated archive pages (for example, \u2018Page 2\u2019, \u2018Page 3\u2019).<\/p>\n<figure class=\"wp-block-image size-full\"><img data-opt-id=2120203040  data-opt-src=\"https:\/\/mlcqvjhyzqda.i.optimole.com\/cb:UNMm.7bb\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/i0.wp.com\/www.wpbeginner.com\/wp-content\/uploads\/2026\/05\/aioseo-paged-format.png\"  data-recalc-dims=\"1\" decoding=\"async\" width=\"640\" height=\"280\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E?resize=640%2C280&#038;ssl=1\" alt=\"Checking the Paged Format in All in One SEO\" class=\"wp-image-402469\" \/><\/figure>\n<p>\n    The default format shows three components: a separator, the word \u2018Page\u2019, and<br \/>\n    a page number variable. You just need to confirm the field isn\u2019t blank.\n<\/p>\n<p>If it is blank, you can restore the default by selecting a separator from the first dropdown, typing \u2018Page\u2019 in the text field, and selecting the page number variable from the final dropdown.<\/p>\n<p>This makes each paginated page appear unique to Google without using redirects, <a href=\"https:\/\/www.wpbeginner.com\/wp-tutorials\/how-to-find-and-fix-duplicate-content-issues-in-wordpress\/\" title=\"How to Find and Fix Duplicate Content Issues in WordPress\">preventing duplicate content flags<\/a>.<\/p>\n<p>Then click the \u2018Image SEO\u2019 tab in the same Search Appearance menu.<\/p>\n<p>Confirm that \u2018Redirect Attachment URLs\u2019 is not set to \u2018Disabled\u2019. This redirects thin media attachment pages to the parent post or page where the image is hosted to keep those low-value pages out of Google\u2019s index.<\/p>\n<figure class=\"wp-block-image size-full\"><img data-opt-id=338760342  data-opt-src=\"https:\/\/mlcqvjhyzqda.i.optimole.com\/cb:UNMm.7bb\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/i0.wp.com\/www.wpbeginner.com\/wp-content\/uploads\/2019\/04\/imageseoaioseosearchappearance.png\"  data-recalc-dims=\"1\" decoding=\"async\" width=\"640\" height=\"249\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E?resize=640%2C249&#038;ssl=1\" alt=\"Redirect media attachment URLs in AIOSEO\" class=\"wp-image-189890\" \/><\/figure>\n<p>\n    The \u2018Attachment\u2019 option (the default) redirects attachment pages directly to<br \/>\n    the image file. \u2018Attachment Parent\u2019 redirects to the post or page where the<br \/>\n    image is used, though images not attached to any post will still show their<br \/>\n    attachment page.\n<\/p>\n<p>Either option keeps these thin pages out of Google\u2019s index.<\/p>\n<h5 class=\"wp-block-heading\">\n    Spot-Check Your Most Important Pages<br \/>\n<\/h5>\n<p>Global settings cover the default, but individual posts and pages can have canonical overrides set at the post level. <\/p>\n<p>You should check your highest-traffic pages to catch any lingering old-domain references. <\/p>\n<p>\n    You can open each page in your browser, right-click anywhere on the page,<br \/>\n    and select \u2018View Page Source\u2019. Then, simply use Ctrl+F (Cmd+F on Mac) to<br \/>\n    search the source code for <code>&lt;link rel=\"canonical\"<\/code>.\n<\/p>\n<figure class=\"wp-block-image size-full\"><img data-opt-id=632843745  data-opt-src=\"https:\/\/mlcqvjhyzqda.i.optimole.com\/cb:UNMm.7bb\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/i0.wp.com\/www.wpbeginner.com\/wp-content\/uploads\/2026\/05\/canonical-tag-paginated.png\"  data-recalc-dims=\"1\" decoding=\"async\" width=\"640\" height=\"237\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E?resize=640%2C237&#038;ssl=1\" alt=\"Example of a Canonical Tag in the Source Code of Paginated Content\" class=\"wp-image-400802\" \/><\/figure>\n<p>Confirm the URL in the canonical tag references your new domain.<\/p>\n<p>If you find any page still showing the old domain, then open that post in your new site\u2019s WordPress editor, scroll down to the All in One SEO settings panel, click the \u2018Advanced\u2019 tab, and update the canonical URL field. <\/p>\n<p>Finally, save the post to apply the change.<\/p>\n<figure class=\"wp-block-image size-full\"><img data-opt-id=1924739198  data-opt-src=\"https:\/\/mlcqvjhyzqda.i.optimole.com\/cb:UNMm.7bb\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/i0.wp.com\/www.wpbeginner.com\/wp-content\/uploads\/2024\/06\/protectcontent-canonicalurl.png\"  data-recalc-dims=\"1\" decoding=\"async\" width=\"640\" height=\"180\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E?resize=640%2C180&#038;ssl=1\" alt=\"Setting a Canonical URL Using AIOSEO\" class=\"wp-image-282235\" \/><\/figure>\n<p>\n    For a deeper explanation of how canonical tags work, see our guide on<br \/>\n    <a href=\"https:\/\/www.wpbeginner.com\/glossary\/canonical-url\/\" title=\"What Is a Canonical URL? (Explained for Beginners)\">what a canonical URL is and how to use it in WordPress<\/a>.\n<\/p>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n<h4 class=\"wp-block-heading\">Step 6: Fix Database URLs, Mixed Content, and Broken Links<\/h4>\n<p>After migration, some images, scripts, and stylesheets on your new site may still be pointing to your old domain or loading over an insecure HTTP connection. Those stale assets will cause broken images and security warnings the moment your old domain goes offline.<\/p>\n<p>While migration tools like Duplicator replace most of these automatically during deployment, it\u2019s important to run a manual cleanup sequence to catch hardcoded errors, mixed content, or broken internal links.<\/p>\n<h5 class=\"wp-block-heading\">\n    Replace Hardcoded URLs in the Database<br \/>\n<\/h5>\n<div class=\"wpb-alert style-yellow\">\n<p><strong>Warning:<\/strong> Replacing database URLs is a permanent, irreversible action. Before you start, always <a href=\"https:\/\/www.wpbeginner.com\/beginners-guide\/how-to-backup-your-wordpress-site\/\" title=\"How to Backup Your WordPress Site (Ultimate Guide)\">create a complete backup<\/a> of your website.<\/p>\n<\/div>\n<p>While Duplicator handles standard URL updates during migration, hardcoded links inside page builder layouts, text widgets, or custom theme options sometimes get left behind. Running a quick scan with <a href=\"https:\/\/wordpress.org\/plugins\/search-replace-wpcode\" target=\"_blank\" title=\"Free Plugin - Search &amp; Replace Everything by WPCode\">Search &amp; Replace Everything by WPCode<\/a> makes sure no old links are missed.<\/p>\n<p>I recommend this plugin because it replaces URLs across your entire WordPress database without corrupting serialized data, which is a common problem with less careful tools.<\/p>\n<p>We have a detailed article on <a href=\"https:\/\/www.wpbeginner.com\/plugins\/how-to-update-urls-when-moving-your-wordpress-site\/\" title=\"How to Easily Update URLs When Moving Your WordPress Site\">how to easily update URLs when moving your WordPress site<\/a>, but here are the main steps.<\/p>\n<p>First, you need to install and activate <a href=\"https:\/\/wordpress.org\/plugins\/search-replace-wpcode\" target=\"_blank\" title=\"Free Plugin - Search &amp; Replace Everything by WPCode\">Search &amp; Replace Everything<\/a> from the WordPress plugin repository. If you need help, see our guide on <a href=\"https:\/\/www.wpbeginner.com\/beginners-guide\/step-by-step-guide-to-install-a-wordpress-plugin-for-beginners\/\" title=\"How to Install a WordPress Plugin \u2013 Step by Step for Beginners\">how to install a WordPress plugin<\/a>.<\/p>\n<p>\n    Once activated, simply navigate to<br \/>\n    <strong>Tools \u00bb WP Search &amp; Replace<\/strong> in your WordPress admin.<br \/>\n    Here, you\u2019ll need to enter your old domain URL in the \u2018Search for\u2019 field and<br \/>\n    your new domain URL in the \u2018Replace with\u2019 field.\n<\/p>\n<figure class=\"wp-block-image size-full\"><img data-opt-id=49483369  data-opt-src=\"https:\/\/mlcqvjhyzqda.i.optimole.com\/cb:UNMm.7bb\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/i0.wp.com\/www.wpbeginner.com\/wp-content\/uploads\/2026\/05\/search-replace-urls.png\"  data-recalc-dims=\"1\" decoding=\"async\" width=\"640\" height=\"262\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E?resize=640%2C262&#038;ssl=1\" alt=\"Using the Search &amp; Replace Everything by WPCode Plugin to Fix Links to Your Old Site\" class=\"wp-image-402479\" \/><\/figure>\n<p>Then make sure you check all available database tables in the list below the input fields.<\/p>\n<p>You can do this easily by clicking the \u2018Select All\u2019 link.<\/p>\n<figure class=\"wp-block-image size-full\"><img data-opt-id=1967644920  data-opt-src=\"https:\/\/mlcqvjhyzqda.i.optimole.com\/cb:UNMm.7bb\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/i0.wp.com\/www.wpbeginner.com\/wp-content\/uploads\/2026\/05\/search-replace-select-all-tables.png\"  data-recalc-dims=\"1\" decoding=\"async\" width=\"640\" height=\"310\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E?resize=640%2C310&#038;ssl=1\" alt=\"WP Search and Replace dry run results showing rows affected count\" class=\"wp-image-402480\" \/><\/figure>\n<p>Next, click the \u2018Preview Search &amp; Replace\u2019 button to see a preview of the URLs that can be replaced, without making any changes.<\/p>\n<p>\n    Review the row count to confirm the number looks reasonable for your site<br \/>\n    size.\n<\/p>\n<p>Once you are satisfied with the dry run preview, you are ready for the live replacement. Simply click the \u2018Replace All\u2019 button.<\/p>\n<p><strong>Note for Page Builder Users:<\/strong> If you use a <a href=\"https:\/\/www.wpbeginner.com\/beginners-guide\/best-drag-and-drop-page-builders-for-wordpress\/\" title=\"15 Best Drag &amp; Drop WordPress Page Builders Compared\">page builder<\/a> like <a rel=\"nofollow noopener\" target=\"_blank\" title=\"Elementor Pro\" href=\"https:\/\/www.wpbeginner.com\/refer\/elementor-pro\/\" data-nojs=\"1\" data-shortcode=\"true\">Elementor<\/a> or Divi, then you might still see broken background images after running a Search &amp; Replace. This is because builders store URLs in static CSS files.<\/p>\n<p>To fix this, you must clear your WordPress cache and regenerate your page builder files. For example, in Elementor, go to <strong>Elementor \u00bb Tools<\/strong> and click \u2018Regenerate Files &amp; Data\u2019.<\/p>\n<h5 class=\"wp-block-heading\">Check for and Fix SSL Mixed Content Errors<\/h5>\n<p>Before chasing any mixed-content warnings, confirm a <a href=\"https:\/\/www.wpbeginner.com\/beginners-guide\/how-to-get-a-free-ssl-certificate-for-your-wordpress-website\/\" title=\"How to Get a Free SSL Certificate for Your WordPress Website (Beginner\u2019s Guide)\">valid SSL certificate is installed<\/a> and covers your new domain. Most hosts issue one automatically, but a brand-new domain sometimes needs it applied first.<\/p>\n<p>If your old domain used standard HTTP and your new one forces secure HTTPS, then you might notice a broken padlock icon or a security warning in your browser address bar when visiting your new site. This is a mixed content error.<\/p>\n<p>It happens when your website configuration is secure, but an embedded background script, stylesheet, or image asset is still trying to load over an insecure connection.<\/p>\n<p>If you see active security warnings or broken images on your new domain, you can resolve them quickly by following our step-by-step guide on <a href=\"https:\/\/www.wpbeginner.com\/plugins\/how-to-fix-the-mixed-content-error-in-wordpress-step-by-step\/\" title=\"How to Fix the Mixed Content Error in WordPress (Step by Step)\">how to fix the mixed content error in WordPress<\/a>.<\/p>\n<h5 class=\"wp-block-heading\">Scan for Remaining Broken Links<\/h5>\n<p>After replacing your database URLs, it\u2019s a good idea to use the <a href=\"https:\/\/aioseo.com\/features\/broken-link-checker\" target=\"_blank\" title=\"Broken Link Checker by AIOSEO\">Broken Link Checker by AIOSEO<\/a> plugin to catch any internal links still resolving to unexpected 404 errors.<\/p>\n<p>For a complete visual walkthrough on managing these inline errors, see our tutorial on <a href=\"https:\/\/www.wpbeginner.com\/plugins\/how-to-fix-broken-links-in-wordpress-with-broken-link-checker\/\" title=\"How to Find and Fix Broken Links in WordPress (Step by Step)\">how to find and fix broken links in WordPress<\/a>.<\/p>\n<p>Once activated and connected, the plugin automatically scans your content in the background. You can check its progress at any time by navigating to <strong>Broken Links \u00bb Broken Links<\/strong> in your WordPress admin area.<\/p>\n<p>If the background scan uncovers any issues, you will see them compiled in a clean list. For each broken link found, you can use the inline \u2018Edit URL\u2019 option to correct the mistake instantly, or click \u2018Unlink\u2019 to safely remove the dead link from your post.<\/p>\n<figure class=\"wp-block-image size-full\"><img data-opt-id=289695711  data-opt-src=\"https:\/\/mlcqvjhyzqda.i.optimole.com\/cb:UNMm.7bb\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/i0.wp.com\/www.wpbeginner.com\/wp-content\/uploads\/2019\/10\/brokenlinkscheckerstatusdetails.png\"  data-recalc-dims=\"1\" decoding=\"async\" width=\"640\" height=\"263\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E?resize=640%2C263&#038;ssl=1\" alt=\"View status details on broken links\" class=\"wp-image-214629\" \/><\/figure>\n<p>Once you finish cleaning up the list, the cloud scanner will verify the fixes during its next automated pass.<\/p>\n<p>Clean internal links also prevent redirect chains that waste Google\u2019s crawl budget. If the scanner flags more broken links, fix them the same way and check back after the next background pass.<\/p>\n<h5 class=\"wp-block-heading\">Find and Fix Any Hard 404 Errors<\/h5>\n<p>The broken-link scan above catches dead links inside your content. A hard 404 is a different problem: a page on your new site that loads as \u2018Not found\u2019 because it never migrated, its URL was renamed, or its redirect didn\u2019t fire.<\/p>\n<p>To find these, run the same Screaming Frog crawl you used in Step 1, but this time point it at your <em>new<\/em> domain. Once the crawl finishes, click the \u2018Response Codes\u2019 tab and look for \u20184xx Client Error\u2019 to see every URL returning a 404.<\/p>\n<figure class=\"wp-block-image size-full\"><img data-opt-id=809407677  data-opt-src=\"https:\/\/mlcqvjhyzqda.i.optimole.com\/cb:UNMm.7bb\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/i0.wp.com\/www.wpbeginner.com\/wp-content\/uploads\/2026\/05\/screaming-frog-404.jpg\"  data-recalc-dims=\"1\" decoding=\"async\" width=\"640\" height=\"261\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E?resize=640%2C261&#038;ssl=1\" alt=\"Screaming Frog 404\" class=\"wp-image-406111\" \/><\/figure>\n<p>It also helps to cross-check this list against Google Search Console. <\/p>\n<p>In your new domain property, go to <strong>Indexing \u00bb Pages<\/strong> and look for any \u2018Not found (404)\u2019 rows, which flag pages Google expected to find but couldn\u2019t.<\/p>\n<figure class=\"wp-block-image size-full\"><img data-opt-id=376218956  data-opt-src=\"https:\/\/mlcqvjhyzqda.i.optimole.com\/cb:UNMm.7bb\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/i0.wp.com\/www.wpbeginner.com\/wp-content\/uploads\/2019\/10\/brokenlinksgooglesearchconsolenotfound404.png\"  data-recalc-dims=\"1\" decoding=\"async\" width=\"640\" height=\"288\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E?resize=640%2C288&#038;ssl=1\" alt=\"Google Search Console Pages That Aren&apos;t Indexed\" class=\"wp-image-215013\" \/><\/figure>\n<p>For each hard 404, you have two fixes:<\/p>\n<ul class=\"wp-block-list\">\n<li>If the page should still exist, restore or republish it at its correct address.<\/li>\n<li>If the page moved to a new URL, you can <a href=\"https:\/\/www.wpbeginner.com\/beginners-guide\/beginners-guide-to-creating-redirects-in-wordpress\/\" title=\"Beginner\u2019s Guide to Creating 301 Redirects in WordPress\">add a 301 redirect<\/a> in All in One SEO that sends the old address straight to the new one. This recovers the ranking signals that a dead page would otherwise lose.<\/li>\n<\/ul>\n<h5 class=\"wp-block-heading\">Update Your Most Valuable External Backlinks<\/h5>\n<p>The steps above fix the links inside your own site. But other websites may still be linking to your old domain, and those external backlinks are some of your strongest ranking signals.<\/p>\n<p>Your 301 redirects do pass that ranking value to your new domain. But that hand-off isn\u2019t permanent: it can weaken over time as it passes through the redirect, and it stops completely if you ever let the old domain expire.<\/p>\n<p>A direct link to your new domain is always stronger than one that has to pass through a redirect. So it\u2019s worth updating your most valuable backlinks at the source.<\/p>\n<p>To find them, open Google Search Console and go to <strong>Links \u00bb Top linking sites<\/strong> on either your old or new property. This shows you which sites send you the most links, so you know where to focus.<\/p>\n<figure class=\"wp-block-image size-full\"><img data-opt-id=310423114  data-opt-src=\"https:\/\/mlcqvjhyzqda.i.optimole.com\/cb:UNMm.7bb\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/i0.wp.com\/www.wpbeginner.com\/wp-content\/uploads\/2026\/05\/gsc-top-linking-sites.png\"  data-recalc-dims=\"1\" decoding=\"async\" width=\"640\" height=\"331\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E?resize=640%2C331&#038;ssl=1\" alt=\"Google Search Console backlinks\" class=\"wp-image-401883\" \/><\/figure>\n<p>I recommend prioritizing the high-authority mentions you can actually influence. These are usually your guest-post author bios, press mentions, resource-page listings, and partner sites.<\/p>\n<p>For each one, send the site owner a short, polite email asking them to update the link to your new domain. You can\u2019t edit links on sites you don\u2019t control, so a friendly request is the only route for those.<\/p>\n<p>You won\u2019t get every link changed, and that\u2019s fine. Updating even the top handful of your highest-authority backlinks protects the ranking power that matters most.<\/p>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n<h4 class=\"wp-block-heading\">Step 7: Monitor Ranking Recovery With AIOSEO and MonsterInsights<\/h4>\n<p>Ranking recovery after a domain migration takes time. <\/p>\n<p>Your main concern in the weeks following a site relocation is to tell the difference between normal, short-term changes due to <a href=\"https:\/\/www.wpbeginner.com\/wp-tutorials\/how-to-monitor-google-algorithm-updates-in-wordpress\/\" title=\"How to Monitor Google Algorithm Updates in WordPress\">search engine algorithms<\/a> and genuine technical problems that require you to do something. <\/p>\n<h5 class=\"wp-block-heading\">Track Keyword Positions in AIOSEO Search Statistics<\/h5>\n<p>All in One SEO\u2019s Search Statistics dashboard pulls your Google Search Console data directly into your WordPress admin area. This allows you to monitor your key word positions without needing to log into GSC separately.<\/p>\n<p>To see your recovery, navigate to <strong>AIOSEO \u00bb Search Statistics<\/strong> and open your keyword performance reports. From here, you can cross-reference your live numbers against the pre-migration baseline CSV you saved during Step 1.<\/p>\n<figure class=\"wp-block-image size-full\"><img data-opt-id=1211866754  data-opt-src=\"https:\/\/mlcqvjhyzqda.i.optimole.com\/cb:UNMm.7bb\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/i0.wp.com\/www.wpbeginner.com\/wp-content\/uploads\/2025\/01\/adminarea-aioseo-seostatistics-kwrankings.png\"  data-recalc-dims=\"1\" decoding=\"async\" width=\"640\" height=\"382\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E?resize=640%2C382&#038;ssl=1\" alt=\"Seeing keyword rankings in AIOSEO Search Stats\" class=\"wp-image-327203\" \/><\/figure>\n<p>If you want to learn how to deeply customize these reports, see our guide on <a href=\"https:\/\/www.wpbeginner.com\/wp-tutorials\/how-to-see-search-analytics-in-wordpress\/\" title=\"How to See Search Analytics in WordPress\">how to see search analytics in WordPress<\/a>.<\/p>\n<p>Be sure to click into the \u2018Winning \/ Losing\u2019 tab to quickly identify specific pages that have lost the most visibility since the move.<\/p>\n<p>You can also add your top 20 migration-critical keywords to the built-in Rank Tracker to make sure you get immediate updates on your most valuable revenue terms.<\/p>\n<figure class=\"wp-block-image size-full\"><img data-opt-id=415836399  data-opt-src=\"https:\/\/mlcqvjhyzqda.i.optimole.com\/cb:UNMm.7bb\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/i0.wp.com\/www.wpbeginner.com\/wp-content\/uploads\/2025\/01\/adminarea-aioseo-seostatistics-winninglosing.png\"  data-recalc-dims=\"1\" decoding=\"async\" width=\"640\" height=\"414\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E?resize=640%2C414&#038;ssl=1\" alt=\"Seeing the top winning and losing keywords in AIOSEO Search Stats\" class=\"wp-image-327204\" \/><\/figure>\n<h5 class=\"wp-block-heading\">Compare Traffic Trends in MonsterInsights<\/h5>\n<p>While keyword monitoring shows you your search engine positions, tracking actual traffic volume confirms how users are responding to the new domain. <\/p>\n<p><a href=\"https:\/\/www.monsterinsights.com\/\" target=\"_blank\" title=\"MonsterInsights - WordPress Analytics Plugin\">MonsterInsights<\/a> brings your Google Analytics data directly into WordPress, making it simple to run week-over-week traffic checks. To set it up, see our guide on <a href=\"https:\/\/www.wpbeginner.com\/beginners-guide\/how-to-install-google-analytics-in-wordpress\/\" title=\"How to Install Google Analytics in WordPress for Beginners\">how to install Google Analytics in WordPress<\/a>.<\/p>\n<div class=\"wpb-alert style-yellow\">\n<p><strong>Important:<\/strong> Keep your existing Google Analytics property. Do not create a new one for the new domain. Your whole recovery check depends on comparing the new numbers against your pre-migration baseline, and a fresh property starts that history at zero. Stay on the same property and just update its data stream to the new site URL, so your week-over-week comparison stays intact.<\/p>\n<\/div>\n<p>You can analyze traffic by navigating to <strong>Insights \u00bb Reports<\/strong> in your WordPress dashboard to open the default Overview Report.<\/p>\n<figure class=\"wp-block-image size-full\"><img data-opt-id=403938535  data-opt-src=\"https:\/\/mlcqvjhyzqda.i.optimole.com\/cb:UNMm.7bb\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/i0.wp.com\/www.wpbeginner.com\/wp-content\/uploads\/2026\/03\/monster-insights-reports-dashboard.png\"  data-recalc-dims=\"1\" decoding=\"async\" width=\"640\" height=\"292\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E?resize=640%2C292&#038;ssl=1\" alt=\"MonsterInsights new and improved reporting dashboard\" class=\"wp-image-395509\" \/><\/figure>\n<p>Then, you can use the date range picker  to compare your post-migration stats against your old baseline window. Then, look at the traffic breakdown to make sure your organic search is recovering proportionally.<\/p>\n<p>For a complete look at measuring traffic spikes or troubleshooting flatlines, check out our guide on <a href=\"https:\/\/www.wpbeginner.com\/beginners-guide\/how-to-check-if-your-wordpress-seo-is-actually-working\/\" title=\"How to Check If Your WordPress SEO Is Actually Working\">how to check if your WordPress SEO is actually working<\/a>.<\/p>\n<p>To make your data easy to scan over the next 180 days, you can also <a href=\"https:\/\/www.wpbeginner.com\/plugins\/how-to-get-ga4-site-annotations-and-notes-in-wordpress\/\" title=\"How to Get GA4 Site Annotations and Notes in WordPress\">use the Site Notes feature<\/a> (available on the Pro plan and above) to pin your migration date directly to the analytics timeline graph.<\/p>\n<p>You\u2019ll need to go to <strong>Insights \u00bb Site Notes<\/strong>, click \u2018Add Note\u2019, and log the exact move date. This creates a permanent visual anchor on your overview line charts so you can see precisely when your traffic started recovering.<\/p>\n<figure class=\"wp-block-image size-full\"><img data-opt-id=90764894  data-opt-src=\"https:\/\/mlcqvjhyzqda.i.optimole.com\/cb:UNMm.7bb\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/i0.wp.com\/www.wpbeginner.com\/wp-content\/uploads\/2023\/09\/monsterinsights-site-notes.png\"  data-recalc-dims=\"1\" decoding=\"async\" width=\"640\" height=\"374\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E?resize=640%2C374&#038;ssl=1\" alt=\"Adding notes to a MonsterInsights dashboard\" class=\"wp-image-212726\" \/><\/figure>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n<h4 class=\"wp-block-heading\">\n    Your Week-by-Week Recovery Timeline<br \/>\n<\/h4>\n<p>It is totally normal to feel a little stressed when you see your rankings change a lot after a domain migration. Knowing what a normal recovery looks like can help you avoid making panic changes to your content, which can actually slow things down.<\/p>\n<p>Here is a week-by-week look at what to expect. <\/p>\n<h5 class=\"wp-block-heading\">\n    Week 1: Discovery and Fluctuation<br \/>\n<\/h5>\n<p>\n    The first week is the most unsettling. Google\u2019s \u2018crawlers\u2019 (the automated<br \/>\n    bots that read and index websites) are discovering your redirects and<br \/>\n    beginning to process the domain change.\n<\/p>\n<p>\n    Rankings will fluctuate (shift up and down) significantly during this<br \/>\n    period.\n<\/p>\n<p>Some keywords may temporarily disappear from results entirely, even for pages with perfect redirects in place. Organic traffic typically drops 30\u201370% from your baseline during week 1, though well-prepared migrations often see smaller dips.<\/p>\n<p>This is expected and is not a sign that your migration failed. <\/p>\n<p>If you moved to a <a href=\"https:\/\/www.wpbeginner.com\/wordpress-hosting\/\" title=\"How to Choose the Best WordPress Hosting (Compared)\">new hosting provider<\/a> as part of this migration, DNS propagation can take 24\u201348 hours. During this time, some visitors and crawlers may still reach your old site. GSC data from the first 48 hours after migration may look unusual as a result. This is normal.<\/p>\n<p>It\u2019s tempting to start fixing things when your traffic dips, but try to resist. For this first week, just focus on <a href=\"https:\/\/www.wpbeginner.com\/beginners-guide\/technical-wordpress-seo-framework-checklist\/\" title=\"17-Step Technical WordPress SEO Framework (Proven Checklist)\">making sure your technical setup<\/a> is working properly. Try to avoid rewriting content, changing URLs, or tweaking your AIOSEO settings.<\/p>\n<p>If you change too many things at once, it will only confuse Google and make it harder to spot real problems.<\/p>\n<h5 class=\"wp-block-heading\">\n    Week 2: Signals Begin Transferring<br \/>\n<\/h5>\n<p>By week two, Google has typically processed most of your 301 redirects and is beginning to pass ranking signals to the new domain.<\/p>\n<p>With solid redirects in place, many sites see some traffic recovery begin by week 2. But the pace varies significantly by domain authority, niche, and crawl budget.<\/p>\n<p>Make sure you log in to Google Search Console and check your new domain property for any \u2018Redirect Error\u2019 or \u2018Soft 404\u2019 notifications. A soft 404 occurs when a page loads successfully but returns little or no useful content. Google treats these as potential content quality issues.<\/p>\n<p>These appear in the Pages report under <strong>Indexing \u00bb Pages<\/strong>. Fix any errors flagged here before they turn into larger ranking losses.<\/p>\n<h5 class=\"wp-block-heading\">\n    Week 4 and Beyond: Recovery Assessment<br \/>\n<\/h5>\n<p>By week four, you should have a clear picture of your overall recovery. Sites with clean 301 redirects often see 80\u2013100% recovery within 4\u20138 weeks. <\/p>\n<p>But timelines vary, and some sites take longer even when your migration was done perfectly.<\/p>\n<p>Now is a great time to open up your AIOSEO Search Statistics dashboard and pull out that baseline CSV you saved back in Step 1. Let\u2019s see how your keywords are doing.<\/p>\n<p>If you spot any pages that are still ranking much lower (like 50% or more below where they started), don\u2019t worry. They just need a little one-on-one attention.<\/p>\n<p>For those specific pages, simply double-check these three quick things: <\/p>\n<ul class=\"wp-block-list\">\n<li><strong>The redirect:<\/strong> Is the 301 redirect working perfectly and pointing to the right place?<\/li>\n<li><strong>The canonical tag:<\/strong> Does the canonical URL on that specific page definitely point to your new domain?<\/li>\n<li><strong>Google\u2019s index:<\/strong> Does Google Search Console\u2019s Pages report show that the new URL is <a href=\"https:\/\/www.wpbeginner.com\/beginners-guide\/why-my-wordpress-site-got-de-indexed-from-google-what-can-i-do-to-fix-it\/\" title=\"Why Did My WordPress Site Get De-Indexed From Google?\">successfully indexed<\/a>?<\/li>\n<\/ul>\n<p>Once you fix any issues you find, simply give Google another two weeks to process the updates before you check your stats again. Remember, SEO takes a little patience, but by catching these errors now, you are setting your new domain up for long-term success.<\/p>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n<h4 class=\"wp-block-heading\">\n    Frequently Asked Questions About Domain Migrations &amp; SEO<br \/>\n<\/h4>\n<p>Here are the most common questions about verifying SEO after a WordPress domain migration. <\/p>\n<p>\n    <strong>How long does it take to recover SEO after a domain migration?<\/strong>\n<\/p>\n<p>WordPress sites with clean 301 redirects in place often see 80\u2013100% <a href=\"https:\/\/www.wpbeginner.com\/wp-tutorials\/how-to-properly-move-wordpress-to-a-new-domain-without-losing-seo\/\" title=\"How to Easily Move WordPress to a New Domain (Without Losing SEO)\">ranking recovery<\/a> within 4\u20138 weeks, though timelines vary depending on domain authority, niche, and redirect completeness.<\/p>\n<p>Sites with missing redirects, redirect chains, or stale canonical URLs pointing to the old domain can take 3\u20136 months.<\/p>\n<p>\n    The single biggest factor in recovery speed is redirect quality. Every old<br \/>\n    URL needs a direct 301 to its new-domain equivalent with no intermediate<br \/>\n    hops.\n<\/p>\n<p><strong>Will I lose all my rankings when I change domains?<\/strong><\/p>\n<p>\n    No, but you will experience a temporary drop while Google processes the<br \/>\n    change. A 301 redirect transfers your ranking signals from the old URL to<br \/>\n    the new URL. Google follows the redirect and eventually ranks the new-domain<br \/>\n    page instead of the old one.\n<\/p>\n<p>\n    Sites that migrate without 301 redirects do permanently lose their SEO<br \/>\n    equity. Google treats the new domain as a brand-new site with no history.\n<\/p>\n<p><strong>Do I need to keep paying for my old hosting and domain?<\/strong><\/p>\n<p>You need to keep the old domain registered, but not necessarily the old hosting. The plugin-based redirect in this guide runs from your old WordPress site, so it needs that site and its hosting to stay active. <\/p>\n<p>If you\u2019d rather stop paying for hosting, you can set the redirect up at the domain level instead (for example, with a free Cloudflare redirect rule) and then cancel the old hosting. Either way, keep the old domain registered for at least a year so your redirects keep passing your ranking signals.<\/p>\n<p><strong>Do I need to update all my internal links after a domain migration?<\/strong><\/p>\n<p>Yes. Even though your 301 redirects will automatically forward visitors to the right place, you should still update your links.<\/p>\n<p>Leaving old links in your content forces users to wait for the redirect to load, which slows down your website. It also makes search engines work much harder to read your pages. <\/p>\n<p>\n    Instead of changing them one by one, you can use the<br \/>\n    <a href=\"https:\/\/wordpress.org\/plugins\/search-replace-wpcode\" target=\"_blank\" title=\"Free Plugin - Search &amp; Replace Everything by WPCode\">Search &amp; Replace Everything by WPCode<\/a><br \/>\n    plugin to safely<br \/>\n    <a href=\"https:\/\/www.wpbeginner.com\/plugins\/how-to-update-urls-when-moving-your-wordpress-site\/\" title=\"How to Easily Update URLs When Moving Your WordPress Site\">update every old link<\/a><br \/>\n    in just a few minutes. This keeps your site fast and SEO-friendly.\n<\/p>\n<p><strong>What else should I update after moving to a new domain?<\/strong><\/p>\n<p>Update everywhere your old domain is referenced off your site, not just your redirects and internal links.<\/p>\n<p>That includes any local directories and business listings, your social media profiles (YouTube, LinkedIn, Facebook, and X), and your Google Business Profile.<\/p>\n<p>You\u2019ll also want to swap the old domain out of your email signatures and any UTM or campaign links you use in ads and newsletters.<\/p>\n<p>Think of it as housekeeping. It keeps visitors from landing on your old domain and keeps your branding consistent across every place people find you.<\/p>\n<p>\n    <strong>What should I do if rankings have not recovered after 8 weeks?<\/strong>\n<\/p>\n<p>\n    You\u2019ll want to start with a redirect audit. Simply crawl your old domain<br \/>\n    with Screaming Frog and confirm every URL returns a 301 to the correct<br \/>\n    new-domain URL.\n<\/p>\n<p>\n    Then, you can<br \/>\n    <a href=\"https:\/\/www.wpbeginner.com\/beginners-guide\/how-to-fix-wordpress-redirecting-to-old-domain-after-migration\/\" title=\"How to Fix WordPress Redirecting to Old Domain After Migration\">check if WordPress is still redirecting<\/a><br \/>\n    to the old domain, a common post-migration issue caused by stale URLs in the<br \/>\n    database.\n<\/p>\n<p>\n    Also verify your new domain is not accidentally set to \u2018noindex\u2019 anywhere.<br \/>\n    Check both AIOSEO\u2019s global settings and your WordPress \u2018Reading\u2019 settings.\n<\/p>\n<p>\n    Run a full<br \/>\n    <a href=\"https:\/\/www.wpbeginner.com\/tools\/seo-analyzer-tool\/\" title=\"How to Perform an SEO Audit and Generate Free SEO Report\">WordPress SEO audit<\/a><br \/>\n    to catch any remaining technical issues. Also check your schema markup: if<br \/>\n    your old domain URL is hardcoded in any JSON-LD schema blocks, that<br \/>\n    conflicting signal can create inconsistency that may affect how Google<br \/>\n    interprets your site\u2019s authority.\n<\/p>\n<p>\n    <strong>Can I do a domain migration without losing any traffic at all?<\/strong>\n<\/p>\n<p>\n    A zero-traffic-loss migration is theoretically possible but extremely rare<br \/>\n    in practice. Even with perfect 301 redirects, Google takes time to process<br \/>\n    the change, and some short-term fluctuation is nearly universal.\n<\/p>\n<p>\n    What you can realistically achieve is a minimal-impact migration where<br \/>\n    traffic dips for 1\u20132 weeks and then fully recovers within a month.\n<\/p>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n<h4 class=\"wp-block-heading\">Additional Resources for Domain Migration SEO <\/h4>\n<p>Migrating to a new domain is a big project, and you\u2019ve done the work to protect your SEO. <\/p>\n<p>You have successfully set up your redirects, cleaned up your old links, and put a solid tracking system in place using AIOSEO and MonsterInsights.<\/p>\n<p>Now that the hard part is done, you can take a deep breath. Just give Google a little time to process the changes, and you should see your search traffic stabilize over the next 4 to 8 weeks. <\/p>\n<p>You may also want to check out these related guides:<\/p>\n<ul class=\"wp-block-list\">\n<li>\n        <a href=\"https:\/\/www.wpbeginner.com\/wp-tutorials\/how-to-properly-move-wordpress-to-a-new-domain-without-losing-seo\/\" title=\"How to Easily Move WordPress to a New Domain (Without Losing SEO)\">How to Easily Move WordPress to a New Domain Without Losing SEO<\/a>. A complete step-by-step guide to migrating your WordPress site using<br \/>\n        Duplicator, including pre-migration backups and post-migration checks.\n    <\/li>\n<li>\n        <a href=\"https:\/\/www.wpbeginner.com\/beginners-guide\/beginners-guide-to-creating-redirects-in-wordpress\/\" title=\"Beginner&apos;s Guide to Creating 301 Redirects in WordPress\">Beginner\u2019s Guide to Creating 301 Redirects in WordPress<\/a>. Learn how to set up individual 301 redirects using All in One SEO\u2019s<br \/>\n        Redirection Manager without editing any server files.\n    <\/li>\n<li>\n        <a href=\"https:\/\/www.wpbeginner.com\/tools\/seo-analyzer-tool\/\" title=\"How to Perform an SEO Audit and Generate Free SEO Report\">How to Perform an SEO Audit and Generate Free SEO Report<\/a>. A checklist-style walkthrough of the most important technical,<br \/>\n        on-page, and off-page SEO factors to review on any WordPress site.\n    <\/li>\n<li>\n        <a href=\"https:\/\/www.wpbeginner.com\/plugins\/how-to-fix-broken-links-in-wordpress-with-broken-link-checker\/\" title=\"How to Find and Fix Broken Links in WordPress (Step by Step)\">How to Find and Fix Broken Links in WordPress (Step by Step)<\/a>. How to use AIOSEO\u2019s Link Assistant and other tools to automatically<br \/>\n        detect and repair broken links across your site.\n    <\/li>\n<li>\n        <a href=\"https:\/\/www.wpbeginner.com\/plugins\/how-to-update-urls-when-moving-your-wordpress-site\/\" title=\"How to Easily Update URLs When Moving Your WordPress Site\">How to Easily Update URLs When Moving Your WordPress Site<\/a>. A quick guide to using Search &amp; Replace Everything by WPCode to<br \/>\n        update hardcoded URLs in your WordPress database after any migration.\n    <\/li>\n<\/ul>\n<p>If you liked this article, then please subscribe to our\u00a0<a href=\"https:\/\/youtube.com\/wpbeginner?sub_confirmation=1\" target=\"_blank\" rel=\"noreferrer noopener nofollow\" title=\"Subscribe to WPBeginner YouTube Channel\">YouTube Channel<\/a>\u00a0for WordPress video tutorials. You can also find us on\u00a0<a href=\"https:\/\/twitter.com\/wpbeginner\" target=\"_blank\" rel=\"noreferrer noopener nofollow\" title=\"Follow WPBeginner on Twitter\">Twitter<\/a>\u00a0and <a href=\"https:\/\/facebook.com\/wpbeginner\" target=\"_blank\" rel=\"noreferrer noopener nofollow\" title=\"Join WPBeginner Community on Facebook\">Facebook<\/a>.<\/p>\n<p>The post <a href=\"https:\/\/www.wpbeginner.com\/wp-tutorials\/how-to-verify-your-seo-is-intact-after-a-wordpress-domain-migration\/\">How to Verify Your SEO Is Intact After a WordPress Domain Migration<\/a> first appeared on <a href=\"https:\/\/www.wpbeginner.com\/\">WPBeginner<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>Changing your domain name is one of the scariest SEO decisions a WordPress site owner can make. Done right, your search rankings survive the move mostly intact. Done wrong, you can lose months of work overnight. I\u2019ve audited post-migration sites where everything looked fine on the surface, only for missing redirects, stale canonical tags, or [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":5457,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[1],"tags":[],"class_list":["post-5456","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-latest-news"],"jetpack_featured_media_url":"https:\/\/mlcqvjhyzqda.i.optimole.com\/cb:_akd.838\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/i0.wp.com\/frontlinenewsng.org\/wp-content\/uploads\/2026\/06\/how-to-verify-your-s-featured-PBKf3B.jpg?fit=680%2C385&ssl=1","jetpack_likes_enabled":true,"jetpack-related-posts":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/frontlinenewsng.org\/index.php?rest_route=\/wp\/v2\/posts\/5456","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/frontlinenewsng.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/frontlinenewsng.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/frontlinenewsng.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/frontlinenewsng.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5456"}],"version-history":[{"count":0,"href":"https:\/\/frontlinenewsng.org\/index.php?rest_route=\/wp\/v2\/posts\/5456\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/frontlinenewsng.org\/index.php?rest_route=\/wp\/v2\/media\/5457"}],"wp:attachment":[{"href":"https:\/\/frontlinenewsng.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5456"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/frontlinenewsng.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5456"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/frontlinenewsng.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5456"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}