% of orders dispatched before dispatch_due_by. OnBuy penalises stale account standing.
At a glance
The single most important number in the OnBuy seller account. The proportion of orders dispatched before OnBuy’s dispatch_due_by deadline (typically 24 to 48 hours after the order is paid). Below 95% triggers OnBuy’s “Account Health” warning system; below 90% leads to listing de-prioritisation in browse.
| What it counts | COUNT(orders WHERE dispatched_at <= dispatch_due_by) / COUNT(orders WHERE dispatch_due_by IS NOT NULL) over the rolling 30-day window. |
| API endpoint | GET https://api.onbuy.com/v2/orders -> per-order fields dispatch_due_by and dispatched_at. The engine derives the boolean compliance flag at ingest. |
| Account standing tie-in | OnBuy uses this to compute its own Seller Score; below 95% you lose Boost listing eligibility, below 90% you lose Buy Box priority. |
| Currency | n/a (this is a percentage). Calculation is currency-agnostic. |
| Tax handling | n/a (operations metric). |
| Cancellations | Cancelled-before-dispatch orders are excluded from the denominator (no SLA owed). Cancelled-after-dispatch orders count as dispatched and therefore as compliant. |
| Refunds | Excluded from the calculation (refunds are post-dispatch; SLA already met). |
| Channel scope | OnBuy marketplace only; this is OnBuy’s contractual SLA, not a generic ops metric. |
| Time window | 30D vsP. OnBuy’s own Seller Score uses a 60-day rolling window, so our 30D number can move ahead of theirs by a couple of weeks. |
| Alert trigger | <95%. Hard floor. |
| Sentiment key | none (binary threshold metric). |
| Roles | owner, operations. |
Calculation
Calculated automatically from your OnBuy data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.Worked example
A small UK gifts seller, rolling 30 days ending 27 Apr 26. The seller dispatches from a single warehouse in Sheffield using Royal Mail Tracked 24 (next-working-day) for orders before 2pm and Tracked 48 for orders after.| Period | Total orders | On-time dispatches | Late | SLA % |
|---|---|---|---|---|
| 28 Mar 26 to 27 Apr 26 | 142 | 138 | 4 | 97.2% |
| Prior 30D (26 Feb 26 to 27 Mar 26) | 121 | 119 | 2 | 98.3% |
| Order | Paid at | Due by | Dispatched at | Why late |
|---|---|---|---|---|
| ON-2204871 | 18 Apr 26 14:08 | 19 Apr 26 14:08 | 22 Apr 26 09:14 | Easter weekend, no dispatch on 19 to 21 Apr |
| ON-2205102 | 19 Apr 26 09:33 | 21 Apr 26 09:33 | 22 Apr 26 09:14 | Same Easter window |
| ON-2210418 | 23 Apr 26 16:51 | 24 Apr 26 16:51 | 25 Apr 26 11:02 | Pick-pack queue overflow on 24 Apr |
| ON-2212004 | 25 Apr 26 19:14 | 26 Apr 26 19:14 | 27 Apr 26 14:30 | Royal Mail collection missed |
onbuy_total_revenue within roughly 2 weeks.
Sibling cards merchants should reference together
SLA Compliance is a leading indicator for revenue health, so the natural pairings are with the operational cards that drive it and the revenue cards that feel the consequences:| Card | Why it matters next to SLA Compliance | What the combination tells you |
|---|---|---|
| Late Dispatch Count (30d) | The numerator behind the gap. | Lets you see whether the SLA drop came from one bad week or a steady drip. One bad week is fixable; steady drip is structural. |
| Pending Dispatch | Real-time view of orders not yet dispatched. | If pending exceeds 2x your 30D daily average, your next-day SLA will likely break. Acts as the early-warning gauge. |
| Avg Time to Dispatch (hrs) | The continuous version of SLA (hrs not %). | A rising avg time without a falling SLA % means you are still hitting the deadline but with less buffer. |
| Late Dispatch Queue (alert) | Real-time list of orders past dispatch_due_by. | Use this as the actionable to-do list when SLA % drops. |
| Total Revenue | The downstream consequence. | SLA below 95% for two consecutive 30D windows correlates with a 10 to 20% revenue drop two weeks later (Boost de-listing). |
| Suspended Listings | Worst-case downstream of sustained SLA failure. | Persistent <90% SLA can lead to listing suspension; cross-check both. |
| Dispatch Time by Region | Regional breakdown for diagnosis. | If lates cluster in a specific UK region, courier choice is the lever; if random, it is operational. |
| Shopify Fulfillment Rate | DTC peer for fulfilment health. | If both DTC and OnBuy SLA drop together, the warehouse is the issue, not OnBuy-specific routing. |
Reconciling against the vendor’s own dashboard
Where to look in OnBuy’s own dashboard:
OnBuy Seller Console (https://seller.onbuy.com) -> Account Health -> Dispatch Performance
OnBuy reports the same metric under “On-Time Dispatch Rate” alongside their other Seller Score components (Order Defect Rate, Late Dispatch Rate, Cancellation Rate). Their tile typically shows a 60-day rolling average; ours is 30-day, so during operational improvement our number moves first.
Why our number may legitimately differ from OnBuy’s Account Health:
| Reason | Direction | Why |
|---|---|---|
| Window length | Either | OnBuy uses 60-day rolling; we use 30-day. After a bad week our number drops faster; after improvement our number recovers faster. |
| Time zone | Marginal | OnBuy uses Europe/London for the dispatch deadline; we store UTC and convert at calculation time. Boundary-of-day orders can flip from “on time” to “late” depending on which clock you ask. |
| Cancelled orders | Theirs lower | OnBuy excludes the order from both numerator and denominator on cancellation; we follow the same rule. If you see a discrepancy, it is usually a cancellation that one side processed and the other did not (a sync gap of less than 24 hours). |
| Bank holidays | Either | OnBuy automatically extends dispatch_due_by by one working day on UK bank holidays. We honour the field they send, so the dates align, but the per-region nuance (Scottish vs English bank holidays) sometimes differs. |
| In-flight orders | Theirs slightly lower | OnBuy includes orders not yet past dispatch_due_by in their denominator (assumed compliant until proven otherwise); we exclude them. The 30D figures converge once orders age past their due-by. |
onbuy_sla_compliance = 1 - (onbuy_late_dispatch / onbuy_order_count_with_sla)
The numerator and the late-dispatch card should always sum to the order count. If they do not, raise a sync issue.
Known limitations / merchant FAQs
My SLA dropped to 93%. What happens next? At 93% you are below OnBuy’s 95% threshold but above the 90% hard floor. OnBuy will issue an Account Health warning email within 7 days and may pause Boost (paid-promotion) eligibility for the affected listings. Listings continue to sell but lose the “Boosted” badge and search-ranking advantage, which typically costs 5 to 15% of marketplace revenue. Recovery is mechanical: get back above 95% on the rolling 60D and Boost re-enables automatically within 48 hours. At what point do I lose my OnBuy account? Below 90% for two consecutive 30D windows triggers a manual review by OnBuy seller support. They issue a 14-day improvement plan; failure to recover leads to listing suspension (the listings disappear from browse but the account remains active). Below 80% leads to account suspension. We have not seen merchants account-suspended without prior contact, so as long as you respond to OnBuy emails the worst case is a temporary listing pause. Why does my SLA differ between this card and OnBuy’s Seller Score? Three reasons in order: window length (we use 30D, OnBuy 60D), in-flight orders (we exclude orders not yet past due-by, OnBuy includes them as compliant), and bank-holiday handling (OnBuy adjustsdispatch_due_by automatically; we honour the field but Scottish vs English bank holidays sometimes differ from OnBuy’s calendar by a day). Combined, the gap is usually within 1 to 2 percentage points.
Does OnBuy’s bank-holiday extension actually apply automatically?
Yes for England and Wales, but not for Scotland-only or Northern-Ireland-only bank holidays. If you dispatch from a Scottish warehouse, watch your dispatch_due_by field on Scottish bank-holiday days; you may need to use the OnBuy seller-support form to request a one-day extension manually.
Why is my SLA dropping even though I am dispatching faster?
Two usual reasons. First, your order volume grew; the same number of late dispatches divided by a bigger denominator should look better, but if pick-pack throughput hit a ceiling the absolute lates grew too. Check onbuy_pending_dispatch against your daily capacity. Second, you added new SKUs in larger or heavier categories that take longer to pick or pack; the per-order time grew even though the total pick-rate looks the same.
Action playbook if I drop below 95%:
- Open the Late Dispatch Queue and clear the backlog today; many “late” orders are within an hour or two of due-by and can be salvaged.
- Check Dispatch Time by Region. If lates concentrate in one region, change the courier for that lane. Royal Mail Tracked 24 to Scottish Highlands is often the culprit; switch to DPD or Yodel.
- Bring forward the daily Royal Mail collection cut-off by 1 hour; orders paid between 1pm and 2pm currently dispatch tomorrow but could go same-day.
- Add Saturday half-day cover for Easter, August Bank Holiday, and Christmas weeks. Three weekends a year is enough to lift SLA by 1 to 2 percentage points.
- If you use a 3PL, ask them for their contractual SLA and the % of orders they process within 24 hours. Anything below 99% on their side will not work for OnBuy’s 95% floor.
dispatch_due_by is set to 23:59 the same day. The compliance % is calculated from the same field, so a same-day SKU dispatched on day-1 counts as late even if it would have been on-time under standard 24-hour rules. Check whether your same-day SKUs are pulling the overall SLA down disproportionately.
Is this metric the same as OnBuy’s “Late Dispatch Rate”?
They are two sides of the same calculation: Late Dispatch Rate = 1 - SLA Compliance. OnBuy publishes the inverse in their Account Health view because they want to surface the failure rate. We default to the success rate because merchants tell us they think in ”% on-time” terms.