A suite of Home Assistant custom integrations that track your parcels across carriers and countries — every one speaking the same canonical parcel contract, so your automations and dashboards work the same no matter who delivers.
📖 Read the docs — carrier list, the parcel contract, and a copy-paste automation cookbook.
| Integration | Latest | Tracks | |
|---|---|---|---|
| ha-cainiao | Alibaba's tracking layer for AliExpress, Temu, Shein and similar shops (Cross-border); account-less, tracking number only. Early release: the status mapping is still being confirmed against real parcels, help wanted | ||
| ha-correos | Spain's national postal operator; account-less, tracking number only. Early release: the status mapping is still being confirmed against real parcels, help wanted | ||
| ha-dhl-nl | DHL eCommerce, tracked through your DHL account (Netherlands); account-based, incoming & outgoing parcels. | ||
| ha-dpd | DPD shipments, tracked through your myDPD account (Netherlands); account-based, incoming & outgoing parcels. | ||
| ha-dragonfly | Dragonfly Shipping — no account and not even a postal code needed (Netherlands); account-less, Track & Trace code only. | ||
| ha-gls | GLS parcels, just like the gls-info.nl website (Netherlands); account-less, tracking number + postal code. | ||
| ha-helthjem | Helthjem — Norwegian home delivery (Norway); account-less, tracking number only. Early release: the status mapping is still being confirmed against real parcels, help wanted | ||
| ha-hermes | Hermes Paket (Germany); account-less, tracking number only. Early release: the status mapping is still being confirmed against real parcels, help wanted | ||
| ha-packeta | Packeta (Zásilkovna) — Central-European pickup-point and locker network; account-less, "Z" tracking number only. Early release: the status mapping is still being confirmed against real parcels, help wanted | ||
| ha-planzer | Planzer — the carrier behind IKEA Switzerland home deliveries; account-less, shipment number or IKEA order number only. Early release: the status mapping is still being confirmed against real parcels, help wanted | ||
| ha-postnl | PostNL parcels plus announced MyMail letters (Netherlands); account-based, incoming & outgoing parcels. | ||
| ha-postnord | PostNord — the Nordic postal operator (Nordics); account-less, tracking number only. Early release: the status mapping is still being confirmed against real parcels, help wanted | ||
| ha-sameday | Sameday — the easybox locker network (South-East Europe); account-less, AWB number only. Early release: the status mapping is still being confirmed against real parcels, help wanted | ||
| ha-swiss-post | Swiss Post — Switzerland's national postal operator; account-less, tracking number only. Early release: the status mapping is still being confirmed against real parcels, help wanted | ||
| ha-trunkrs | Trunkrs — same-day and next-day delivery (Netherlands); account-less, Trunkrs number + postal code. Early release: the status mapping is still being confirmed against real parcels, help wanted | ||
| ha-vinted-go | Vinted Go (formerly Homerr) — passwordless e-mail login, locker and parcel-shop network (Benelux & France); account-based, incoming & outgoing parcels. Early release: the status mapping is still being confirmed against real parcels, help wanted | ||
| ha-oesterreichische-post | Österreichische Post — Austria's national postal operator; account-less, tracking number only. Early release: the status mapping is still being confirmed against real parcels, help wanted | ||
| ha-parcel-aggregator | Rolls every carrier above into one unified set of sensors, a combined deliveries calendar, and a single event stream |
📦 Missing your carrier, or want one of these in another country? Request it — the code is rarely the blocker, real tracking data is, so a request from someone who receives those parcels helps most.
Each carrier integration is standalone and normalises its data to a shared ParcelStatus enum and a common parcel shape, firing canonical events (<carrier>_parcel_registered / _status_changed / _delivered / _delivery_time_changed). Install just the carriers that deliver to you — nothing else is required.
Running several? The optional Parcel Aggregator subscribes to all of them and re-emits a unified stream, so you write one automation like "when any parcel is out for delivery" instead of one per carrier.
The full contract is documented at ha-parcel-integrations.github.io.
All integrations are distributed via HACS. See Getting started for the walkthrough, or each repository's README for its own options.
💬 Questions or feedback? Join the discussion on the Home Assistant community.
🐛 Found a bug, or does a parcel report an unknown status? That belongs in
the issue tracker of the integration itself.