At a glance
Share of ShippyPro shipments delivered on or before the carrier-promised delivery date, pooled across every carrier ShippyPro orchestrated for the merchant (BRT, DHL Express, GLS, Poste Italiane, Colissimo, SDA, UPS, FedEx, etc.). ShippyPro is the EU/Italy multi-carrier orchestration layer; the rate moves with (a) carrier mix more than with rate-shop savings, and (b) which sub-carrier handled each parcel more than with overall network performance.
| What it counts | COUNT(shipments WHERE actual_delivery_date <= expected_delivery_date) / COUNT(shipments WHERE delivered_at IS NOT NULL) over the trailing 30 days. Each shipment is judged against its own carrier-promised delivery window stored at label creation. |
| Delivery success criterion | ShippyPro normalises every carrier’s POD model (BRT signature, DHL Express signature, Poste Italiane scan-only on Posta 4) to a single delivered flag with delivered_at timestamp. Updates from in-transit re-estimates do not move the goalposts; the original promise stands. |
| On-time threshold | The carrier-promised expected_delivery_date from the label-creation rate response, no grace. Each carrier and each service tier has its own promise; the card honours per-shipment promises rather than a flat threshold. |
| Returns / RTO | Outbound only. Easy Return shipments and RTS events appear in Returned to Sender. |
| Service level scope | All services pooled (Standard, Express, Same-Day, Economy across all 100+ supported carriers). Per-carrier breakdown lives in OTD by Route and Rate-Shop Winner Mix. |
| Multi-country complexity | ShippyPro is heavily IT/EU-focused but supports cross-border lanes; a UK-IT shipment via BRT and a DE-DE shipment via DHL Express have different OTD dynamics. The card pools them. Use service-mix breakdowns when comparing windows. |
| Mix-driven, not rate-driven | Unlike ShipTheory (rate-shopping for savings on UK lanes), ShippyPro accounts typically optimise carrier choice by service tier and country lane, not by per-parcel cost. A swing in OTD usually means the merchant changed which carrier wins which lane, not that any individual carrier degraded. |
| Currency | Not applicable. |
| Time window | 30D vsP (rolling 30 days vs the prior 30). Daily readings exist but are noisy below 200 shipments per day. |
| Alert trigger | <95% warn, <90% critical, driven by sentiment_key: otd_rate. EU/IT DTC benchmark on a balanced mix is 92 to 96 percent; below 90 percent typically means Poste Italiane share has surged on cost-sensitive lanes. |
| Roles | owner, operations |
Calculation
Calculated automatically from your ShippyPro data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.Worked example
An Italian DTC fashion brand using ShippyPro to orchestrate four carriers (BRT for IT domestic, DHL Express for EU cross-border, Poste Italiane for low-value IT, GLS for FR/DE/ES). Reading taken at 09:00 CET on 12 Mar 26 for the trailing 30 days (10 Feb 26 to 11 Mar 26).| Carrier | Shipments | Delivered on or before promise | OTD Rate |
|---|---|---|---|
| BRT (IT domestic) | 7,360 | 7,096 | 96.4% |
| DHL Express (EU cross-border) | 3,680 | 3,569 | 97.0% |
| Poste Italiane (IT low-value) | 2,040 | 1,729 | 84.8% |
| GLS (FR/DE/ES) | 2,920 | 2,752 | 94.2% |
| All carriers (this card) | 16,000 | 15,146 | 94.7% |
<95% warn is firing marginally but the <90% critical floor is not. Five things to notice that are specific to ShippyPro and the EU/IT mix-driven model:
- Poste Italiane drags the headline by 1.9 points alone. 311 of 854 lates come from Poste’s IT low-value share. The carrier’s structural OTD on Posta 4 is in the 82 to 88 percent range; this is not a degradation, it is the cost-quality point the merchant signed up for. The decision is whether the cost saving still justifies the OTD trade after seeing the customer-experience cost on those parcels.
- DHL Express at 97 percent on cross-border is the benchmark and worth its premium. EU cross-border via DHL Express is structurally more reliable than domestic via Poste Italiane because DHL’s network is built for express. If DHL share were to drop materially (e.g. to save cost via DPD or GLS Express on cross-border), the cross-border share of OTD would dip even though no single carrier degraded.
- BRT at 96.4 percent on IT domestic is healthy. BRT is the workhorse of Italian DTC; their OTD typically sits in the 95 to 97 percent band on metro-heavy mixes. Sub-95 percent for BRT alone is worth investigating, often a regional depot capacity issue (e.g. Milan, Roma during industrial action).
- Cross-border GLS is noisier than domestic. GLS at 94.2 percent across FR/DE/ES is on the lower end of acceptable; FR national strikes, DE customs complexity for non-EU items, and ES regional logistics all contribute. Read Avg Transit (days) alongside.
- Italian holidays warp the dial. August is fragile across all Italian carriers (ferragosto, mass holiday); pre-Christmas is fragile in Q4; Pasqua weeks vary year-on-year. Pre-baseline customer-facing copy on those windows; the OTD card will dip even when the merchant did nothing wrong.
Sibling cards merchants should reference together
OTD rate is the customer-facing outcome metric. For ShippyPro the diagnostic flow runs through carrier-mix and per-lane rather than rate-shop tuning, because ShippyPro accounts typically optimise on service-tier, not per-parcel cost.| Card | Why pair it with OTD Rate | What the combination tells you |
|---|---|---|
| OTD by Route | The per-carrier and per-lane breakdown. | Identifies which carrier and which destination country are dragging. ShippyPro’s value-add is multi-carrier orchestration; this is the card that makes it actionable. |
| Late Shipments | The absolute count behind the percentage. | A 94.7 percent OTD on 16,000 shipments = 854 late deliveries = 854 customer-service tickets. The percentage feels recoverable; the count is the workload. |
| Avg Transit (days) | Companion timing metric. | OTD falling + avg transit rising = carriers slowing. OTD falling + avg transit flat = promise dates were tight at label print. |
| Exception Rate | Leading indicator for OTD drops. | Climbing exception rate predicts a 2 to 5 day OTD dip. |
| Rate-Shop Winner Mix | Which carrier is winning the rate-shop and why. | Mix shifts toward Poste Italiane = OTD softening expected; mix toward DHL Express = OTD hardening but cost rising. |
| Failed Deliveries | Failed-and-recovered shipments still count as late. | Tracking together identifies recipient/address quality issues vs network speed. |
| Label Generation Success | Adjacent operational signal. | If labels are failing to generate, the parcels never enter the OTD denominator; the headline reads better than reality. |
Cross-connector: shopify.unfulfilled_orders | Upstream pressure. | Slow Shopify-to-warehouse handoff compresses transit time and lowers OTD. |
Cross-connector: shopify.refund_rate | Downstream impact. | A 3 to 5 point OTD drop typically precedes a 0.5 to 1.5 point refund-rate climb at 7 to 14 days. |
Cross-connector: shipbob.sb_otd_rate | Adjacent 3PL OTD when ShipBob handles warehouse and ShippyPro routes carriers. | 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 ShippyPro’s own dashboard: ShippyPro Dashboard → Analytics → Delivery Performance (Italian: Performance di Consegna). The page exposes the same headline rate plus a per-carrier breakdown. Closest like-for-like view: Last 30 Days, All Carriers, All Services. ShippyPro also provides a per-country lane breakdown useful for diagnosing cross-border performance. Why our number may legitimately differ from ShippyPro’s portal:| Reason | Direction | Why |
|---|---|---|
| Sync lag on the most recent 6 to 12h | Ours lower briefly | ShippyPro’s tracking webhook posts in near-real-time but the 30-day window includes shipments still in-flight at the boundary; the portal recomputes overnight. The gap closes within 24 hours. |
| Promise-date staleness during peak | Either | ShippyPro stores the carrier-promised delivery date at label creation. If carriers issue mid-week service downgrades (common before Italian public holidays), the portal may judge against the re-estimate while the card stays strict against the original promise. |
| Carrier-event normalisation | Tiny | The 100+ supported carriers have varying event taxonomies; ShippyPro normalises to a unified delivered flag. ~95 percent map cleanly; the residual 5 percent (typically legacy regional Italian carriers, Spanish customs codes) can shift the count by 0.1 to 0.3 points. |
| Time zone | Boundary days | ShippyPro uses workspace timezone (typically CET/CEST for IT/EU accounts) for daily aggregation; we use UTC for cross-connector arithmetic. The 30-day window absorbs this. |
| Italian holiday smoothing | Either | The portal historically allowed an “exclude ferragosto” toggle for August. The card does NOT smooth; the actual depressed rate is recorded. Year-on-year comparisons across August windows should annotate. |
| Returns leg | Either | Easy Return shipments excluded by default here; the portal sometimes includes them unfiltered. |
shippy_pro.otd_rate = 1 - (shippy_pro.late_shipments_count / shippy_pro.shipments_total) over the same window.
If the two cards do not satisfy this within ~0.5 percent on the same day, the cause is window boundary differences (late count uses 7D, OTD uses 30D), status filtering differences, or sync timing. None are bugs.
Cross-connector reconciliation. Direct-carrier connectors vs ShippyPro:
If you also have direct-carrier connectors (e.g. direct DHL, direct Poste Italiane) connected, do not sum their OTD rates. Each direct connector reads from the carrier’s own API with the carrier’s promise model:
- ShippyPro’s view uses the promise stored at ShippyPro label creation.
- Direct-DHL connector uses DHL’s promise model with its own service-day calendar.
- Differences of 1 to 3 points are normal; larger gaps suggest one of the two filters shipments differently.
Known limitations / merchant FAQs
Why is my ShippyPro OTD rate dropping? Three usual causes, in order of likelihood:- Carrier mix has shifted toward Poste Italiane or similar low-cost carriers. A small change in the rate-shop ruleset (e.g. weight thresholds, country-of-destination rules) can move 10 to 20 percent of volume off DHL Express onto Poste Italiane Posta 4, dropping headline OTD by 1 to 3 points without any single carrier degrading. Open Rate-Shop Winner Mix to confirm.
- An Italian or EU national event. Ferragosto (15 Aug week), Pasqua, Christmas-New Year period, French national strikes, German rail action all hit specific carriers and lanes. The aggregate dips because affected carrier share-weighted contribution falls.
- Volume mix shifted to harder lanes. A campaign expanding into Sicily/Sardinia, NL/BE cross-border, or non-EU lanes adds parcels with structurally lower OTD without any rate-shop change.
- Move medium-value parcels off Poste Italiane onto BRT or DHL Express. A few cents per parcel for material OTD lift. Most ShippyPro accounts under-route premium because the rate-shop optimises on cost; the OTD trade is worth it on parcels above EUR 25.
- Tighten Friday cutoffs. A label printed Friday 16:00 misses BRT and DHL Express collection windows; pull cutoffs to 13:00 to claim the Friday afternoon collection.
- Audit rate-shop rules quarterly. Carrier rates and SLAs change; rate-shop rules tuned 18 months ago routinely produce sub-optimal carrier choices today. Quarterly review with ShippyPro’s account team typically lifts headline OTD by 1 to 2 points.
- Install Italian / EU address validation at checkout. EgonReg for IT, addresseva for FR/ES, address validators for DE substantially reduce upstream address exceptions; OTD follows with 24 to 72 hour lag.
- Pre-empt Italian holidays in checkout copy. Customers seeing “delivered by 18 Aug” on a 15 Aug order will complain when ferragosto delays it; “delivered by 22 Aug” sets expectation correctly and reduces the perceived OTD problem even when the operational number is unchanged.