What this audit checks
Authentication & access
- API-KEY header + api_password Basic auth still issue 200s against /shipping/v1/accounts (no 401)
- Account number resolves to an active contracted rate-card (no ‘unknown account’ on shipping endpoints)
- Merchant is on production tier, not sandbox - sandbox responses return mock data and must not be charted
- Auth failures in last 24h within tolerance (rotated or expired API key signal)
On-time delivery & transit
- Express Post next-business-day OTD < 95% rolling 30D (refund-clause exposure)
- Express Post address-eligibility rate < 90% (postcode reclassification at annual review)
- Standard / Parcel Post OTD vs published AusPost delivery estimate per zone
- Avg domestic transit days drifting above zone baseline (5 metro + 4 regional zones)
Exceptions & failed deliveries
- Exception rate > 3% rolling 30D (status = Exception across tracking events)
- AttemptedDelivery / Refused events with no follow-up redelivery within 48h
- ReturnedToSender rate climbing vs prior period (address-quality or refusal signal)
- Out-for-delivery shipments stuck >24h with no Delivered or Exception event
Damaged / lost parcels
- Lost-parcel rate > 0.2% (status = Lost) rolling 90D
- Damaged-parcel claim rate > 0.5% rolling 90D
- AwaitingCustoms parcels aged > 14d with no clearance event (lost-in-customs candidate)
- Claim value as % of AusPost spend > 1% rolling 90D
Tracking data completeness
- Shipments with a tracking_number but zero TrackingEvent records (tracking gap)
- Domestic tracking-event gap > 24h with shipment still InTransit
- International tracking-event gap > 5d (customs grace window) then stale
- Article number not in expected AP[0-9]AU format (mislabel / mismatch signal)
Cross-channel fulfilment SLA
- Cross-channel: AU ecom order with no AusPost shipment after 48h -> dispatch SLA breach per channel
- Cross-channel: Express Post shipment delivered later than next business day * sibling.order.total -> revenue at risk
- Cross-channel: AusPost cost per zone vs Sendle cost per zone (carrier-mix savings candidates)
- Cross-channel: ReturnedToSender / lost shipments joined to commerce orders -> refund-propensity exposure
Severity thresholds
| Signal | Warn | Critical |
|---|---|---|
on_time_delivery_rate | 96 | 95 |
express_post_otd_pct | 96 | 95 |
express_post_eligibility_pct | 92 | 90 |
customs_clear_rate_pct | 85 | 80 |
exception_rate | 2 | 3 |
avg_transit_days | 4 | 6 |
damaged_rate | 0.3 | 0.5 |
lost_rate_pct | 0.1 | 0.2 |
tracking_gap_pct | 5 | 10 |
returned_to_sender_pct | 2 | 4 |
claim_value_pct_of_spend | 0.5 | 1 |
auth_token_failures_24h | 1 | 5 |
Data sources
GET https://digitalapi.auspost.com.au/shipping/v1/accounts- Account validation + rate-card / tier checkGET https://digitalapi.auspost.com.au/shipping/v1/shipments- Shipment list (OTD, cost, service mix, eligibility)GET https://digitalapi.auspost.com.au/shipping/v1/track- Tracking events (transit, exceptions, customs)POST https://digitalapi.auspost.com.au/shipping/v1/returns- Return labels (reverse-logistics volume, write-side)