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.
Recommended WooCommerce Backup Strategy
For most WooCommerce stores, use a layered schedule that balances protection with performance:
| Backup Type | Frequency | What It Covers |
|---|---|---|
| Database only | Every 4 hours | Orders, customer data, inventory, settings |
| Incremental | Daily | Product images, uploads, theme/plugin changes |
| Full backup | Weekly | Complete 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:
| Table | Contains |
|---|---|
wp_wc_orders | Order records (WooCommerce HPOS) |
wp_wc_orders_meta | Order metadata (HPOS) |
wp_wc_order_addresses | Billing and shipping addresses |
wp_wc_order_operational_data | Order processing data |
wp_woocommerce_order_items | Line items, shipping lines, tax lines, coupons per order |
wp_woocommerce_order_itemmeta | Metadata for each order item |
wp_posts + wp_postmeta | Products, variations, coupons, legacy orders (CPT storage) |
wp_wc_product_meta_lookup | Product price and stock index |
wp_woocommerce_sessions | Active customer sessions and carts |
wp_woocommerce_payment_tokens | Saved payment methods |
wp_woocommerce_tax_rates | Tax rate configurations |
wp_woocommerce_shipping_zones | Shipping zone definitions |
If you use WooCommerce Subscriptions, these tables are also included:
| Table | Contains |
|---|---|
wp_wc_orders (type: subscription) | Active subscriptions (HPOS) |
wp_posts (type: shop_subscription) | Subscriptions (legacy CPT storage) |
Related _itemmeta and _order_items | Subscription 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 regenerateif 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 Profile | Orders/Day | Database Backup | Incremental Files | Full Backup |
|---|---|---|---|---|
| Small (starter store) | < 10 | Every 12 hours | Daily | Weekly |
| Medium (growing store) | 10–100 | Every 4 hours | Daily | Weekly |
| Large (high-volume) | 100–1,000 | Every 1–2 hours | Every 12 hours | Weekly |
| Enterprise | 1,000+ | Hourly | Every 4 hours | Daily |
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