What this audit checks
Authentication & access
- EMS tracking api_key still authenticates against /services/tracking (no 401 / invalid-key)
- Yu-Pack Business contract number maps to an active domestic shipping account (no ‘unknown contract’)
- Customer code (お客様コード) resolves and is accepted on /services/shipping
- Tracking API error / 5xx rate > 5% in last 1h (Japan Post upstream availability)
On-time delivery & transit
- EMS OTD per destination corridor (JP->US/EU/AU/Asia) below corridor SLA - North America 3-5d, Europe 5-7d, Asia 2-4d
- Yu-Pack same-day Tokyo metro OTD < 90% (pre-12:00-noon same-day promise)
- Yu-Pack next-day prefectural OTD below target
- Avg transit days per service_type drifting above prior-period baseline (actual_delivery - created_at)
Exceptions & failed deliveries
- Shipment exception rate > 3% rolling 30D (status = Exception across Yu-Pack + EMS)
- EMS shipments stuck in AwaitingCustoms > 2 days (JP export-customs hold)
- AttemptedDelivery events not converting to Delivered (repeat redelivery / 不在 re-attempt loop)
- ReturnedToSender rate per service_type above threshold
Damaged / lost parcels
- Lost-parcel rate (status = Lost) > damaged_rate threshold rolling 90D
- Damaged-parcel rate elevated on Cool Yu-Pack / Frozen vs ambient Yu-Pack
- Declared-value (declared_value_jpy on CN23) exposure on lost international EMS shipments
- Cool Yu-Pack temperature-track gaps > 0 in last 24h (chilled/frozen line break = perishable product risk, P0)
Tracking data completeness
- Tracking-event gap > 24h on domestic Yu-Pack OR > 5d on EMS_International (no occurred_at progression)
- Shipments with no TrackingEvent linked to tracking_number after acceptance
- CN23 customs-document auto-generation failure rate > 2% (status = Rejected or generation error)
- Missing to_country_code / to_prefecture on shipments breaking corridor and zone attribution
Cross-channel fulfilment SLA
- Cross-channel: JP ecom order has no Japan Post shipment after 48h (dispatch-SLA breach -> revenue at risk per channel)
- Cross-channel: actual_delivery > expected_delivery joined to commerce_sibling.order.total (late-delivery refund propensity)
- Cross-channel: EMS stuck AwaitingCustoms joined to sibling order -> proactive commercial-invoice / customs-doc fix candidates
- Cross-channel: ReturnedToSender by service_type joined to sibling orders -> return-cost attribution
Severity thresholds
| Signal | Warn | Critical |
|---|---|---|
on_time_delivery_rate | 90 | 85 |
exception_rate | 2 | 3 |
avg_transit_days | 5 | 7 |
damaged_rate | 0.5 | 1 |
tracking_gap_pct | 5 | 10 |
customs_doc_failure_pct | 1 | 2 |
awaiting_customs_days | 1 | 2 |
cool_yupack_temp_gaps_24h | 0 | 1 |
returned_to_sender_pct | 5 | 8 |
api_error_rate | 2 | 5 |
auth_token_failures_24h | 1 | 5 |
Data sources
GET https://trackings.post.japanpost.jp/services/tracking- Tracking events per tracking_number (EMS public surface + domestic where licensed)POST https://trackings.post.japanpost.jp/services/shipping- Shipment creation / Yu-Pack domestic dispatch (write-side, partner-gated)POST https://trackings.post.japanpost.jp/services/customs- EMS CN23 customs declaration generation (international export)