How it works
Seven stages, not five.
Most order systems go confirmed → shipped → delivered and lose two days of operational reality in the gaps. This one does not, because the gaps are where the money leaks.
One order, end to end
Scroll it
A customer taps buy on your Shopify store, or fills in a Cha-Ching form you put in an Instagram bio. No payment is taken — there is nothing to take. Within seconds it is in the queue, deduplicated against the platform order id by a database constraint rather than a hopeful if-statement, because concurrent webhooks for one order are not a hypothetical.
An agent at the centre you hired, cleared for your shop specifically. They see the basket, your script, your standing instruction, and how many attempts they have left under the rules you set. The stopwatch starts when they dial, so the duration on the record is the duration that happened.
Confirmed, no answer, busy, callback, wrong number, duplicate, or cancelled with one of eight specific reasons. The commission for that call is written at the rate agreed with you, carrying that rate forever. A database trigger refuses to let anybody edit it afterwards — including us.
Data entry, courier, door. Cash collected and reconciled against what the courier actually remitted. Delivered, refused and returned are counted as three different things, because refusal is usually a confirmation problem and return is usually a logistics one — and a single number hides which of the two you have.
The lifecycle
Every stage an order can be in, and why each one is separate
Each of these is a different team, a different failure mode and a different fix. Collapsing any two of them produces a number nobody can act on.
It arrived from a storefront webhook or an order form. No money has changed hands and nothing is committed. The clock that matters — time to first contact — starts here.
An agent reached the customer, read back the basket and the address, handled whatever objection came up, and recorded the outcome. Or did not reach them, and recorded that instead, with the attempt counted against the seller’s cap.
Data entry. The stage most platforms pretend does not exist, and the one where a day quietly goes missing between “the customer agreed” and “the courier has it”. It has its own queue and its own operator, because it is a real job.
The parcel physically leaves. From here the outcome is partly out of everybody’s hands, which is exactly why the denominators change at this line.
Courier status against the order, so a seller chasing a customer and a courier chasing an address are looking at the same record.
Cash collected. Reconciled against what the courier actually remitted, which is not always what the courier said it collected, and the difference is the whole reason reconciliation is a screen rather than a formula.
The customer was there and said no. That is almost always a confirmation problem: something was unclear on the call, or the call never happened. Counted against the refusal rate.
Nobody home across the courier’s attempts, address wrong, parcel damaged. Usually a logistics problem. Counted against the return rate, separately, because the fix is a different fix.
When the answer is no
Eight reasons, because “cancelled” tells you nothing
A cancellation rate is a number you can only worry about. A breakdown is a number you can act on — and four of these eight are things a seller can fix this week.
Changed mind
Bought it at midnight, awake now. The commonest and the most recoverable — this is what a seller’s standing offer is for.
Price too high
Saw it cheaper, or had not registered delivery cost. Negotiable if the seller allows it.
Ordered by mistake
A slip, or a child with a phone.
Duplicate order
Ordered twice. Caught before two parcels ship and two commissions are earned.
Unreachable
Attempts exhausted under the seller’s own rules. Not a decision — the absence of one.
Wrong number
The digits reach somebody else entirely.
Out of coverage
No courier serves the address at a price anyone would pay.
Out of stock
The seller cannot supply it. The one reason on this list that is nobody’s fault but the seller’s.
Measuring it
Five rates, and they do not share a denominator
This is the detail that separates a real operations product from a dashboard. Using one denominator for all five is quick, wrong, and invisible until somebody is penalised by it.
| Rate | Numerator | Denominator | Why that one |
|---|---|---|---|
| Confirm rate | Confirmed | Total orders | The centre is paid to move orders from captured to confirmed. Everything received counts. |
| Cancellation rate | Cancelled | Total orders | The mirror of the above. Same base, so the two are comparable. |
| Delivery rate | Delivered | Confirmed | A centre cannot be held to the delivery of an order it never got to confirm. |
| Refusal rate | Refused | Shipped | Only a parcel that actually went out can be refused at a door. |
| Return rate | Returned | Shipped | Same reason. A return is a journey that happened. |
And a rate with no denominator is blank, not zero. A centre that was assigned nothing this month has no confirm rate. Showing 0% would read as total failure and could trigger an SLA penalty against somebody who did nothing wrong.
That is the whole product, honestly described.
If any of it is wrong for how you actually operate, tell us before you apply — we would rather know.