At a glance
Share of Deutsche Post / DHL Paket consignments that hit a non-delivery exception event in the period: held at sortation, address invalid, recipient absent, Packstation full, weather hold, or other interruption that breaks the normal “booked → in transit → delivered” flow. Exceptions do not always become late deliveries (most resolve within 24 hours on the German national network), but a rising exception rate is the leading indicator that next week’s On-Time Delivery Rate and Late Shipments will move down. Treat as the early-warning dial on Deutsche Post / DHL Paket carrier health.
| What it counts | COUNT(DISTINCT shipmentNumber WHERE event_code IN exception_codes) / COUNT(DISTINCT shipmentNumber WHERE booked_in_period). A consignment hitting two exceptions counts once; the rate is by parcel, not by event. |
| API endpoint | DHL Tracking API GET /track/shipments?shipmentNumber={x} event stream. The card pattern-matches on eventCode against the curated exception code-set: held_at_sortation, address_unknown, recipient_absent, delivery_attempted, packstation_full, weather_delay, damaged_in_transit, lost_in_transit, incorrect_address, recipient_refused. |
| Exception vs late | An exception is an in-transit interruption; a late delivery is the outcome. Most exceptions resolve and parcel still delivers on-time on the German national network (held-at-sortation often clears in 4 to 8 hours). The relationship is leading-indicator, not equivalence. |
| Packstation-full | Germany’s Packstation network (over 12,000 lockers nationwide) generates a structural background rate of packstation_full exceptions, especially in high-density urban postcodes; the parcel re-routes to the nearest Postfiliale or alternative Packstation and the merchant cannot prevent it. The card includes these but they are typically resolution-fast. |
| Service-tier scope | All German-domestic DHL Paket and Päckchen with an event stream. Letter products excluded. |
| Returns / RTO | Outbound only. Return-leg exceptions filtered. RTO volume is on Returned to Sender. |
| Currency | The card is a percentage. To value the exception tail join with Avg Shipping Cost. |
| Time window | 30D vsP. Daily readings noisy below 200 consignments/day; weekly is operational cadence. |
| Alert trigger | >3%. Deutsche Post / DHL Paket typically runs 0.8 to 2.0 percent exception rate; the 3 percent trigger is calibrated to fire on declared incidents. Hermes and DPD on the same lane mix typically run higher. |
| Sentiment key | {'type': 'gauge', 'thresholds': {'good': 1, 'warn': 3}} |
| Roles | owner, operations |
Calculation
Calculated automatically from your Deutsche Post data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.Worked example
The Düsseldorf-based DTC homeware merchant, 27,540 trailing-30-day Deutsche Post consignments. Reading taken at 09:00 CET on 12 Mar 26 for the trailing 30 days (10 Feb 26 to 11 Mar 26).| Exception code | Count (distinct consignments) | % of period volume | Median resolution time |
|---|---|---|---|
held_at_sortation | 188 | 0.68% | 6 hours |
recipient_absent (residential) | 165 | 0.60% | 18 hours (rerouted to Packstation or Postfiliale) |
packstation_full | 92 | 0.33% | 12 hours (rerouted to next Packstation) |
address_unknown | 47 | 0.17% | 36 hours (with merchant intervention) |
weather_delay (Schneechaos rural Bayern) | 28 | 0.10% | 24 hours |
delivery_attempted (no answer at door, attempt only) | 22 | 0.08% | 14 hours |
damaged_in_transit | 8 | 0.03% | 96 hours (claim filed) |
lost_in_transit | 2 | 0.01% | not resolved |
| Total exception consignments (this card) | 552 | 2.00% | median 11 hours |
>3% is comfortably clear. Five things to notice:
- Held-at-sortation is the largest bucket and resolves fastest. 188 consignments held at a sortation centre is normal cadence for a 27,000-month-volume merchant on Deutsche Post; the German network’s sortation throughput is high and these clear in around 6 hours. Concerning patterns: same Niederlassung repeatedly named in held-at-sortation events, suggests local capacity issue worth raising with the Geschäftskundenmanager.
- Recipient-absent + Packstation-full are structural German B2C noise. 165 + 92 = 257 consignments, roughly 0.93 percent of volume, that simply re-route through the alternative-delivery network (Packstation, Postfiliale). The recipient eventually collects; OTD often holds. This is the everyday cost of residential B2C in Germany.
- Address-unknown is the merchant’s checkout problem. 47 unknown-address exceptions (0.17 percent) is below the 0.4 percent threshold where a checkout-side address validator becomes cost-effective; for this merchant it is fine. A merchant at 0.5+ percent should consider adding postcode-validation at checkout.
- Weather-delay is the seasonal background. 28 exceptions in late winter is the tail end of Schneechaos season in southern German rural lanes; in summer this category reads near zero. Annotate seasonal pattern in board commentary; do not re-baseline alert thresholds.
- Lost-in-transit is the small number that hurts most. 2 lost consignments at AOV around EUR 75 = roughly EUR 150 of refund-or-reship liability plus 2 negative reviews. Treat lost-in-transit as a separate dial; Open Claims breaks these out.
Sibling cards merchants should reference together
Exception Rate is a leading indicator. Pair with these to read the signal:| Card | Why pair it with Exception Rate | What the combination tells you |
|---|---|---|
| On-Time Delivery Rate | The downstream outcome dial. | A 2-point exception-rate spike usually shows up as a 1-point OTD drop 24 to 48 hours later. |
| Late Shipments | The downstream count. | Exception-to-late conversion is roughly 25 to 40 percent on the German national network (lower than international peers because resolution is fast). |
| Failed Deliveries | Subset of exceptions that did not recover. | Most exceptions resolve and the parcel still delivers; the unresolved tail becomes a failed delivery. |
| Open Claims | The recovery-and-money side. | Damaged-in-transit and lost-in-transit exceptions become claims. |
| OTD by Route | Where the exceptions concentrate. | Network-wide exception spike points to DHL; route-concentrated points to specific Niederlassung. |
Cross-connector: shopify.checkout_address_validation | Upstream cause for address_unknown exceptions. | Validating at checkout cuts this exception class by 60 to 80 percent. |
Cross-connector: gorgias.tickets_open | Downstream impact. | A 1-point exception-rate spike maps to roughly 12 to 18 percent ticket-volume increase at 24 to 72 hours lag. |
Cross-connector: klaviyo.transactional_email_delivery | Defensive comms. | Triggering a Klaviyo flow on DHL exception webhooks reduces customer-initiated WISMO tickets by 35 to 55 percent in Germany. |
Reconciling against the vendor’s own dashboard
Where to look in Deutsche Post’s own portal: DHL Geschäftskundenportal → Berichte → Tracking-Ereignisse, then filter the event-code dropdown to exception classes (Sortierung-zurückgehalten, Adresse unbekannt, Empfänger nicht angetroffen, Packstation belegt, Wettersbedingungen, beschädigt, verloren). The portal presents data as event count rather than per-consignment rate; the card normalises to per-consignment. Why our number may legitimately differ from the DHL portal:| Reason | Direction | Why |
|---|---|---|
| Per-event vs per-consignment counting | Portal higher | A consignment hitting held_at_sortation then delivery_attempted then delivered counts as two events in portal, one consignment in card. |
| Exception code curation | Either | DHL’s tracking feed has 80+ event codes; the card’s exception set is curated to operationally meaningful breaks. Codes like arrived_at_sortation_center are normal in-transit events and excluded. |
| Packstation-full counting | Either | Portal sometimes excludes packstation_full from exception view (treats as alternative-delivery success); the card includes it. |
| Resolution-window deduplication | Ours lower for active retries | If a consignment hits delivery_attempted twice (Tuesday and Wednesday), the card counts once; portal may count both. |
| Timezone (CET / CEST vs UTC) | Boundary days off | Portal in Berlin local time; card in UTC. |
| Card | Expected relationship | Causes of legitimate divergence |
|---|---|---|
gorgias.tickets_open | Exceptions feed CS tickets at 12 to 18 percent ticket-volume increase per 1-point exception-rate increase. | Not all tickets relate to DHL; not all DHL exceptions become tickets. |
shopify.checkout_address_validation | Upstream cause for address_unknown. | Checkout-side typo rates and carrier-side address_unknown exception rate move together. |
hermes_germany.her_exception_rate | Adjacent German parcel-network exception rate for the same period. | Different carrier, different shipments. |
Known limitations / merchant FAQs
My exception rate is 2 percent and OTD is still 97 percent. Is this normal? Yes, comfortably so. The German national network has a high exception-recovery rate (most exceptions resolve inside the promise window). A 2-to-1 exception-to-late ratio is typical for Deutsche Post / DHL Paket; on Hermes or DPD on the same lane mix the ratio is closer to 1.2-to-1 because their networks recover slower. Should I exclude Packstation-full from the alert threshold? Reasonable choice in high-density urban postcodes. Packstation-full is a structural feature of DHL’s automated-locker network; the parcel re-routes automatically. Configure the alert at the integration layer to excludepackstation_full if your postcode mix is metropolitan-heavy and the resulting alert noise outweighs the operational signal. Do not delete from underlying data; the count is real and useful for capacity-planning conversations with the DHL account manager.
A single warehouse error caused 100 address-unknown exceptions in one day. Is the dial broken?
No, the dial is reading reality. A label-data export bug or a checkout typo can produce a one-day spike. Configure your alert on a 7-day rolling rather than daily reading if one-day spikes are too noisy. The underlying data is fixable: identify affected consignments via the drill-down, contact DHL through Geschäftskundenportal Reklamationsstelle to update addresses (parcels usually still in network and re-deliverable), and patch the upstream cause.
Why does my Schneechaos period show as elevated exception rate but no late count?
Most weather exceptions resolve inside the promise window because DHL’s recovery cadence is fast: a parcel held for weather Wednesday afternoon usually moves Thursday morning and still hits the Thursday target. Annotate the seasonal pattern in board commentary; do not re-baseline alert thresholds for weather alone.
Held-at-sortation keeps appearing for the same Niederlassung. Should I worry?
Yes, if it is consistent. A specific Niederlassung repeatedly named in held-at-sortation events suggests a local capacity or staffing issue. Contact your DHL Geschäftskundenmanager with specific dates and consignment numbers; DHL’s network operations team can typically explain (e.g. “construction on the A2 Autobahn affected our Hannover hub last month”) or escalate. If unexplained, the DHL account team can sometimes route your volume away from the affected Niederlassung.
Which exception codes should I treat as actionable vs ignorable?
Actionable (chase same-day): damaged_in_transit, lost_in_transit, incorrect_address on high-AOV consignments, recipient_refused. Actionable (chase within 24 hours): address_unknown, customs-inspection on cross-border. Monitor only: held_at_sortation, recipient_absent, delivery_attempted, packstation_full, weather_delay. The 3 percent threshold is calibrated to the actionable + monitor mix; for actionable-only filtering set lower (around 1 percent).
My CS team wants a webhook for new exceptions, not a periodic dashboard read.
Yes. Configure the DHL webhook integration to push exception events to your CS tool with eventCode IN exception_set as filter. Pair with Klaviyo Transactional Email to send proactive customer email on the same trigger. Webhook + dashboard reads are consistent.
The dial dropped from 2.0 percent to 0.3 percent overnight. Did the network suddenly improve?
Probably not. Most overnight dial drops on this card are data-feed issues, not network improvements. Check (1) Days to Token Expiry for credential issues, (2) booking-API integration is still posting (a missing booking flow means newer parcels are not in the denominator), (3) consignment-number mismatch between booking and tracking. If integration is healthy and the drop is real, double-check by comparing against Late Shipments.
Is the 3 percent threshold suitable for a B2B-heavy merchant?
Mostly yes. DHL Paket Pro Business B2B has a structurally lower exception rate than residential because B2B receivers are at fixed addresses with goods-in operations. A B2B-heavy merchant might tighten the alert to 1.5 percent. The threshold is configurable at the integration layer.