Skip to content
WP Visibility

Switching SEO plugins guide

Verify Category and Tag SEO When Switching Plugins

Inventory the categories, tags, and custom taxonomy terms with their own SEO values, run the transfer for your source, and check each archive page against a baseline.

Published

On this page

Category and tag SEO needs its own check during a plugin switch, because every source stores it differently and the import preview does not show it. List the terms that carry their own title, description, canonical, or indexing choice, find out whether your source’s term data transfers at all, and compare each archive page’s published tags before and after.

This guide is about moving term data. Whether a category or tag archive should be indexed at all is a separate question. The post side of the switch is covered in How to Switch SEO Plugins With a Verification Plan.

How each source stores term SEO

The storage format decides what an importer can read. The right-hand columns describe WP Visibility 2.10.3.

Source Where term SEO lives Imported Not imported
Yoast SEO One option, wpseo_taxonomy_meta, keyed by taxonomy and term ID Title, description, canonical, noindex Other fields, such as social titles and images; an explicit index choice (the term inherits)
Rank Math Term meta under rank_math_ keys Title, description, canonical, noindex, Facebook image Other rank_math_ term fields; terms without a Rank Math title are not found at all
SEOPress Term meta under _seopress_ keys Nothing All term SEO
The SEO Framework One term meta row, autodescription-term-settings Nothing All term SEO
All in One SEO Its own custom term table Nothing All term SEO

Storage locations checked September 27, 2026 against Yoast’s taxonomy meta class, Rank Math’s metadata class, SEOPress’s list of post and term metas, The SEO Framework’s database page, and AIOSEO’s REST API guide.

Two details change what you check. Entries in Yoast’s option for terms that no longer exist are skipped. Rank Math terms are found by their stored title, so a term with only a description or only a noindex choice keeps WP Visibility’s defaults. The source docs for Yoast, Rank Math, and SEOPress have the full field lists.

Inventory the terms that carry metadata

A site can have many terms and only a few with custom SEO. Find the few. Replace wp_ with the prefix that wp db prefix prints.

On a Yoast site, save the option and count its entries per taxonomy:

wp option get wpseo_taxonomy_meta --format=json > yoast-terms.json
wp eval '$m = get_option( "wpseo_taxonomy_meta" ); foreach ( (array) $m as $tax => $terms ) { echo $tax, "\t", count( (array) $terms ), "\n"; }'

On a Rank Math site, list every term meta row and mark which terms have a title:

wp db query "SELECT term_id, meta_key, meta_value FROM wp_termmeta WHERE meta_key IN ('rank_math_title','rank_math_description','rank_math_canonical_url','rank_math_robots','rank_math_facebook_image_id') ORDER BY term_id" > rankmath-terms.tsv

On any other source, find the plugin’s term meta keys first:

wp db query "SELECT meta_key, COUNT(*) FROM wp_termmeta GROUP BY meta_key ORDER BY meta_key"

All in One SEO keeps term data in its own table, not term meta, so this query will not find it. Its content export, under All in One SEO → Tools → Import/Export, has a Taxonomies tab that exports that data as JSON or CSV (AIOSEO’s import and export guide, checked September 27, 2026).

From the result, build a sheet with one row per term: taxonomy, term ID, archive URL, and the stored title, description, canonical, and indexing value. Include custom taxonomies such as product categories, not only categories and tags. Mark three kinds of row, because they are the ones most likely to be missed:

  • Sparse terms: a description or noindex choice with no custom title.
  • Deliberate indexing rules: a term set to noindex, or set to index inside a taxonomy that is otherwise hidden.
  • Custom canonicals: a term that points its archive at another URL.
Checking term SEO in a switch. Inventory terms: Every term with its own title, rule or canonical. Staging live import: Term data is written on the first live batch. Diff archive pages: Compare published tags against the baseline.
Term data is not in the import preview, so the check depends on a live staging run and a before and after comparison of archive pages.

Know what the preview does not cover

WP Visibility’s import preview counts the posts that would change and shows up to ten of them with their title and description before and after. It does not list terms. Term data is written on the first batch of the live import, along with the separator and homepage settings.

So a clean preview says nothing about categories and tags. To see the term result before production, run a live import on a staging copy, followed by the checks below.

Where imported values land

After the import, WP Visibility keeps term SEO in one term meta row, _wpvis, per term. The term edit screen under Posts → Categories or Tags (and the equivalent screen for other public taxonomies) shows three fields: Search title, Search description, and Search engine indexing. Quick edit does not show them.

Two imported values have no field on that screen in 2.10.3:

  • Canonical. It prints on the archive as stored, on page 2 and later too, unless the archive is noindexed. Read it with wp term meta get <term-id> _wpvis --format=json.
  • Rank Math’s term social image. It is used as that archive’s og:image. Without it, a term archive uses the site’s default social image, if one is set.

If an imported canonical is wrong, rewrite the row without it. Get the JSON, remove the canonical key, and save back every other key. In this example the row held only a title and a canonical:

wp term meta get 42 _wpvis --format=json
wp term meta update 42 _wpvis '{"title":"Pruning guides {sep} {site}"}' --format=json

Take a database backup before editing meta directly.

Check term pages against the baseline

Before the switch, save the published head of a small sample of archives while the old plugin is active. After the staging import, save it again and compare. An illustrative sample for garden.example:

Archive Why it is in the sample
/category/pruning/ Custom title and description
/category/pruning/page/2/ Pagination with a custom title
/tag/seasonal/ Set to noindex
/tag/compost/ Description only, no custom title
/plant-type/roses/ A custom taxonomy term
/category/old-offers/ A custom canonical

For each URL, capture the title, description, canonical, and robots tag:

for u in /category/pruning/ /category/pruning/page/2/ /tag/seasonal/ /tag/compost/ /plant-type/roses/ /category/old-offers/; do
  echo "== $u"
  curl -s "https://garden.example$u" | grep -Eio '<title>[^<]*</title>|<meta name="description"[^>]*>|<link rel="canonical"[^>]*>|<meta name=.robots[^>]*>'
done > terms-after.txt

Run the same loop against the baseline copy and diff the two files. Read each difference as one of these:

Difference Likely cause Action
Title now uses the archive template Source has no term import, or the old title came from the old plugin’s own archive template Re-enter on the term edit screen, or adjust the Archive title template setting
Title lost a word A source variable was removed See Translate SEO Title Variables
Noindex gone Term not found, or source has no term import Set Noindex on the term
Term now noindexed A taxonomy-wide rule with no explicit index override Set Index on the term
Canonical now points at the archive itself Source has no term import, or the term was not found Decide whether the old canonical is still needed

Indexing differences have their own procedure in Check Noindex and Inherited Defaults After an SEO Plugin Switch.

Re-enter what did not come across

For SEOPress, The SEO Framework, and All in One SEO, plan to type the values in by hand from your sheet, one term at a time, on the term edit screen. Do it while the old plugin’s data is still in the database, and before you deactivate it, so you can copy from the source screens. Canonicals from these sources have no field to receive them; decide whether each one is still needed, and if it is, consider a redirect instead of a canonical when the old archive should no longer exist.

Checklist

  • Sheet of every term with custom SEO, including custom taxonomies.
  • Sparse, deliberately indexed, and canonical terms marked.
  • Staging live import run, since the preview omits terms.
  • Archive sample diffed before and after, including a page 2.
  • Missing terms re-entered, and the sheet kept with the migration record.

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.