Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

The safest way to push a WordPress staging site live is to back up production, identify exactly what changed, and deploy only the files or database data that belong on the live site. A full copy is appropriate only when staging is authoritative and production has received no newer content, orders, comments, or other transactions. Otherwise, use a files-only, database-only, or selective-table deployment and validate the live site before removing your rollback backup.

What pushing a staging site live actually does

A staging push makes selected changes from a test copy available at the production domain. Those changes can be WordPress files, database tables, or both. Files include themes, plugins, uploaded media, custom code, and configuration files. The database contains posts, pages, menus, widgets, users, plugin settings, form entries, and commerce records.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The distinction matters because staging is usually an older snapshot of production. While you tested a redesign or plugin update, visitors may have placed orders, submitted forms, posted comments, registered accounts, or changed account details on the live site. Replacing production with the older staging database can erase that activity even if the new design works perfectly.

There is no universally risk-free or zero-downtime push. Treat the deployment as a change to a live system: establish a rollback point, limit the scope, protect current transactions, and test revenue and indexing paths immediately afterward.

Prepare production before choosing a deployment method

Schedule a change window

Choose a period when publishing, sales, bookings, comments, and form submissions are predictable. Tell editors and support staff when the site will be frozen. If transactions must continue, plan how you will capture them while the deployment runs; do not assume a maintenance page alone prevents every request from reaching the old code.

Record the current WordPress version, active theme, active plugins, PHP version, server rules, and any external services that the live site uses. This inventory helps you distinguish a staging change from a pre-existing production setting and gives you a reference if a plugin behaves differently after the push.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Create and verify a restorable production backup

Back up the complete live database and all files, including wp-content/uploads, themes, plugins, and any server-level configuration you need to recreate the site. Download a copy outside the production server and label it with the date and time of the deployment.

A backup is only a rollback point if it can be restored. Confirm that the archive opens, that the database dump is complete, and that your host or backup tool can restore it. Write down where the files and database credentials are stored, who can perform the restore, and the exact point in time the backup represents. Do not delete this copy until smoke tests and at least one normal traffic and transaction cycle have passed.

Make a change inventory on staging

List every item you intend to release. Separate file changes from database changes:

  • Files: theme templates and styles, custom code, plugin files, uploaded images and documents, and generated assets.
  • Content: posts, pages, products, categories, menus, widgets, and media references stored in the database.
  • Configuration: plugin options, theme customizer values, widgets, scheduled tasks, users, roles, and API settings.
  • Live-only activity: orders, customer records, bookings, comments, leads, form entries, account registrations, and edits made after staging was cloned.

Mark each item as release, keep-live, or needs manual reconciliation. This list is more reliable than assuming that a visual change is contained in one file; many plugins store their settings and content in custom database tables.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Choose what to push

Use the smallest scope that delivers the change. The following choices describe the normal trade-offs.

Deployment scope Best use What it changes Primary risk
Files only Theme, plugin, custom-code, or media changes that do not require new database settings Selected themes, plugins, uploads, and other file groups The code may expect database migrations or options that were never released
Database only Posts, pages, menus, widgets, or settings changed on staging All or selected database tables An older staging copy can overwrite newer production content and transactions
Selective tables A plugin or content feature whose tables can be identified safely Only named tables and their data Missing a related table can leave inconsistent settings or content
Full push Staging is a current, authoritative clone and production has no conflicting changes Files and the complete database The broadest overwrite, including users, options, orders, comments, and leads
Managed push wizard You want guided selection of file groups and database tables Scope selected in the staging tool Feature availability, table controls, and plan requirements vary

When files-only is the right answer

Use files-only for a new template, stylesheet, custom plugin code, or media that has no accompanying settings migration. Check the plugin’s release instructions first. If activation creates tables, updates serialized options, or requires a one-time database migration, files alone are incomplete. Run that migration on production only after the files are present and after confirming that the backup covers the database.

When database-only is appropriate

Database-only can publish edited pages, menus, widgets, and settings when the live database has been frozen and no live-only records will be lost. It is dangerous for an active store, membership site, booking system, or busy comments section unless you have a deliberate way to merge the new content with production activity.

When selective tables are safer

Selective deployment can preserve live orders and users while releasing a form configuration, a page builder’s content, or a plugin’s settings. Identify table relationships before selecting anything. A plugin may store core settings, scheduled actions, logs, and content in several tables; copying one without its dependencies can produce missing data or repeated migrations. If the plugin does not document its table relationships, treat a selective push as an expert operation and test it on a disposable copy first.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

When a full push is justified

A full push is simplest when staging was cloned immediately before the work, production was placed in a maintenance or freeze period, and no newer production data exists. Confirm that the staging copy includes the current users, settings, uploads, and integrations. If even one important production dataset changed after cloning, a full database replacement needs a separate merge plan.

Use a managed push wizard when it matches your scope

WP STAGING’s documentation describes its Push Wizard as copying staged changes—files, database tables, or both—to the live site. WP STAGING PRO can select media files, themes, plugins, and database data, and its documentation instructs operators to back up production with the built-in backup tool before starting. Availability of particular controls and plan requirements can change, so verify them in the edition you operate.

  1. Complete the production backup first. Do not start the wizard until the backup has finished and you have confirmed that it can be restored.
  2. Open the staging site’s push function. Confirm that the destination is the intended production installation, not another staging copy.
  3. Review the file groups. Select only the themes, plugins, uploads, or other groups that are part of the release. Exclude staging-only files and test uploads.
  4. Review database tables. Choose all tables only when staging is authoritative. Otherwise, select the documented tables for the feature and leave live transactional tables untouched.
  5. Read the overwrite warning. Check whether the operation will replace existing files, truncate tables, or change the site’s domain and paths. Stop if the warning does not match your change inventory.
  6. Run the push and watch its log. Keep the completion report. A successful transfer does not prove that URLs, permissions, scheduled tasks, or integrations are correct.
  7. Perform the validation sequence below. Keep the rollback backup until the site passes these checks.

A wizard reduces repetitive copying and can perform migration-oriented search and replace, but it cannot decide which live orders or comments are safe to overwrite. Scope decisions remain yours.

Manual deployment: files, database, and configuration

A manual move follows the WordPress Advanced Administration Handbook approach. It gives you control when no push wizard is available, but it requires access to hosting files, a database tool, and the production configuration.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

1. Freeze the release and capture the final state

Stop edits on staging and production for the duration of the copy, or define a precise way to record changes made during the window. Put production in maintenance mode only if that mode does not block the backup, administrator access, or health checks you need. Export a final list of live orders, comments, leads, and bookings immediately before the deployment.

2. Copy the approved files

Transfer the selected theme, plugin, custom-code, and media files to the production location. Preserve the existing directory structure. Do not copy staging-only caches, debug logs, local configuration files, or a staging wp-config.php over the production configuration. If you are replacing a plugin or theme, keep a copy of the previous version so you can restore it without rebuilding the site.

3. Import the approved database data

Import the database dump or selected tables only after deciding how live records will be protected. A complete import commonly replaces tables rather than merging individual rows. For a selective import, confirm table prefixes and relationships, and document the exact tables changed. Watch for import errors, truncated tables, character-set warnings, and timeouts; an incomplete import is not a usable deployment.

4. Set production database credentials

Check wp-config.php on the live server. It must point to the production database name, user, password, host, and table prefix. Keep staging credentials, salts, debug values, and local paths out of the production file. Confirm that the web server user can read the files and that writable directories have the permissions required by WordPress and the plugins you use.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

5. Replace the staging URL and path safely

If staging used a different domain, subdirectory, or protocol, replace those references with the production values. Use a migration tool or a serialization-aware search-and-replace process. WordPress warns that a blanket text replacement can damage serialized arrays and objects; the Advanced Administration Handbook recommends its Search and Replace for WordPress Databases Script for safely changing all instances of an old domain or path. A simple SQL replace is unsafe when a value’s stored length is part of serialized data.

Include protocol changes, subdirectory changes, image URLs, canonical settings, and plugin-specific endpoint URLs in your review. Search-and-replace is not a substitute for checking hard-coded values in PHP, JavaScript, server rules, or external services.

6. Reconfigure permalinks and rewrite rules

Sign in to the production dashboard, open Settings > Permalinks, and click Save Changes even if the selected structure looks correct. This refreshes WordPress rewrite rules. If the site uses Apache, review .htaccess; on another web server, apply the equivalent rewrite configuration. Test a post, page, category, attachment, and any custom post type rather than relying on the homepage alone.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

7. Remove staging-only behavior

Disable password protection, maintenance notices, no-index directives, test API keys, debug display, staging email routing, and staging-specific cron jobs. Remove any host-level rule that blocks search engines or public traffic. Replace test payment, shipping, analytics, and email credentials with the production values, and confirm that webhooks point to the live domain.

Protect orders and other transactional data

Transactional data is the reason a blind database push fails most often. A staging database is a snapshot, not a live feed. WooCommerce orders, customer records, bookings, comments, leads, form submissions, and account changes created after the snapshot do not exist in staging unless you deliberately copied them back.

Keep production data while releasing code

For a theme or plugin-code change, deploy files and leave the production database in place. Run any required plugin migration against that current database, then verify the feature. This approach avoids replacing orders and users while still releasing the code.

Publish content without replacing transactions

If staging contains new pages or menus, identify the tables that hold that content and the relationships they require. Export or recreate the specific content on production, or use a tool that supports controlled table selection. Do not overwrite the entire options table if it contains production payment, email, cache, or integration settings that were changed after staging was created.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

When a full database replacement is unavoidable

Pause incoming activity, record the final production transactions, and establish a documented reconciliation procedure before replacing the database. Depending on the platform, that may mean re-entering orders or importing them through supported interfaces rather than editing database rows. If you cannot explain how every production transaction will be preserved, do not perform the full replacement.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Validate immediately after the push

Use an incognito browser and a separate administrator session. Test the public site, the dashboard, and the systems that generate money or customer commitments.

Public pages and assets

  • Open the homepage and representative pages for every major template.
  • Test posts, pages, categories, search, custom post types, pagination, and attachment URLs.
  • Load images, downloadable files, stylesheets, scripts, and responsive layouts.
  • Check internal links for staging domains, old subdirectories, mixed-content warnings, and 404 responses.
  • Inspect canonical URLs, redirects, XML sitemap output, and robots or no-index controls.

Administration and permissions

  • Sign in with an administrator account and a normal staff or editor account.
  • Confirm roles, capabilities, media uploads, scheduled posts, and plugin dashboards.
  • Expect to authenticate again after a full database push because sessions and authentication-related data may have been replaced.
  • Check that caches can be cleared and that the production filesystem remains writable where required.

Forms, email, analytics, and integrations

  • Submit each important contact, quote, newsletter, and support form using a test address.
  • Verify that messages arrive at the intended production mailbox and that spam or queue handling works.
  • Check analytics tags, consent controls, advertising pixels, webhooks, API connections, and scheduled jobs.
  • Confirm that debug output is off and that test keys are not being used.

Revenue-critical paths

  • Walk through product selection, cart, checkout, payment handoff, confirmation, refunds, and order notifications in the appropriate test mode.
  • For bookings or memberships, test availability, registration, renewal, cancellation, and confirmation messages.
  • Verify that an existing customer can view their account and that new records appear in the live system.

Check server and WordPress logs while performing these tests. A page that looks correct can still fail when a background request, cron task, webhook, or email queue runs.

Rollback and post-deployment monitoring

If a critical check fails, stop accepting affected transactions if necessary and use the documented rollback point. Restore the production files and database as a matched set when both were changed; restoring only one can leave code and schema out of sync. Reapply any legitimate production transactions recorded after the backup according to your reconciliation plan.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

For a non-critical defect, capture the error, affected URL, user role, timestamp, and log entry before changing anything. Fix the smallest component possible, then repeat the relevant smoke tests. Keep the pre-push backup, deployment log, selected-table list, and search-and-replace report until the site has operated normally through a representative traffic and transaction cycle.

Common failure modes and fixes

Symptom Likely cause Action
Images or links still point to staging Domain or subdirectory references remain in serialized data, options, code, or JavaScript Run a serialization-safe replacement, search for the old host in files and settings, clear caches, and retest representative URLs
Posts return 404 after migration Rewrite rules were not refreshed or server rules were not copied Save Settings > Permalinks, verify the production rewrite configuration, and test custom post types
Checkout or forms fail Test credentials, webhook URLs, email routing, or plugin settings came from staging Restore production keys and endpoints, send a controlled test, and inspect application and server logs
Orders or comments disappeared An older staging database replaced live tables Stop further writes, restore the pre-push backup or reconcile from the recorded transaction source, then choose a narrower deployment scope
WordPress shows database or plugin errors Files and database are from different plugin versions, or a migration was interrupted Restore the matching backup, deploy the complete release set, and rerun the plugin’s supported migration
Administrators are logged out Session or authentication data changed during a full database push Log in again, verify user roles, and invalidate unexpected accounts or sessions
Search engines cannot index the site Staging password protection or no-index settings remained enabled Remove staging restrictions, check robots output and the XML sitemap, and request recrawling through the site’s normal webmaster process
Scheduled tasks do not run Staging cron settings, disabled WP-Cron, or server schedules were copied Restore production scheduling, remove duplicate staging jobs, and confirm a task completes in the live logs

A practical decision guide

Redesign with no content changes

Back up production, deploy the theme and related assets, leave the live database untouched, refresh permalinks, and test templates, forms, analytics, and checkout.

New pages and menus on a busy site

Protect orders, users, comments, and leads. Release files first, then migrate or recreate the specific content and menu data. Avoid replacing the entire database or options table.

Plugin replacement that changes its schema

Deploy the plugin files and its documented database migration as one controlled release. Confirm that the migration supports the existing production version and test on a restorable copy before the live window.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Complete rebuild with no production activity

A full push can be reasonable after a verified backup and an explicit freeze. Confirm that staging contains the authoritative users, settings, media, and integrations, then perform the complete validation checklist and retain the rollback copy.

Final checklist

  • Production backup downloaded, tested, and labeled.
  • Staging changes classified as files, database content, settings, or live-only records.
  • Deployment scope chosen to avoid overwriting newer production data.
  • Production credentials, permissions, URLs, and paths verified.
  • Serialization-safe URL replacement completed where needed.
  • Permalinks and server rewrite rules refreshed.
  • Staging-only protection, no-index directives, debug settings, test keys, and cron jobs removed.
  • Public pages, media, links, redirects, canonical tags, sitemap, and robots controls checked.
  • Admin roles, forms, email, analytics, integrations, checkout, bookings, and other revenue paths tested.
  • Rollback backup and deployment records retained during monitoring.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.