Demo environmentEverything here is sample data — explore freely. The whole database resets every night at midnight (Casablanca), including anything you add.
Skip to content

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

Stage oneThe order arrives

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.

Stage twoSomebody rings

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.

Stage threeThe outcome is written down

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.

Stage fourOnly now does it ship

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.

1
The order exists and nobody has touched it

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.

2
A human being said yes on the telephone

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.

3
Somebody typed it into the system that ships things

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.

4
Handed to the courier, with a tracking number

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.

5
Moving, and visible

Courier status against the order, so a seller chasing a customer and a courier chasing an address are looking at the same record.

6a
Paid for at the door

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.

6b
Turned away at the door — not the same as returned

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.

6c
Came back for a reason that is not refusal

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.

RateNumeratorDenominatorWhy that one
Confirm rateConfirmedTotal ordersThe centre is paid to move orders from captured to confirmed. Everything received counts.
Cancellation rateCancelledTotal ordersThe mirror of the above. Same base, so the two are comparable.
Delivery rateDeliveredConfirmedA centre cannot be held to the delivery of an order it never got to confirm.
Refusal rateRefusedShippedOnly a parcel that actually went out can be refused at a door.
Return rateReturnedShippedSame 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.