A staging site is a private copy of your live WordPress site where you can test plugin updates, theme changes, and core upgrades without any risk to the site your customers actually see. Every Ultra Web Hosting account has the tools to run one, and this guide covers both the one-click way (WordPress Toolkit or Softaculous in cPanel) and the manual way, plus the single mistake that can wipe out live orders when you push changes back to production.
- Why You Never Test Updates on a Live Site
- Two Ways to Build a Staging Site
- Option A: One-Click Staging in cPanel
- Option B: Manual Staging, Step by Step
- Keep Staging Private and Out of Google
- Make and Test Your Changes
- Push Staging Back to Production
- Clean Up and Delete the Staging Copy
- A Warning for WooCommerce and Membership Sites
Clone, Test, Push, Delete
A staging workflow is four moves. Clone your live site to a private staging area, make and test your changes there, push the safe changes back to production, and delete the staging copy when you are done. The one-click tools in cPanel handle the clone and the push for you.
- Clone to a staging subdomain with WordPress Toolkit or Softaculous
- Test updates, plugins, and redesigns with zero risk to the live site
- Push files back to production once you are happy
- Never blindly push the database over a live store
Pushing the Database Overwrites Live Data
The one step that catches people out: when you push staging back to production, pushing the database replaces your live database. On an active site that means the orders, comments, form entries, and posts created since you cloned are gone. On a live store or busy blog, push files only, or re-do the change on production by hand. Section 07 explains exactly how.
- Files (themes, plugins, core) are usually safe to push
- Database push replaces live content created after the clone
- WooCommerce, forums, and membership sites are the highest risk
01. Why You Never Test Updates on a Live Site
WordPress runs on a stack of moving parts: the core software, your active theme, and every plugin you have installed. Any update to any one of them can conflict with the others. A plugin update that works fine on ten thousand sites can still white-screen yours because of the specific combination you run. When that happens on your live site, your visitors see the broken version while you scramble to fix it.
A staging site removes that gamble. You apply the update on a private copy first, click through the site, and only touch production once you know the update is clean. The things most worth testing on staging before they go live:
- Core, theme, and plugin updates - the single most common cause of a site breaking after a routine update.
- New plugins - especially anything that touches checkout, forms, caching, or security.
- Theme changes and redesigns - layout work you do not want half-finished in public.
- PHP version bumps - old plugins sometimes break on a newer PHP; staging tells you before your live site does.
Staging protects you from bad changes going live. It does not protect you from data loss, a hack, or a server issue. Keep both. Take a real backup before any big change on either environment. See How to Back Up Your Website for the full routine, and How to Fix a Hacked WordPress Site if you are here because something already went wrong.
02. Two Ways to Build a Staging Site
There are two paths to a working staging site on your account. The one-click tools do the whole clone in a couple of clicks and, crucially, can push your changes back for you. The manual method is more work but shows you exactly what is happening and works even for setups the automated tools do not recognize.
One-Click Staging
WordPress Toolkit or Softaculous clones your site to a staging area, tracks the differences, and pushes changes back to production on demand.
- Clone and push in a few clicks
- Handles the database and URL rewrites for you
- Best for almost everyone
Manual Staging
You create the subdomain, copy the files, clone the database, and edit wp-config yourself. Nothing hidden, works on any setup.
- Full visibility into every step
- No dependence on the toolkit detecting your install
- You manage the push back by hand
If WordPress Toolkit or Softaculous shows your site in its dashboard, use Option A. It is faster and it does the risky database work correctly. Reach for the manual method in Option B only when the tools do not see your install, or when you specifically want to clone into a fresh database rather than push over your live one.
03. Option A: One-Click Staging in cPanel
Both WordPress Toolkit and Softaculous are available in cPanel. Use whichever manages your site. The flow is the same: clone to staging, work on the copy, push back.
With WordPress Toolkit
- Log in to cPanel and open WordPress Toolkit.
- Find your site in the list and click Clone.
- For the destination, choose Create subdomain and enter something like
staging. The toolkit createsstaging.yourdomain.comand copies the files and database into it. - Click Start and wait for the clone to finish. The toolkit rewrites the site URL to the staging subdomain automatically.
- Open
staging.yourdomain.com/wp-adminand make your changes there. - When you are ready, return to the toolkit, select the staging copy, and click Copy Data (the push). You choose whether to push files, database, or both. Read Section 07 before you push the database.
With Softaculous
- In cPanel, open Softaculous Apps Installer and go to the WordPress management page (the wrench or edit icon on your install).
- Click Create Staging. Pick or create a subdomain such as
staging.yourdomain.comand let Softaculous copy everything across. - Work on the staging install at its own admin URL.
- When finished, use Push to Live from the same panel. Softaculous lets you select exactly which files and database tables to move. Again, read Section 07 first.
Before you rely on this for a real update, clone once and push a trivial change (edit a page title on staging, push files, confirm it appears live). Knowing the push works on your specific site removes the guesswork when a real update is on the line.
04. Option B: Manual Staging, Step by Step
If you would rather do it by hand, or the toolkit does not see your install, here is the full manual process. You will create a subdomain, copy the files, clone the database, and point wp-config at the copy.
- Create the subdomain. In cPanel, open Domains (or Subdomains) and add
staging.yourdomain.com. Note the document root it creates, usually/public_html/staging. See How to Create an Addon Domain or Subdomain if you need the walkthrough. - Copy the files. In File Manager, select everything in your live document root (typically
/public_html), compress it to a zip, and extract that zip into the staging document root. Or copy the folders across directly. Every file, includingwp-config.php, comes with it. - Create a new database. Open MySQL Databases, create a fresh database such as
user_stg, create a database user, and add that user to the database with all privileges. - Clone the data. In phpMyAdmin, select your live database, use Export to download a SQL dump, then select the new staging database and Import that dump. You now have an identical copy of the data.
- Point wp-config at the copy. Edit
wp-config.phpin the staging document root and update the database settings so staging uses its own database, not the live one:
define( 'DB_NAME', 'user_stg' );
define( 'DB_USER', 'user_stguser' );
define( 'DB_PASSWORD', 'your-staging-password' );
define( 'DB_HOST', 'localhost' );
If staging's wp-config.php still points at your live database, every change you make on staging changes your live site directly. Double-check DB_NAME in the staging config points at the new copy before you log in and start editing.
- Fix the site URL. The imported database still holds the live URL everywhere. The clean way to swap it is a search-replace tool that handles serialized data. Upload the free WP-CLI or a search-replace script, or run this from the staging document root if you have shell access:
wp search-replace 'https://yourdomain.com' 'https://staging.yourdomain.com' --skip-columns=guid
If you cannot run WP-CLI, set the two URL rows directly in phpMyAdmin: in the staging database, open the wp_options table and change siteurl and home to https://staging.yourdomain.com. That covers the basics, though a full search-replace is better because it also catches URLs baked into posts and widgets.
You can also stage into the same database using a different table prefix instead of a whole new database: import the dump with tables renamed from wp_ to stg_, then set $table_prefix = 'stg_'; in the staging wp-config.php. It keeps everything in one database, but a separate database is cleaner and easier to delete later. For fresh installs, see How to Install WordPress.
05. Keep Staging Private and Out of Google
A staging site is a full working copy of your site sitting on a public subdomain. Left open, search engines will crawl and index it, which creates duplicate content and, worse, exposes an unfinished or test version of your site to anyone who finds the URL. Lock it down.
Password-protect the directory. This is the strongest option. It puts an HTTP login in front of the whole staging site so no visitor and no search bot gets in without the password.
- In cPanel, open Directory Privacy (also called Password Protect Directories).
- Navigate to the staging document root, for example
public_html/staging, and open it. - Tick Password protect this directory, give it a name, and save.
- Create a user and password under Create User. Now the whole staging subdomain prompts for that login.
The full walkthrough with screenshots is in How to Password Protect a Directory.
Discourage search engines in WordPress. As a second layer, in the staging wp-admin go to Settings > Reading and tick Discourage search engines from indexing this site. That adds a noindex instruction. Treat it as a backup to the password, not a replacement, since it only asks well-behaved bots to stay away.
An indexed staging site can outrank your real site for your own brand terms and leak draft content. Password protection is the reliable fix because it blocks every bot and every stranger regardless of whether they honor a noindex tag. Set it up the moment the clone finishes, before you log in to work.
06. Make and Test Your Changes
With staging cloned and locked down, this is where the value is. Do the risky work here and click through everything before it goes near production.
- Apply updates. Update WordPress core, then the theme, then plugins, one batch at a time. After each, load the front page and a few inner pages to catch a break early.
- Try new plugins. Install and configure anything new. Watch for conflicts with your existing plugins, especially caching and security tools.
- Build the redesign. Theme edits, layout changes, and new templates all belong here where an unfinished state is invisible to visitors.
- Test the important flows. Submit a contact form, run a test checkout, log in as a member, whatever your site actually does. A page that renders can still have a broken form.
- Check on a phone. Load staging on mobile. Layout issues that pass on desktop often show up on a small screen.
A caching plugin on staging can serve you stale pages and make a working change look broken, or a broken one look fine. Clear the site cache after each significant change so you are testing what you actually built. For live-site speed work, see How to Optimize WordPress Performance.
07. Push Staging Back to Production
Your changes are tested and you are ready to make them live. This is the step to slow down on, because how you push depends entirely on what you changed and whether your live site is collecting new data.
Pushing the database replaces your live database with staging's. Any orders, comments, form entries, new posts, or member sign-ups that landed on the live site after you cloned are wiped out, because staging never had them. On a live store or busy site this is real, unrecoverable data loss. Only push the database when you are certain the live site collected nothing new since the clone.
Decide what to push based on what you changed:
- You updated plugins, themes, or core, or edited templates: push files only. Those changes live in files, not the database, so pushing files gets your work live while leaving the live database (and its new orders and comments) untouched.
- You changed settings, menus, or content that lives in the database, on a site with no live data coming in: a full push (files plus database) is fine. Best for brochure sites and low-traffic blogs where nothing new arrives between clone and push.
- You changed database content on an active site: do not push the database. Re-do those specific changes by hand on production instead. It is a little more work, but it does not throw away live data.
Pushing with the one-click tools
- In WordPress Toolkit, select the staging copy and choose Copy Data. In the dialog, under what to copy, pick Files only for an update, or Files and database only if the live site has no new data. Confirm and run it.
- In Softaculous, use Push to Live and select the files and, if truly safe, the database tables to move.
- Both tools take a backup of production before overwriting. Confirm that ran so you have a rollback point.
Pushing manually
- Back up production first. A full backup of the live files and database, no exceptions. See How to Back Up Your Website.
- Copy the changed files from the staging document root to the live one in File Manager: the updated plugin, theme, or core folders. Do not overwrite
wp-config.php, since live has its own database settings. - Leave the live database alone unless you have decided a full replace is safe. If you must move database content, export only the specific tables you changed rather than the whole database.
- Clear the live cache and load the site. Check the pages and flows you changed.
08. Clean Up and Delete the Staging Copy
Once your changes are live and confirmed working, delete the staging site. A forgotten staging copy is a stale, unpatched, publicly reachable clone of your site, which is exactly the kind of thing that gets exploited.
- Confirm production is good. Click through the live site and verify the changes you pushed are working before you remove your safety copy.
- Delete via the tool that made it. In WordPress Toolkit or Softaculous, use the remove or delete option on the staging install. It removes the files and the staging database together.
- For a manual staging site, delete the staging document root in File Manager, drop the staging database in MySQL Databases, and remove the staging subdomain under Domains.
- Remove the Directory Privacy entry if you protected the folder and are not reusing the subdomain.
If you update often, you can leave the staging subdomain in place and simply re-clone your live site onto it before each round of changes. Just keep it password-protected and remember it is stale between refreshes, so always re-clone from live before testing rather than trusting an old copy.
09. A Warning for WooCommerce and Membership Sites
Everything above applies double to sites that collect data continuously. WooCommerce stores, forums, membership sites, and booking systems write new rows to the database around the clock: orders, payments, new members, posts, bookings. This creates what is called data drift, where staging and production diverge the moment you clone.
The practical consequences:
- Never push the staging database to a live store. Every order and every new customer since the clone lives only in production. A database push erases them. This is the number one way people lose real orders.
- Push files only, or re-do the change on production. For plugin and theme updates, push files and let the live database stand. For settings changes, make the same change directly on production during a quiet window.
- Do not process live payments or emails on staging. Put payment gateways in test mode on the staging copy and pause any transactional email so a test order does not charge a card or email a real customer.
- Keep the staging window short. The longer staging lives, the more the live database moves on, and the more dangerous a database push becomes. Clone, test, push files, delete.
On any site taking orders, sign-ups, or comments, the safe default is to treat the live database as the single source of truth. Push code from staging, never data. If a database change genuinely has to go live, apply it by hand on production so nothing gets overwritten.
Want Us to Set Up Staging for You?
If you would rather not clone and push by hand, open a ticket and we will stand up a staging site for your WordPress install, lock it down, and walk you through testing and pushing changes safely. We do this on shared, VPS, and dedicated plans.
Open a Support TicketQuick Recap: Staging in Six Steps
If you only remember six things from this guide, remember these:
- Clone to a staging subdomain with WordPress Toolkit or Softaculous, or build it manually with a new subdomain, a copied file set, and a cloned database.
- Lock staging down with Directory Privacy and the discourage-search-engines setting so it never gets indexed or found.
- Do the risky work on staging: updates, new plugins, redesigns, and PHP bumps, then test every important flow.
- Push files only for updates and code changes, so the live database and its new data stay intact.
- Never push the database over an active store or busy site. Re-do database changes on production by hand instead.
- Delete the staging copy once production is confirmed, so no stale clone is left exposed.
Last updated July 2026 · Browse all WordPress articles
