Swft Offload
Archives old WooCommerce orders out of your database into Swft Cloud (Cloudflare R2). Your admin stays fast as order counts grow, customers still see their full order history in My Account, and any archived order can be restored on demand.
Swft Offload is a paid add-on starting at £5/month. The plugin itself is free; you pay for cloud storage and retrieval.
What it does
Section titled “What it does”WooCommerce keeps every order in your database forever. Past a few thousand orders, the admin slows down: order screens take seconds to load, reports time out, and any plugin that does a JOIN on wp_posts or HPOS tables drags. Offload pulls orders older than a threshold off the database and stores them in Swft Cloud, replaying them back to your site whenever a customer (or you) needs them.
The plugin is HPOS-aware and works with both the new order tables and the legacy custom-post-type layout.
Prerequisites
Section titled “Prerequisites”- WordPress 6.0+
- WooCommerce 8.0+
- PHP 7.4+
- Swft account with the Offload add-on enabled
- WP-Cron enabled (Offload runs a daily archive job)
Installation
Section titled “Installation”- Install the Swft Offload plugin from your Swft dashboard’s downloads section.
- Activate it in Plugins → Swft Offload.
- Go to WooCommerce → Settings → Offload.
- Paste your Swft API key (the same one you use for Swft Checkout).
- Configure the archive threshold (default: 180 days), batch size, and which order statuses to include.
Settings
Section titled “Settings”| Setting | What it does |
|---|---|
| Archive threshold | Orders older than this many days are eligible for archival. Default 180. |
| Batch size | How many orders to archive per cron run. Default 100. Increase if you have a large backlog. |
| Statuses to archive | Which order statuses qualify. Default: completed, refunded, cancelled, failed. |
| Purge cloud on uninstall | Opt-in destructive cleanup. Off by default. |
How it works under the hood
Section titled “How it works under the hood”A daily cron selects qualifying orders, uploads them to Swft Cloud in batches, and writes a row to the local swft_offload_orders index table (one row per archived order ID, with customer email and storage key). The plugin hooks into woocommerce_get_orders so that whenever WooCommerce or My Account asks for an archived order, the plugin transparently fetches it from Swft Cloud.
Restoration via POST /wp-json/swft-offload/v1/restore replays the full order back into WooCommerce — line items, fees, refunds, customer notes, meta, original dates — idempotently. The endpoint is rate-limited and IP-checked.
Pricing tiers
Section titled “Pricing tiers”| Tier | Object limit | Storage | Monthly |
|---|---|---|---|
| Starter | 10,000 archived orders | 1 GB | £5 |
| Growth | 100,000 | 10 GB | £15 |
| Scale | 1,000,000 | 100 GB | £40 |
| Enterprise | Custom | Custom | Contact us |
Usage is tracked in your Swft dashboard under Offload.
Gotchas
Section titled “Gotchas”- Archived orders contain personally identifiable data. Swft Cloud encrypts at rest, but the data lives off your server — make sure your privacy policy reflects this.
- WP-Cron must run reliably. If your site has very low traffic, set up a real cron job hitting
wp-cron.phprather than relying on visitor-triggered cron. - Reports and analytics plugins that query the WC orders table directly will see fewer rows. Use your Swft dashboard for full-history reporting.
Where to find more
Section titled “Where to find more”If you need help, contact [email protected] or check your dashboard at Offload.