> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vortexiq.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# DPDLocal audit profile, Vortex IQ

> What the Vortex IQ DPDLocal health audit checks: DPDLocal: OTD, Claims, Predict-Slot Accuracy & Cross-Channel Leak

**[Nerve Centre KPIs](/nerve-centre/kpi-cards/dpdlocal) · [Audit Profile](/nerve-centre/kpi-cards/dpdlocal/audit) · [Sentiment Settings](/nerve-centre/kpi-cards/dpdlocal/sentiment)**

DPDLocal is the merchant's UK last-mile carrier. Findings here either cost the merchant a customer (late delivery, missed Predict slot, failed pickup) or burn cash (claim ageing, premium-service spend not earning its OTD lift). Cross-references commerce siblings (Shopify / BigCommerce / Adobe Commerce) via order\_ref to compute revenue-at-risk; cross-references the 3PL sibling (ShipBob) via fulfillment\_id to split warehouse vs carrier accountability; cross-references the Jira sibling to surface open claims with no CS ticket coverage.

## What this audit checks

### Authentication & access

* Basic Auth on /user/ still issues a GeoSession JWT (no 401)
* GeoSession JWT cache hit-rate > 95% (re-auth churn signal)
* Geoclient identifier valid (no 'invalid client' responses)
* Sandbox vs production base URL flagged correctly

### On-time delivery & SLA (the customer-promise area)

* Carrier OTD \< 95% rolling 30D (DPDLocal contracted SLA breach)
* OTD trending down >5pp WoW (early degradation signal)
* First-attempt delivery rate \< 85% (address-quality / recipient signal)
* Predict slot accuracy \< 92% (the brand-promise window)
* Sunday delivery success \< 90% on services that support it
* Median transit time > contracted service transit\_days for 3+ days

### Exceptions, claims & failed pickups

* Exception rate > 3% rolling 30D
* Exception spike > 2sigma vs trailing 30D baseline (sudden break)
* Open claims unresolved > 7 days (CS coverage gap)
* Open claims unresolved > 14 days (abandoned cash + churn risk)
* Failed pickup rate > 3% (carrier-side relationship decay)
* Refused-parcel rate > 1% (customer-side / address-quality signal)
* Returned-to-sender rate > 1% rolling 30D

### UK route & postcode intelligence

* Any UK postcode-area OTD \< 90% (regional weakness)
* Highlands / NI / IoM transit time > 5 days (out-of-zone signal)
* Single-route concentration > 80% volume (carrier dependency risk)
* Route OTD degraded >5pp WoW for 3+ days (sustained issue)

### Cost & service-mix economics

* Avg cost / shipment up >10% vs prior period
* Premium-service uplift (Predict / Sunday / EU) > 40% over standard
* High-cost shipment outliers > 2x avg (investigate routing / surcharges)
* Service-mix shift WoW: standard-share dropping >10pp (margin pressure)
* Claim value as % of DPDLocal revenue > 2% rolling 90D

### Cross-channel: revenue at risk (the kill-shot area)

* Cross-channel: late shipments joined to commerce\_sibling orders -> revenue at risk per channel
* Cross-channel: 3PL-vs-carrier delay attribution (ShipBob warehouse\_dispatch vs DPDLocal in-transit) -> who owns the late delivery
* Cross-channel: open claims with no Jira tracker\_item -> CS coverage gap (silent unhappy customers)
* Cross-channel: late-delivery refund-propensity x sibling.order.total -> \$ exposed to chargeback / churn this week
* Cross-channel: claims aged >14d that ALSO have a Jira ticket aged >14d -> abandoned-finding loop (both sides waiting)

## Severity thresholds

| Signal                               | Warn | Critical |
| ------------------------------------ | ---- | -------- |
| `on_time_delivery_rate`              | 95   | 90       |
| `predict_slot_accuracy`              | 95   | 92       |
| `first_attempt_delivery`             | 90   | 85       |
| `sunday_success_rate`                | 92   | 90       |
| `exception_rate`                     | 2    | 3        |
| `open_claims_age_days`               | 7    | 14       |
| `claim_resolution_days_median`       | 10   | 14       |
| `failed_pickup_rate_pct`             | 2    | 3        |
| `refused_parcel_rate_pct`            | 0.5  | 1        |
| `shipping_cost_per_order_change_pct` | 5    | 10       |
| `premium_service_uplift_pct`         | 30   | 40       |
| `claim_value_pct_of_revenue`         | 1    | 2        |
| `region_otd_pct`                     | 92   | 90       |
| `auth_token_failures_24h`            | 1    | 5        |

## Data sources

* `GET https://api.dpdlocal.co.uk/user/` - Auth probe + GeoSession JWT issuance
* `GET https://api.dpdlocal.co.uk/shipping/shipment` - Shipment list + status (OTD, transit time)
* `GET https://api.dpdlocal.co.uk/shipping/tracking/{consignment_id}` - Tracking events for late / exception detection
* `GET https://api.dpdlocal.co.uk/shipping/collection` - Collection bookings + failed-pickup detection
* `GET https://api.dpdlocal.co.uk/shipping/claim` - Open / settled claim list + age / value
* `GET https://api.dpdlocal.co.uk/shipping/service` - Service catalogue (transit\_days, supports\_sunday, supports\_predict)
