SafeGuard

WooCommerce Backups

Backup strategies, restore considerations, and best practices specifically for WooCommerce stores.

Why WooCommerce Needs Special Backup Attention

A standard WordPress blog can get by with weekly backups. A WooCommerce store cannot. Your store's database changes every time a customer places an order, updates their account, applies a coupon, or triggers a subscription renewal. Product inventory counts shift with every sale. Shipping zones, tax rules, and payment gateway tokens are all stored in the database and are painful to recreate from scratch.

Losing even a few hours of WooCommerce data can mean:

  • Missing orders — customers charged but no record of their purchase
  • Inventory drift — stock counts out of sync, leading to overselling or underselling
  • Lost customer accounts — registered users, saved addresses, and order history gone
  • Broken subscriptions — recurring billing schedules and renewal dates lost

SafeGuard handles all of this automatically. This guide walks you through the recommended backup strategy for any WooCommerce store.

For most WooCommerce stores, use a layered schedule that balances protection with performance:

Backup TypeFrequencyWhat It Covers
Database onlyEvery 4 hoursOrders, customer data, inventory, settings
IncrementalDailyProduct images, uploads, theme/plugin changes
Full backupWeeklyComplete site snapshot — database + all files

Setting up the schedules

Create a database schedule (every 4 hours)

Go to SafeGuard → Schedules → Create Schedule. Select Database only as the backup type, set frequency to Every 4 Hours, and choose a storage provider. Set retention to 42 (7 days of 4-hour snapshots).

Create an incremental schedule (daily)

Create a second schedule with Incremental as the backup type, frequency set to Daily, and a preferred time during low-traffic hours (e.g., 02:00). Set retention to 30 (one month of daily snapshots).

Create a full backup schedule (weekly)

Create a third schedule with Full as the backup type, frequency set to Weekly, and retention set to 4 (one month of weekly full backups).

High-volume stores processing more than 100 orders per day should consider increasing database backup frequency to every 1–2 hours. The database-only backup is lightweight and completes in seconds for most stores.

What Gets Backed Up

SafeGuard backs up your entire WordPress database, which includes all WooCommerce tables. Here are the key WooCommerce-specific tables that are captured:

TableContains
wp_wc_ordersOrder records (WooCommerce HPOS)
wp_wc_orders_metaOrder metadata (HPOS)
wp_wc_order_addressesBilling and shipping addresses
wp_wc_order_operational_dataOrder processing data
wp_woocommerce_order_itemsLine items, shipping lines, tax lines, coupons per order
wp_woocommerce_order_itemmetaMetadata for each order item
wp_posts + wp_postmetaProducts, variations, coupons, legacy orders (CPT storage)
wp_wc_product_meta_lookupProduct price and stock index
wp_woocommerce_sessionsActive customer sessions and carts
wp_woocommerce_payment_tokensSaved payment methods
wp_woocommerce_tax_ratesTax rate configurations
wp_woocommerce_shipping_zonesShipping zone definitions

If you use WooCommerce Subscriptions, these tables are also included:

TableContains
wp_wc_orders (type: subscription)Active subscriptions (HPOS)
wp_posts (type: shop_subscription)Subscriptions (legacy CPT storage)
Related _itemmeta and _order_itemsSubscription line items and schedules

SafeGuard backs up all database tables, not just the ones listed above. This means any WooCommerce extension that creates custom tables (e.g., WooCommerce Bookings, WooCommerce Memberships, AutomateWoo) is automatically covered.

Selective Backup for WooCommerce

If you need a quick snapshot of just your WooCommerce data — for example, before running a bulk product import or price update — you can use selective backup to target only the relevant tables.

Start a manual backup

Go to SafeGuard → Backups and click Run Backup Now. Select Database only.

Enable selective tables

Expand Advanced Options and enable Selective Tables. This reveals a table picker.

Select WooCommerce tables

Use the search filter to type wc_ or woocommerce_ to quickly find all WooCommerce tables. Select the tables you want to back up. For a complete WooCommerce snapshot, select all tables matching these prefixes along with wp_posts and wp_postmeta (which contain products and coupons).

Run the backup

Click Start Backup. The selective backup runs significantly faster because it skips non-WooCommerce tables.

Selective table backups are useful for quick pre-import snapshots, but they are not a substitute for full database backups. A WooCommerce store relies on WordPress core tables (wp_options, wp_users, wp_usermeta) that hold settings and customer accounts. Always maintain a regular full database backup schedule alongside any selective backups.

Restoring a WooCommerce Site

Restoring a WooCommerce site follows the same process as any SafeGuard restore — go to SafeGuard → Backups, select the backup, and click Restore. However, there are several WooCommerce-specific considerations to be aware of.

Order data integrity

Never restore only the database without files on a WooCommerce site if you have made file changes since the backup. Product images, downloadable files, and invoice PDFs are stored in wp-content/uploads/ and are referenced by database records. A database-only restore with mismatched files will result in broken product images and missing downloadable files.

If you need to restore only the database (for example, to recover a lost order), verify that:

  • No product images were added or changed since the backup
  • No downloadable products were uploaded since the backup
  • No invoice or packing slip PDFs were generated since the backup

Payment gateway settings

Payment gateway API keys (Stripe, PayPal, etc.) are stored in the wp_options table. After a restore:

  • Verify that your payment gateway settings are intact under WooCommerce → Settings → Payments
  • Run a test transaction if your gateway supports test/sandbox mode
  • Check that webhook URLs are still correctly configured in your payment provider's dashboard

If you are restoring to a different domain, payment gateway webhook URLs will still point to the old domain. Update them in your Stripe/PayPal dashboard immediately after restore to avoid missed payment notifications.

Shipping and tax configurations

Shipping zones, shipping methods, and tax rates are stored in dedicated WooCommerce tables. These are always included in a database restore. After restoring, spot-check:

  • WooCommerce → Settings → Shipping — zones and rates are correct
  • WooCommerce → Settings → Tax — tax rates and tax classes are present
  • A test checkout calculates shipping and tax correctly

Subscription status preservation

If you use WooCommerce Subscriptions, a restore brings back the exact subscription state at the time of backup — including next payment dates, billing schedules, and subscriber status. Be aware that:

  • Subscriptions that renewed after the backup point will revert to their pre-renewal state
  • Payment retries that occurred after the backup will be lost
  • If the gap between backup and restore is large, some subscriptions may show as overdue

After restoring a site with active subscriptions, go to WooCommerce → Status → Scheduled Actions and verify that subscription renewal actions are correctly scheduled. WooCommerce Subscriptions uses Action Scheduler to process renewals, and SafeGuard preserves the full Action Scheduler queue during backup.

Staging for WooCommerce

Testing WooCommerce updates on a staging site is critical. A bad plugin update can break checkout, disable payment processing, or corrupt product data. SafeGuard's staging feature includes automatic safety measures designed for stores.

What SafeGuard disables automatically

When you create a staging site, SafeGuard automatically:

  • Blocks all outgoing emails — customers will not receive order confirmations, shipping notifications, or password resets from your staging site
  • Blocks payment gateway API calls — Stripe, PayPal, and other processors are sandboxed so no real charges are made
  • Disables WP-Cron — scheduled subscription renewals, abandoned cart emails, and other automated tasks will not fire on staging

You do not need to manually disable anything. These protections are applied automatically and reversed when you push to live.

Testing WooCommerce updates safely

Create a staging site

Go to SafeGuard → Staging → Create Staging Site. Use Full Mode for WooCommerce sites so that plugin and theme files are fully isolated.

Update WooCommerce on staging

Log in to your staging site and update WooCommerce (and any WooCommerce extensions) to the new version.

Run through your test checklist

On the staging site, verify:

  • Shop page loads and displays products correctly
  • Single product pages render with images, pricing, and variations
  • Add to cart and cart page work
  • Checkout page loads all fields
  • Coupon application works
  • Tax and shipping calculations are correct
  • Customer account pages (orders, addresses, payment methods) load
  • Admin order management (create, edit, refund) works
  • Any custom integrations (CRM, ERP, accounting) are functional

Push to live or discard

If everything passes, push the updated plugins to production using Selective Push → Plugins only. If something is broken, delete the staging site and investigate before updating production.

Never test payment processing on staging with real payment credentials. SafeGuard blocks gateway calls automatically, but if you need to test the full checkout flow, use your payment gateway's sandbox/test mode credentials on the staging site.

Migrating a WooCommerce Site

WooCommerce stores tend to be larger than standard WordPress sites due to product images, downloadable files, and a bigger database. SafeGuard handles this well, but keep these points in mind.

Large database considerations

A store with 50,000+ orders can have a database over 1 GB. SafeGuard's migration engine streams the database in chunks, so this works reliably even on shared hosting. However:

  • Increase PHP memory to at least 256 MB on both source and destination
  • Increase max execution time to at least 300 seconds
  • Use WP-CLI for very large migrations (10 GB+) to bypass web server timeouts entirely:
# On the destination
wp safeguard migrate receive

# On the source
wp safeguard migrate start <code>

Media files

Product image galleries can be substantial. SafeGuard's incremental transfer only sends files that don't already exist on the destination, so re-running a failed migration is fast. For stores with 20 GB+ of media:

  • Ensure the destination server has sufficient disk space (check with your host)
  • Consider using Cloud Relay if direct connections are unreliable
  • Verify image thumbnails regenerate correctly after migration — some hosts require running wp media regenerate if image sizes differ between themes

Post-migration checklist for WooCommerce

After migrating a WooCommerce site to a new domain:

  • Update payment gateway webhook URLs in Stripe/PayPal/etc. dashboards
  • Verify SSL certificate is active on the new domain (checkout requires HTTPS)
  • Test a complete checkout flow with a test order
  • Confirm shipping rate calculations work (some carriers validate the store address)
  • Update any hardcoded URLs in email templates
  • Re-authorize any OAuth-based integrations (Google Merchant Center, Facebook, etc.)
  • Verify cron jobs are running — check WooCommerce → Status → Scheduled Actions

WooCommerce + Multisite

If you run multiple WooCommerce stores in a WordPress Multisite network, SafeGuard backs up the entire network — all sites, all stores, all databases — in a single backup job.

Key considerations

  • Each sub-site has its own WooCommerce tables with the site's table prefix (e.g., wp_2_wc_orders, wp_3_wc_orders). SafeGuard captures all of them automatically.
  • Shared vs. separate — some plugins (e.g., WooCommerce Multistore) share product catalogs across sites. SafeGuard backs up the shared tables once; no data duplication.
  • Selective restore — you can restore a single sub-site's WooCommerce data without affecting the other stores in the network. Use Selective Restore and choose the specific site's tables.

Restoring a single sub-site on a multisite network requires care. If stores share customers via a unified login, restoring one site's wp_users and wp_usermeta tables could overwrite user data for the entire network. Only restore site-specific tables (those with the site's numeric prefix) unless you intend a full network restore.

For more on multisite backups, see the Multisite documentation.

Best Practices

Backup frequency by store size

Store ProfileOrders/DayDatabase BackupIncremental FilesFull Backup
Small (starter store)< 10Every 12 hoursDailyWeekly
Medium (growing store)10–100Every 4 hoursDailyWeekly
Large (high-volume)100–1,000Every 1–2 hoursEvery 12 hoursWeekly
Enterprise1,000+HourlyEvery 4 hoursDaily

What to verify after every restore

Check orders

Go to WooCommerce → Orders and confirm recent orders are present with correct statuses and totals.

Check products

Browse the shop page and verify product images, prices, and stock levels are correct.

Check settings

Open WooCommerce → Settings and spot-check payment gateways, shipping zones, tax rates, and email sender settings.

Run a test checkout

Add a product to cart and walk through the full checkout flow (use a test/sandbox gateway) to confirm the purchase process works end to end.

Check scheduled actions

Visit WooCommerce → Status → Scheduled Actions and verify that subscription renewals, email queues, and other recurring tasks are scheduled correctly.

General recommendations

  • Always back up before WooCommerce updates — major WooCommerce releases frequently include database migrations that are difficult to reverse
  • Store backups offsite — use a remote storage provider (S3, Google Cloud Storage, Dropbox) so your backups survive even if the server fails completely
  • Test restores regularly — create a staging site from a backup at least once a month to confirm your backups are complete and functional
  • Monitor backup success — enable email notifications under SafeGuard → Settings → Notifications so you are alerted immediately if a scheduled backup fails
  • Keep downloadable product files in sync — if you sell digital products, ensure your file backup frequency matches your product update frequency

On this page