Per-channel Royal Mail OTD - which sales surface is suffering most from carrier delays. Hero.
At a glance
Royal Mail on-time delivery rate broken down by the sales channel that originated the order. The card joins Royal Mail shipment delivery data to the commerce platform’s order data onorder_ref, then groups byorder.channel. Surfaces which sales surface is suffering most when Royal Mail slips, because the downstream cost of late delivery varies dramatically by channel: marketplaces (eBay, Amazon Seller-Fulfilled) penalise via feedback hits and listing demotion, D2C absorbs via WISMO tickets and refund requests, wholesale B2B may have contractual delivery SLAs.
| What it counts | COUNT(roy.shipments WHERE actual_delivery <= aim_date) / COUNT(roy.shipments WHERE status = 'DELIVERED') GROUP BY commerce_sibling.order.channel. The numerator and denominator are Royal Mail tracked-service shipments; the grouping is the commerce-platform channel. |
| Cross-channel join | Requires a connected commerce platform sibling (Shopify, BigCommerce, Adobe Commerce). The join uses order_ref (Shopify order number, BC order ID, etc.). |
| API endpoint | Royal Mail Tracking API for delivery events + commerce sibling order endpoint for channel attribution. |
| Service level scope | Tracked services only (Tracked 24, Tracked 48, Special Delivery, International Tracked). 1st / 2nd Class untracked is excluded because there is no delivered scan. |
| Returns / RTO | Outbound only. |
| Industrial action handling | Not auto-excluded. The 2022-2023 CWU industrial action depressed all channels uniformly, so per-channel comparisons within that window are still meaningful in relative terms (which channel was hurting most), even though absolute numbers are depressed. |
| Time zone | UK local. |
| Time window | 30D (rolling 30 days). |
| Alert trigger | Any single channel <90%. The aggregate may be healthy at 96 percent while one channel sits at 88 percent; the per-channel alert catches the channel-specific gap. |
| Currency | n/a directly. |
| Roles | owner, operations, marketing |
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 gifting brand running a multi-channel commerce stack: Shopify D2C as the flagship, Amazon Seller-Fulfilled (not Prime) for incremental volume, eBay for clearance, Etsy for handmade range, and direct wholesale B2B. Royal Mail Tracked 48 is the default carrier for everything below £80; APC is used for higher-AOV. Reading taken at 09:00 BST on 12 Mar 26 for the trailing 30 days (10 Feb 26 to 11 Mar 26).| Channel | Royal Mail shipments | OTD | Channel notes |
|---|---|---|---|
| Shopify (D2C) | 5,890 | 96.1% | Flagship channel |
| Amazon Seller-Fulfilled | 1,420 | 89.5% | Below alert threshold |
| eBay | 920 | 95.8% | Healthy |
| Etsy | 480 | 96.4% | Healthy |
| Wholesale B2B portal | 110 | 94.5% | Healthy on small volume |
| All channels (Royal Mail) | 8,820 | 95.6% | Aggregate above alert |
- Aggregate hides the Amazon problem. On-Time Delivery Rate reads 95.6 percent across all channels. But Amazon at 89.5 percent is below the alert threshold and below Amazon’s own published Seller-Fulfilled standard (95 percent on-time delivery). The merchant is at risk of order defect rate degradation on the Amazon listing.
- Why is Amazon worst? Most likely upstream dispatch lag. Shopify orders typically print labels within 4 to 6 hours; Amazon orders flow through a webhook with 30 to 90 minute delay, and Amazon’s “expected delivery” is calculated from order placement, not label print. The Royal Mail leg performs identically; the gap is the time tax of the Amazon channel pipeline.
- The action is to tighten Amazon dispatch lag, not to switch carrier. Spot-check 20 Amazon late shipments to see the gap between order placement and label print. If the median is 18 hours vs Shopify’s 6 hours, the warehouse process for Amazon orders needs to align.
- eBay and Etsy at 96+ percent are healthy. Smaller marketplaces, in this merchant’s mix, get faster attention precisely because they are smaller. Watch for performance degradation when these channels grow.
- Wholesale B2B at 94.5 percent on 110 shipments is small-volume noise, but watch the trend. Wholesale orders typically have contractual delivery SLAs with retailer chargebacks. If 94.5 percent is the steady state, the merchant pays chargebacks on roughly 5 to 6 percent of B2B orders monthly.
Sibling cards merchants should reference together
Per-channel OTD is a cross-channel metric. Pair it with these to act:| Card | Why pair it | What the combination tells you |
|---|---|---|
| On-Time Delivery Rate | The aggregate. | If aggregate holds but one channel slides, the issue is upstream of Royal Mail. |
| Tracked24 Service Day Promise | The premium tier’s SLA. | Per-channel premium-tier slippage is the most immediately costly. |
| Late Shipments | Absolute count. | A 7 percent late rate on 1,400 Amazon shipments = 98 listing-quality hits. |
| Collection vs Post-Office Handover Failure Rate | Process attribution. | Channel-specific handover patterns can explain channel-specific OTD gaps. |
| P58 Claim Age Distribution | Service-credit claim pipeline. | Channel-specific late shipments translate to channel-specific filings. |
Cross-connector: shopify.fulfilment_lead_time | Upstream timing. | Channel dispatch lag drives per-channel OTD gaps. |
Cross-connector: amazon_seller_central.account_health | Amazon’s measurement of Seller-Fulfilled performance. | Should track this card’s Amazon slice; divergence indicates Amazon includes pre-carrier time. |
Cross-connector: shopify.refund_rate | Downstream impact. | Late D2C deliveries drive refund requests at higher rates than late marketplace deliveries (which drive feedback hits). |
Reconciling against the vendor’s own dashboard
Where to look: This card is a derived view; Royal Mail’s portal does not surface OTD by sales channel because Royal Mail does not see the upstream channel attribution. Reconciliation is against the merchant’s own commerce-platform order data joined to Royal Mail’s tracking data. For Amazon Seller-Fulfilled specifically, Amazon Seller Central → Performance → Account Health → Shipping Performance exposes Amazon’s measurement of Seller-Fulfilled on-time delivery; that figure should track the Amazon slice of this card. Why our number may legitimately differ from upstream sources:| Reason | Direction | Why |
|---|---|---|
| Order-reference join misses | Channel under-counted | Some commerce platforms (especially custom B2B portals) do not consistently pass order_ref to Royal Mail; shipments without a matching order go to “unknown”. |
| Amazon’s threshold differs | Either | Amazon’s published “on-time” definition includes order acceptance and ship-by time; this card includes only Royal Mail’s carrier-leg performance. |
| Channel taxonomy | Either | Shopify source_name, BC order_source, Adobe order_channel. Vortex IQ normalises; merchant-customised channel values may need re-mapping. |
| Webhook lag on commerce sibling | Ours stale | Order-channel attribution comes from the commerce sibling; if that connector lags, the channel field can be missing temporarily. |
| Untracked vs tracked filter | Either | This card is tracked-services-only; Amazon’s measurement includes untracked 1st Class. |
| Time zone of join | Boundary days off | Order timestamps from commerce vs delivery from Royal Mail use different timezone bases; the join uses UTC. |
Volume-weighted average of per-channel OTD ≈ aggregate roy_otd_rate (tracked services). If they diverge by more than 2 points, the order-reference join is dropping volume.
Cross-connector reconciliation:
| Card | Expected relationship | Causes of legitimate divergence |
|---|---|---|
amazon_seller_central.account_health | Should track the Amazon slice. | Amazon includes pre-carrier time; this card is carrier-only. |
shopify.fulfilment_lead_time | Per-channel fulfilment lead time on the commerce side. | High lead time on a channel correlates with low OTD on the carrier side. |
Documentation cross-reference (cross-channel OTD on other carriers). Per-channel OTD cards exist on every shipping connector that supports the cross-channel join.
Known limitations / merchant FAQs
Why does Amazon Seller-Fulfilled always look worse than D2C? Two structural reasons. (1) Amazon’s “expected delivery” starts at order placement, not label print. The 30 to 90 minute lag between order and label print counts against OTD. D2C has shorter upstream lag. (2) Amazon’s standard is tighter, the same delivery performance scores fine on D2C and just-below on Amazon. A new channel just appeared with very low volume and 100% OTD, why? Sample-size noise. Below 50 shipments per 30-day window the per-channel rate is too volatile to read. The card surfaces channels above 50 by default; very-low-volume channels can produce extreme readings. Wait for volume to stabilise. My channel taxonomy is custom, can the card group correctly? Yes if the channel field is populated consistently in the commerce platform. The card normalises channel values via the field map; custom values need adding to the channel allowlist or they fall into “unknown”. Why is there an “unknown” channel? Royal Mail shipments without a matching commerce-platform order go to “unknown”. Common causes: B2B portals that do not pass order_ref, lagging commerce sibling connector, or order_ref format mismatch between dispatch and commerce. My wholesale chargebacks are bigger than my Amazon listing-quality risk, why does the card alert Amazon first? The alert at<90% is uniform across channels and does not weight by financial impact. For a brand where wholesale chargebacks are the bigger exposure, override the threshold per-channel via the connector manifest.
Can this card join to my custom OMS?
Only if the OMS exposes order_ref and order_channel. If the OMS is connected via a generic connector, the join may fall back to a softer key (customer email, postcode + name).
My Amazon channel is at 89.5 percent, am I about to lose Seller-Fulfilled eligibility?
At 89.5 percent against Amazon’s 95 percent threshold, the listing is at risk. Amazon’s automated monitoring looks at on-time-delivery rate plus order-defect rate plus on-time-shipment rate over a rolling 30 to 60 day window. A single bad month is a warning; two months in a row often triggers automated demotion. Action: tighten Amazon dispatch lag immediately and watch this card daily for the next 30 days.
The D2C channel slipped during a Royal Mail strike day, but the marketplace channels held up, why?
Strikes affect the network uniformly, but timing-of-dispatch matters. A merchant who dispatches D2C orders late in the day (after the last Royal Mail collection) sees those parcels held overnight and impacted by the next day’s strike. Marketplace orders dispatched earlier in the day may have been already in the network before the strike-affected sortation period. The card surfaces the timing differential without knowing the cause.
Why is post-strike recovery showing slightly lower than pre-strike across all channels?
Royal Mail’s permanent volume loss to Evri / DPD post-2022-23 strikes has left the network leaner. Steady-state for tracked services is now 95-96 percent, vs 96-98 percent pre-strike. Per-channel patterns are roughly the same shape; absolute numbers are 1 to 2 points lower.