Order Lifecycle
An order does not have one status. It has four, and they move independently. Most confusion about "why can't I do X to this order" comes from reading the wrong one.
| Status | Answers | Values |
|---|---|---|
| Order status | Is this order still live? | Open · Cancelled · Archived |
| Payment status | Where's the money? | Unpaid · Authorized · Paid · Partially paid · Partially refunded · Refunded · Voided · Failed · Expired |
| Fulfillment status | Has it been packed? | Unfulfilled · Partially fulfilled · Fulfilled · On hold · Scheduled · Removed · None |
| Delivery status | Where's the parcel? | New · Pending pickup · Picked up · In transit · Out for delivery · Delivered · Exception · Returned · Lost · Cancelled |
A COD order that has shipped but not been paid for is Open / Unpaid / Fulfilled / In transit — a perfectly normal state.
Order status
Open is where every order starts and where nearly everything is allowed.
Cancelled stops all pending work. Only an Open order can be cancelled; an archived order cannot be flipped to cancelled. See Cancellations.
Archived takes a finished order out of your working list without deleting it.
Payment status
Set by the payment method and by your own actions. The full breakdown — including what "authorized" means and why a refund is a record rather than a transfer — is in How payments work.
Two transitions worth knowing here:
- Adding items to a paid order moves it to Partially paid with an outstanding balance.
- Removing items from a paid order records a refund automatically for the removed value.
Fulfillment status
Rolled up from the individual items:
- Every item packed → Fulfilled
- Some packed → Partially fulfilled
- Every item on hold → On hold
- Nothing packed → Unfulfilled
Digital products are auto-fulfilled at order creation. They have no shipping step, so a digital-only order is Fulfilled the moment it's placed, and a mixed basket starts at Partially fulfilled. This is deliberate: it's what lets review requests and post-delivery automations fire for digital orders.
See Fulfillment.
Delivery status
Only meaningful once a carrier is involved. It is written by the carrier — either from a webhook or a status sync — and never by you directly. See Tracking & sync.
Exception is non-terminal: the carrier reported a problem (customer unreachable, address unclear, delivery postponed) but the parcel is still in play.
How orders get created
| Source | When the order appears | Starting payment status |
|---|---|---|
| Storefront checkout — COD or manual | Immediately at checkout | Unpaid (or Authorized, with a payment screenshot) |
| Storefront checkout — online gateway | Only when the gateway confirms payment | Paid |
| Draft order completed | When you complete the draft | Unpaid until you collect |
| Created in the dashboard | Immediately | Unpaid until you collect |
| Abandoned checkout recovered | When the recovered checkout converts | Depends on the method used |
Every order gets a sequential order number for humans and a tracking number the customer uses on your storefront's order-tracking page.
The order timeline
Every order carries a full audit trail — who did what, when. Payment transitions, fulfillment changes, tracking numbers, item edits, discounts, notes, tags, emails sent, cancellations, returns, and comments are all recorded.
Timeline entries name the staff member who performed the action, which makes it the fastest way to answer "why does this order look like this?"
What isn't wired up yet
So you don't plan around it:
- Order assignment to a staff member — the field exists but there's no way to set it.
- Automatic action on order risk — orders are risk-scored, but nothing holds or flags them automatically.
- Carrier delivery milestones in the timeline — carrier syncs currently log a generic edit rather than "picked up" / "delivered" events. Delivery status itself does update.