The short version: deactivate on the old site → wait a moment → activate on the new site with the same license key + purchase email. Total time under 2 minutes when both sites are accessible.

When to use this doc

You already have a Royal Plugins Pro plugin running on one site and want to run it on a different site instead. Common scenarios:

If you're doing an initial activation on a brand-new site and haven't hit your seat cap, you don't need this doc — see Activation & Renewals → Activating a license instead.

Understand the 24-hour cache first

Every Royal Plugins Pro plugin caches its license state locally for 24 hours to avoid hitting the licensing server on every admin page load. This one design choice explains almost every "why is it doing that?" moment during a move.

Why this matters when you're moving: if you deactivate on the old site and immediately activate on the new site, the standard flow works fine because the server-side seat release happens before your new-site activation reaches the server. Timing only becomes an issue when the old site is offline / broken and you're relying on a remote deactivation to free the seat (covered below).

The standard move (both sites accessible)

Use this flow when you have wp-admin access to both the old site and the new site.

On the old site: deactivate the license

Log in to wp-admin on the site you're leaving. Go to the plugin's License page. Click Deactivate License. You'll see a confirmation within a couple of seconds. The Pro-tier features stop working on that site immediately.

Your data stays put. Deactivating removes the license, not your Pro-created content or configuration. Pro settings, feature data, and any Pro-created records stay in the database. If you re-activate a license on this site later, everything resumes as it was.

Give the seat release a moment

The seat is usually available on the licensing server within a few seconds. If you're moving quickly and both sites are open in adjacent browser tabs, you can go straight to the next step. If you hit an activation-limit error on the new site, wait 30–60 seconds and retry (see Activation limit conflict below).

On the new site: install and activate the plugin

If the plugin isn't installed yet on the new site, install it first (download the current zip from My Account → Downloads or install via WP-Admin → Plugins → Add New if a public-directory version exists). Activate the plugin in wp-admin.

On the new site: activate with the same key + email

Go to the plugin's License page. Paste your license key and the same purchase email you used on the old site. Click Activate License. Confirmation appears within a few seconds.

Verify Pro is live on the new site

The License page updates to show Active with the expiration date. Pro features become available in wp-admin. If the plugin ships a status/health check (some do; not all), use that to confirm the tier signal shows Pro-licensed.

If you forgot to deactivate (or lost access to the old site)

Sometimes the old site is unreachable — you handed it off to a client, the server was decommissioned, DNS was pointed away, or you just forgot to deactivate before wiping the install. In those cases, deactivate remotely from your account.

Log in to My Account

Go to my.royalplugins.com/my-account/. Sign in with the email you used at purchase.

Open the Active Sites view

Click Active Sites in the account menu (or open my.royalplugins.com/my-account/sites/ directly). You'll see every site currently holding a seat across all your Royal Plugins licenses.

Deactivate the old site remotely

Each row on the Connected Sites view has a Deactivate button in the Actions column. Cross-check the Site URL and site-name line to make sure you're picking the right one, then click Deactivate. The seat is released immediately on the licensing server — the site's next license check will pick up the change (usually within 24 hours of your remote deactivation; see the cache reality above).

Activate on the new site

Follow the standard flow from step 3 above. Because the seat was released remotely on the server side, activation on the new site works right away.

If the old site is still reachable, prefer to deactivate locally through wp-admin — it clears the local option and transient at the same time as releasing the server-side seat, so the old install is fully cleaned up. Remote deactivation frees the seat but leaves the old install thinking it's still licensed until its next check-in (harmless, but the local option data will hang around until the plugin catches up).

For a full walkthrough of the Connected Sites view (columns, "Last seen X ago" timestamps, how to tell similar-looking sites apart), see Connected Sites Dashboard.

Activation limit conflict during a move

If you deactivate on the old site and then immediately try to activate on the new site, you may occasionally get an "activation limit reached" error. This is a race between the server-side seat release and your new-site activation request.

What the error looks like

The License page shows an inline activation-failure notice that references your seat or activation limit for this license. Exact wording is returned by the licensing server and may vary; the signal is: the notice mentions your tier's seat cap being reached, not a bad key or a server-side error.

Fix

  1. Wait 30–60 seconds for the server-side seat release from your old-site deactivation to complete.
  2. On the new site, click Activate License again. Same key + email. It should succeed.

If the error persists past 2 minutes, the old-site deactivation may not have reached the licensing server (e.g., the old site's outbound HTTPS was blocked). Fall back to the remote deactivate from My Account flow to release the seat directly on the server.

Staging → production moves

Two common patterns here. Both are supported; pick the one that matches how you work.

Pattern A: build on staging, launch to production

You built the site at staging.example.com (or a temporary host URL like example.wpengine.com) and now it's launching to example.com.

  1. Do the WordPress URL switchover per your host's process (search-replace of the site URL in the database, DNS cutover, etc.).
  2. On the newly-launched production site, the license activation state generally migrates with the database. In many cases nothing else is needed — the plugin sees itself running at the new URL and the next license check-in reconciles.
  3. If the plugin is confused about which URL it's on (License page shows the old URL, or Pro features stay locked despite a valid license), deactivate and re-activate on production. This forces a fresh server call with the new site URL.
Keeping staging + production both running: if you want Pro on both staging and production at the same time, they count as two separate sites against your seat cap. Single-seat tiers can't do this. Multi-seat tiers can — but be sure you actually want both. Deactivating staging when the site launches is usually the cleaner move.

Pattern B: Pro on production, then clone to staging

The production site is licensed and running. You clone it to a staging URL for testing.

The staging clone will have a copy of the license option in its database, but the licensing server sees it as a distinct site URL. Two options:

Bulk moves (agency-tier customers)

If you're running a large portfolio and need to reshuffle a lot of seats at once — after a portfolio restructure, winding down a batch of client sites, or consolidating from multiple hosting accounts — there's no single "move everything" button. The workflow is:

  1. Log in to My Account → Active Sites.
  2. Deactivate the sites you're retiring, one at a time.
  3. Activate on the new sites in the same session (or over the following days — there's no time limit on when a released seat can be claimed).

If you regularly manage 20+ site moves per year and want to discuss a smoother workflow for your team, reach out at support@royalplugins.com.

Special situations

Moving to a site on a local development environment

Local dev URLs (*.local, *.test, localhost) can hold a seat like any other site — the licensing server treats them as distinct URLs. If you regularly spin these up and tear them down, you'll churn through seat activations. Deactivate before deleting a local site so the seat is released back to your pool.

Moving between two sites on the same domain (subdirectories or subdomains)

Each installation is a separate site from the licensing server's perspective. example.com and example.com/blog count as two seats if both are running the plugin. Same for store.example.com vs www.example.com. Deactivate the one you're leaving before activating the new one, same as any other move.

Restoring a backup that includes the license

If you restore a database backup that includes the Pro license option and that license was subsequently activated somewhere else, the restored site's local cache will claim it's licensed until the next check-in against the server. At that point the server tells the local plugin the seat was moved (returns not activated for this URL) and the local state clears. Deactivate and re-activate to reconcile immediately if you don't want to wait for the daily check.

Multisite networks

Multisite is supported, but how seats are counted depends on your network setup. If you're planning to run a Royal Plugins Pro plugin on a multisite network — or moving between two multisite networks — reach out before you activate so we can size the right tier. Single-site installs (the common case) don't need to think about any of this.

What doesn't move with the license

The license is a validation token — it doesn't carry any site content, settings, or history with it. When you move a seat:

If the sites share the same WordPress install (e.g., you're renaming a domain), a full database + files migration moves everything with it and no separate export is needed.

Still stuck?

Include the old site URL, the new site URL, your hosting provider for each, the plugin version, the exact error message from the License page, and screenshots of both the License page and My Account → Active Sites.

Contact Support