WooCommerce orders to dashboard
One WooCommerce file, order totals that stop repeating.
Export your orders from WooCommerce, drop the CSV here, and you get a store dashboard that counts each order once even though the order totals repeat on every product row. Order Refund is subtracted rather than ignored, Order Tax and Order Shipping are kept out of the revenue figure, and multiple coupons packed into one cell are split apart.
Prefer the full explorer? Open the app, or start from the generic dashboard builder.
Repetition is the WooCommerce export's signature
Where Shopify blanks the order columns on continuation rows, most WooCommerce exports repeat them. A three-product order writes Order Total three times, identically. That is friendlier to read and considerably more dangerous to add up, because the file looks complete and every row looks legitimate. Sum Order Total across a busy month and you can easily double the real number without a single blank cell to warn you.
The other thing to know is that WooCommerce is a plugin ecosystem, so no two stores export quite the same columns. The shape below is the common one produced by the order export tools most shops use, and it is the shape this page is written against. The important part is not the exact header but the pattern: order-scoped columns like Order Subtotal and Order Total sitting beside item-scoped columns like Product Name and Quantity, in the same row, at different grains.
How to export from WooCommerce
- Sign in to wp-admin Go to your site's admin at yoursite.com/wp-admin and open WooCommerce in the left menu. You need a shop manager or administrator role; an editor account will not see the order data at all.
- Find your export route Core WooCommerce offers Analytics, then Orders, with a Download button above the table. If your shop has an order export extension installed, its screen usually sits under WooCommerce, then Export, and gives you far more column control.
- Set the date range and status Analytics defaults to a short recent window. Widen it, and leave the status filter open so that refunded, failed and on-hold orders are all present. You can exclude them here in the dashboard, but you cannot invent them back into the file.
- Include the line item columns If your exporter asks whether to write one row per order or one row per item, pick one row per item when you care about products and one row per order when you care about money. This page reads either, but knowing which you chose saves confusion later.
- Download and drop it here The file comes down straight to your machine, since it is generated by your own server rather than a hosted service. Drop it on this page and Order Status becomes the first filter chip you see.
Some exporters prefix statuses with wc-, so you see wc-completed rather than completed. Both are handled, and the prefix is stripped from the labels on the charts so the legend stays readable.
Try with sample WooCommerce data (the same columns, 100 rows, no upload needed).
What the dashboard shows
Every panel below is built from a column that is actually in the export, named the way WooCommerce names it.
- Net sales by day. Order Date on the axis, with Order Total counted once per Order ID and Order Refund subtracted, so the line reflects money you kept.
- Status funnel. completed, processing, refunded, failed and cancelled as shares. A rising failed count usually means a payment gateway problem rather than a demand problem.
- Product ranking. Product Name and SKU by units and by Item Cost times Quantity, which separates the cheap high-volume lines from the ones carrying the store.
- Payment method mix. Payment Method Title grouped against value. It arrives as a human readable label such as Credit Card (Stripe) rather than a slug, so the chart needs no relabeling.
- Coupon impact. Coupon Code as a breakdown, with multi-coupon cells split so each code gets credit rather than the combined string becoming its own fake category.
- Repeat customers. Customer Email grouped by order count and lifetime value, with Customer Name kept alongside for readability.
Order ID,Order Number,Order Date,Order Status,Customer Name,Customer Email,Product Name,SKU,Quantity,Item Cost,Order Subtotal,Order Shipping,Order Tax,Order Refund,Order Total,Payment Method Title,Coupon Code,Billing Country,Shipping Country
WooCommerce export traps
- Order totals repeat, they do not blank. Every product row in an order carries the same Order Total. Nothing looks wrong, which is why this one costs people more than the Shopify version. Group by Order ID before summing anything that starts with the word Order.
- Order ID and Order Number are different. Order ID is the WordPress post id. Order Number is what the customer sees, and a sequential numbering plugin can make it something else entirely. Join on Order ID, display Order Number.
- Order Refund is a positive number. A forty dollar refund is written as 40, not -40, so it has to be subtracted rather than added. A partially refunded order keeps its original Order Total, and the refund sits beside it.
- Coupon Code can hold several codes. Multiple coupons on one order are packed into a single cell, usually comma separated. Group by that raw string and SPRING10,FREESHIP becomes a category of its own with one member.
- Dates follow the site timezone. Set in WordPress general settings, not UTC and not your browser. A store hosted in one country and run from another will disagree with its own admin dashboard around midnight.
- Item Cost is per unit before tax. Line revenue is Item Cost times Quantity. It also excludes any order-level coupon, so summing item revenue will not match Order Subtotal on discounted orders, and that gap is the discount.
The rule of thumb is simple enough to keep in your head: anything named Order belongs to the order and must be deduplicated, anything else belongs to the line. Apply that and a WooCommerce export becomes one of the richer files in ecommerce, because the plugin usually gives you far more columns than a hosted platform would.
Frequently asked questions
Why is my WooCommerce revenue double the real figure?
Almost certainly because Order Total is repeated on every product row and you summed the column directly. An order with two items contributes its full total twice. Deduplicate on Order ID first, keeping one row per order, and then sum. This page does that automatically and shows both the order count and the row count so the gap between them is visible.
How do I handle partially refunded orders?
Subtract Order Refund from Order Total. WooCommerce leaves the original total intact and records the refunded amount as a separate positive number, so nothing in the file is negative and a naive total overstates what you kept. Watch for orders with a refund amount but a status still showing completed, since a partial refund does not always flip the status.
Which column is my actual sales figure?
Order Subtotal for what you sold, Order Total for what the customer paid. Subtotal excludes shipping and tax, so it is the trading number. Total includes both, and the tax portion is money you collect on behalf of a government. If you report on Total you are counting postage and tax as revenue, which flatters a store with expensive shipping.
Why do some rows have the same customer email but different names?
Guest checkout. WooCommerce does not require an account, so the same person can order three times and type their name slightly differently each time, or use a work address once and a personal one later. Email is the more stable key of the two for repeat customer analysis, though even that breaks when someone switches address. Group by email and treat the count as a floor.
My export has different columns from the ones listed here. Does it still work?
Yes. WooCommerce exports vary because the columns depend on which extension produced them and which fields your store collects. This page reads the header row on arrival and offers whatever it finds, so extra columns become extra group-by options and missing ones simply drop their panels. The guidance above still applies to any column whose name begins with Order.
Does anything get sent to a server?
No. Your order file contains customer names, email addresses and shipping countries, which under most privacy regimes is personal data you are responsible for. It is parsed in the browser tab by JavaScript and held only in memory. Nothing is transmitted, nothing is stored between visits, and there is no account to create before you can look at your own data.
Related tools
Try a WooCommerce order file without exporting yours
100 rows across a quarter, multi-item orders with repeated totals, a few partial refunds, stacked coupons and both guest and account checkouts.
Open the sample WooCommerce dashboard