Excludes failed/cancelled. Pairs with revenue to spot AOV-vs-volume issues at a glance.
At a glance
The count of WooCommerce orders placed in the period whose status iscompletedorprocessing. The denominator behind AOV, refund rate, and most other ratio cards.
| What it counts | COUNT(orders) WHERE status IN ('completed', 'processing'). Each order counts once regardless of its value. |
| REST API endpoint | GET /wp-json/wc/v3/orders?per_page=100&status=completed,processing&after=...&before=.... The total comes from the X-WP-Total response header (or pagination through the result set). |
| Status filter | Includes completed and processing. EXCLUDES pending, on-hold, failed, cancelled, refunded, trash. Mirrors the WC Admin “Sales by date” report definition. |
| Tax / shipping / discounts | Not applicable, this is a count metric. |
| Refunds | A fully refunded order has its status flipped to refunded and is therefore excluded from this count. Partial refunds leave the order in completed and are still counted. |
| Cancelled / failed orders | Excluded. cancelled (merchant or customer cancelled) and failed (gateway declined) drop out. |
| On-hold orders | Excluded. Track separately via On-Hold Orders. On Woo, on-hold is the BACS / bank-transfer / manual-payment-pending state, not zero-revenue customer intent. |
| Currency | Currency-agnostic, this is a count. Multi-currency stores get one valid number. |
| Channels / sources | Not filtered. Web checkout, REST API created orders, marketplace plugin orders (Amazon Connector, eBay Connector), and POS plugins (WooCommerce Point of Sale, Hike) all contribute. Slice via created_via or marketplace plugin meta if needed. |
| Self-hosted vs managed-Woo | Same definition either way. Managed-Woo hosts have steadier sync; self-hosted on shared hosting can show periodic gaps. |
| Time window | T/7D/30D vsP |
| Alert trigger | drop >20% vsP, driven by sentiment_key: order_count_trend |
| Roles | owner, marketing, operations |
Calculation
Calculated automatically from your WooCommerce data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.Worked example
A US homewares brand on managed-Woo (Pressable). Two warehouses, multi-DC fulfilment. The 30-day window covers 14 Mar 26 to 12 Apr 26.| Status | Count | Counts here? | Note |
|---|---|---|---|
completed | 2,140 | Yes | Fulfilled, paid |
processing | 384 | Yes | Paid, awaiting fulfilment in DC |
on-hold | 142 | No | BACS / bank transfer pending |
pending | 421 | No | Cart-skeleton, never paid |
failed | 88 | No | Gateway declined |
cancelled | 42 | No | Customer or merchant cancelled |
refunded | 31 | No | Full refunds, status flipped |
| Total Orders (this card) | 2,524 |
- The “phantom orders” are large on Woo.
pending(421),failed(88), andcancelled(42) together represent 551 customer attempts that did not produce revenue. WC indexes them all (they are realwp_postsrows), but this card excludes them. To see the conversion-failure picture watch Failed Order Rate. on-holdis 5.6% of attempts. That is high. On managed-Woo the BACS workflow tends to leak: customers pick BACS at checkout, never actually transfer the funds, and the order sits in on-hold forever. Healthy stores run < 2% on-hold. The merchant should consider hiding BACS from the checkout in [WooCommerce → Settings → Payments].- Multi-DC routing does not affect count. The brand uses a fulfilment-routing plugin to split orders between East and West coast DCs. Each customer order is still one order; the routing happens after status reaches
processing. This card is unaffected by fulfilment topology. - 30-day prior was 2,610 orders. Down 3.3% vsP, well within normal weekly noise, no alert. The merchant should check Revenue Trend and AOV together to see whether the small dip is a basket-size shift or a true volume softness.
Sibling cards merchants should reference together
| Card | Why pair it with Total Orders |
|---|---|
| WC Total Revenue | Revenue divided by Orders is AOV. Read together to know whether revenue moved on volume or basket size. |
| WC Average Order Value | Same equation, the inverse perspective. Rising orders + flat AOV = volume win. |
| WC On-Hold Orders | Orders excluded from this card. A persistent on-hold pile means BACS / payment friction is hiding intent. |
| WC Failed Order Rate | The denominator-friendly view of conversion failure. Pair with Total Orders to size the leak in absolute terms. |
| WC Conversion Rate | Orders per session. If orders fall but sessions are flat, the funnel broke. |
| BC Order Count | Cross-platform peer for agencies running multi-platform book. |
| Shopify Order Count | SaaS-platform peer; same status-filter discipline. |
Reconciling against the vendor’s own dashboard
Where to look in WooCommerce Admin: WP Admin → WooCommerce → Reports → Orders → Sales by date shows the Number of orders column for the same period. That should match this card to within 1 to 2 orders (timezone boundary). Other WP Admin views that look like the same number but are not:- WP Admin → WooCommerce → Orders (list view): defaults to “all statuses”. Use the status filter dropdown to restrict to
completed + processingfor an apples-to-apples comparison. - WP Admin → Analytics → Orders (WC 4.0+): a separate engine. Usually matches this card but its default filter set differs by WC version.
- Stats overview widget: today only, in WP-site timezone.
| Reason | Direction of divergence |
|---|---|
| Time-zone. WC reports run on WP-site timezone; Vortex IQ runs on UTC. | +/- 1 day’s orders at the boundary |
| Self-hosted server uptime. Indexer cannot poll during host outage. | Ours temporarily lower; self-resolves |
Plugin-version compatibility. Custom WC builds (B2B plugins, subscription plugins) sometimes create order rows that the standard wc/v3 endpoint hides. | Either; investigate per-merchant |
| Refund-object aggregation. WC creates a child refund post per refund. Some plugins miscount these as separate “orders”. This card uses parent posts only. | Some plugins higher than this card |
| Currency plugin behaviour. Multi-currency plugins do not affect order count, but mis-configured ones can produce duplicate test orders during currency switches. | Rare; investigate if persistent |
| Card | Expected relationship | What causes legitimate divergence |
|---|---|---|
stripe.stripe_charge_count | Stripe <= WC Total Orders | Stripe sees only WC Stripe Gateway charges. PayPal, BACS, manual, COD orders are invisible to Stripe. A typical Woo store sees Stripe at ~70 to 85% of order count. |
paypal.pp_transaction_count | PayPal <= WC Total Orders | Subset by definition. |
google_analytics.ga_transactions | GA4 ~= WC Total Orders x (1 minus tracking gap) | GA4 misses 10 to 25% of purchase events. Treat WC as truth. |
Known limitations / merchant FAQs
Self-hosted vs managed-Woo, does it change this number? The definition is identical, but data freshness varies. Self-hosted Woo on shared hosting (Bluehost, GoDaddy) can drop offline for minutes to hours during traffic spikes, the indexer misses orders during the outage. Managed Woo (Woo.com Cloud, WP Engine, Pressable, Kinsta) typically runs steady. WordPress.com Business / Commerce is similarly steady. Why does this card excludeon-hold?
On Woo, on-hold is BACS / direct-bank-transfer / cheque / manual gateway pending. The customer placed the order but no payment is captured yet. Including it would inflate volume. The standard Woo “real orders” definition (and what WC Admin reports show) is completed + processing. Track on-hold separately via On-Hold Orders.
Why does this card exclude pending?
pending is the cart-skeleton WC creates when a customer hits the checkout page but has not completed payment. It is essentially abandoned cart data. Including it as orders would massively overstate volume.
Refund-object accounting, what does it mean for the count?
A WC refund creates a child post (post_type = shop_order_refund) under the parent order. The parent order’s status flips to refunded if it was a full refund, or stays completed if partial. This card excludes refunded parents. So a fully refunded order drops out of the count; a partially refunded one stays in. This is the merchant-friendly definition (refunded means “did not happen”).
Plugin-induced data shape variance, how does Vortex IQ handle it?
The Woo engine targets WC REST API v3 fields (status, total, date_created, currency). Plugins that overload these fields (e.g. WooCommerce Subscriptions creates renewal orders that look like normal orders), are counted normally, each renewal is a separate order. If your store uses a plugin that creates orders outside the standard shop_order post type, contact support@vortexiq.ai.
Multi-currency, does it change the count?
No. Currency does not affect order count. CURCY / Aelia / WMC will not change this number. Only the per-currency Total Revenue is affected.
Why does Stripe show fewer transactions than this card?
The WC Stripe Gateway only sees Stripe-routed payments. PayPal, BACS, COD, gift-card, and manual orders are invisible to Stripe. Typical split: Stripe ~70 to 85% of WC order count.
Today is jumpy, why?
Today is incomplete data. Use rolling 7D or 30D for stable comparisons. The alert window is 30D vsP for that reason.
Self-hosted server slowness, how do I tell if I am missing orders?
Compare this card to WC Admin → Reports → Orders for the same window. If the gap is > 2% and your host had a known outage, the indexer caught up at the next poll. If the gap persists for > 24 hours, contact support, the REST API key may have been rotated or IP-blocked.
My WP Admin shows a different count, debug playbook:
- Match the date range exactly.
- Match the status filter to
completed + processing. - Account for timezone (WP-site vs UTC).
- Confirm no plugin is filtering the order list (B2B plugins sometimes hide wholesale orders from the default view).
- If gap remains > 2%, contact support.