This is an operating worksheet, not a promise that every metric is available automatically in a DelivCore report. Confirm the events, timestamps and exports available in your setup, then assign an owner to any manual records.
Define the order population first
Choose a reporting window and timezone, the restaurants and delivery area included, and the point at which an order counts as placed. Exclude test orders. Keep orders that are still open separate from final outcomes; revisit the same cohort after they close. Otherwise, a busy final hour can look like a sudden fall in completion.
Use one order reference across restaurant, courier, payment and support records. Record placed, accepted, ready, collected and delivered times where available, plus cancellation reason and responsible team. Keep missing timestamps visible instead of turning them into zero-minute deliveries.
Seven metrics with explicit definitions
| Metric | Definition for this worksheet | What to investigate |
|---|---|---|
| Completion rate | Completed orders ÷ placed orders × 100, after the cohort has closed. | Split failures by restaurant, service area and shift. |
| Cancellation rate | Cancelled orders ÷ placed orders × 100, using the same cohort. | Separate restaurant rejection, unavailable items, customer cancellation and delivery failure. |
| Acceptance delay | Accepted time minus placed time for accepted orders with both timestamps. | Report the median, the 90th percentile and the number of orders measured. Check missed alerts or staffing delays. |
| End-to-end delivery time | Delivered time minus placed time for completed orders with both timestamps. | Review preparation and collection delays separately from the trip to the customer. |
| On-time delivery rate | Completed orders delivered by the original promised deadline ÷ completed orders with a recorded original deadline × 100. | Show deadline coverage as well as the rate. Do not replace the original promise with a later ETA. |
| 30-day repeat rate | Customers with a second completed order within 30 days of their first ÷ customers in that first-order cohort × 100. | Use only cohorts that have had the full 30-day observation window. Apply the same customer identifier consistently. |
| Contribution per completed order | Operator revenue minus variable costs attributable to the reporting cohort, divided by completed orders in that cohort. | Include costs from failed orders too. Document refunds, credits and promotions without counting them twice. |
The median is the middle of the sorted times; the 90th percentile describes the slower end of the distribution. Choose one percentile calculation method and keep it consistent. Averages alone can hide a small group of very late deliveries. Always show the measured order count and missing-data count beside a timing metric.
Worked example: one closed pilot cohort
These are illustrative figures, not DelivCore results or industry targets. Suppose 120 real orders were placed, 108 completed and 12 cancelled, with no orders left open. Completion is 108 ÷ 120 = 90%; cancellation is 12 ÷ 120 = 10%.
If every completed order has an original deadline and 90 arrived on time, on-time delivery is 90 ÷ 108 = 83.3%. If deadlines are missing, report how many are missing and calculate the rate only over the orders with recorded deadlines. Do not silently treat missing values as successful deliveries.
Suppose the operator retains €540 in commission and delivery/service revenue after adjustments, and incurs €432 in variable costs for the entire cohort, including failed orders. Contribution is (€540 − €432) ÷ 108 = €1 per completed order, before fixed software, staffing and other overhead. This is not net profit. Use your own revenue and cost definitions consistently.
Keep order value separate from operator revenue
The value of food sold through a marketplace is different from the revenue retained by its operator. Record your treatment of taxes, delivery fees, discounts and refunds before comparing periods. Stripe's marketplace metrics guide discusses GMV, revenue and take rate as distinct measures.
Use the marketplace cost guide to separate fixed and variable costs. A positive contribution per order does not establish profitability, and a bigger basket does not necessarily improve contribution if delivery or support costs rise with it.
Turn the scorecard into a weekly decision
- Freeze the cohort: record the window, restaurants, placed count, open count and missing data.
- Find the largest operational loss: identify where orders fail or miss their original deadline.
- Inspect a few order histories: check the actual handoff and support notes before assigning a cause.
- Choose one change and an owner: for example, correct menu availability or adjust restaurant acceptance training.
- Review the next comparable service: compare similar hours and areas, and note changes in order mix or promotions.
Agree your own service targets before the pilot; this guide does not prescribe a universal benchmark. For a small sample, show counts alongside percentages. If one restaurant or zone performs poorly, address that segment before treating a site-wide average as evidence that expansion is ready.
Prepare the pilot and the people behind it
Use the marketplace launch guide for sequencing, the restaurant onboarding checklist for readiness, and the dispatch workflow to review courier handoffs. Bring your scorecard definitions and a sample order journey to the demo.
