Skip to content
WP Visibility

Agency operations guide

Estimate an SEO Plugin Migration Before Quoting a Fixed Fee

Count the objects, templates, redirects, and settings involved, time a small pilot on staging, then build the quote from measured effort plus acceptance checks and contingency.

Published

On this page

Do not quote a fixed fee for an SEO plugin migration until you have counted what the site contains and timed a small pilot on a staging copy. Then build the quote from your measured minutes multiplied by the counted volume, add the verification work, name what is excluded, and set a contingency for the unknowns the pilot exposes.

A flat price for “migrate from plugin A to plugin B” hides the variables that decide the work: how many objects carry custom values, which settings the importer does not carry, how redirects are stored, and how much checking the client expects. Two sites on the same source plugin can need very different amounts of work.

Inventory the work and assumptions

Start with counts. Each line below becomes a driver in the estimate.

Driver How to count it Why it matters
Posts, pages, and custom post types wp post list --post_type=post,page --post_status=publish --format=count (add your custom types) Sets the size of the verification sample
Objects with custom SEO values Count posts carrying the source plugin’s title or description meta Custom values are what the import must carry
Terms with custom SEO Categories and tags with their own titles or descriptions Some importers skip term data
Templates per post type and archive The source plugin’s settings screens Re-entered by hand where the importer skips them
Redirect rules The source’s redirect screen or export; note pattern rules May move separately from the SEO import
Custom schema Pages with hand-written structured data Check whether the importer carries it
Other output Theme or plugins printing head tags Can cause duplicates after the switch
Special cases Multilingual, store, headless, multisite Each adds its own checks

For a Yoast source, a count like this shows how many posts store a custom description:

wp post list --post_type=any --post_status=publish --meta_key=_yoast_wpseo_metadesc --format=count

Then check coverage for the specific pair of plugins in the destination’s documentation of what its importer reads. WP Visibility’s import from Yoast, for example, finds posts that have a Yoast SEO title stored; a post with only a custom description and no custom title is not found and needs manual handling, per the Yoast migration documentation. Its All in One SEO import carries no sitewide settings, images, or category SEO, per the AIOSEO migration documentation. Rank Math documents its own Yoast import through its setup wizard or its Import & Export feature under Status & Tools, and recommends backing up the site before migrating (Rank Math’s Yoast migration guide, checked September 27, 2026).

Each gap in coverage is a line of manual labor in your estimate. Write it down as an assumption the client can see.

Count, pilot, then quote. Count the drivers: Objects, templates, redirects, and gaps. Time a pilot: About 20 URLs on a staging copy. Build the quote: Measured rates, acceptance, contingency.
An estimating sequence. The quote rests on your own pilot measurements; the diagram implies no typical duration or price.

Run a small discovery sample

A pilot turns guesses into measurements. On a protected staging copy of the site:

  1. Take a baseline for a sample of about 20 representative URLs: homepage, key service pages, posts with custom values, posts relying on templates, a category, a tag, a noindexed page, a page with a custom canonical, and a few redirecting old URLs.
  2. Run the destination plugin’s import preview, then the import, and time it.
  3. Re-enter the settings that did not import, and time it.
  4. Recreate a batch of redirects, including one pattern rule if the site has them, and time it.
  5. Verify each sample URL against the baseline (title, description, canonical, robots, social tags, structured data), and time the average per URL.
  6. Record every surprise: missing fields, variables that did not translate, duplicate tags, redirects that behave differently.

The switching process itself, including backups and rollback, is covered in switching SEO plugins with a verification plan. The pilot follows the same steps at a smaller scale and adds a stopwatch.

Turn measurements into an estimate

Multiply each measured rate by the counted volume. The worksheet below is illustrative: the minutes are placeholders showing the arithmetic, not typical times or market rates. Replace every figure with your own pilot measurements.

Line item Driver Pilot rate (illustrative) Volume Minutes
Baseline capture Sample URLs 4 per URL 40 160
Import and preview review Per run 30 per run 2 runs (staging, production) 60
Settings re-entry Per site 60 1 60
Manual fixes for objects the import missed Per object 3 per object 25 75
Redirect recreation Per rule 2 per rule 80 160
Output verification Sample URLs 5 per URL 40 200
Sitemap resubmission and checks Per site 20 1 20
Change window and follow-up Per site 90 1 90
Subtotal 825 (13.75 hours)

Apply your own loaded hourly cost to the subtotal, then add contingency. How much contingency depends on what the pilot exposed; a pilot with no surprises supports a smaller buffer than one that found untranslated variables and pattern redirects.

Note the verification sample: 40 URLs here, not every page. Agree the sample size with the client. Checking every URL on a large site is a different, larger quote.

Define acceptance and contingency work

A fixed fee needs a finish line both sides recognize. Write acceptance criteria as checks, not impressions:

  • Every sample URL shows the expected title, description, canonical, and robots directive.
  • The listed redirects return the expected status and destination in one hop.
  • The new sitemap loads, lists the expected public URLs, and is submitted in Search Console.
  • Only one set of SEO head tags is printed on each sample URL.
  • Deliberate exclusions (noindexed pages) remain excluded.

Then list exclusions and how they will be handled if they appear:

Found during the job Handling
Source features with no equivalent in the destination Documented; alternative quoted separately
Custom schema rebuilt by hand Change order, per page
Content problems discovered (thin pages, wrong facts) Reported, not fixed in this job
URL changes or redesign requested mid-job Separate project
Search traffic questions after launch Covered by the agreed follow-up period only

State that no migration can guarantee unchanged rankings. The fee covers the work and the acceptance checks, not a search outcome.

Where WP Visibility changes the work, and where it does not

If WP Visibility is the destination, some lines shrink. Its importer reads data from Yoast, Rank Math, SEOPress, The SEO Framework, and All in One SEO, with coverage that differs by source. For Yoast, the migration documentation describes a preview of post changes before anything is written, source data left untouched, and posts processed in batches of 200. The preview covers posts only; the imported settings and category and tag data apply on the first live batch, so they need their own check. The source data staying in place makes a return path cheaper to plan.

Other lines stay manual. Templates per post type, social defaults, verification codes, and redirects do not come across with the SEO import. Redirects go through a separate CSV import on the Redirects page, which appears once the Redirects module (off by default) is turned on. It reads its own source,target,status layout, Redirection plugin exports, and Rank Math’s redirections CSV; other exports, such as Yoast Premium’s, need reshaping first (Redirect a Changed URL). The sitemap is served at /sitemap.xml, which may differ from the source plugin’s address, so resubmission belongs in every estimate. Budget those lines from your pilot, whichever plugin you move to.

Estimate checklist

  • Objects, terms, templates, redirects, schema, and special cases are counted.
  • Importer coverage for this source and destination is documented, with gaps listed.
  • A timed pilot on staging produced per-unit rates.
  • The estimate multiplies measured rates by counted volumes.
  • Acceptance criteria and the verification sample size are agreed.
  • Exclusions, change-order rules, and contingency are written into the quote.

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.