Guide

How to leave WP Engine: notice, backups and moving your sites

WP Engine needs 30 days' notice before your term ends. How to give it, take your own backups, move each site over SSH and switch DNS without losing orders.

Last updated
Published
Reading time
14 min

Leaving WP Engine is mostly a matter of order. Do these six things, in this order:

  1. Find your renewal date and give notice in time. WP Engine's terms need notice of non-renewal at least 30 days before the end of your term, and only the account Owner can cancel. Leaving mid-term does not end the bill.
  2. List everything WP Engine does for you beyond WordPress: DNS on its Advanced Network or Global Edge Security, LargeFS media in your own S3 bucket, must-use plugins, redirect rules in the User Portal, and any add-ons.
  3. Take your own complete copy: a full backup ZIP (the download link lasts 7 days), or files and database over the SSH Gateway.
  4. Build and test every site on the new host before you touch DNS.
  5. Switch over with a short DNS TTL, and on a shop, pause orders during the final sync.
  6. Only then let the WP Engine plan end, with offline backups kept. After termination you lose access to the User Portal and WP Engine won't help with the move.

The rest of this guide explains each step, with the commands.

Why people review their WP Engine plan

Reasons vary: plan changes, renewal prices, support, or the wider WordPress dispute. On 7 November 2026, WP Engine sold one plan online, Essential, with first-year pricing for new customers and "Product renewal pricing subject to change"; Business and Enterprise go through its sales team (WP Engine plans). WP Engine's lawsuit against Automattic is still running in a US federal court, with a jury trial listed from 19 October 2027 (docket). Whatever your reason, the steps below are the same.

How WP Engine's contract ends

Everything in this section comes from WP Engine's Terms of Service (updated 1 January 2026) and its cancellation guide (updated 7 October 2026). If you signed a custom order form, check it first: WP Engine says "Custom term plans can override standard terms".

Question What WP Engine's terms say
Does my plan renew automatically? Yes. It renews "for successive Renewal Terms each equal to the immediately preceding term" unless notice is given "no later than 30 days prior to the expiration of the active term" (§7(a)). Monthly charges "will automatically renew each month unless canceled" (cancellation guide)
Who can cancel, and where? "Only Owner level users can cancel a WP Engine hosting plan"; support staff "cannot initiate the process". In the User Portal: Billing, then the Support section, then the link under Modify plan ("Request cancellation" on premium accounts, "Cancel plan" on shared plans), then the cancellation form
How much notice? "plan cancellations require a 30 day notice via our cancellation form"
Can I leave mid-term? Only if WP Engine materially breaches the agreement. Otherwise "all remaining fees payable under the Agreement will immediately become due" (§7(b))
Will I get a refund? Fees "are not refundable except as expressly stated herein" (§6(a)). A prorated refund of fees paid annually in advance applies only when WP Engine ends the agreement for its own convenience (§7(c))
What happens afterwards? You "will no longer be able to access those Services or the User Portal", and WP Engine "will not be able to assist you with any site migration tasks". Keeping offline backups is your responsibility (§7(d), §11(e)). After the notice period, "all content will be deleted" (cancellation guide)
Who is the contract with? "WPEngine, Inc., a Delaware corporation" in Austin, Texas, under Texas law, with disputes in Travis County courts (§14(c), §15), including on the UK version of the page. If your order form names another WP Engine company, its terms apply

What this means in practice:

  • On an annual plan, the date that matters is 30 days before your term ends. Give notice before then even if the move isn't finished: access continues to the end of the term, and missing the date commits you to another full term.
  • On a monthly plan, give the 30 days' notice through the form, and finish the move inside that notice period.
  • Download your backups before you request cancellation. WP Engine advises the same.
  • In the EU, the EU Data Act's cloud-switching rules apply to some hosting contracts. Whether they change your notice or exit costs is a question for your legal adviser.

Step 1: list everything WP Engine does for you

Most failed moves miss something that lived outside WordPress. Go through each environment (production, staging and development) and note the following.

Item Where to look Why it matters when you leave
Environments and install names User Portal, Sites Each environment has its own SFTP users and SSH address
Domains and which network they use User Portal, Domains Since March 2025, Agency plan accounts have had to use the Advanced Network or Global Edge Security (GES) for DNS. Advanced Network domains point at wp.wpenginepowered.com; GES domains at a per-environment host on wpeproxy.com
Who holds your DNS zone Your registrar or DNS provider You change records there at switchover, so make sure you can log in
SSL, CDN and firewall Domains page; GES if you bought it On the Advanced Network, SSL and CDN are applied at Cloudflare's edge. GES adds a managed web application firewall and DDoS mitigation. All of it stops when DNS moves, so plan the replacement
LargeFS User Portal, LargeFS Offloaded media sits in your own S3 bucket; "those files no longer exist on WP Engine servers"
Must-use plugins and drop-ins wp-content/mu-plugins WP Engine adds mu-plugin.php (which loads wpengine-common, shown as "WP Engine System"), wpe-wp-sign-on-plugin, wpengine-security-auditor and force-strong-passwords. They are tied to WP Engine's platform
Redirect rules User Portal Rules set in the Portal live outside WordPress and outside your backup
Scheduled tasks wp cron event list WP-Cron events travel with the database; anything WP Engine runs for you on a schedule does not
Outgoing email Your SMTP or transactional-email plugin Check which service sends your site's mail, and that its DNS records (SPF, DKIM) are in your own zone
Portal services and add-ons User Portal Smart Plugin Manager, Site Monitoring and Site Reports settings and history stay behind; NitroPack (WP Engine's version) and Smart Search AI are WP Engine-licensed; a Headless Platform front end must be rehosted; Genesis and StudioPress themes come under a revocable licence in the terms
Git and SSH keys User Portal, Profile Repoint your deploy pipeline and remove keys you no longer need

Sources: WP Engine's SSH Gateway, Advanced Network, Global Edge Security, LargeFS (WP Engine's support article on configuring LargeFS), platform settings, Smart Plugin Manager, NitroPack and Smart Search pages, and its Terms of Service (§3).

If you manage many installs, you can collect versions and sizes in one pass from your own machine. WP Engine documents this loop pattern for running commands on several environments, and loops must run from your local machine:

Shell
for env in <env1> <env2> <env3>; do
  echo "== $env"
  ssh "$env@$env.ssh.wpengine.net" "cd /sites/$env && wp core version && wp db size --human-readable && du -sh wp-content/uploads"
done

Step 2: take your own copy

Use at least one of these routes for every environment you want to keep. Many teams use the ZIP as the safety copy and the SSH Gateway for the working move.

Option A: the backup ZIP

In the User Portal, open the environment's backups, choose a backup point and select Prepare ZIP (WP Engine backups).

  • Full Backup is "All files and the database". Partial ZIPs (database, themes, plugins including must-use plugins, uploads, other files) help with large sites.
  • The database is in the ZIP at wp-content/mysql.sql.
  • A prepared ZIP "can be downloaded from this page for up to 7 days", so download it straight away and store it off WP Engine.
  • WP Engine keeps 30 days of backups in the Portal. There is no automatic export to S3 or another service, and you can't export single tables.
  • LargeFS media is not on WP Engine's servers, so don't expect it in the ZIP. Your S3 bucket is your copy.

Option B: the SSH Gateway (rsync and WP-CLI)

The SSH Gateway gives you WP-CLI, the MySQL client, bash and Composer, and supports rsync and scp. Points to know:

  • Add an ed25519 public key in the User Portal (your profile, then SSH Keys). It works on every environment your user can access.
  • You connect as <env>@<env>.ssh.wpengine.net. Only /sites/<env>/ persists between sessions.
  • The gateway has a 10-minute timeout and allows 5 connections per user. Split big transfers, and use rsync, which resumes where it stopped.
  • From OpenSSH 9.0, scp needs -O to work with the gateway (check your version with ssh -V).

Export the database into the persistent private folder, copy it down, then delete it:

Shell
ssh <env>@<env>.ssh.wpengine.net "cd /sites/<env> && wp db export _wpeprivate/<env>.sql"
scp -O <env>@<env>.ssh.wpengine.net:/sites/<env>/_wpeprivate/<env>.sql ./<env>.sql
ssh <env>@<env>.ssh.wpengine.net "rm /sites/<env>/_wpeprivate/<env>.sql"

WP Engine describes _wpeprivate as "secure, hidden and persistent". wp db export passes extra flags to mysqldump and can also write to STDOUT with - (WP-CLI). Writing to a file first means a dropped connection costs you only the copy, not the export.

Copy the files with rsync. Re-run the same command until it finishes cleanly: -P keeps partial files and shows progress, and later runs transfer only what changed.

Shell
rsync -rltzvP \
  --exclude '_wpeprivate/' \
  <env>@<env>.ssh.wpengine.net:/sites/<env>/ ./<env>/

Leave WP Engine's must-use plugins in the copy for now and remove them on the new host once you have checked the folder (Step 3). That way you never delete one of your own must-use plugins by mistake.

Option C: the WP Engine API

For agencies with many installs, the Hosting Platform API can list installs and create backups (enabling the API, API reference).

  • An account Owner turns API access on (User Portal, Users, then API Access); credentials are generated per user.
  • The base URL is https://api.wpengineapi.com/v1, with HTTP Basic authentication. Every state-changing call (POST, PUT, PATCH, DELETE) is recorded in the Account Activity Log.
  • Keep the credentials out of your shell history, for example in a .netrc file:
Shell
# ~/.wpe-netrc (chmod 600):  machine api.wpengineapi.com login <api-username> password <api-password>
curl --netrc-file ~/.wpe-netrc https://api.wpengineapi.com/v1/installs

Creating a backup is a POST to /installs/<install_id>/backups; take the request body from the "Create a backup" entry in WP Engine's API reference. Turn API access off again, or delete the credentials, once you no longer need them.

Step 3: prepare the new host

Before you import anything:

  • Match the PHP version, or test on a newer supported one. The User Portal shows each environment's PHP version. If you are still on PHP 8.2 or older, read our guide to PHP 8.2's end of life first.
  • Write a fresh wp-config.php with the new database details. Keep your $table_prefix (check it with wp config get table_prefix) and your keys and salts. Leave out WP Engine's own settings (constants starting WPE_).
  • Remove WP Engine's must-use plugins and cache drop-ins on the new host: the four named in Step 1, plus any object-cache.php or advanced-cache.php drop-in, unless your new host tells you to keep a drop-in of its own.
  • Recreate redirects from the User Portal in the new host's format.
  • Set up outgoing email (an SMTP or transactional-email service), so contact forms and order emails keep sending after the move.
  • Plan LargeFS media: either keep the S3 bucket and connect it with an offload plugin, or copy the files into wp-content/uploads on the new host.

Step 4: import and test before you touch DNS

On the new host, import the database and confirm the site addresses:

Shell
wp db import <env>.sql
wp option get home
wp option get siteurl
wp cache flush && wp rewrite flush

If you keep the same domain, you don't need a search-replace. Do check for old WP Engine hostnames left in content (<env>.wpengine.com and <env>.wpenginepowered.com):

Shell
wp search-replace '<env>.wpenginepowered.com' 'www.example.com' --all-tables-with-prefix --skip-columns=guid --dry-run --report-changed-only

wp search-replace handles PHP-serialised data safely, which a plain SQL replace does not (WP-CLI). Read the dry-run report, then run it again without --dry-run. Repeat for any other old hostname it finds.

Test on the real domain without changing DNS. Point the domain at the new server on your own computer only, by adding a line to /etc/hosts (macOS, Linux) or C:\Windows\System32\drivers\etc\hosts (Windows):

203.0.113.10  www.example.com example.com

Or test from the command line (-k because the new certificate may not exist until DNS moves):

Shell
curl -k -I --resolve www.example.com:443:203.0.113.10 https://www.example.com/

Then check, page by page: the home page and key templates, log-in, forms, search, images (LargeFS media above all), wp core verify-checksums, wp plugin list --status=active, wp cron event list, and on a shop the basket, checkout (in test mode), account pages and any payment or stock webhooks.

Step 5: switch over

  1. Lower the DNS TTL on the records you will change, and wait for the old TTL to pass before switching. See the current TTL (the second column) with dig +noall +answer www.example.com and dig +noall +answer example.com.
  2. On a shop, pause orders so none are lost in the gap: for example ssh <env>@<env>.ssh.wpengine.net "cd /sites/<env> && wp maintenance-mode activate", then purge WP Engine's cache in the User Portal so visitors see the notice.
  3. Run a final sync: export the database again and re-run the same rsync (only changed files transfer), then import on the new host.
  4. Change the records at your DNS provider. Replace the Advanced Network CNAME (wp.wpenginepowered.com), the GES CNAME (<n>.wpeproxy.com) or WP Engine's A records with your new host's records. If you use CNAME flattening at the root domain, update that record too.
  5. Check the certificate. WP Engine's edge certificate stops applying once DNS moves. Many hosts can only issue a new Let's Encrypt certificate after DNS points at them, so check HTTPS straight after the change.
  6. Confirm and reopen: dig +short www.example.com returns the new address, the site loads over HTTPS, test orders work, and maintenance mode is off on the new host.

Step 6: after the move

  • Watch the new host's error logs, scheduled tasks and email delivery, and resubmit your sitemap in Search Console.
  • If you copied LargeFS media into uploads, check that image URLs no longer point at the bucket or WP Engine.
  • Remove WP Engine access you no longer need: SSH keys, API credentials and SFTP users.
  • Download a final full backup ZIP of every environment and keep it offline before the plan ends.
  • Let the plan end on its date. Don't delete installs early if you may still need the Portal for a backup.

What stays behind, and what to do

WP Engine feature What happens when you leave What to do
Must-use plugins (wpengine-common and others) Tied to WP Engine's platform Remove them on the new host
Page cache and object cache Provided by WP Engine's platform Use the new host's caching; remove WP Engine's drop-ins
Advanced Network or GES (CDN, SSL at the edge, and on GES a web application firewall with attack mitigation) Stops when DNS moves Set up your own CDN and firewall (for example your own Cloudflare account) or your new host's
LargeFS Media stays in your S3 bucket, not on WP Engine Reconnect the bucket with an offload plugin, or copy the media into uploads
Redirect rules in the User Portal Not part of your WordPress files Recreate them on the new host
Smart Plugin Manager, Site Monitoring, Site Reports Settings and history stay behind Export what you need first; replace the service
NitroPack (WP Engine's version), Smart Search AI WP Engine-licensed Buy direct from the vendor or replace
Headless Platform front end Hosted by WP Engine Rehost the Node.js front end elsewhere
Genesis and StudioPress themes Licence through your plan Check the licence terms before you keep using them
Backups in the Portal Gone after termination Keep your own offline copies

Moving to Corefinity

We'll move your sites for free. Free migration is included on every plan, done by our engineers.

Whoever moves your sites, a few things stay with you: giving WP Engine notice, changing the records at your DNS provider, and cancelling WP Engine once you're happy.

Where your sites go: a CoreCluster, your own managed cluster for many sites, priced by capacity, not by visits or sites. It starts from £300 + VAT, €330 + VAT or $350 a month, billed monthly on a rolling contract with no minimum term and no setup fee. Each site runs in its own container, with staging and production environments and backups (snapshots) every 6 hours, kept 30 days. It is hosted on Google Cloud in London, Northern Virginia (Ashburn), the Netherlands or Sydney, with 24/7 engineer support.

In place of GES's firewall: a web application firewall. The control panel's firewall has several layers (per-site IP and country rules, HTTP authentication and SSH access control), and Cloudflare's WAF is fully supported if you use your own Cloudflare account.

Moving one site? CoreStack is one fully managed site with its own staging environment, ordered online, from £150 + VAT, €165 + VAT or $175 a month.

More on WordPress hosting at Corefinity, and on how our support works.

Sources

All checked on 7 November 2026 unless stated.

Questions

WP Engine's terms renew your plan automatically unless you give notice no later than 30 days before the active term ends, and its cancellation guide says cancellations need 30 days' notice through its cancellation form. A custom order form can override the standard terms, so check yours first.

Only Owner-level users; WP Engine's support staff cannot start it for you. In the User Portal, open Billing, then the Support section, then the link under Modify plan ("Request cancellation" on premium accounts, "Cancel plan" on shared plans), and complete the form.

Only if WP Engine materially breaches the agreement. Otherwise all remaining fees become due at once, and fees are not refundable except as the terms expressly state.

You lose access to the services and the User Portal, WP Engine won't help with any migration, and after the notice period all content is deleted. Download a full backup of every environment before you request cancellation, and keep it offline.

In the User Portal, open the environment's backups, choose a backup point and select Prepare ZIP. Full Backup is all files and the database (at wp-content/mysql.sql). A prepared ZIP can be downloaded for up to 7 days.

In your own Amazon S3 bucket. WP Engine says offloaded files no longer exist on its servers, so the bucket is your copy. Reconnect it on the new host with an offload plugin, or copy the files into wp-content/uploads.

At your DNS provider, replace the Advanced Network CNAME (wp.wpenginepowered.com), the GES CNAME (a per-environment host on wpeproxy.com) or WP Engine's A records with your new host's records. WP Engine's edge SSL and CDN, and the GES firewall, stop applying once DNS moves.

Build and test the copy on the new host first and lower your DNS TTL. Then put the WP Engine site into maintenance mode, export the database and sync the files one last time, import on the new host and switch DNS.
{  Contact us  }

Let's Talk

Tell us about your platform and goals. Our engineers will help you find the right performance setup, no sales pressure, just expert advice.

By sending this message you agree to our Privacy Policy .