WooCommerce fixes / orders missing from orders page

WooCommerce Orders Missing from the Orders Page? Causes & Fix

If customers are getting order emails and money is arriving, but WooCommerce → Orders shows nothing — or shows fewer orders than you know exist — the orders are almost certainly fine. The admin list is reading the wrong table. Here's how to confirm that and get them back.

Last updated: 16 Jul 2026 · ~7 min read

Quick answer

The most common cause is HPOS: the store is set to use the WooCommerce order tables, but the order was written to the old wp_posts tables instead — because compatibility sync is off, or an extension writes order data directly to posts. Turn on compatibility mode at WooCommerce → Settings → Advanced → Features, let the sync run, and the orders reappear.

What "missing orders" actually means here

WooCommerce can store orders in two places: the legacy wp_posts / wp_postmeta tables, or its own dedicated order tables (High-Performance Order Storage, or HPOS — wp_wc_orders and friends). One of the two is authoritative, and the admin Orders list only reads the authoritative one.

So from your side the list looks empty or short. From the customer's side, nothing is wrong at all — they got their confirmation email, the payment cleared, the download link works. The order exists. It is just sitting in the table the Orders screen isn't looking at.

The most common causes (most likely first)

  1. HPOS is authoritative but the order was written to the legacy posts tablesCompatibility mode is off, or an older extension writes order data straight to wp_posts/wp_postmeta. Tell: switch storage back to "WordPress posts storage" and the missing orders instantly reappear.
  2. You switched storage and the sync hasn't finishedRecent orders show, older ones don't (or vice versa). Tell: WooCommerce → Status → Scheduled Actions still has pending order-synchronisation jobs — the migration is queued, not done.
  3. The list is filtered, or the orders aren't in a visible statusA status tab, date filter, customer filter or leftover search term is still applied. Tell: check the Trash and Drafts counts above the list — checkout drafts never appear in the normal view.
  4. A plugin or user role is filtering the order queryMulti-vendor, membership and custom role plugins narrow the Orders list per user. Tell: log in as a full administrator in a private window — if the orders are there, it's a permissions or vendor filter, not storage.
  5. The site was migrated, cloned or imported and the rows landed in the wrong tableAn import or staging clone brought over wp_posts rows only, or used a different table prefix. Tell: the orders exist in the database but nothing you toggle in the admin surfaces them.
  6. Automatic cleanup removed themWooCommerce deletes abandoned checkout drafts, and the retention settings under WooCommerce → Settings → Accounts & Privacy can erase or anonymise old orders. Tell: only orders past a certain age are gone, and they're gone in both storage modes.

Where to look first

Not sure which table your orders are actually in?

Checking this by hand means toggling live storage settings on a store that's taking money — which is exactly when you don't want to be experimenting. DiagnosticIQ's free dashboard reads your HPOS setting, the sync state and the order tables together, and tells you plainly whether the orders exist and which store they're in — before you change anything. It keeps checking afterwards, so a sync that silently stalls next month doesn't turn into another empty Orders page.

Get the free plugin

Made by Prima Digital — the team behind this guide. Free forever; no card to install.

How to know you fixed it

Verify

Reload WooCommerce → Orders with all filters cleared — the order count matches your gateway's transaction count for the same period, and opening a previously missing order shows its full line items and totals.

Frequently asked

Did I lose those orders?

Almost certainly not. The order rows are still in the database — the admin list is just reading the other storage table. Check your gateway dashboard: if the payments are there, the orders are there.

Is it safe to switch order storage back?

Switching is reversible, but take a database backup first. Turning compatibility mode on is the lower-risk move: it keeps both tables in step rather than changing which one is authoritative.

Should I just leave HPOS off?

Only as a stopgap. If an extension is writing straight to the posts tables, that extension needs updating or replacing — HPOS is the direction WooCommerce is going, and staying on legacy storage postpones the problem.

Why do customers still get their emails?

Because the order was created successfully and the email fired at that moment. The failure is only in what the admin list can see, not in order processing.

>_
John O'Keane — Founder, Prima Digital · LinkedIn
Contributions by David Zhang · LinkedIn
I build DiagnosticIQ, the WooCommerce diagnostic plugin, and I've talked more than one store owner off the ledge who was convinced HPOS had eaten a week of orders when every one of them was sitting safely in the other table.