How to Export WooCommerce Orders to CSV and Excel (2026)

A WooCommerce order export can look perfectly tidy and still tell the wrong story. One spreadsheet might contain sales-report figures; another might repeat the full order total against every pizza topping. Both are CSV files. Only one belongs in your bookkeeping workflow. The practical challenge is choosing the right data, arranging it sensibly, and checking...

September 8, 2026 WPSlash

A WooCommerce order export can look perfectly tidy and still tell the wrong story. One spreadsheet might contain sales-report figures; another might repeat the full order total against every pizza topping. Both are CSV files. Only one belongs in your bookkeeping workflow.

The practical challenge is choosing the right data, arranging it sensibly, and checking it before anyone relies on it. Here’s how to export WooCommerce orders to CSV and Excel, including the restaurant details that often get left behind.

Choose the Right Way to Export Your WooCommerce Orders

Start with the job the spreadsheet needs to do. Checking last month’s sales is different from sending delivery addresses to a dispatcher or giving your accountant an itemized transaction file.

WooCommerce Analytics provides downloadable reporting data. A dedicated order exporter can provide more detailed operational records. WordPress Tools > Export produces XML for content transfer—not a spreadsheet-ready order export.

Method Available fields Filtering Custom order data One-time or recurring?
WooCommerce Analytics Report columns, such as order date, status, products, and sales measures Date range and available report filters Not a general-purpose custom metadata exporter Manual downloads; not a scheduled operational export workflow
Dedicated order export plugin Selected order, customer, product, shipping, and financial fields, depending on the plugin Usually dates, statuses, and additional order criteria May support order and line-item metadata; mapping can be necessary Manual exports; scheduling depends on the product and edition
WordPress Tools > Export WordPress content in XML; available content types depend on the installation Content-type-specific options Not designed for building operational order spreadsheets Manual content transfer rather than recurring reporting

Don’t treat Tools > Export as a complete order backup, either. WooCommerce’s High-Performance Order Storage, or HPOS, changes where order data lives. A WordPress content export isn’t a dependable substitute for an HPOS-aware export or a proper database backup.

CSV and Excel aren’t interchangeable formats. CSV holds plain-text rows and columns; it doesn’t preserve multiple worksheets, cell formatting, or explicit data types. Excel can import a CSV, and you can then save the checked workbook as XLSX.

My rule of thumb: use Analytics for reporting, a detailed exporter for fulfillment or reconciliation, and a backup system for recovery. Trying to make one file serve all three purposes usually creates extra work.

Download an Order Report from WooCommerce Analytics

Before installing anything, see whether the built-in report already answers your question. If you only need a sales-oriented order list, it may be enough.

  1. Open the Orders report. In the WordPress administration area, look for Analytics > Orders. Some navigation layouts place Analytics within the WooCommerce area.
  2. Choose the reporting period. Use the date picker for a preset period or a custom range. For a monthly check, select the first through the last day of that month.
  3. Apply available filters. Use the report’s controls to narrow the results. Filter options and labels can vary with your WooCommerce version.
  4. Inspect the table. Check several recognizable orders and review the column controls, where available.
  5. Download the CSV. Use the Download control associated with the report table. Larger downloads may be generated in the background rather than appearing immediately.

Open the downloaded file and read its headers before making assumptions. An Analytics export is a reporting dataset, not necessarily a complete list of every field attached to an order. Customer addresses, internal notes, delivery instructions, and product modifiers shouldn’t be assumed to be present.

Also distinguish sales measures from the amount collected at checkout. A net sales column isn’t interchangeable with an order total that includes taxes and shipping. Use the definition of the actual column you exported.

A useful test is to write down five required fields—perhaps order number, date, status, delivery address, and delivery slot—and compare them with the CSV. If the last two are missing, changing the reporting period won’t help. You need a detailed export.

Keep the original download untouched and work from a copy. That gives you something to compare against if spreadsheet sorting or cleanup changes the results.

[IMAGE: WooCommerce Analytics Orders report with the date range selector, order table column controls, and CSV download button highlighted]

Export Detailed Orders to CSV with a Plugin

A detailed export should start with a column plan, not a giant “include everything” file. Exporting every available field makes sensitive data harder to control and important columns harder to find.

Advanced Order Export For WooCommerce is one named example in this category. Its published free feature set includes manual CSV and XLS exports, filtering, field selection, and custom-field export capabilities. XLS is an older Excel format, not XLSX. Check the installed release’s documentation and compatibility information rather than assuming every feature shown in a tutorial is free or unchanged.

The workflow below is for a store-approved exporter with those capabilities. Exact labels differ between plugins and releases; preview the output rather than trusting a matching-looking settings screen.

Prepare the exporter and select a small batch

Before adding an exporter to a live restaurant store, take a backup and test on staging where possible. For an approved plugin, installation generally happens through Plugins > Add New Plugin: locate the correct package, review its requirements, install it, and activate it. Confirm WooCommerce and HPOS compatibility first.

Open the exporter’s settings and choose a manual export. Start with one quiet trading day containing a few familiar orders. Select CSV, and use UTF-8 encoding if the exporter offers an encoding setting.

Choose the date field deliberately. “Created,” “paid,” and “completed” dates can produce different order sets. An order created just before midnight and paid just after midnight is a simple example.

Set explicit statuses. Processing and completed orders might suit an operational report, while a reconciliation exercise may also need refunded orders. Don’t quietly mix failed payments with fulfilled sales.

Build a useful column set

For a first operational export, include these fields where supported:

  • Internal order ID, displayed order number, creation date, status, and currency.
  • Product name, variation details, SKU, and quantity.
  • Line totals, discounts, tax, shipping charges, and the full order total.
  • Customer name, shipping address, and a contact number when fulfillment requires them.
  • Shipping method and supported pickup, delivery, or requested-time fields.

Keep internal IDs and displayed order numbers separate if your store customizes numbering. The number staff recognize on a receipt may not be the database ID used by integrations.

Financial field names deserve extra attention. Find out whether a line total is before or after discounts and whether tax is separate. Rename exported headers for clarity, without changing what the underlying values mean.

Choose the row layout, then preview

One row per order works well for a delivery manifest or order-level reconciliation. Multiple products may appear together in a cell or across repeated columns, depending on the exporter.

One row per item is better for counting burgers, pizzas, and drinks. But an order with three product lines may then occupy three rows. Some layouts repeat order-level values on each row.

Suppose an illustrative order totals £42 and contains three lines. If £42 appears on all three rows, summing that column produces £126—not revenue. Keep a separate order-level summary or deduplicate using the order ID.

Preview several orders, including one with multiple items and one with a refund. Check addresses, quantities, and totals against the order screens. Only then download the CSV and expand the date range.

Include Restaurant Order Details Without Losing Important Data

Restaurant exports often fail in the gap between “product purchased” and “meal that needs preparing.” A pizza name alone doesn’t tell the kitchen that one half needs olives and the other half must have no cheese.

For restaurants building their ordering workflow around WooCommerce, FoodMaster is our go-to restaurant ordering plugin for delivery, pickup, and dine-in. It brings ordering together with POS, kitchen display, QR table ordering, and automatic printing. That operational scope is useful—but it doesn’t mean every field automatically appears in every third-party CSV exporter.

Find where each detail is stored

Open a sample order containing the details you need. Pickup or delivery selections, requested time slots, and table numbers may be stored as order metadata. Toppings and ingredient changes may be line-item metadata. A charge may instead appear as a fee line, shipping line, or part of an item price.

The order screen helps you identify visible labels, but a label isn’t necessarily the underlying metadata key. Look through the exporter’s supported order fields and item metadata options. If a field is missing, ask the ordering plugin’s support team or your developer for its storage location and export requirements.

Inspect values, too. A time slot might be stored as a timestamp or an internal identifier rather than readable text. Structured modifier data may need transformation; dumping serialized content into one cell won’t help the kitchen.

If you collect gratuities with Tipping’s WooCommerce checkout tip option, identify how the installed setup records tips before mapping them. Don’t assume they are included in shipping, or that every fee represents a tip.

Separate the jobs

A kitchen template should emphasize items, quantities, modifiers, preparation notes, and the required service time. A delivery template needs the destination, authorized contact details, delivery instructions, and relevant payment information—not a full customer history.

Bookkeeping needs a different view: order identifiers, currency, sales, discounts, taxes, delivery charges, tips, and refunds, using clearly defined fields. Save separate templates where supported. Fewer columns make mistakes easier to spot.

[IMAGE: Three restaurant export templates side by side showing kitchen items and toppings, delivery addresses and time slots, and bookkeeping totals with a separate tips column]

Open the CSV in Excel or Google Sheets and Check the Numbers

Double-clicking a CSV is convenient. It’s also how a postcode loses its leading zero before anyone notices. Importing with explicit settings gives you more control.

Import into Excel

In recent desktop Excel versions, use Data > From Text/CSV and select your file. Choose UTF-8 as the encoding when needed, then check the delimiter in the preview. A comma is common, but some exports use semicolons or tabs.

If everything lands in one column, the delimiter is probably wrong. If accented customer names look garbled, check the encoding before editing names manually.

Use Transform Data or the available import controls to set phone numbers, postcodes, SKUs, and identifiers to Text before loading. Remove or adjust automatic type-conversion steps where necessary. This preserves leading zeros and avoids rounding long numeric identifiers.

After checking the imported data, save an XLSX working copy. Renaming a file from .csv to .xlsx doesn’t convert it into an Excel workbook.

Import into Google Sheets

Use File > Import > Upload, select the CSV, and confirm the separator. Where offered, disable “Convert text to numbers, dates, and formulas” for a controlled initial import. Then convert only the columns that genuinely need numeric or date types.

Treat customer-entered content as untrusted. Spreadsheet applications can interpret values beginning with characters such as =, +, -, or @ as formulas. Notes, names, and addresses can carry this content. Import those columns as text, don’t enable external content, and use formula-injection protection in the exporter where available.

Validate before using the spreadsheet

  • Dates and timezone: Confirm the selected date field, inclusive boundaries, and store timezone. Check whether the exporter converts timestamps or uses UTC.
  • Statuses: Verify which statuses were included and whether Analytics excludes any of them from its calculations.
  • Refunds: Inspect a partial and a full refund. Determine whether refund amounts appear separately, reduce totals, or create additional records.
  • Taxes and discounts: Establish whether values include tax and whether discounts have already been deducted.
  • Delivery and tips: Keep shipping charges, shipping tax, other fees, and gratuities distinguishable where the source data permits.
  • Repeated totals: Count unique orders separately from item rows. Never sum repeated order totals indiscriminately.

Finally, reconcile a handful of orders manually. A date-perfect report can still disagree with a payment payout because settlement timing, refunds, and payment-processing fees follow different rules.

Troubleshoot Missing Orders and Keep Exports Secure

When an export looks wrong, resist changing several settings at once. Start with one missing order and trace why it didn’t qualify.

Find the source of the mismatch

If an order exists in WooCommerce but not in Analytics, check the reporting filters and Analytics data freshness. Analytics uses reporting data that can lag behind order changes. Review historical import status and pending or failed background actions; use the available Analytics import or cache tools appropriate to your version.

Next, compare the export’s date field and status filters with the actual order. Also check product, customer, and other restrictions left over from an earlier export. A saved filter can be surprisingly good at hiding in plain sight.

Missing custom fields need a different investigation. Confirm whether the value belongs to the order, a product line, a fee, or a separate plugin-managed structure. A human-readable label in the administration screen doesn’t guarantee an exporter can access it directly.

For timeouts, reduce the date range and remove unnecessary columns. Use batch or background export options if supported. Split large files into non-overlapping periods, then verify unique order counts when combining them. Ask your host to inspect resource limits and logs rather than repeatedly launching the same failing export.

Check the exporter against your WooCommerce version and HPOS configuration. Older tools that read legacy order tables directly can miss data. Don’t disable HPOS or alter synchronization settings just to make an untested exporter work.

Make the workflow repeatable—and private

Use a small acceptance batch: a straightforward order, a multi-item order, a refund, and an order containing restaurant-specific metadata. Approve the columns and totals before exporting a month’s customer data.

Limit export access to staff who need it. Keep files in access-controlled storage, avoid public links and casual email attachments, and delete unnecessary customer details from working copies. Set retention periods around your operational and legal obligations.

Scheduled exports may require a paid feature or another integration. Before automating, test delivery security, failed-job notifications, date boundaries, and duplicate handling. Automation should repeat a verified workflow—not distribute the same mistake every morning.

A good export isn’t the one with the most columns. It’s the smallest reliable file that gives the kitchen, dispatcher, or bookkeeper exactly what they need.

Commission-free ordering

Run restaurant orders on your own WordPress site

FoodMaster adds delivery, pickup, dine-in, POS, and kitchen tools — with zero per-order fees.

Get FoodMaster

Leave a Comment

Your email address will not be published. Required fields are marked *

×

🔥 ONE DAY ONLY OFFER 🔥

Upgrade FoodMaster Today

Normally your license is limited to 1 Website.

Today only, get a LIFETIME Unlimited Websites License for just:
$499

✔ Unlimited Client Websites
✔ Unlimited Personal Projects
✔ Future Updates Included
✔ Save Hundreds on Additional Licenses

Offer Ends In: