Skip to main content
Card class: HeroCategory: Shipping & Courier

At a glance

Share of DHL InExpress shipments that hit at least one exception event in transit. The “something went wrong” gauge, exceptions are the leading indicator that lights up 24 to 72 hours before late deliveries, claims, and refunds catch up. On the multi-carrier InExpress network, the most common exception types are customs holds, address-not-found, and final-mile-carrier handoff failures.
What it countsCOUNT(shipments WHERE any tracking_event.type IN exception_codes) / COUNT(shipments) over 30 days. Each shipment counts once even if it had multiple exceptions; the card is rate, not severity.
Exception event taxonomyCustoms hold, address invalid, recipient not home, damage in transit, lost-in-network, weather delay, customer-requested redirect, missing commercial invoice, HS-code dispute, duty-payment hold. The full code list lives in DHL’s tracking event dictionary.
Multi-carrier opacityAn exception can be raised by DHL’s trunk leg or by the final-mile sub-carrier (Yodel, Evri, DPD, GLS, La Poste, etc.). The card pools all sources. The granular breakdown is on the Customs Dwell Time by Lane card and (planned) Exception Type Breakdown.
Brexit / customs scopeUK to EU and EU to UK shipments have a structurally higher exception rate (typically 1.5 to 3x the domestic baseline) because the customs leg adds two new failure modes (filing rejection, clearance hold).
Returns / RTOAn RTO event raises an exception; the shipment then counts on this card and on Returned to Sender.
Resolution scopeThe card counts shipments where an exception occurred at any point. A shipment held at customs for 6h then delivered on time still counts as 1 exception.
CurrencyThis card is unitless (percent).
Time window30D vsP (rolling 30D vs prior 30D)
Alert trigger>3% (warn band starts at 1%, critical at 3%). DHL InExpress’s healthy baseline is ~1% domestic, ~2% cross-border.
Rolesowner, 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 fashion brand shipping ~10,000 InExpress parcels per month, half UK domestic and half EU cross-border. Reading taken at 09:00 GMT on 12 Mar 26 for the trailing 30 days.
Exception typeShipments affectedLane bias
Customs hold (HS code dispute)142100% UK to EU
Customs hold (commercial invoice)88100% UK to EU
Address invalid96mixed
Recipient not home64mixed (mostly DE / FR)
Damage in transit11mixed
Final-mile carrier failed handoff18UK domestic (Evri leg)
Total unique shipments with exceptions419
Volume base10,200
Exception rate (this card)4.1%
The card reads 4.1%. The alert at >3% is tripped. Five things to notice:
  1. 55% of exceptions are customs-related, all on UK to EU lanes. Customs holds (230 of 419) dominate. The fix is upstream of DHL: tighten your commercial-invoice template and HS-code library. A single product description regression (e.g. “shirt” instead of “men’s cotton long-sleeved shirt”) can trigger holds across hundreds of shipments. Pair with Duty-Billing Mismatch Rate.
  2. Exception rate leads OTD by 2 to 4 days. The 4.1% reading today predicts a ~3pp drop in On-Time Delivery Rate over the next week. Watch this card to forecast support volume.
  3. The “final-mile carrier failed handoff” cluster is on UK domestic. That’s DHL’s parcel pool handoff to Evri (or similar), a contracted-out leg invisible to the merchant. If this category climbs, it’s a DHL-side network issue worth raising with your account manager.
  4. 1.5x baseline is the action threshold. A healthy InExpress merchant runs 1 to 2% domestic, 2 to 3% cross-border, blended ~2 to 2.5%. 4.1% is a clear signal something has shifted; investigate within 24h.
  5. Q4 inflates exceptions structurally. This same brand was at 5.8% in 1 Dec 25, 6.4% peak on 12 Dec. The customs-queue, weather-delay, and recipient-not-home (deliveries while customers are travelling) categories all spike together. Set alert threshold seasonally if your team finds the December noise distracting.

Sibling cards merchants should reference together

Exception rate is the leading indicator. Pair with downstream impact and root-cause cards:
CardWhy pair itWhat the combination tells you
On-Time Delivery RateLagging companion. Exceptions become late deliveries 24 to 72h later.A 1pp exception-rate rise typically predicts a 1.5pp OTD drop one week out.
Customs Dwell Time by LaneThe customs-hold sub-component, sliced by lane.If the exception-rate spike is concentrated on cross-border lanes, customs is the cause and the fix is documentation.
Duty-Billing Mismatch RateSpecific exception sub-type for commercial-invoice errors.Climbing duty mismatch + climbing exception rate = your invoice template is broken. Fix once, both recover.
Failed DeliveriesThe “address invalid” and “recipient not home” sub-cluster.If failed-delivery is climbing alongside exception rate, the issue is address-quality or customer-communication, not customs.
Open ClaimsDownstream cost. Exceptions become claims when shipments are lost or damaged.A 1pp exception spike predicts a 0.1 to 0.3pp claim spike at 1 to 3 weeks lag.
Returned to SenderThe “address-not-found” and “refused-by-recipient” sub-cluster.RTO is the most expensive exception type, count it separately when calculating cost impact.
Cross-connector: shopify.address_validation (if available)Upstream cause. Bad addresses captured at checkout become invalid-address exceptions in DHL.If checkout-address-validation is off or under-tuned, exception rate climbs. Fix is checkout-side.

Reconciling against the vendor’s own dashboard

Where to look in DHL InExpress’s own dashboard: MyDHL+ portalReports → Exceptions Report. The portal exposes a per-shipment exception event log with type codes; the card aggregates that view to a rate. The closest like-for-like is All shipments, all exception types, last 30 days, account-level scope. For UK exporters, the Customs & International sub-report has a sliced view by exception type that maps cleanly to the card’s contributing categories. Why our number may legitimately differ from MyDHL+:
ReasonDirectionWhy
Multi-event collapseOurs lowerA shipment with 3 exceptions counts once on this card (rate of unique shipments with exceptions). MyDHL+‘s exception count tile counts events. To match, switch the portal to “Unique shipments”.
Exception type filterEitherMyDHL+ defaults to “Customer-impacting exceptions only” which excludes internal events like “scan-misread, retried”. The card includes all customer-impacting types as exceptions. To reconcile, untick the “Internal events” filter in MyDHL+.
Time zoneBoundary days offMyDHL+ uses billing-country time zone, the card uses UTC. The 30D window is large enough to absorb most of the gap.
Resolution windowEitherSome exceptions auto-resolve within 1 to 2 hours (e.g. “scan-misread”). MyDHL+‘s tile may exclude these once resolved; the card always counts them.
Cross-connector reconciliation:
CardExpected relationshipWhat causes legitimate divergence
shopify.unfulfilled_ordersLoosely upstream. Misformed addresses captured in checkout become exceptions in DHL.Address-validation differences, B2B order flows.
Customer service ticket category breakdownDownstream. Each exception generates a probability of a customer contact.Brand communication quality (proactive WISMO emails reduce inbound volume).
Internal identity (within DHL InExpress): dhl_exception_rate ≈ COUNT(shipments with any exception) / dhl_shipments_total, a flat union across exception types. The number is not a sum of per-type rates (a shipment can have multiple exception types). For an additive view, slice by Customs Dwell Time by Lane and the underlying type codes.

Known limitations / merchant FAQs

My exception rate spiked from 2.2% to 4.5% in one week. Where do I start? Three checks in order:
  1. Slice by lane. UK to FR or UK to DE jumps usually mean a customs-side issue. Check Customs Dwell Time by Lane. If one lane caved, your fix is documentation.
  2. Check for new SKUs. A SKU launched in the last 14 days without HS codes will trigger customs exceptions on every cross-border shipment of that SKU. Audit your product catalogue against your customs filing template.
  3. Check carrier announcements. DHL InExpress occasionally has network-level incidents (handheld outage, hub closure for safety, etc.). MyDHL+ posts service alerts at the top of the dashboard.
What’s a “good” exception rate for InExpress? 1 to 2% domestic, 2 to 3% cross-border, blended ~2 to 2.5%. Below 1% blended is exceptional and usually means you’re on a calm route mix or have rounded; above 4% blended is structural and worth investigation. Why does the rate go up when I expand into new EU countries? Each new lane adds a new customs path. The first 4 to 8 weeks of a new lane typically run 2 to 4x the steady-state exception rate while the customs documentation gets refined. Plan customer-comms accordingly during launch periods. Are auto-resolved exceptions counted? Yes. If DHL’s system raises an exception then resolves it within 30 minutes (e.g. address auto-corrected), the shipment still counts on this card. The customer impact is zero in that case but the operations signal is still useful for trend tracking. Does the card distinguish “DHL caused” from “merchant caused” exceptions? No. The card pools all customer-impacting exceptions regardless of fault. For attribution, slice by exception type, customs holds (typically merchant-side documentation) vs final-mile-handoff failures (typically DHL-side network) tell different stories. My exception rate is 0.5% but my OTD is 88%. What’s going on? Two possibilities. Either your estimatedDeliveryDate is set unusually tight (so shipments deliver “late” with no exception event raised), or there’s a sync gap between the exception index and the shipment status index. Check the audit table in MyDHL+ for shipments that crossed actualDeliveryDate > estimatedDeliveryDate without any exception event, if you find a cluster, the OTD card is reading “late by quote” while this card is reading “DHL-flagged exceptions only”. How quickly do exceptions become customer support tickets? A reasonable rule of thumb: 30 to 50% of exceptions generate a customer contact within 48 hours, depending on how proactive your communication is. Brands that fire automated WISMO emails on exception events see 60%+ deflection; brands that don’t see most exceptions land directly in support.

Tracked live in Vortex IQ Nerve Centre

Exception Rate is one of hundreds of KPI pulses Vortex IQ tracks across DHL InExpress and 70+ other ecommerce connectors. Nerve Centre runs the detection layer; Vortex Mind investigates the cause when something moves; Ask Viq lets you interrogate any number in plain English. Start for free or book a demo to see this metric running on your own data.