Home › Guides › How to search WooCommerce orders by SKU, order note or custom field

How to search WooCommerce orders by SKU, order note or custom field

Short answer

WooCommerce’s built-in order search doesn’t look at SKUs, order notes or custom fields. It searches the order ID, transaction ID, billing email, customer names and addresses, and product names. To find an order by any of the others you either add the field to the search with a code filter, or use an add-on that indexes them.

What does WooCommerce’s order search actually search?

Less than most store owners assume. We read the search code in WooCommerce itself (checked September 2026) to get a straight answer. With High-Performance Order Storage (HPOS), the default for new stores since WooCommerce 8.2, the search box on WooCommerce → Orders looks at:

  • the order ID and the payment transaction ID,
  • the billing email,
  • customer details from the address table: first and last name, company, address lines, city, state, postcode, country, email, and phone on recent versions,
  • product names on the order.

With the older storage (orders as posts), it’s similar, though the way you extend it isn’t; our guide to HPOS and order search explains what changed. The old search covers the billing and shipping address indexes, the billing last name, email and phone, and the product names on the order.

What neither of them searches:

  • SKUs. The product search matches the item’s name, not its SKU.
  • Order notes, customer-facing or private.
  • Custom fields, such as a gift message, a delivery date, a PO number or anything a checkout plugin adds.

Why does that matter day to day?

Because those are the things staff actually remember. A customer rings about “the order with the gift note for Sam”. The warehouse wants every open order containing SKU HOODIE-ZIP-M. Accounts needs the order for purchase order 4471. None of those is a name, an email or an order number, so the search comes back empty and someone starts scrolling.

On a store with a few dozen orders a week, scrolling works. On a store with thousands, it’s lost afternoons.

What does the search dropdown do on HPOS stores?

With HPOS on, a dropdown appears next to the search box. The default options are All, Order ID, Customer email address, Customers and Products. It narrows what’s searched; it doesn’t add anything new, so SKUs, notes and custom fields still aren’t there.

One useful side effect: on a large store, searching “All” runs every lookup at once and can be slow. WooCommerce’s own issue tracker discusses exactly this. If you know you’re searching for an email, picking Customer email address first is faster.

How do you add a field to the search with code?

WooCommerce has a filter for each storage type. On the older post-based storage, woocommerce_shop_order_search_fields takes the list of meta keys to search, so a developer can add a custom field’s key to it. On HPOS, woocommerce_hpos_admin_search_filters lets a developer add a new option to the dropdown, but they also have to write the query that option runs.

That’s fine for one field on a small store. It gets harder when:

  • you need SKUs, which live on the product, not the order, so the search has to join through the order items,
  • you want order notes, which are stored as comments, not order meta,
  • the store is large, and searching unindexed text across every order is slow,
  • the store is switching between post storage and HPOS, so the code has to handle both.

How does an order search add-on handle it?

The usual approach is an index: a separate table holding the searchable text from every order, built once and kept up to date as orders change. Searching one table is fast, and it can hold anything, including SKUs and note text.

That’s how our WC Order Search Pro works. It replaces the search on the Orders screen with one that also checks SKUs, coupon codes, order notes (customer-facing and private) and any custom fields you mark as searchable. The usual fields are still covered: order number, customer name, email, phone, both addresses and product names. It works with HPOS and with the older storage.

A search for "hoodie" on our test store. The Matched in column says why each order came back.
A search for hoodie on our test store The Matched in column says why each order came back

The detail that matters most in daily use is the Matched in column. When a search returns twenty orders, staff can see which ones matched the SKU and which only matched a customer called Hood, without opening each one.

How do you make a custom checkout field searchable?

  1. Open WooCommerce → Order Search Pro → Searchable Fields.
  2. Tick the meta keys you want searched. The list comes from your recent orders, for example _gift_recipient_name.
  3. If a key hasn’t appeared on an order yet, for a checkout field you’ve just added, type it under Add custom meta key(s).
  4. Save. New orders are searchable straight away. For older orders, run Rebuild search index on the General tab.
Choosing which custom fields are searchable.
Choosing which custom fields are searchable

One habit worth building: search analytics (under WooCommerce → Order Search Analytics) lists the searches that returned nothing. A search that keeps coming back empty usually means staff are looking for a field nobody has marked searchable yet.

Why can’t you find old orders after renaming a product?

Because the order keeps the name the product had when it was bought. WooCommerce stores the item name on the order itself, so an order from last spring still says “Zip Hoodie” after you rename the product “Classic Zip Hoodie”. Search for the new name and the old orders don’t come back.

SKUs don’t have this problem as long as you keep them stable. It’s one of the better arguments for searching by SKU, and for not changing SKUs lightly.

Can you combine search with filters?

WooCommerce’s own list lets you filter by status, date and customer. WC Order Search Pro adds filters that stack on top of the search and each other: payment method, shipping method, billing country, customer group (including guests), order total range, coupon code, tag and date range. “Unshipped orders over $200 to Germany containing this SKU” becomes one search rather than an export and a spreadsheet.

Can you search the text of an order note?

With an index, yes. Notes are stored separately from the order’s own fields, which is why WooCommerce’s search never sees them. Once they’re indexed, typing any phrase from the note finds the order, including private notes staff left for each other.

Finding an order by a phrase in its order note.
Finding an order by a phrase in its order note

What about searches you run every day?

Most stores have a handful of searches someone runs every morning: express orders not yet shipped, gift orders to wrap, orders with a particular coupon. In WC Order Search Pro, any search plus filters can be saved and shared with the team, and it shows as a chip above the orders list. One click reruns it.

Saved searches as chips above the orders list, shared with the team.
Saved searches as chips above the orders list shared with the team

Code or add-on: which should you pick?

  • One extra field, a small store, a developer on hand: the filter is enough.
  • SKUs, notes or several custom fields: an index is the practical route, whether you build it or buy it.
  • Tens of thousands of orders: avoid unindexed searches across meta, with any tool.

For the plugins available, see our comparison of WooCommerce order search plugins. Whatever you choose, test it on a copy of your store with real order data first. A search that works on fifty test orders can behave very differently on fifty thousand.

WC Order Search Pro. One fast, indexed search bar for WooCommerce orders, plus combinable filters, custom-field search and saved segments.

View the add-on