WooCommerce Sales Report with AI: Ask Your Shop in Plain Words
A WooCommerce sales report with AI starts with a question, not with a date picker: "how did we do last month", "what sells best since spring", "who are my best customers this year", "is anyone still paying by bank transfer". With BEAR's MCP server connected, you type that question to your AI assistant and it answers with figures from your own shop, as a table or as a chart drawn right in the conversation. Below is what you can ask, which orders the figures include, how refunds, taxes, shipping and other currencies are treated, who may see customer names, and why a report sometimes comes back empty.
Before you start
You need BEAR with its MCP server switched on in the plugin settings, and an AI assistant that supports MCP connected to it: Claude in the browser, in the desktop app or in Claude Code, a coding assistant such as Cursor, or an agent of your own. Sales figures are read from WooCommerce Analytics, so Analytics has to be enabled and its import of past orders finished. The connection itself takes a few minutes and is described step by step in the MCP server documentation.
One question, start to finish
Here is a typical first question:
Show me sales by month since January, with the number of orders and the average order, as a column chart.
- The assistant turns words into a period. "Since January" becomes a start date of 1 January and an end date of today. Dates are read in your shop's time zone, the same clock WooCommerce keeps its orders on, and the end day is included in full.
- It asks BEAR for a monthly summary. The request goes to the sales summary report (
woobe_sales_summary) with a monthly breakdown. BEAR reads the WooCommerce Analytics tables, which WooCommerce keeps for exactly this kind of question, and returns a row per month with the refunds of that month beside the sales. - The answer explains itself. Along with the rows, BEAR sends the period and the order statuses it counted, a currency line (whether amounts needed converting and how), and a line on how up to date Analytics is. A good assistant repeats these, so you know exactly what the numbers cover.
- The assistant draws the chart. If it can render HTML, the columns appear in the conversation; otherwise you get the same figures as a table.
- You go deeper. "Which products carried March?" is a new question: the assistant asks the product sales report for March and lists the best sellers of that month.
Each monthly row of that summary holds these figures:
| Figure | What it means |
|---|---|
| Orders | Orders placed in the month with a counted status |
| Items | Units sold in those orders |
| Net | Revenue on goods after discounts, without shipping and tax |
| Shipping, Tax | What customers were charged for delivery, and the tax collected |
| Gross | What customers actually paid, tax and shipping included |
| Average order | Gross divided by the number of orders |
| Returning orders | How many of the orders came from customers who had bought before |
| Refunds, Refunded, Net after refunds | Partial refunds given in that month, the money returned, and net revenue minus the goods part of those refunds |
Revenue next to order count and average order is what makes the monthly view useful: a better month can come from more buyers or from bigger baskets, and the three columns show which.
What you can ask in a WooCommerce sales report with AI
BEAR has five sales reports. The assistant picks the right one from your wording; you never have to name it.
| You ask | What comes back |
|---|---|
| Totals for a period, or WooCommerce sales by month, week or day | The summary above, as one total or one row per day, week or month |
| Best sellers, or how particular products sold | Per product: orders, units, net revenue and the date of the last sale, ranked by revenue, units, number of orders or most recent sale |
| Top customers | Name, town, number of orders, total spent and the date of the last order, highest spender first |
| Payment methods | Each gateway with its number of orders, share of orders and the amount paid through it |
| Shipping methods | Each method customers chose, with its number of orders, share of shipped orders and the amount collected for it |
Best sellers across the shop or for a group of products
For "what sells best", the report looks at the whole catalogue and returns the top sellers of the period, 50 by default and up to 200, with each variation as its own row. That matters: a size that outsells its siblings four to one disappears once the parent product swallows it.
For a group, such as "how did the winter jackets sell", the assistant first finds those products with a BEAR filter, as it would before a bulk edit, then asks for their sales. A group can hold up to 500 products; for a larger one, narrow the filter or ask for best sellers across the whole shop. Asking "including the ones that sold nothing" adds the products of the group without a sale, which turns the report into a quick list of dead stock.
Ranking the same period twice, by units and by revenue, is worth doing. When your best seller by units sits near the bottom by revenue, you are selling cheap volume.
Ready-made overviews
Ask your assistant "what can you tell me about my shop" and it offers BEAR's prepared questions. Three of them are about sales:
- How the shop is doing covers the last three months: revenue by month with orders and average order, plus the ten best sellers by units.
- Show me the numbers covers six months: the monthly series and two rankings of the same period, the top 15 by units and the top 15 by revenue, gathered to be drawn and switched between.
- How people pay and get it covers six months: the share of orders per shipping method and per payment gateway. It usually reveals an option nobody has chosen in months, which can go to make checkout shorter.
These overviews always end today. You can move their start ("the same, but since January"); for a closed period such as "last March only", ask in your own words with both dates, and the assistant queries the reports directly.
Which orders a sales report counts
The figures follow a few fixed rules, the same in every report, so two answers about the same month never disagree.
- Statuses. By default an order counts when it is Completed, Processing or On hold. Pending payment, Failed, Cancelled, Refunded and drafts are left out. You can name other statuses: "count completed orders only" gives you sales that are finished and shipped.
- Dates. An order belongs to the day it was placed. Without a period the reports look at the last 30 days.
- Net and gross. Net is revenue on goods after coupon discounts, without shipping and tax, which is the figure WooCommerce Analytics reports as net sales. Gross is what customers paid in total.
- Full refunds. An order refunded in full changes its status to Refunded and leaves every sales figure.
- Partial refunds. In the summary they appear as separate figures, counted on the day the money went back: the number of refunds, the amount refunded (tax and shipping included) and net after refunds. Per-product sales are net of partial refunds, so returned units are taken off. Top customers shows what each customer paid, without deducting refunds.
- Payment amounts. The payment report shows the gross order total per gateway, because that is the money that went through it. Orders without a payment method, such as some manual orders, appear as (none).
- Shipping amounts. The shipping report shows what customers paid for delivery. What your carrier charged you is not stored anywhere in WooCommerce, and neither are gateway fees, so no report can give profit on shipping or payment costs. Orders without a shipping line, such as virtual products, are not in the shipping report, so its order count can be lower than the total.
Sales charts in the chat
The chart is drawn by the assistant from the figures BEAR returned, so you describe the picture you want together with the question. Claude in the browser and the desktop app render charts in the conversation; ChatGPT and other clients that cannot render HTML give the same figures as a table, with nothing missing except the drawing.
- "Sales by month this year as columns, and let me switch to a line."
- "Top ten products by units and by revenue side by side."
- "Payment methods as shares, with the percentage in the legend."
Switching between columns, a line and shares reuses numbers the assistant already has. A different period or a different group of products is a new question and goes back to your shop for fresh figures. Product images do not appear in these charts: the space where the assistant draws cannot load files from your site.
Multi-currency shops: totals in your base currency
WooCommerce Analytics stores every amount in the currency the order was paid in. On a shop selling in euros and dollars, a plain sum would add the two together. BEAR's reports therefore convert every amount back to your base currency.
- With FOX – WooCommerce Currency Switcher, each order is converted at the exchange rate FOX stored on it at checkout, so a March order is valued at March rates. An order without a stored rate is converted at today's rate.
- With another currency plugin, BEAR cannot know the rate each order was paid at. When the period holds orders in several currencies, the answer says plainly that the totals mix currencies and are not reliable, and the assistant is told to warn you before quoting a total.
- In the top customers report, an order that cannot be converted stays out of the customer's total and is counted separately, so the gap is visible.
A shop that sells in one currency needs none of this, and the answer says so.
Customer names and who may see these reports
The totals, product, payment and shipping reports contain no personal data at all: they are built from WooCommerce's analytics tables, which hold none. The top customers report is the exception, because a ranking of customers needs names. It returns the name and town, the number of orders, the total spent and the date of the last order. E-mail addresses and phone numbers are never returned. Guest checkouts are grouped by their billing e-mail, which stays on the server, and an order with no name at all is listed as an unattributed order with its number rather than merged into one large anonymous customer. Whatever a report returns becomes part of your conversation with the AI service, so ask for customer lists only when you need them.
Who may run the reports depends on the key. The shop-wide key in BEAR's settings opens everything. A shop manager with a personal key gets the reports only if his WordPress account has the view_woocommerce_reports capability, which the Shop manager role has by default. To close reports for one person while keeping the rest of his access, a developer can add this filter:
/*
* BEAR MCP: no sales, customer or margin reports for user 57.
* Child theme functions.php or a code snippets plugin.
*/
add_filter( 'woobe_mcp_permissions', function ( $map, $user_id ) {
if ( 57 === (int) $user_id ) {
$map['reports'] = 'none';
}
return $map;
}, 10, 2 );
The reports area covers sales, top customers, margin, payment and shipping breakdowns, coupon usage and stock against selling rate. That user's assistant no longer sees those reports, and the prepared overviews built on them are not offered to him. The order list is a separate area, orders. Margin per product, which needs your cost of goods, is explained in the profit margin report with AI.
Why a sales report comes back empty
- Analytics is not available. Without the WooCommerce Analytics tables BEAR answers that sales figures are not available until Analytics is enabled and has imported past orders.
- The import has not finished. If Analytics was enabled recently, the import of older orders may still be running. Check WooCommerce → Status → Scheduled Actions, or start the import of historical data in Analytics → Settings.
- The newest orders are not imported yet. On shops where Analytics imports orders on a schedule, WooCommerce's default on new shops, today's orders arrive with the next run, every 12 hours by default. BEAR adds a line to every report saying how many orders and refunds placed or changed since the last import are not in the figures yet, and the order list shows them.
- The statuses do not match. Orders waiting as Pending payment are not counted. If your shop leaves paid orders in a custom status, name it in the question.
- The period is too short. Without dates, a report covers the last 30 days.
- Nothing to show in one report. A shop of downloads has no shipping lines, so the shipping report is empty while the summary is not.
- The report is closed to you. If your account lacks the capability, or the reports area was closed for you, the assistant is told the tool is not available rather than given empty figures.
Ready prompts for WooCommerce sales reports
- "How are sales going? Compare the last three months."
- "WooCommerce sales by month for this year, with orders, average order and refunds."
- "Sales by week since 1 September, completed orders only."
- "Top 20 products by revenue last quarter, each variation separately."
- "Rank last month's products by units and by revenue and show where the order changes."
- "How did the products in the Jackets category sell since March, including the ones that sold nothing?"
- "Who are my ten best customers this year, and who has not ordered for six months?"
- "Which payment methods did customers use in the last six months, as shares?"
- "Which shipping methods do people choose, and how much did we collect for each?"
- "Show me the numbers for the last six months as charts."
Nothing to undo: reports only read
Every report tool is marked read-only, and the prepared overviews are read-only by construction: the part of BEAR that runs them refuses any tool that writes. Asking for figures changes nothing in your shop, so nothing appears in History and there is nothing to roll back.
Reports often lead to an action, such as "put the slowest ten on sale". That is a separate step with its own safety: the assistant finds the products, shows a preview of the new values, and the change is written only after you confirm the exact number of products. Every bulk change is recorded in History and can be rolled back. Reports are not limited in the free version of BEAR; its limits apply to writing changes, as described in the free version limitations.
Questions
Are these the same figures as WooCommerce Analytics?
They are read from the same Analytics tables, and net revenue is the figure Analytics calls net sales. If a total differs from the Analytics screen, compare the order statuses and the dates: BEAR counts Completed, Processing and On hold unless you name others, and reads dates in the shop's time zone.
Does it work without WooCommerce Analytics?
Only the top customers report, which reads the orders themselves. Totals, product sales, payment and shipping breakdowns need the Analytics tables.
Is there a limit to the period?
Any period works as long as Analytics has imported its orders. The top customers ranking is built from at most the 2,000 most recent orders of the period, so on a busy shop ask for a quarter or a month rather than several years.
Can I get sales for one colour or size?
Yes. Ask for it in words, for example "how did the red variations of the summer dresses sell". The assistant selects the matching variations first, then reports on them, one row per variation.
Checklist
- The MCP server is switched on and your assistant is connected.
- WooCommerce Analytics is enabled and its import of past orders has finished.
- The question names a period; otherwise it covers the last 30 days.
- The statuses counted are the ones you mean: by default Completed, Processing and On hold.
- When refunds are not zero, read them next to gross revenue.
- On a multi-currency shop, the currency line says the amounts were converted.
- Customer names are requested only when needed, and the reports area is closed for anyone who should not see them.
If a report does not match what you see in your shop, describe the question and the answer on the BEAR support forum.