At a glance
Share of Royal Mail consignments that recorded any non-progress tracking event, address invalid, attempted-no-answer, held at delivery office, redirected, damaged, lost. The early-warning signal that predicts a falling OTD rate at 24 to 48 hours.
| What it counts | COUNT(shipments WHERE EXISTS(tracking_event WITH event_code IN exception_codes)) / COUNT(shipments). Each consignment is scored once even if it threw multiple exceptions. |
| API endpoint | GET /tracking/v2/{trackingNumber}/events (Royal Mail Tracking API v2). Reads eventCode, eventDateTime, eventDescription, locationCode. Exception codes are documented in the Tracking API reference (codes E01 through E47, the “non-delivery action” family). |
| Service-tier scope | Tracked services only. Untracked has no tracking-event feed; exceptions are not visible. |
| Tracked vs untracked split | Untracked exception rate is estimated separately from CS-ticket signals on Failed Deliveries. |
| Return-leg inclusion | Outbound only by default. Tracked Returns exception events are filtered out (returns have systematically higher exception rates because customers package poorly and addresses are home addresses). |
| Geographic scope | UK domestic plus International Tracked & Signed. International exceptions surface differently, the destination country’s last-mile carrier maps its events into Royal Mail’s tracking codes; mapping is approximate. |
| Exception-code categories | Address (E11-E15), Recipient (E21-E25), Delivery-office (E31-E35), Damage (E41-E47). Each category has different downstream treatment, see P58 Claim Age Distribution for the claim-eligible subset. |
| Time window | 30D vsP (rolling 30 days, period-over-period). |
| Alert trigger | >3% critical, >1% warn. UK DTC benchmark is 0.6 to 1.2 percent; above 2 percent is an upstream label-data problem, above 3 percent is a carrier-network event. |
| Sentiment key | {type: gauge, thresholds: {good: 1, warn: 3}} |
| 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
Same UK DTC homewares brand, 60 percent Royal Mail Tracked 48 / 40 percent Evri ParcelShop. Reading taken at 09:00 BST on 12 Mar 26, trailing 30 days (10 Feb 26 to 11 Mar 26). Royal Mail tracked leg only:| Exception category | Consignments affected | % of total RM tracked |
|---|---|---|
| Address (E11 invalid postcode, E13 incomplete address) | 92 | 0.78% |
| Recipient (E21 attempted no answer, E22 carded) | 41 | 0.35% |
| Delivery office (E31 held, E32 redirected) | 18 | 0.15% |
| Damage (E41 damaged, E45 lost in transit) | 7 | 0.06% |
| All exceptions (this card) | 158 | 1.34% |
>3% is not tripped, but the rate is above the 1 percent green threshold so the dial is amber. Five things to notice:
- Address exceptions dominate. This is the single biggest lever; 92 of 158 exceptions are invalid or incomplete addresses. Almost all are caused upstream of Royal Mail at checkout, not by the carrier. Fix at checkout: add a Loqate / PostcodeAnywhere address validator, switch the address-line-2 field from optional to validated, and require the Royal Mail-recognised postcode format. Typical lift after a checkout-validator install: 60 to 80 percent reduction in address exceptions within 30 days.
- Recipient-attempted-no-answer is unavoidable but recoverable. 41 cases is roughly the natural rate for a daytime-delivery network on home addresses; Royal Mail will leave a card and re-attempt or hold for collection. Most resolve within 48 hours. Track via Failed Deliveries.
- The 7 damaged / lost cases are claim-eligible. Each one is a P58 claim opportunity if filed within 80 days; recovery is 100 percent of declared value up to £150 standard, £500 with Special Delivery. Track ageing on P58 Claim Age Distribution.
- The “rate suddenly degraded” debug case. During the CWU industrial action of August 2022 to April 2023 this brand’s exception rate spiked from a typical 1.3 percent to 4.5 to 7 percent on stoppage weeks, mostly E31 “held at delivery office” events as parcels backlogged. The pattern was carrier-side, not merchant-side. Fix: shift volume to alternative carriers for the duration; the rate self-corrected within 2 weeks of service resumption.
- Compare to the same merchant’s Evri leg. Evri ParcelShop typically runs 1.8 to 2.5 percent exception rate, higher than Royal Mail because the ParcelShop drop step itself can fail (shop closed, full bin, scanner offline). The card pair tells the merchant which carrier to lean into for high-trust shipments and which for cost-sensitive volume.
Sibling cards merchants should reference together
Exception rate is the leading indicator. Pair it with these to predict and prevent OTD drops:| Card | Why pair it with Exception Rate | What the combination tells you |
|---|---|---|
| On-Time Delivery Rate | The downstream outcome. | Exception rate leads OTD by 24 to 48 hours. A 1-point exception rise predicts a roughly 2 to 3 point OTD dip 2 days later. |
| Late Shipments | The volumetric workload that follows. | Use the exception count to forecast next week’s CS-ticket load. |
| Failed Deliveries | The subset of exceptions that ended in non-delivery. | A high exception rate with a low failed-delivery rate means most exceptions self-resolve; a high failed-delivery rate means exceptions are escalating. |
| Open Claims | Damage and lost-in-transit exceptions feed the claims pipeline. | E41 / E45 events are claim-eligible; track the conversion through P58 Claim Age Distribution. |
| Collection vs Post-Office Handover Failure Rate | The hand-over step is where address-exception E13 events surface. | If exception rate climbs and handover-failure climbs in parallel, the warehouse is mislabelling, not the carrier. |
Cross-connector: shopify.unfulfilled_orders | Upstream label-data origin. | Shopify-captured addresses that fail Royal Mail validation produce E11 / E13 exceptions; install a Shopify checkout address validator. |
Cross-connector: hermes_evri.her_exception_rate | Adjacent carrier. | If both carriers spike, the cause is upstream (label data or warehouse process). If only Royal Mail spikes, the cause is carrier-side. |
Cross-connector: shipbob.sb_health_score | When ShipBob handles warehouse and Royal Mail is last-mile. | ShipBob’s pick-error feeds into Royal Mail’s address exceptions; a ShipBob accuracy dip predicts Royal Mail E13 events. |
Reconciling against the vendor’s own dashboard
Where to look in Royal Mail’s own portal: Royal Mail Click & Drop → Reports → Exceptions lists each consignment with a non-progress event code. Business Account holders see the same data with deeper drill-down on Royal Mail Business Account → Tracking → Exceptions Report, which is exportable to CSV for downstream analysis. The closest like-for-like view is All Tracked Services, Last 30 Days, Outbound, All Exception Types. 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 uses UK local; the card uses UTC. For a 30-day window the difference averages out within 1 percent. |
| Tracking-event ingestion lag | Ours lower for “today” | The Tracking API v2 events feed pushes batches every 30 to 60 minutes typically, up to 6 hours during peak. Recent events may not be in our index yet. |
| Service-tier reclassification mid-period | Either | If a merchant moved from Tracked 48 to Tracked 24 mid-month, the per-service-code split differs; the aggregate agrees. |
| Peak-period sampling | Either | December and BFCM weeks: tracking events sometimes arrive in catch-up batches days after the consignment delivered, the card surfaces them when ingested. |
| Exception-code mapping for international | Ours can be lower | International last-mile carriers map their events into Royal Mail tracking codes approximately. Some non-progress events do not map cleanly and may be classified as “in transit” rather than exception. |
| Card | Expected relationship | Causes of legitimate divergence |
|---|---|---|
shopify.unfulfilled_orders | Upstream label-data feeder. | Address-validator install state, manual address overrides, B2B / pre-order. |
shipbob.sb_health_score | Warehouse pick-accuracy contribution. | Different scoring; ShipBob tracks pick-error, not carrier-exception. |