WooCommerce orders in a live spreadsheet

Add the Orders table to a sheet as a data source named orders and its 31 columns become names your formulas, pivot tables and charts use. Sheets reads it from your WooCommerce store each time the sheet opens or refreshes.

Formulas on this table

=data.orders.sum(total)
Total total. Adds up the Total column over every row of Orders.
=data.orders.sum(total, status, A2)
Total per status. With a status in A2, the total for that one. Fill it down next to a list of them.
=list.orders(status)
Every status, once. Spills the distinct status values down the column: the row labels for the formula above.
=data.orders.sum(total, date, ">=2026-01-01")
Since a date. Only rows whose Date is on or after 1 January 2026. Criteria such as ">=", "<" and "<>" work as in any spreadsheet.
=data.orders.count(date, status, "<>")
Rows with a status. Counts the rows whose Status is not empty.
=data.orders.avg(items_subtotal)
Average items subtotal. avg, min, max, count, countd (distinct) and first work the same way as sum.

Reports that use it

=data.orders.sum(net_total, counts_as_sale, TRUE)
Net sales. Order totals after refunds, for every order that counts as a sale (processing, on hold, completed, refunded).
=data.orders.sum(net_total, month, A2, counts_as_sale, TRUE)
Net sales per month. List the months with =list.orders(month) in column A and the net sales beside each one.
=data.orders.avg(total, counts_as_sale, TRUE)
Average order. Average order total over the orders that count as sales.
=data.orders.sum(net_total, country, A2, counts_as_sale, TRUE)
Sales by country. Net sales per billing country in column A.
=data.orders.count(id, status, A2)
Orders per status. How many orders are pending payment, processing, on hold, completed and so on. Put a status in A2.
=data.orders.sum(discount, counts_as_sale, TRUE)
Discounts given. What coupons and discounts cost on orders that count as sales.

Columns

ColumnIn formulasType
DatedateDate
MonthmonthText
Order numberorder_numberText
StatusstatusText
Counts as salecounts_as_saleYes / no
TotaltotalNumber
Items subtotalitems_subtotalNumber
DiscountdiscountNumber
ShippingshippingNumber
TaxtaxNumber
RefundedrefundedNumber
Net totalnet_totalNumber
ItemsitemsWhole number
CurrencycurrencyText
CustomercustomerText
E-maile_mailText
CompanycompanyText
CountrycountryText
StatestateText
CitycityText
PostcodepostcodeText
Shipping countryshipping_countryText
GuestguestYes / no
Customer IDcustomer_idText
Payment methodpayment_methodText
Shipping methodshipping_methodText
CouponscouponsText
Created viacreated_viaText
Paid onpaid_onDate
Completed oncompleted_onDate
IDidText

Other sales tables

Your orders, live

Orders, refunds, products, customers and coupons become live tables inside your WordPress admin. Sales reports and dashboards stay current without exporting a CSV.