The Presets report is a Pro feature. On the free version there’s no menu entry and no report at all.
Where to find it
Analytics → Cart Presets, beside WooCommerce’s own reports. You can also jump straight to one preset’s report from the CartPresets admin. Click a preset’s figure in the list’s Revenue column, or View in Analytics in the editor. Either one opens the report filtered to that preset.What it shows
The date-range picker, the comparison and the chart controls are all WooCommerce’s own components, and the export uses WooCommerce’s own CSV exporter, so the page behaves just like the reports beside it.
Where the numbers come from
WooCommerce’s own order tables, joined against the preset ID stamped on every preset order line at checkout. Four things follow from that: Revenue is net of refunds. A refund carries negative revenue and its line items carry the preset meta, so the subtraction lands on the right preset. Order counts use parent orders only, so a refunded order is one order, not two. A sale is whatever WooCommerce says it is. The excluded-status list is WooCommerce’s own, so this page agrees with every other page under Analytics instead of using a list of its own. An order counts once for each preset in it. Preset orders adds up each preset’s orders, so an order with two presets in it counts twice. The average revenue per order uses the same count. A deleted preset keeps its history, listed as Deleted preset #N. The money was real, and a report whose rows vanish with the preset won’t match your accounts.What is not tracked
Nothing records link opens, add-to-carts or checkout-reached. Following a preset link makes no analytics writes. Sales enter the books when WooCommerce processes the order, on hooks that never run on your storefront. That’s how the plugin keeps a near-zero storefront footprint. If you want click-level attribution, put UTM parameters on your preset links and read them in your existing analytics. See Preset links.If WooCommerce Analytics is disabled, there’s no Presets page, and the plugin keeps no record of its own. Whether sales are tracked at all is your WooCommerce decision, and CartPresets follows it.
Upgrading keeps your history
The report reads WooCommerce’s own books rather than a record of its own, so upgrading from free doesn’t start you at zero. Sales made through presets on the free version show up in the report as soon as you upgrade.Revenue in the listing
The preset list has a Revenue column, with the preset’s order count under each figure. It’s the same number this report shows: WooCommerce’s net revenue on the order lines the preset was stamped on. It isn’t an estimate from today’s price, so refunds and old prices are already in it. The figures come from WooCommerce Analytics’ tables. Until Analytics has imported your orders, each cell shows a dash with a note saying so. You can also sort the list by Revenue, and filter it with a Revenue condition. Both use that same figure, so a row never sorts or filters by one number while showing another. On the free version the column is still there, and each row shows a Pro tag where the figure would be. Revenue shows as Revenue (Pro) in the sort and filter choices, and can’t be picked.Reporting and purchase limits are separate
Purchase limits never read any of this. Limits count rows in the redemptions table, under Settings → Usage limits → Count orders with these statuses (redemption_statuses). So an on-hold order can take a slot before it counts as a sale on this page.
The two answer different questions: may this link still be used? versus how did this preset do? A bank-transfer order is a real commitment for the first question, and not yet revenue for the second.
For developers
cartpresets_sales_payload runs after totals, series, rows and the drill-down are assembled. Use it to append figures of your own, or to reshape what the report receives. cartpresets_sales_orders_cap raises how many orders the drill-down lists.
Both fire from CartPresets for WooCommerce Pro only, and the cartpresets/v1/sales routes aren’t registered on the free version, so a request 404s like any unknown route. Check the tier before assuming they exist. See the hooks reference.