At a glance
Share of Royal Mail consignments that arrived at the addressee on or before the contracted service day. Computed across every shipment with a delivered scan in the period, against the Royal Mail aim-to-deliver date for that service code (Tracked 24 = next working day, Tracked 48 = within two working days, Special Delivery = 1pm next working day, 1st / 2nd class untracked = aim-only, no contractual SLA).
| What it counts | COUNT(shipments WHERE delivered_at <= aim_delivery_date) / COUNT(shipments WHERE delivered_at IS NOT NULL). Each delivered consignment scores 0 or 1 against its own service-code aim. |
| API endpoint | GET /shipping/v3/shipments (Royal Mail Click & Drop / Shipping API v3). Reads serviceCode, trackingNumber, aimDeliveryDate, actualDeliveryDate, currentTrackingStatus. Tracking events come from GET /tracking/v2/{trackingNumber}/events. |
| Service-tier scope | Tracked services only by default (Tracked 24, Tracked 48, Special Delivery 1pm, Special Delivery 9am, International Tracked & Signed). Untracked 1st / 2nd class are excluded from the denominator because Royal Mail does not capture a delivered scan; including them would bias the rate downward. Switch the Include untracked toggle to add an aim-based proxy reading. |
| Tracked vs untracked split | Untracked is roughly 30 to 50 percent of consumer Royal Mail volume for a typical UK DTC merchant. The card’s headline rate is tracked-only; the Untracked Aim Compliance breakdown estimates untracked performance separately using the aimed-by date plus customer service ticket data. |
| Return-leg inclusion | Outbound only. Royal Mail Tracked Returns and Royal Mail Returns Portal consignments are tagged direction = inbound in the Shipping API; the card filters them out. Return-leg performance is on Returned to Sender. |
| Geographic scope | UK domestic AND International Tracked & Signed. Domestic is BFPO, Channel Islands, Highlands & Islands plus mainland UK. International tracked uses the destination country’s last-mile carrier scan; OTD is computed against Royal Mail’s aim-by date for that lane. International untracked (Standard / Economy) is excluded. |
| Strikes / industrial action handling | Not auto-excluded. During the CWU industrial action of August 2022 to April 2023 the card recorded the actual depressed rate. A merchant looking at year-on-year comparisons across that window should annotate; we do not silently smooth the data. |
| Time window | 30D vsP (rolling 30 days, period-over-period). Daily readings exist but are noisy below 200 consignments per day. |
| Alert trigger | <95% warn, <90% critical, driven by sentiment_key: on_time_delivery_rate. UK DTC benchmark is 96 to 98 percent for Tracked 48, 92 to 96 percent for Tracked 24. |
| Roles | owner, operations |
Calculation
Calculated automatically from your Royal Mail 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 UK DTC homewares brand based in Manchester, around 4,200 outbound parcels per week, dual-carrier strategy: 60 percent Royal Mail Tracked 48 (the cost-sensitive default), 40 percent Evri ParcelShop (used for chunky home accessories where Evri’s per-kilo rate is cheaper). Reading taken at 09:00 BST on 12 Mar 26 for the trailing 30 days (10 Feb 26 to 11 Mar 26). Royal Mail leg only:| Service code | Consignments | Delivered on or before aim | OTD Rate | Avg cost per parcel |
|---|---|---|---|---|
| Tracked 48 (TPN48) | 9,840 | 9,499 | 96.5% | £3.42 |
| Tracked 24 (TPN24) | 1,610 | 1,521 | 94.5% | £4.85 |
| Special Delivery 1pm (SD1) | 280 | 277 | 98.9% | £8.10 |
| All RM tracked (this card) | 11,730 | 11,297 | 96.3% | £3.71 |
<95% is not tripped. Five things to notice:
- Tracked 48 sets the headline. It is 84 percent of volume; everything else is rounding. If Tracked 48 dips, the dial dips. Pair with Tracked24 Service Day Promise to isolate the premium leg, the Tracked 24 SLA is contractually tighter and a 94.5 percent reading there is below Royal Mail’s published 93 percent floor but worth a service-credit conversation.
- The cost story is the other half of the picture. Compare against the Evri leg: Evri ParcelShop delivers at around 92 to 94 percent OTD for this same merchant at roughly £2.10 per parcel. The brand explicitly accepts a 4-point OTD hit on the Evri half in exchange for a 39 percent unit-cost saving. That trade is the merchant’s call, not ours.
- Same-period Evri OTD will read lower. Do not compare a single carrier’s OTD rate to a target without context; compare it to the merchant’s own historical baseline and to the alternative carrier they could be using.
- The “rate suddenly degraded” debug case. During the CWU industrial action window from August 2022 through April 2023, this same card would have read 71 to 82 percent for many merchants on Royal Mail-only weeks, and dropped as low as 52 percent during national strike days. The pattern was not “carrier broken”, it was “carrier on strike”, and the action was to temporarily shift volume to Evri / DPD / Yodel, then reset thresholds when service resumed. The card does not auto-detect industrial action; an operations playbook should.
- Special Delivery 1pm overperforms. It is the most expensive Royal Mail product (£8.10 here) and the network treats it as priority. The 98.9 percent rate is consistent with Royal Mail’s published 99 percent SLA. If a brand sells fragile or high-value items, this is the lever to upsell at checkout.
Sibling cards merchants should reference together
On-time delivery is a customer-facing outcome metric. Pair it with these to diagnose root cause:| Card | Why pair it with OTD Rate | What the combination tells you |
|---|---|---|
| Tracked24 Service Day Promise | Splits out the premium next-day leg from the aggregate. | Tracked 24 has a tighter contract and a higher service-credit ceiling; if the aggregate drops but Tracked 24 holds, the issue is in Tracked 48 / untracked, not the premium tier. |
| Late Shipments | The absolute count behind the percentage. | A 96 percent OTD on 12,000 parcels = 480 late deliveries = 480 customer-service tickets in flight. The percentage feels fine; the count is the workload. |
| Exception Rate | What fraction of consignments threw a tracking exception (held at delivery office, address invalid, attempted-no-answer). | Rising exception rate predicts a falling OTD rate at 24 to 48 hours lag. |
| Collection vs Post-Office Handover Failure Rate | Where the parcel was handed to Royal Mail. | If collection-handed parcels run 96 percent OTD but Post Office handovers run 91 percent, the merchant has a hand-off process problem upstream of Royal Mail. |
| Royal Mail OTD by Sales Channel | Which sales surface is suffering most from carrier delays. | Marketplace customers (eBay, Amazon Seller-Fulfilled) penalise late deliveries with feedback hits; D2C customers refund. Same OTD drop, different downstream cost. |
Cross-connector: shopify.unfulfilled_orders | Upstream cause. Orders waiting for a label cannot meet OTD if they sit too long. | Climbing unfulfilled count predicts an OTD dip 2 to 4 days later. |
Cross-connector: shopify.refund_rate | Downstream impact. Late deliveries drive “where is my order” tickets and refund requests. | A 3 to 5 point OTD drop typically precedes a 0.5 to 1.5 point refund-rate rise at 7 to 14 days. |
Cross-connector: shipbob.sb_otd_rate | Adjacent 3PL OTD when ShipBob handles the warehouse leg and Royal Mail / Evri handle last-mile. | Different populations of shipments; useful for an agency running both, not a like-for-like reconciliation. |
Reconciling against the vendor’s own dashboard
Where to look in Royal Mail’s own portal: Royal Mail Click & Drop → Reports → Delivery Performance. Smaller merchants live in Click & Drop; larger merchants on a Business Account also see Royal Mail Business Account → Performance → Service Performance Report, which is the official monthly SLA report Royal Mail publishes for credit-claim purposes. The closest like-for-like view is All Tracked Services, Last 30 Days, Outbound Only. The Click & Drop report breaks out by service code; toggle Tracked 24 / Tracked 48 / Special Delivery to compare per-tier. Why our number may legitimately differ from Royal Mail’s report:| Reason | Direction | Why |
|---|---|---|
| Timezone (BST vs UTC) | Boundary days off | Royal Mail’s portal reports in UK local time (BST in summer, GMT in winter). The card stores everything in UTC. During BST the 23:00 to 23:59 UTC hour is “tomorrow” in the portal; during a 30-day window this averages out, but a “today” comparison can be off by a full day. |
| Tracking-event ingestion lag | Ours lower for “today” | Royal Mail’s tracking-events feed pushes scans in batches; lag varies from 30 minutes (typical) to 6 hours (peak periods, post-Christmas backlog). The portal often has the same lag, but the two systems do not always lag in step. |
| Service-tier reclassification mid-period | Either | If a merchant moves from Tracked 48 to Tracked 24 mid-month, the portal’s per-service-code view splits the population at the cutover; the card uses the service code recorded at the time of label generation. Aggregate OTD agrees; per-service breakdowns can diverge. |
| Peak-period sampling | Either | December and BFCM weeks have 2 to 3x normal volume but Royal Mail’s reporting cadence does not always keep pace. The portal may show a partial month for the most recent 5 to 7 days; the card always shows what has actually been delivered. |
| Outbound vs returns | Ours lower if RTS-heavy merchant | The portal’s default view often includes Tracked Returns. The card excludes inbound consignments. A merchant with a 5 percent return-leg ratio sees a slightly different denominator. |
| Card | Expected relationship | Causes of legitimate divergence |
|---|---|---|
shipbob.sb_otd_rate | When ShipBob is the warehouse and Royal Mail is the last-mile, ShipBob’s OTD includes warehouse-floor time AND carrier transit; this card is carrier-only. | Different populations; ShipBob can be on-time-shipped but Royal Mail late, or vice versa. Use shipbob.sb_otd_trend for warehouse-leg only. |
shopify.unfulfilled_orders | Upstream input. Shopify orders waiting for a Royal Mail label cannot meet OTD if the warehouse cannot ship them in time. | Webhook delivery failures, manual fulfilment delays, B2B / pre-order flows. |
shopify.refund_rate | Downstream sentiment proxy. Late deliveries drive refunds and chargebacks. | Refund rate has many drivers (sizing, quality, returns); OTD is one input. |
Known limitations / merchant FAQs
Royal Mail vs Evri, which should I send with? Different jobs. Royal Mail wins on consumer trust (“the post”), reliability outside peak periods, and small-letter / large-letter rates which Evri does not compete with. Evri wins on per-parcel cost for anything above 1kg, on door-to-door speed in dense urban postcodes, and on ParcelShop drop-off optionality. The healthy DTC pattern is to use both, Royal Mail Tracked 48 as the everyday default for letterbox-friendly items, Evri ParcelShop for chunkier parcels where the cost saving is meaningful. Read this card alongsidehermes_evri.her_otd_rate, and Avg Shipping Cost to see the cost-vs-reliability trade.
What do I do when Royal Mail is on strike?
The CWU industrial action of August 2022 to April 2023 caused multi-day national stoppages; OTD on those days dropped from a typical 96 percent to 50 to 60 percent, and the recovery backlog took 2 to 3 weeks. The playbook: (1) watch the CWU strike calendar and route volume to Evri / DPD / Yodel for known stoppage dates, (2) update checkout copy to set later expectations (“delivery may take an extra 2 to 3 days due to industrial action”), (3) suppress automated “where is my order” emails for the affected window, (4) re-baseline OTD thresholds in Vortex IQ for the strike weeks so you do not get alerted on every reading. Do not re-baseline permanently; reset when service resumes.
Why does the card show 96 percent for Tracked 48 but my customer-service tickets say everyone is complaining?
Three usual reasons. (1) Untracked is the silent majority. If your store is 60 percent Tracked 48 / 40 percent untracked 1st class, the card only sees the 60 percent tracked half. Untracked OTD is meaningfully worse and drives most of the WISMO ticket volume. (2) The 4 percent late tail is concentrated on specific lanes. Highlands & Islands, BFPO, and Channel Islands typically run 6 to 10 points lower than mainland UK; if your customer mix skews to those postcodes the felt experience is worse than the headline. Use OTD by Route to confirm. (3) “Late” in customer-perception terms is “later than I expected”, not “later than Royal Mail’s aim”. Customers anchor on checkout copy, not service codes. Tighten the checkout language and the perception-gap narrows.
Tracked vs untracked, which OTD should I be measuring?
Both, separately. Tracked OTD is the contractual measurement Royal Mail will give service credits against. Untracked OTD is the customer-felt measurement that drives reorder rate and review sentiment. The card’s headline is tracked-only because untracked has no delivered scan; the Untracked Aim Compliance breakdown estimates untracked from the aimed-by date plus customer-confirmed delivery (via ticket / review keywords). Treat the two as separate dials.
My store sends both Royal Mail Tracked 48 AND Special Delivery 1pm. How do I read the aggregate?
The aggregate hides the spread. Tracked 48 will be 96 to 98 percent; Special Delivery 1pm will be 99+ percent. Aggregating gives you a number that hides any drop in either. Always look at the per-service breakdown alongside the aggregate; the per-service is the actionable reading.
Why does the “today” reading bounce around?
Volume. A merchant doing 400 tracked parcels a day has a 0.25 percentage-point step per shipment in the daily reading; a single late delivery moves the dial visibly. Use the rolling 30-day reading for trend, the daily reading only for outage detection. Below 200 daily consignments, the daily reading is too noisy to act on.
My OTD just dropped 8 points this morning, what is the playbook?
In order of likelihood: (1) Check the CWU calendar and Royal Mail service updates (service status), national or regional industrial action accounts for most sudden multi-point drops. (2) Check Exception Rate, a spike in “address invalid” or “held at delivery office” exceptions points to upstream label-data issues, not carrier failure. (3) Check OTD by Route, if the drop is concentrated in 2 or 3 postcodes the issue is local depot disruption; if it is uniform the issue is network-wide. (4) Check Tracked24 Service Day Promise separately, if Tracked 24 holds but Tracked 48 drops, Royal Mail is prioritising the premium tier (normal during peak). (5) Open a ticket with Royal Mail Business Customer Services if (1) to (4) do not explain it, the network has likely had an incident.
How should I plan for Q4 / BFCM / Christmas peak?
Royal Mail’s last-recommended-posting dates are published mid-October each year; expect OTD to drop 3 to 8 points across all tracked services from 1 December to 23 December. Three actions: (1) tighten checkout copy (“order by 18 December for delivery before Christmas, after that delivery is not guaranteed”), (2) shift budget-sensitive volume to Evri or DPD where capacity is less constrained, (3) negotiate Special Delivery 1pm capacity holds with your Royal Mail account team for the 19 to 23 December window if you sell time-sensitive gift items.
Why does Shopify show “shipped” but Royal Mail tracking is empty?
Two-stage handover. Shopify marks the order shipped when the label is generated (fulfilment.created); Royal Mail does not show a tracking event until the parcel hits the first sortation scan (collection or delivery-office handover, typically 2 to 24 hours after label print). If the gap exceeds 48 hours the parcel was probably never handed over (label printed but parcel sat on the warehouse floor), check Collection vs Post-Office Handover Failure Rate.