Skip to content
WP Visibility

Switching SEO plugins guide

Plan an SEO Plugin Migration Across Client Sites

Stage a portfolio switch through an inventory, a pilot on the least typical sites, per-site acceptance checks, and a recovery decision recorded before each switch.

Published

On this page

Treat a portfolio migration as one short procedure run on each site, not as one bulk job. Inventory how the sites differ, pilot on the least typical ones, accept each site against written checks, and record before every switch how you would recover it. Schedule by batches with room for exceptions rather than promising a completion date, because the sites that differ from the pattern set the pace.

The single-site procedure lives in How to Switch SEO Plugins With a Verification Plan. This guide covers what changes when you run it many times.

Inventory source differences

Build one sheet with a row per site before you schedule anything. The columns that change the work are:

Column Why it matters
Source plugin and version Decides which fields and term data an import can read
Term SEO in use SEOPress, The SEO Framework, and All in One SEO term data is re-entered by hand
Redirect count and rule types Pattern, case-insensitive, and conditional rules need conversion
Custom or hand-written schema Not imported from any source
SEO plugin content blocks May stop rendering when the plugin is deactivated
Sitewide rules that differ from defaults Only the separator and homepage title and description can import (none from All in One SEO); the rest are manual settings
Verification method A meta tag printed by the old plugin stops with it
Staging available, backup restore tested Without both, the site is not ready
Client contact and change window Who approves, and when the switch can happen

WP-CLI can gather much of this from your workstation. Its configuration handbook, checked September 27, 2026, describes named aliases such as @staging with their own SSH and path settings, alias groups that combine several aliases under one name, and the --url parameter that selects a site in a multisite network. Its guide to running commands remotely, checked September 27, 2026, runs one command against such a group. With aliases defined, an inventory pass looks like this:

wp @client-a plugin list --status=active --fields=name,version
wp @client-a db query "SELECT COUNT(*) FROM wp_termmeta WHERE meta_key LIKE 'rank_math%'"
wp @client-a db query "SELECT COUNT(*) FROM wp_posts WHERE post_content LIKE '%application/ld+json%'"

Adjust the table prefix per site. Once WP Visibility is installed on a staging copy, wp @client-a-staging visibility import yoast --dry-run adds the number of posts each import would change. In version 2.10.3 the import finds posts by the source’s title field (for Yoast, _yoast_wpseo_title), except All in One SEO, which it reads from its own table. A post that has a custom description or noindex setting but no title field is therefore not counted or imported; add a count of those to the sheet. One license key covers every site, client sites included; see Use the Same License on Another Site.

A portfolio in batches. Inventory: One row per site with the columns that change work. Pilot: The least typical sites, fully timed. Batches: Same procedure per site, accepted one by one.
The pilot turns unknowns into worklist items for the rest of the portfolio. Each site is still accepted on its own checks before the next batch starts.

Choose the pilot

Pick two or three pilot sites that are the least typical in the portfolio, not the easiest. Useful pilots include:

  • One site per source plugin you have.
  • The site with the most redirects, or the most pattern rules.
  • A site whose source has no term import, with many categories.
  • A site with custom schema or SEO plugin blocks.
  • A store or multisite network, if you manage one.

Run the full procedure on each pilot and time every step. The pilot’s purpose is to turn unknowns into worklist items and time estimates for the rest of the portfolio. Anything the pilot reveals, such as a separate X image policy or an old verification tag, becomes a column in the sheet.

Run the per-site transfer

Every site gets the same sequence, and every step leaves a record:

  1. Back up and prove the restore. WordPress’s backup documentation, checked September 27, 2026, says a typical site needs both the database and the files to be restored. Restore once to staging.
  2. Capture the baseline. Save the rendered head of one URL per page type, the redirect export with its row count, the settings screenshots, and the structured data on one URL per template.
  3. Rehearse on staging. Install WP Visibility, run the dry run, run the live import, and apply the settings worklist from Audit the Sitewide SEO Defaults a Metadata Import Leaves Behind.
  4. Move redirects with the conversion and testing steps in Convert Redirect Exports Between SEO Plugins.
  5. Accept the staging site against the checks below.
  6. Switch production in the agreed window: fresh backup, repeat the steps that passed, deactivate the old plugin, clear caches.
  7. Accept production against the same checks.

The SEO import runs in batches of 200 posts from WP-CLI and skips posts whose values already match, so a run cut short can be started again safely, provided nobody edited imported values in between. The redirect import is per site, through the Redirects page or its REST route, and needs the Redirects module, which is off by default.

Per-site acceptance checks

A site is done when every check passes or has a recorded exception:

Check Pass condition
Sample output Title, description, canonical, and robots match the baseline, or each difference is intended and noted
Indexing The source’s noindex list and WP Visibility’s reconcile; see Check Noindex and Inherited Defaults After an SEO Plugin Switch
Redirects Data rows in each file equal created plus skipped; test requests return the expected status and location
Term SEO Sampled category and tag archives match, or were re-entered
Structured data Each missing node has a decision
Content blocks No SEO plugin block renders empty
Verification and sitemap Verification codes present, sitemap submitted at /sitemap.xml
Client actions Forms, checkout, and logins still work

Keep the evidence (the diff files, test output, and screenshots) with the site’s record. It lets someone other than the person who ran the switch confirm what happened.

Track exceptions and recovery decisions

Keep an exception log with the site, the finding, the decision, and who approved it. Exceptions repeat across sites, so a decision made once can be applied again with the client’s agreement.

Before each production switch, write down which recovery route applies if acceptance fails:

Route What it does Limit
Reactivate the old plugin Its data was never changed by the import, so it resumes with its old values Edits made in WP Visibility do not go back to it, and redirect rules added in WP Visibility stop firing once WP Visibility is deactivated
Restore the backup Returns the whole site to the backup point Loses orders, comments, and content created since; plan how to keep them
Fix forward Correct the specific finding in WP Visibility Needs someone available during the window

For a store or a busy site, restoring an old database is often the last choice, so agree the route with the client in advance.

Hand off each site

Close each site with a short record for the client or the next person on the account: the switch date, the old and new plugin versions, the settings worklist with its outcomes, the exception log, and what to watch over the following weeks, such as indexing reports for the pages in the sample. There is no fixed period after which a migration is proven complete, so agree how long you will keep the old plugin’s data in place before anyone deletes it.

Move to the next batch when the current one is accepted, not when the calendar says so.

Read next

WordPress SEO with your own assistant.

WP Visibility is $99 a year for unlimited sites, client sites included, with a 30-day refund. Use its SEO tools in WordPress or connect a supported assistant. Read how proposal review and permissions work.