# Advanced Order Management

**Category:** Orders  ·  **Min plan:** Unlimited (Enterprise included)  ·  **Slug:** `advanced-orders`

Adds a dedicated CRM-style page with 12 fixed sub-statuses (confirmed, no answer, postponed, cancelled, fake, duplicate, customer cancelled, waiting customer call, busy line, at courier, returned, completed), call attempt tracking, and a full status timeline. The standard orders page itself is unchanged, but eight of the sub-statuses write through to the core order status — see [Sub-statuses that change the core order status](#core-status-mirror).

## Video tutorial

[Advanced Order Management](https://www.youtube-nocookie.com/embed/l-SCiKSU2iM)

## Features

* Dedicated CRM-style orders page
* 12 fixed sub-statuses (no answer, busy line, postponed, fake, duplicate, etc.)
* Call attempt tracking with notes
* Full status change timeline per order
* Filter & search by sub-status
* Owner-only settings and per-agent team stats

## What it does

DZBuild's standard orders page at [`/dashboard/orders`](https://dzbuild.com/dashboard/orders) is intentionally simple — it's about shipping the order. The Algerian COD reality is messier: orders need to be call-confirmed, customers don't always pick up, the line is busy, the order is fake, the customer asks to postpone, etc.

This add-on activates a **second**, separate orders surface at [`/dashboard/orders/advanced`](https://dzbuild.com/dashboard/orders/advanced) that operators use to work the call queue. It tracks the 12 sub-statuses below, every call attempt with notes, and the full status-change timeline per order.

The standard orders page itself is untouched — but setting certain sub-statuses does update the core order status behind it, as described below.

## The 12 sub-statuses

The list is fixed in the add-on and cannot be extended — there is no way to create your own sub-status.

| Sub-status                | Used when                                                                                                    |
| ------------------------- | ------------------------------------------------------------------------------------------------------------ |
| **Confirmed**             | Order confirmed with the customer by phone                                                                   |
| **No answer**             | Customer didn't pick up the call                                                                             |
| **Busy line**             | Line was busy (try again later)                                                                              |
| **Postponed**             | Customer asked to be called back later. No callback time is recorded, the order simply waits under this chip |
| **Cancelled**             | Cancelled by the store                                                                                       |
| **Fake**                  | Obvious fake — random name/number, prank                                                                     |
| **Duplicate**             | Same customer ordered twice; merge or cancel one                                                             |
| **Customer cancelled**    | Customer confirmed but later cancelled                                                                       |
| **Waiting customer call** | Customer asked to call you back                                                                              |
| **At courier**            | Order handed off to the courier                                                                              |
| **Returned**              | Courier returned the package                                                                                 |
| **Completed**             | Order delivered and paid                                                                                     |

## Sub-statuses that change the core order status

Eight of the twelve sub-statuses are mirrored onto the order's core status:

| Sub-status                                        | Core status it sets |
| ------------------------------------------------- | ------------------- |
| Confirmed                                         | `confirmed`         |
| Cancelled / Fake / Duplicate / Customer cancelled | `cancelled`         |
| At courier                                        | `shipped`           |
| Returned                                          | `returned`          |
| Completed                                         | `delivered`         |

That mirror is not cosmetic. It commits or releases stock, stamps the delivery date when the order becomes delivered, updates the customer's order history, and triggers the same notifications and integration syncs a manual status change does: customer email, Telegram and Google Sheets.

The remaining four — **No answer**, **Postponed**, **Busy line** and **Waiting customer call** — leave the core status alone (typically `pending`), so you can work the call queue without touching fulfillment.

## How to activate

1. Open **Dashboard → Add-ons** at [`/dashboard/addons`](https://dzbuild.com/dashboard/addons).
2. Find **Advanced Order Management** under *Orders*.
3. Click **Activate** (Unlimited plan required).
4. A new **Advanced Order Management** entry appears in the dashboard sidebar pointing to [`/dashboard/orders/advanced`](https://dzbuild.com/dashboard/orders/advanced).

The add-on cannot be activated on the **Digital** theme. If your store switches to Digital, the card is shown as paused — the add-on stops running, but nothing is uninstalled and your sub-status data is preserved.

## How operators use it

Each row on [`/dashboard/orders/advanced`](https://dzbuild.com/dashboard/orders/advanced) shows the order, the product, the customer and phone, the wilaya, the total, the core status, the current sub-status, the delivery state, the number of call attempts with the date of the last one, and quick actions: **Details**, **Call**, **Send** (to your courier, while the order is not sent yet) and **Print** (once it has a tracking number). Click a status or sub-status badge to change it. You can also tick several orders and send up to 50 at once to the courier you pick. The typical flow is:

1. Operator opens the queue. It is always sorted newest order first — there is no sort control.
2. Picks the next order, calls the customer.
3. Logs the call result. There are exactly five: *No answer*, *Busy*, *Answered*, *Wrong number*, *Callback requested*. (Postponed / Confirmed / Cancelled are sub-statuses you set separately — they are not call results.)
4. Adds free-form notes (e.g. "wants 2 pieces instead of 1").
5. The order moves through the funnel until it's *At courier* or *Cancelled*.

Every call attempt is timestamped and visible in the order's timeline alongside status changes — useful for performance reviews and dispute resolution.

### Narrowing the queue

There is no sorting, only filters:

* **Sub-status chips**, including a *Not defined* chip that shows untreated orders, and a *Return on the way* chip that lists returned orders whose stock has not come back yet. Tick those orders and click **Returns received** once the parcels are back with you, and their stock comes back.
* **Core status** filter.
* **Date period** — today, yesterday, 3 days, week, month, or a custom range.
* **Search** — matches customer phone, customer name, order id or store sequence number.
* **Per page**: 20, 50 or 100 rows. Those are the only three choices, and 20 is the default.
* **Store filter** — team members with access to more than one store get a store selector in the toolbar, including an *all stores* combined view where each row shows which store it belongs to.

The timeline only records dashboard changes

Status changes made from the dashboard are recorded in the timeline. Automatic status updates pulled from the courier by the delivery-tracking sync are not.

## Owner-only settings

The store owner can open **Settings** on the advanced orders page and require a written note before an agent may set specific sub-statuses — useful for *Fake*, *Cancelled* or *Customer cancelled*, where you want a reason on record. Staff members cannot open or change these settings.

## Team stats

Also owner-only: the **Team** panel shows, for today and per agent, the number of confirmations, call attempts and actions, the orders assigned today, and the time of that agent's last activity. At the top of the same panel, **Order distribution** has a switch: when it is on, new orders are shared among your team, owner included, by the percentages you set, which must add up to 100%. Only orders that arrive after you save are shared out. While it is on, a team member cannot change the status of an order assigned to someone else, on this page or on the standard orders page, and cannot log a call on it. The owner can act on every order, and orders nobody was assigned to stay open to the whole team.

## Tips

* Use the **Notes** field for actionable info only — long stories belong in CRM tools.
* There is no callback scheduling: to work postponed orders, click the **Postponed** sub-status chip.
* The **Fake** sub-status pairs well with [Limit Orders Per IP](https://dzbuild.com/docs/addons/limit-orders-per-ip.md) and [Captcha Protection](https://dzbuild.com/docs/addons/captcha-protection.md): together they reduce the call-confirm workload.
* The advanced page is built for the call workflow, and it can also send orders to your courier and print their labels. Remember that the eight mirrored sub-statuses move the order along on the standard orders page at the same time.
