This is a research guide based on cited documentation. It is not a report of firsthand testing. Our editorial method

Why the vocabulary matters on a membership site

On a brochure site, the database barely changes between Monday and Friday. On a course site it changes every minute: a lesson marked complete, a quiz attempt, a renewal payment, a new account. Migration terms that sound procedural (final sync, content freeze, rollback) are really decisions about those records.

Use the definitions below to read a migration quote or your host's migration docs. If a quote never mentions a freeze or a final database sync, ask how it handles writes made after the first copy.

Glossary with the risk each term signals

TermPlain definitionRisk for a membership or LMS siteQuestion to ask
Database export (dump)A file of SQL statements that recreates the database; wp db export runs mysqldump with the credentials in wp-config.phpAnything written after the export is not in itWhen is the final export taken, and what is frozen before it?
Serialized dataPHP values stored as text with length markers, for example s:5:"hello";A naive text replace changes the string but not its length marker, which can break plugin settingsWill URLs be changed with a serialization-aware tool?
Search-replaceChanging one string, usually the old URL, everywhere in the databaseMissed tables leave links or settings pointing at the old domainWhich tables are included, and is there a dry run first?
Dry runRunning search-replace to report changes without saving themSkipping it means discovering mistakes on the live databaseCan I see the dry-run report?
GUIDA permanent identifier column on postsWordPress says never to change it, under any circumstancesIs the guid column excluded from replacement?
siteurl and homeThe WordPress Address and Site Address settingsIf wrong, logins and redirects loop to the old domainAre they set in the database or hard-coded in wp-config.php?
Content freezeA window when nobody edits content or takes actions that write dataOrders, enrollments and progress made during the freeze can be lost or duplicatedWill checkout and registration be paused, and for how long?
Final sync (delta)Copying changes made since the first copy, just before switchingWithout it, the new host is missing the latest recordsIs the database re-copied at cutover, and are files synced again?
CutoverThe moment traffic switches to the new host, usually a DNS changeStudents on old cached DNS keep writing to the old host for a whileWhat happens to writes on the old host after cutover?
RollbackSwitching back to the old host if acceptance checks failRecords created on the new host must be carried back or lostHow long does the old host stay live, and what is the rollback trigger?
WP-CronWordPress's scheduler, triggered on page loadsRenewals, drip emails and expirations may run on both hosts or neitherWill cron be disabled on the old host at cutover?

Serialized data and search-replace, in more detail

PHP's manual describes serialize() as generating a storable representation of a value. In that format a string is stored with its length (s:size:value; in the format notes on the manual page), so the string hello is stored as s:5:"hello";. If a plain SQL replace changes http://old.example to https://new.example inside a serialized option, the string grows but the length marker does not, and PHP can no longer read the value. The WordPress migration guide warns exactly this: some themes and widgets store values with the length of your URL marked, and when it changes, things break.

WP-CLI's search-replace command states that it handles PHP serialized data and does not change primary key values. Its useful flags for a migration are --dry-run (run the whole operation and report, but do not save), --all-tables (include every table regardless of prefix, which catches custom tables some LMS and membership plugins create), --precise (force PHP for all columns, slower but more reliable for complex serialized data), --export (write the transformed data to an SQL file instead of the database) and --report-changed-only.

Worked example: a dry run that reports 0 replacements in a plugin's custom progress table when you expected hundreds usually means the default run did not include that table. WP-CLI documents --all-tables as covering every table regardless of prefix, even if it is not registered with WordPress's $wpdb object; rerun the dry run with it before the real replacement.

GUID, siteurl and home: what changes and what never does

WordPress's migration documentation is unusually blunt about the GUID column: never, ever change it, under any circumstances. The GUID is an identifier, not a link, even though it looks like a URL. WP-CLI's own examples skip it with --skip-columns=guid.

The two settings that do change are Site Address (home), the address people type to reach the site, and WordPress Address (siteurl), where the core files live. The guide notes both should include https:// and no trailing slash. They can be hard-coded in wp-config.php, which WordPress calls not necessarily the best fix; once hard-coded, they can no longer be edited on the General settings page, which surprises the next person who tries.

If the domain does not change, the guide says you can move by copying files and database, with no search-replace at all. Many course-site moves fall in this category, which removes the riskiest step.

Content freeze, final sync and cutover on a live course site

The cleanest sequence is: copy everything to the new host and test; announce a short window; pause checkout and registration; take the final database export; import it on the new host; switch DNS; disable scheduled jobs on the old host. The freeze is what makes the final export complete.

WP-Cron matters here. The WordPress handbook explains that WP-Cron is only triggered on page load and that a task scheduled for 2:00 PM may not run until the next page load. During cutover, visitors with old DNS answers still load pages on the old host, which can fire renewal or expiry jobs there while the new host runs them too. Decide which host owns scheduled work, and disable it on the other.

  • Freeze length: long enough to export, import and spot-check one enrollment and one order.
  • Paused actions: checkout, registration, quiz submission if possible, admin edits.
  • After cutover: check the old host's orders and user tables for records created after the export.
  • Rollback: keep the old host intact and its database untouched until acceptance checks pass.

Reading a migration quote with this glossary

A quote that lists only "transfer files and database, update URLs" covers the brochure-site case. For a course site, expect it to name the tool used for URL changes, whether a dry run is shared, the freeze window, whether a final database sync is included, who disables cron on the old host, and how long the old host is kept for rollback. If those are missing, they are not necessarily excluded, but you should ask before agreeing.

Questions before you decide

Why can't I just use find and replace in phpMyAdmin to change my domain?

Serialized PHP values store the length of each string. A plain replace changes the text but not the length marker, and WordPress's migration guide warns this can break themes and widgets. WP-CLI search-replace handles serialized data correctly.

Should the GUID column be changed when the domain changes?

No. WordPress's migration documentation says never to change the contents of the GUID column under any circumstances. WP-CLI's examples skip it with --skip-columns=guid.

Do I need search-replace if my domain stays the same?

Usually not. WordPress's guide says that if the database and URL remain the same, you can move by copying files and database. You still need a freeze and final sync on a site that takes orders or tracks progress.

Sources & verification

Product details and prices can change. Check the linked provider before buying.

  1. WordPress Developer Resources: Moving WordPress Accessed 30 Oct 2026
  2. WP-CLI: wp search-replace Accessed 30 Oct 2026
  3. WP-CLI: wp db export Accessed 30 Oct 2026
  4. PHP manual: serialize Accessed 30 Oct 2026
  5. WordPress Plugin Handbook: Cron Accessed 30 Oct 2026

Sources link directly to providers. Product buttons may use separately labeled affiliate links. Read our disclosure.