Package tracking in Home Assistant¶
A suite of Home Assistant custom integrations that track your packages across carriers and countries โ every one of them speaking the same canonical parcel contract, so your automations and dashboards work the same no matter who delivers.
Parcel and package mean the same thing here; the integrations use "parcel" throughout because that is what most European carriers call it.
Browse the carriers Get started
Pick one carrier, or all of them¶
Every integration stands on its own. Install the one carrier that delivers to you, and you get its sensors, its events and its parcel data โ nothing else required.
triggers:
- trigger: event
event_type: postnl_parcel_status_changed
event_data:
new_status: out_for_delivery
Use several carriers, and the shared contract starts paying off: the optional Parcel Aggregator merges them into one event stream, so the same automation covers every carrier at once โ including the one you install next year.
triggers:
- trigger: event
event_type: parcel_aggregator_parcel_status_changed # (1)!
event_data:
new_status: out_for_delivery
actions:
- action: notify.mobile_app
data:
title: "๐ฆ On its way"
message: >-
{{ trigger.event.data.carrier }} is delivering
{{ trigger.event.data.sender or 'your parcel' }} today.
- The only line that differs from the single-carrier version above. The event payload is identical either way.
How the pieces fit¶
-
Carrier integrations
One per carrier, each fully standalone. Talks to its own API and normalises the result into the shared parcel shape and
ParcelStatusvalues. -
Parcel Aggregator (optional)
Only if you run several carriers. Reads what they already publish and re-emits it merged: summed sensors, one
next_delivery, one event stream. -
The contract
Eight status values, one parcel shape, four events. The thing that makes a carrier-agnostic automation possible at all.
-
Cookbook
Ready-to-paste automations and dashboard cards, generated from the examples that ship with the aggregator.
No account, in most cases¶
Most carriers here need nothing but a tracking number โ no login, no API key, no developer portal. You add the number the way you would on the carrier's own tracking page, and Home Assistant takes it from there. Where a carrier does offer an account (PostNL, DHL, DPD, Vinted Go), logging in gets you every parcel automatically, including the ones you send.
Missing your carrier?¶
That is the most useful thing you can tell us. Open a carrier request โ writing the code is rarely the blocker, getting real tracking data to confirm the status vocabulary is. A request from someone who actually receives those parcels is worth a great deal.
Independent project
Community-built, MIT-licensed, with no affiliation with or endorsement by any parcel carrier.