At a glance
Absolute count of DHL InExpress shipments that delivered after their carrier-promised date in the last 7 days. The angry-customer gauge: each unit on this card is one customer who didn’t receive their parcel when you said they would. Companion metric to On-Time Delivery Rate, which measures the same population as a percentage.
| What it counts | COUNT(shipments WHERE actualDeliveryDate > estimatedDeliveryDate) over a rolling 7 days. Closed shipments only, in-transit parcels are not counted until they deliver. |
| Delivery success criterion | A POD scan timestamp greater than the DHL-issued estimatedDeliveryDate. No grace period. A POD at 18:01 on the promised date is on-time; 00:01 the following day is late by one count. |
| On-time threshold | The per-shipment estimatedDeliveryDate from DHL’s quote at label generation. Includes customs leg for cross-border traffic. |
| Returns / RTO | Returned-to-sender shipments are NOT counted as late on this card, they never tried to deliver to the customer in time. They count instead on Returned to Sender. |
| Service level scope | All InExpress tiers pooled (Economy Select, Express Worldwide, InExpress Domestic). Each shipment is judged against its own promise. |
| Multi-carrier opacity | The trunk leg is DHL but the final-mile carrier varies (Yodel, Evri, DPD, GLS). The card scores the customer-perceived outcome regardless of which sub-carrier handled the last mile; if you need to attribute, slice by Shipments by Service. |
| Brexit / customs | Customs-hold time is included in the transit clock. A UK to FR shipment quoted 72h that took 96h with 36h held at customs counts as one late shipment on this card. |
| Currency | This card is unitless (count). Cost impact is on Avg Shipping Cost. |
| Time window | 7D rolling. Daily numbers can be noisy on small volumes; the 7D rollup smooths spikes. |
| Alert trigger | >5% of total shipments over the same 7-day window. A 4% miss is acceptable for InExpress; 6% is a structural problem. |
| Roles | owner, operations |
Calculation
Calculated automatically from your DHL InExpress 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 homewares merchant shipping ~2,500 parcels per week via DHL InExpress, mostly to UK + IE + DE. Reading taken at 09:00 GMT on 12 Mar 26 for the trailing 7 days (06 Mar 26 to 12 Mar 26).| Lane | Shipments | Late | Late % |
|---|---|---|---|
| GB → GB (domestic) | 1,180 | 24 | 2.0% |
| GB → IE | 540 | 18 | 3.3% |
| GB → DE | 460 | 56 | 12.2% |
| GB → FR | 220 | 31 | 14.1% |
| GB → other EU | 100 | 12 | 12.0% |
| All lanes (this card) | 2,500 | 141 | 5.6% |
>5% of total is tripped. Five things to notice:
- 141 means 141 customers got a slip-of-paper “where is my order” email. That’s roughly 30 to 50 support tickets at the brand’s typical 25 to 35% complaint rate. Plan support-team capacity around the count, not the rate.
- Two cross-border lanes are doing all the damage. GB to DE and GB to FR together account for 87 of the 141 late shipments (62%) on only 27% of volume. The cross-border-customs story dominates: the customs leg is the differentiator, and the Customs Dwell Time by Lane card will tell you which side (UK export filing or destination clearance) is dragging.
- The 7-day window catches issues 30D smooths over. A burst of 60 late shipments on Tuesday 9 Mar (a customs-IT outage at Roissy, perhaps) is visible here; on the 30D card the same burst would barely move the needle.
- Compare to last week. If last week’s count was 88 (3.5%), this week’s 141 is a +60% jump. That’s the operational signal: investigate Tuesday 9 Mar specifically. Any sudden week-on-week jump >40% with the rate above 5% is worth a half-hour of root-cause work.
- 141 / 2500 = 5.6%, but 1 - 0.943 = 5.7% on the OTD card. Rounding artefact, the two are the same population. If they disagree by more than 0.5% the indices are out of sync; recheck period boundaries.
Sibling cards merchants should reference together
Late count is a volume number; it pairs naturally with the rate and the cause:| Card | Why pair it with Late Shipments | What the combination tells you |
|---|---|---|
| On-Time Delivery Rate | The same population expressed as a percentage. | Use the rate for trend tracking, the count for support-team capacity planning. They should always reconcile to within 1%. |
| Customs Dwell Time by Lane | Largest single driver of late counts on UK to EU lanes post-Brexit. | If 60% of late shipments cluster in 1 to 2 lanes, customs dwell is the cause and the fix is documentation, not network. |
| Exception Rate | Upstream signal. Exceptions become late deliveries 24 to 72h later. | A spike in exceptions on day T predicts a late-count spike on day T+2. |
| Avg Transit (days) | The mean of the timing distribution; late shipments are the tail. | If transit-days inflated by 0.4 day and late-count tripled, the distribution stretched: more shipments crossed the late line. |
| Open Claims | Downstream symptom. ~5 to 15% of late shipments turn into a claim if the parcel is also damaged or missed a deadline. | Climbing late count predicts a 1 to 3 week delayed claim spike. Watch the leading indicator. |
Cross-connector: shopify.refund_rate | Downstream impact. Late deliveries drive refunds at 7 to 14 days lag. | Each late shipment is a 5 to 10% probability of a refund request, depending on customer expectations and the order value. |
Reconciling against the vendor’s own dashboard
Where to look in DHL InExpress’s own dashboard: MyDHL+ portal → Track → Detailed View → Filter “Late deliveries” → set date range to last 7 days. Each row is one late shipment with itsestimatedDeliveryDate, actualDeliveryDate, and the gap. The portal does not surface a single “late count” tile; the count comes from the row count of the filtered view.
For UK exporters, the Customs & International report has a per-lane delay breakdown that is useful for diagnosing the cluster pattern this card surfaces.
Why our number may legitimately differ from MyDHL+:
| Reason | Direction | Why |
|---|---|---|
| Time zone | Boundary days off | MyDHL+ uses billing-country time zone (typically GMT for UK accounts). The card uses UTC. The 7D window is large enough to absorb most of the gap; daily counts can drift by one row. |
| Customs hold inclusion | Either | MyDHL+ has a “Transit-only late” view that excludes shipments late solely because of customs hold time. The card counts customs delays as late, in line with the customer’s own perception. |
| POD scan delay | Ours higher in last 24h | Driver handheld batch syncs delay POD timestamps by 2 to 6 hours. A shipment that delivered on-time at 17:00 but POD-scanned at 22:00 may appear to cross the line. T-2 days fully reconcile. |
| In-transit scope | Either | MyDHL+‘s “Late” view sometimes includes in-transit shipments where the estimatedDeliveryDate has already passed but no POD yet. The card excludes in-transit shipments entirely until they close. The portal count can run higher mid-week. |
| Card | Expected relationship | What causes legitimate divergence |
|---|---|---|
shopify.unfulfilled_orders (if connected) | Indirectly upstream. Orders never handed to DHL on time can’t deliver on time. | Webhook lag, B2B flows, weekend cutoff misses. Not a 1:1 reconciliation; use as a leading indicator. |
| Customer service ticket volume | Downstream count. Each late shipment tends to generate 0.25 to 0.5 support tickets (“where is my order”). | Customer expectations, communication quality (proactive update emails reduce inbound contacts), order value (high-value orders have higher contact rates). |
dhl_late_shipments_count = (1 - dhl_otd_rate) × dhl_shipments_total over the same window. If this card reads 141 over 2,500 shipments, On-Time Delivery Rate should be 94.4%. Discrepancies >1% indicate a sync gap.
Known limitations / merchant FAQs
My late count tripled this week. What do I check first? In order of likelihood:- One bad lane. Slice by destination on OTD by Route. 80% of the time a single Brexit-era lane (UK to FR or UK to DE) caved while the rest held up.
- Customs documentation regression. A new SKU with missing HS codes, or a description-line change, can trigger holds for that SKU on every cross-border shipment. Check Duty-Billing Mismatch Rate.
- Carrier capacity. Pre-Christmas, pre-Easter, post-strike days run slow. Check the calendar, if it’s a known peak window, the dip is structural.
- Promised-date tightening. DHL revises transit-time tables periodically. If
estimatedDeliveryDateis now tighter for the same lanes, late count rises mechanically.
customer_segment filter.
Should I be worried if late count drops sharply with no operational change?
Usually no, it tracks volume. A quiet week (post-promo, pre-launch) will have fewer total shipments and fewer late ones. Pair with On-Time Delivery Rate, if the rate held steady while count dropped, it’s a volume effect, not a performance change.