Skip to content
WP Visibility

Switching SEO plugins guide

Preserve Social Titles and Images When Moving Between SEO Plugins

Record each page's Open Graph and X tags, learn which social fields your source hands over, and decide by hand on separate X images and external image URLs.

Published

On this page

Record the Open Graph and X tags your most shared pages publish before the switch, check which social fields your source plugin’s import carries, and compare the tags again afterward. Social titles and descriptions usually transfer. Images are where differences appear: a separate X image, an image given as an external URL, and a source’s fallback rules do not come across as they were.

This guide covers keeping social overrides through a migration. For a single page whose preview looks wrong on an ordinary day, use Fix the Wrong Image in a Social Link Preview.

Which social fields each source hands over

WP Visibility 2.10.3 has one social image per post, used for Open Graph, plus separate social and X titles and descriptions. The import maps source fields into those:

Source Social title and description Social image X title and description Separate X image
Yoast SEO Yes Yes, when it is a media library item Yes Not imported
Rank Math Yes Yes, when it is a media library item Yes Not imported
SEOPress Yes Yes, when its URL matches a media library item Yes Not imported
The SEO Framework Yes Yes, by media ID Yes Not imported
All in One SEO Yes Not imported Yes Not imported

Three details matter. The import reads the SEOPress image as a URL and looks that URL up in the media library; an external URL, or one that does not resolve to a library item, is skipped. An image given as an external URL is skipped for every source. And Rank Math is the only source whose category and tag social image comes across, for terms that also have a Rank Math SEO title; WP Visibility then uses it for that archive, although the term edit screen has no field to change it. The field-by-field mapping for Yoast SEO and Rank Math is in Migrate from Yoast SEO and Migrate from Rank Math.

One limit applies to the first four rows. For those sources, WP Visibility 2.10.3 finds the posts to import by the source’s SEO title field alone (_yoast_wpseo_title, rank_math_title, _seopress_titles_title, _genesis_title); All in One SEO posts are found by its own table instead. A post with social overrides but no SEO title field in one of those four sources is skipped, and its social fields stay behind.

Social defaults set in the old plugin’s settings, such as a default image or an X handle, are not imported for any source.

How the social image is chosen. Social image: The post's own image, if imported or set. Featured image: Used when there is no social image. Default image: The site setting, used last.
WP Visibility picks one image per page for every network. A separate X image or an external image URL from the old plugin is not part of this chain.

How WP Visibility fills the tags

The Open Graph protocol’s specification, checked September 27, 2026, lists og:title, og:type, og:image, and og:url as the basic properties and describes og:image:width, og:image:height, and og:image:alt for image details. WP Visibility fills them this way:

  • og:title and og:description use the post’s Social title and Social description, or its search title and description when those are empty.
  • og:image uses the post’s Social image, then its featured image, then the site’s Default social image, then nothing. The full-size file is used with its width, height, and media library alt text. An imported social image that has since been deleted from the media library prints no og:image at all; it does not fall back.
  • twitter:title and twitter:description print only when an X title or description is set. No twitter:image is printed. X’s cards guide (an archived copy from January 1, 2026, checked September 27, 2026) says the card processor looks for the X tag first and falls back to the matching Open Graph tag, so X uses the Open Graph image.

So a source that used a separate X image now shares the Open Graph image on X as well. A source whose fallback chain differed, for example by picking an image from the content, now falls back to the featured image and the default. The full order is in Set a Default Social Image.

Build a test set with deliberately different values

Values that happen to match hide mapping errors. On a staging copy with the old plugin active, create or pick posts where every channel has a different value:

  1. A post with a custom SEO title, a Facebook or Open Graph title, a different X title, a social image, and a different X image.
  2. A post with a social title but no custom SEO title.
  3. A post whose social image is an external URL, not a media library item.
  4. A post with only a featured image and no social image.
  5. A post with no image at all.
  6. A category with its own social image, if your source supports one.

Use images you are free to publish and give them distinct file names, such as og-test-a.jpg and x-test-a.jpg, so the output shows which one was chosen.

Record and compare the shared-page metadata

Capture the social tags for each test post and for your ten most shared URLs, before and after the staging import:

for u in /spring-planting/ /how-to-prune/ /category/pruning/; do
  echo "== $u"
  curl -s "https://staging.garden.example$u" | grep -Eo '<meta (property|name)="(og|twitter):[^"]*" content="[^"]*"'
done > social-after.txt

The paths are illustrative. Compare with the baseline file and read each difference:

Difference Cause Action
og:image changed to the featured image Source image was an external URL, was not imported from this source, or the post was skipped for having no SEO title field Upload the image and set it as the post’s Social image
og:image changed to the site default No social image imported and no featured image Set a social or featured image
og:title changed to the search title The post had no SEO title field in the source (any source but All in One SEO), so the import skipped it Set its social fields by hand
No twitter:image Expected; X uses og:image Decide whether one image suits both
twitter:title missing No X title in the source; X uses og:title None, unless you want a different X title
Two sets of og: tags The old plugin or the theme still prints them Turn one off before going live
og:image:alt missing The media library item has no alt text Add it in the media library

Decide on the fields that did not come across

Write down a decision for each gap rather than leaving the defaults to decide:

  • Separate X images. WP Visibility uses one image per post for every network. Where the X image carried a different crop or text, choose the image that works for both and set it as the Social image.
  • External image URLs. Upload the file to the media library, then set it in the Social sharing panel of the WP Visibility sidebar. The classic editor’s metabox has no social fields.
  • Social defaults. Set the Default social image, the X (Twitter) site handle, and the Twitter/X card type in the Social section.
  • Archives. Categories and tags use the default image unless a Rank Math term image was imported. Choose a default that suits archive pages.

Refresh cached previews after the switch

Networks keep their own copy of a preview. Meta’s webmaster sharing guide, checked September 27, 2026, says images are cached by URL and are not updated unless the URL changes, and that its Sharing Debugger triggers a new scrape of the page. After the production switch, run your most shared URLs through the Sharing Debugger and LinkedIn’s Post Inspector, which LinkedIn Help, checked September 27, 2026, names as the tool for refreshing a URL whose preview shows an old cached image. The WP Visibility doc on wrong previews lists the tools per network.

Checklist

  • Social tags captured for the most shared URLs before the switch.
  • Test posts with deliberately different values run through a staging import.
  • Every image difference traced to its cause.
  • Separate X images and external URLs given explicit replacements.
  • Social defaults set, and network caches refreshed after going live.

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.