> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vortexiq.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Order Status Distribution, OpenCart

> Breakdown of OpenCart orders across their configurable order statuses. Tracked live in Vortex IQ Nerve Centre. How to read it, why it matters, and how to act on it.

**Card class:** [Standard](/nerve-centre/overview#card-classes-explained)  •  **Category:** [Ecommerce Platform](/nerve-centre/connectors#connectors-by-type)

> The share of orders sitting in each order status, the single view that shows where work is piling up and where money is leaking.

## At a glance

> OpenCart moves every order through a sequence of statuses (Pending, Processing, Shipped, Complete, Cancelled, Refunded, Failed and any custom ones a merchant adds). This donut breaks the window's orders down by status share. It is the fastest read on operational health: a fat Pending slice means fulfilment is backing up, a growing Refunded slice means product or expectation problems, a rising Failed slice means checkout is breaking. There is no alert, because the healthy mix is store-specific, but the shape of the donut is diagnostic at a glance.

|                                 |                                                                                                                                                                                                                                         |
| ------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **What it shows**               | Order count per status for the window, displayed as shares of a donut.                                                                                                                                                                  |
| **Statuses are configurable**   | OpenCart order statuses are merchant-editable under System → Localisation → Order Statuses. Stores rename, add, and remove statuses freely. The connector reads your configured statuses, not a fixed list.                             |
| **Default statuses**            | A stock OpenCart install ships Pending, Processing, Shipped, Complete, Cancelled, Refunded, Voided, Denied, Canceled Reversal, Failed, Expired, Processed, Reversed, Chargeback, plus the missing-orders state (`order_status_id = 0`). |
| **Missing orders**              | Orders with `order_status_id = 0` are started-but-unconfirmed checkouts. The card can show or fold these depending on configuration.                                                                                                    |
| **Current status, not history** | The donut reflects each order's current status, not every status it has passed through. Status history lives in `oc_order_history`.                                                                                                     |
| **Multi-store**                 | The mix can be split by `store_id` in the detail view; the headline donut sums all stores.                                                                                                                                              |
| **Currency / tax**              | n/a, this is a count distribution. For value at risk see [Revenue at Risk (live)](/nerve-centre/kpi-cards/opencart/revenue-at-risk-live).                                                                                               |
| **Time window**                 | `30D` (rolling 30 days)                                                                                                                                                                                                                 |
| **Alert trigger**               | None                                                                                                                                                                                                                                    |
| **Roles**                       | owner, operations                                                                                                                                                                                                                       |

## Calculation

```
COUNT(orders) GROUP BY order_status
  WHERE date_added BETWEEN [period_start, period_end]
```

## Worked example

An Italian kitchenware merchant on OpenCart 3.0 reviews the 30-day window 14 May 26 to 12 Jun 26. They have kept the default statuses and added one custom status, Awaiting Stock.

| Status                                    | Orders    | Share    |
| ----------------------------------------- | --------- | -------- |
| Complete                                  | 1,120     | 56%      |
| Processing                                | 360       | 18%      |
| Shipped                                   | 240       | 12%      |
| Pending                                   | 140       | 7%       |
| Awaiting Stock (custom)                   | 60        | 3%       |
| Cancelled                                 | 40        | 2%       |
| Refunded                                  | 24        | 1.2%     |
| Failed                                    | 16        | 0.8%     |
| **Order Status Distribution (this card)** | **2,000** | **100%** |

What's interesting here:

1. **The Complete slice at 56 percent is the headline of a healthy store.** Most orders reach a terminal, fulfilled state. The Processing and Shipped slices together (30 percent) are the work-in-progress that will mostly roll into Complete. A donut dominated by Complete and in-flight statuses is the shape you want.
2. **The Awaiting Stock slice is the custom-status payoff.** Because OpenCart lets merchants define their own statuses, this store can see 60 orders held specifically because of inventory. A generic platform would bury those in Pending. The donut respects the merchant's own operational vocabulary, which makes it far more actionable.
3. **Pending at 7 percent is worth a glance, not a panic.** Some pending is normal (bank transfer awaiting payment, fresh orders not yet picked up). A pending slice that grows week over week is the early sign of a fulfilment backlog; pair with [Order Processing Backlog](/nerve-centre/kpi-cards/opencart/order-processing-backlog).
4. **Refunded plus Cancelled plus Failed is 4 percent combined, which is healthy.** Each is a separate card with its own diagnosis, but the donut is where you first notice if one of them is fattening. A jump in the Refunded slice points at product or expectation issues; a jump in Failed points at checkout or gateway problems.
5. **The mix is store-specific, so there is no alert.** A bank-transfer-heavy store carries a large Pending slice permanently and that is fine. The value is in watching the *shape change* over time, not in comparing your donut to anyone else's.

## Sibling cards merchants should reference together

| Card                                                                                  | Why pair it with Order Status Distribution                                 |
| ------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- |
| [Pending Orders](/nerve-centre/kpi-cards/opencart/pending-orders)                     | Zooms into the Pending slice. A growing slice here is a backlog forming.   |
| [Processing Orders](/nerve-centre/kpi-cards/opencart/processing-orders)               | The in-flight slice. Read with Pending to see where work sits.             |
| [Order Processing Backlog](/nerve-centre/kpi-cards/opencart/order-processing-backlog) | The operational alarm when the early-stage slices swell.                   |
| [Failed Orders (24h)](/nerve-centre/kpi-cards/opencart/failed-orders-24h)             | The Failed slice in a live 24-hour view.                                   |
| [Refund Rate](/nerve-centre/kpi-cards/opencart/refund-rate)                           | The Refunded slice as a rate over time.                                    |
| [Order Volume](/nerve-centre/kpi-cards/opencart/order-volume)                         | The total the donut divides up. Mix means little without knowing the size. |

## Reconciling against OpenCart

**Where to look in OpenCart admin:**

Sales → Orders, with the Order Status filter, lets you count orders in each status for a date range. System → Localisation → Order Statuses is where the status list itself is defined, renamed, and extended. Reports → Sales → Orders can group totals by status for a periodic view. The underlying data is `order_status_id` on `oc_order`, the status names in `oc_order_status`, and the transition log in `oc_order_history`.

Other OpenCart views that *look* like the same number but are not:

* **Sales → Orders default list**: hides `order_status_id = 0` (missing) orders, so the on-screen total can be smaller than the donut if missing orders are included.
* **Reports → Sales**: usually reports confirmed-sales statuses only and excludes Failed, Missing, and sometimes Cancelled.
* **Dashboard order tile**: typically a single confirmed-order count, not a status breakdown.

**Why our number may legitimately differ:**

| Reason                                                                                                                                                                                                  | Direction of divergence                        |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------- |
| **Custom statuses.** OpenCart statuses are merchant-configurable. If a store renames or splits statuses, our donut reflects the configured set, which may not line up with a simple admin label filter. | Either direction                               |
| **Missing orders.** Whether `order_status_id = 0` is shown depends on configuration. An admin default list hides them; the donut can include them.                                                      | Vortex IQ higher when missing orders are shown |
| **Time zone.** OpenCart admin uses the store timezone; Vortex IQ evaluates the window in UTC by default. Boundary orders shift slices slightly.                                                         | Boundary effects                               |
| **Multi-store.** A `store_id`-filtered admin view shows one store; the donut sums all by default.                                                                                                       | Vortex IQ higher than a single-store view      |
| **Sync lag.** Status changes in the last few minutes appear on the next sync.                                                                                                                           | Self-resolves at next sync                     |

**Cross-connector note:** when a payment processor is connected, the Failed and Refunded slices should correspond to the processor's declines and refunds. If the donut shows refunds the processor does not, a refund was recorded in OpenCart without being pushed to the gateway, which is a reconciliation flag worth chasing.

<details>
  <summary><em>Same-metric documentation cross-reference (for agencies running multiple platforms)</em></summary>

  The same status-breakdown idea exists on other commerce platforms, though their status vocabularies differ (Shopify splits financial and fulfilment status; BigCommerce uses its own order-status set). This is not a reconciliation; your OpenCart store has no parallel store elsewhere. These cross-links let agencies running multi-platform client books navigate between equivalent status metrics across the docs.

  * [`shopify.financial_status_breakdown`](/nerve-centre/kpi-cards/shopify/financial-status-breakdown)
  * [`bigcommerce.financial_status_breakdown`](/nerve-centre/kpi-cards/bigcommerce/financial-status-breakdown)
</details>

## Known limitations / merchant FAQs

**Why do my statuses not match the defaults you list?**
Because OpenCart statuses are merchant-configurable. Stores rename, add, and remove them under System → Localisation → Order Statuses. The donut reads your configured statuses, so a custom status like Awaiting Stock or Ready for Pickup will appear as its own slice.

**Does the donut show current status or status history?**
Current status only. Each order contributes one slice, its status right now. The full path an order took through statuses lives in `oc_order_history` and is not what this card draws.

**My Pending slice is large, is that a problem?**
Not necessarily. A bank-transfer-heavy or quote-driven store carries a permanently large Pending slice and that is fine. The signal is a slice that grows week over week, which points to a fulfilment or payment backlog. Pair with [Pending Orders](/nerve-centre/kpi-cards/opencart/pending-orders).

**Why are there no missing orders in my donut?**
Missing orders (`order_status_id = 0`, unconfirmed checkouts) are shown or folded depending on configuration. If you want them visible, enable them in the card settings; if the donut looks short of your total order count, missing orders are likely being folded.

**Why is there no alert on this card?**
Because the healthy mix is store-specific. A fixed threshold on any one slice would mislead some stores. The donut is a diagnostic shape; the slice-level alarms live on the dedicated cards (Failed, Refund Rate, Backlog).

**The Refunded slice grew, where do I dig?**
Move to [Refund Rate](/nerve-centre/kpi-cards/opencart/refund-rate) for the trend, then look at which products drive it. A fattening Refunded slice usually points to a product quality or expectation issue rather than a payment one.

**Why does my admin order list total differ from the donut total?**
Most often because the admin default list hides missing orders while the donut can include them, and because the donut may sum multiple stores. Filter the admin for all statuses and the right store to reconcile.

***

### Tracked live in Vortex IQ Nerve Centre

*Order Status Distribution* is one of hundreds of KPI pulses Vortex IQ tracks across OpenCart and 70+ other ecommerce connectors. Nerve Centre runs the detection layer; Vortex Mind investigates the cause when something moves; Ask Viq lets you interrogate any number in plain English.

[Start for free](https://app.vortexiq.ai/login) or [book a demo](https://www.vortexiq.ai/contact-us) to see this metric running on your own data.
