Get in touch
  • WordPress
  • Sales and conversion
  • v1.0.0

Order Archive for WooCommerce — archive old orders and keep reports, search and one-click restore

Old orders go into a compressed archive and the orders screen and search are fast again. Analytics, customer totals and privacy include the archive; search, view and one-click restore.

Download Free
Pro · one-year licence The more sites, the less each one costs
Compatibility
WordPress 6.2+ · WooCommerce 8.2+ (tested on WordPress 7.1 and WooCommerce 11.2) · PHP 7.4+ (run on PHP 8.3 and 7.4) · HPOS and posts · MariaDB, MySQL 8.0 · block and classic checkout
Licence
one site, annual
Trial
7 days, no card, one per site
Updated
October 2026
Or all 173 Pro modules with All Access — 4 990 ₴ / year

What Free has,
and what Pro adds

The free version works with no time limit. Pro adds the rest of the features in the table.

Feature Free Pro
Archive old orders by age (months since the last activity) and status — from HPOS, the classic posts storage and compatibility mode ✔ ✔
Runs in short steps with progress, Stop and resume; a dry count first ✔ ✔
Each order in its own transaction: the copy is checked before rows are removed; restore with the same IDs ✔ ✔
Open orders, orders with activity inside the period and subscriptions are never archived ✔ ✔
Archive search: number, e-mail, name, phone, company, product, SKU; archived order view ✔ ✔
Restore one order or "Restore all archived orders"; old links to an order open its archived copy ✔ ✔
WooCommerce Analytics, customers' order count and "total spent" include the archive ✔ ✔
Personal data export and erasure, WooCommerce retention periods apply to the archive ✔ ✔
An order another plugin saves after archiving is restored first — no empty orders in the list ✔ ✔
Interface: English, Ukrainian, Russian ✔ ✔
Nightly automatic run (WP-Cron) — ✔
"Move to archive" in the orders list bulk actions; bulk restore and delete in the archive — ✔
CSV export of the archive or a search — ✔
Delete archived orders for good after N years — ✔
"Earlier orders" in the customer's account — ✔
Updates from catcode.com.ua in Dashboard → Updates — ✔

What it looks like

WooCommerce archived orders list with search by e-mail, phone and SKU
WooCommerce → Order archive: search in the archive and Pro bulk actions.
Archived WooCommerce order view: line items, addresses, refunds and notes
A read-only archived order with line items, addresses, refunds and notes; “Restore to orders” brings it back with the same ID.
Archiving old WooCommerce orders by age and status with a progress bar
“Move to archive”: age and statuses, a dry count first, then a run in short steps with progress.

The trial starts when you ask

A fresh install is the free version, nothing switches on by itself. The “Try Pro for 7 days” button → e-mail → the key right in the window and by e-mail.

One key — one site

Moving the store? Unbind the licence on the old domain and activate it on the new one yourself. For studios — keys for 5 or 25 sites, or unlimited.

Technical requirements

  • WordPress 6.2+ · WooCommerce 8.2+ · PHP 7.4+; tested on WordPress 7.1 and WooCommerce 11.2, PHP 8.3 and 7.4.
  • Order storage: HPOS, the classic posts storage and compatibility mode; if WooCommerce is switched between them after archiving, a restored order is copied into the storage in use at that moment.
  • Database: MariaDB and MySQL 8.0 (tested), InnoDB tables for transactions.
  • Checkout: block and classic — the plugin does not touch new orders.
  • Together with our modules: tested with Nova Poshta (waybills), PRRO fiscal receipts, KeyCRM and SalesDrive sync, Returns & Exchanges and LiqPay — after a restore the waybills, receipts, CRM IDs and return requests are in place, and nothing is sent to the CRM twice.
  • Interface languages: English, Ukrainian, Russian.

Version history

v1.0.0 Current October 2026

Archiving old orders from HPOS and posts into a compressed, verified archive and restoring them byte for byte; Analytics, customer totals, personal data export, erasure and retention count…

Frequently bought with Order Archive for WooCommerce

4 modules in one order — 40% cheaper than separately

“Store starter” bundle Order Archive Nova Poshta Premium Mono Acquiring Telegram notifications and Viber/SMS for customers Need more — all 173 modules in All Access for 4 990 ₴.
2 490 ₴ / year instead of 4 160 UAH bought separately
Buy the bundle →

Full module description

Order Archive for WooCommerce moves old orders out of the WooCommerce order tables into a separate compressed archive — and brings them back with one click. After a few years a shop has tens of thousands of orders: the orders screen opens slower, searches take longer, backups grow and every plugin that queries orders gets heavier. Deleting them is not an option — you would lose reports, customer history and records you have to keep.

The plugin does it differently: orders older than the age you choose (for example 24 months) and in the statuses you choose are packed into one compressed archive record and removed from the order tables. WooCommerce Analytics, customers’ order count and “total spent”, personal data export and erasure keep counting the archived orders. The archive has its own search and order view, and restore puts back the very same rows with the same IDs.

The core version is free. Archiving by age and status, search and order view in the archive, restoring one or all orders, and the Analytics, customer totals and privacy support work without a licence and without a time limit. Pro adds a nightly automatic run, a “Move to archive” bulk action in the orders list, CSV export, deletion after N years and “Earlier orders” in the customer’s account.

There is a separate version for OpenCart — Order Archive for OpenCart.

What the admin gets

  • WooCommerce → Order archive — the list of archived orders with search by order number (#123), e-mail, name, phone, company, product name or SKU.
  • Archived order view — addresses, payment, line items, shipping, coupons, taxes, refunds and notes, read-only; a “Restore to orders” button.
  • WooCommerce orders list — an “Archive (N)” link among the status filters and a hint “N archived orders also match” while searching; old edit links of an archived order open its archived copy.
  • “Move to archive” — age (months since the last activity), statuses, step size; the run goes in short steps with a progress bar, a Stop button and resume — no time-outs even on large shops.
  • Tools — storage state (HPOS, posts, compatibility mode), archive size, “Restore all archived orders”, “Put archived orders back into Analytics”.

What happens to an archived order

  • Every row of the order — order data, addresses, meta, line items, notes and refunds — is packed into one compressed record. Before a single row is removed the copy is read back and compared, and each order moves in its own database transaction: a failure halfway breaks nothing.
  • WooCommerce Analytics keeps counting archived orders: its tables are not touched. In the Orders report archived orders keep their number and products. Checked in the browser: Revenue, Orders and Customers for a period with old orders are the same before and after archiving.
  • Customers keep their downloads, their order count and “total spent” — loyalty and role plugins see the same numbers.
  • Privacy: Tools → Export Personal Data includes archived orders, Erase Personal Data anonymises them, and the WooCommerce retention periods apply to the archive too.
  • Open orders (pending payment, processing, on hold) are never archived. Orders with a payment, completion or refund inside the period stay. Orders of WooCommerce Subscriptions stay.
  • If another plugin saves an archived order (for example a payment webhook that loaded the order just before it was archived), the order is restored first and the change lands on the full order, with an order note about it — no empty order appears in the list.

How it works — step by step

  1. Make a database backup before the first large run.
  2. WooCommerce → Order archive → “Move to archive”: set the age (24 months by default) and the statuses — the plugin shows how many orders match.
  3. “Archive matching orders” — the progress is shown on screen, the run can be stopped and resumed.
  4. Find an old order with the archive search. To refund or edit it — “Restore to orders”, and it is back in the WooCommerce orders list.
  5. Pro: switch on “Every night” — from then on the archive grows by itself; “Move to archive” also appears in the bulk actions of the orders list.

Under the hood

  • The archive is one table, {prefix}catcode_oarc_orders: a compressed snapshot of every row of the order with a checksum, plus columns for search (number, status, total, e-mail, name, phone, company, products and SKUs, dates).
  • Verified before removal: the copy is written, read back and compared, and only then are the rows removed — all in one transaction per order. Only one run goes at a time.
  • Analytics is not rebuilt: wc_order_stats and the lookup tables are not touched. If you press “Delete previously imported data” under Analytics → Settings, archived orders leave Analytics too, and Tools → “Put archived orders back into Analytics” returns them.
  • Large shops: tested on 50,500 orders (MySQL 8.0, HPOS). The nightly run moves them in parts of about 20 seconds with a memory peak of 166 MB; a manual run works in steps of 25 orders, each under 2 seconds. The order tables took about 490 MB, the archive of the same orders 210 MB.
  • Developer hooks: the catcode_oarc_can_archive filter (keep an order out of the archive), the actions catcode_oarc_archived, catcode_oarc_restored, catcode_oarc_purged.
  • Deleting the plugin removes its settings and cron events but keeps the archive table when it still holds orders, so nothing is lost. Leaving the plugin? Use “Restore all archived orders” first.

Installation

  1. Plugins → Add New → Upload Plugin: choose the zip and activate it (WooCommerce must be active).
  2. WooCommerce → Order archive → “Move to archive”: age, statuses, Save.
  3. “Archive matching orders” — or, in Pro, switch on the nightly run.
  4. For Pro: the “Pro licence” tab — paste the key from the e-mail or press “Try Pro for 7 days”.

Questions
about the module

Didn't find the answer? Message us on Telegram and we'll reply within a business day.

@catcode_support Setup, compatibility, activation
Will my reports change?

No. WooCommerce Analytics counts archived orders exactly as before; the legacy WooCommerce → Reports do not show them.

Can I refund an archived order?

Yes: "Restore to orders" with one click, then refund as usual.

Do customers see archived orders?

Not in Free. Pro shows an "Earlier orders" block in the account, every customer sees only their own.

What about waybills, receipts and CRM IDs?

Records of other plugins stay; after a restore everything is in place. Handle a late refund notification from the payment provider after restoring the order.

What if I delete the plugin?

The archive table stays so nothing is lost. Leaving the plugin? Use Tools → "Restore all archived orders" first.

Not quite what you are looking for?

We build custom modules for WordPress, WooCommerce, OpenCart and Shopify. Tell us about the task and we'll prepare an estimate.

Order a custom module