At a glance
Share of Shippo-printed shipments that hit a carrier exception event during transit (weather hold, address issue, damage, customs, retry). The leading-indicator companion to Late Shipments: exceptions today drive late deliveries 2 to 5 days from now.
| What it counts | COUNT(transactions WHERE tracking_history contains status_code IN exception_set) / COUNT(transactions). A single shipment with multiple exception scans counts once. |
| API endpoint | Shippo GET /tracks. Reads tracking_history[].status for every event, looking for codes mapped to “exception”. |
| Exception set | Carrier-tagged events: weather delay, address correction, customs hold, damage, refused, recipient-not-home retry, missorted, mechanical delay, security inspection. Excludes terminal “delivered”. |
| Carrier scope | All carriers pooled. USPS publishes “Delivery Exception”, “Insufficient Address”. UPS uses “Address Correction”, “Adverse Weather”. FedEx uses “Customer Not Available”, “Operational Delay”. DHL similar. Shippo normalises into one set. |
| Returns / RTO | RTO is itself an exception. Counted here AND in Returned to Sender. |
| Cost implication | Each exception costs 30 in CS time, address-correction fees (11 on USPS), and refund risk. A 3% rate on 10k shipments per month = 300 exceptions = 9,000 monthly cost. |
| Q4 / peak amplification | Typically rises to 4 to 8% in late November / early December as carrier networks saturate. Peak around 8 December; 30D window smooths daily noise. |
| Time window | 30D vsP |
| Alert trigger | >3%, drives the exception_rate sentiment. Good <1%, warn >3%. |
| Roles | owner, operations |
Calculation
Calculated automatically from your Shippo 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 US DTC supplements brand on Shopify, ~12,000 shipments per month via Shippo (USPS Priority + UPS Ground). Reading taken at 09:00 ET on 12 Mar 26 for the trailing 30 days.| Exception type | Count | Share of total |
|---|---|---|
| Address correction (USPS / UPS) | 220 | 1.8% |
| Recipient not home retry (FedEx / UPS) | 95 | 0.8% |
| Weather delay (carrier-wide) | 70 | 0.6% |
| Customs hold (DHL international) | 40 | 0.3% |
| Damage / inspection | 25 | 0.2% |
| All exceptions (this card) | 450 | 3.7% |
>3% tripped at warn. Five things to notice:
- Address correction is 49% of exceptions. This is the most fixable bucket. Add address validation at checkout (Shopify Shop Pay native, or apps like Address Validator) to cut this in half within four weeks. Each prevented address correction saves $16+ in carrier fees alone, before CS time.
- Recipient-not-home is 21%. Less fixable, but partial mitigation via signature-required for high-value parcels (forces scheduled delivery), or pickup-point delivery options where carriers support it.
- Weather is unavoidable but predictable. When a major weather event hits a hub region, expect a 1 to 3 day exception spike followed by a late-delivery wave 3 to 5 days later. Use this card as the early-warning for Late Shipments.
- The 3.7% rate predicts ~13k of monthly recoverable cost. A four-week project on address validation alone could halve the address-correction bucket and pay for itself in one month.
- Same brand, December 2025 reading was 6.4%. Q4 doubled the rate. The 30D window in early March is the right baseline; comparing March to December would double-count seasonality.
Sibling cards merchants should reference together
Exception rate is a leading indicator. Pair it with these to act ahead of the wave:| Card | Why pair it with Exception Rate | What the combination tells you |
|---|---|---|
| Late Shipments | Downstream consequence, 2 to 5 day lag. | Exception spike today predicts late count spike in 3 to 5 days. Acting on exceptions first prevents the late wave. |
| On-Time Delivery Rate | The percentage view of the late consequence. | Exception rate climbing precedes OTD drop with the same lag. |
| Returned to Sender | Subset of exceptions that escalate to RTO. | Address correction failures often escalate to RTO if the customer cannot be reached; track both. |
| Failed Deliveries | Terminal exceptions. | Failed = exceptions that did not recover. |
| Open Claims | Damage exceptions feed claims. | Damage scans here precede claim filings by 1 to 3 days. |
Cross-connector: shopify.refund_rate | Two-step downstream impact. | Exceptions today drive late deliveries tomorrow drive refunds in 7 to 14 days. |
| Cross-connector: customer NPS / post-purchase survey | Downstream sentiment. | Customers whose parcel hit any exception score 1 to 2 NPS points lower than no-exception customers. |
Reconciling against the vendor’s own dashboard
Where to look in Shippo’s own dashboard: Shippo App → Orders → Filter “Exception”. The closest like-for-like view is All Carriers, Last 30 Days, Status: Exception. Shippo also exposes a per-shipment view at Tracking → Filter by status, where each tracking event is listed. Why our number may legitimately differ from Shippo’s report:| Reason | Direction | Why |
|---|---|---|
| Exception-set definition | Either | Shippo’s report sometimes pools “delivery exception” only (excluding address correction events that resolve cleanly). The card pools the full normalised exception set including address-correction events. |
| Time zone | Boundary days off | Shippo defaults to merchant zone; card uses UTC. |
| Carrier polling lag | Ours lower for “today” | Shippo polls carriers every 1 to 4 hours; today’s rate may understate by a few hours of unpolled events. |
| Multiple-event de-duplication | Either | A shipment with three exception scans counts once in the card. Some Shippo reports count events not shipments, inflating the rate. |
| Customs holds (international) | Either | DHL international parcels generate customs-hold events that some Shippo views exclude as “expected”. The card includes them. |
| Card | Expected relationship | What causes legitimate divergence |
|---|---|---|
| Carrier-direct exception rates (USPS Informed Visibility, UPS Quantum View) | Same shipments, different lens. | Carrier-internal codes are richer; Shippo flattens to one normalised set. Counts differ but trends correlate. |
shopify.refund_rate | Two-step downstream. | Exception spike today predicts refund-rate climb in 7 to 14 days. |
Known limitations / merchant FAQs
My exception rate is at 4% but my OTD is fine. What is happening? Exceptions can recover. A “weather delay” scan today may resolve into an on-time delivery 24 hours later if the carrier catches up. The card surfaces upstream risk, not downstream consequence. Watch the next 5 days; if late count climbs, the exception wave is converting to OTD damage. If late count stays flat, the carrier absorbed it. Address correction is half my exceptions. What is the cheapest fix? Three actions, in order of cost:- Free. Tighten Shopify checkout copy: “Verify your apartment / suite number before placing your order.” Adds friction but cuts ~10 to 20% of address-correction events.
- Low cost. Install a checkout address-validation app (Address Validator, AddressCheck, or built-in Shopify Shop Pay). 80 per month. Cuts 30 to 50% of corrections.
- Higher cost. Pre-shipment address verification via USPS Address Verification API (Shippo exposes it at the
POST /addresses/validateendpoint). Adds ~$0.005 per call but catches edge cases the consumer-facing app misses.
>5% warn / >8% critical for 25 Nov 25 to 5 Jan 26. Disabling silence the signal of a peak-on-peak event.
Damage exceptions, what do I do with them?
Two actions. (1) Check whether they cluster around a SKU (packaging issue) or a carrier hub (handling issue). Cost Outliers sometimes reveals re-ship cost spikes that align with a damage cluster. (2) File a Shippo Insurance claim within 30 days of ship date for any insured parcel. Shippo Insurance is roughly 1.5 to 3% of declared value and covers damage, loss, and theft.
Can I see exception rate by carrier?
Not in this card directly. Use OTD by Route and Shipments by Service together to triangulate; a per-carrier exception rate card is on the roadmap.
My exception rate dropped to 0.5% suddenly. Is the data missing?
Possible. Two checks: (1) confirm Shippo tracking is still receiving carrier scans (look at last tracking_history event timestamp on a sample of recent shipments), (2) confirm Shippo API token has not expired (Days to Token Expiry). A near-zero rate is more likely a feed problem than a real operational improvement.