Destinations
Home Assistant
Send Metrics JSON by webhook or REST.
Hozz posts Metrics JSON to a webhook or REST API.
Setting it up#
Decide: webhook or REST API#
Webhooks need no token. The REST API needs a long-lived access token.
For a webhook, add the trigger#
Create a webhook automation and note its ID. The placeholder is
http://homeassistant.local:8123/api/webhook/hozz.For the REST API, create a token#
Create a long-lived token. Prefix it with
Bearerand one space, then store the full value in the secret field.Send a test#
Home Assistant will show the request arriving. The probe contains no Health data.
The webhook trigger#
# configuration.yaml — or an automation created in the UI
automation:
- alias: Receive Hozz health data
trigger:
- platform: webhook
webhook_id: hozz
allowed_methods: [POST]
local_only: true
action:
- variables:
metrics: "{{ trigger.json.data.metrics }}"Keep local_only: true unless you intend to expose the webhook.
What arrives#
{
"data": {
"metrics": [
{
"name": "heart_rate",
"units": "count/min",
"data": [
{
"date": "2026-08-22T21:10:46.500Z",
"qty": 62.5,
"units": "count/min",
"source": "Apple Watch"
}
]
}
],
"deletions": []
}
}Points use stable lowercase snake_case metric names.
See the delivery schema for the full payload shape, including the deletions array.
Coming from Health Auto Export#
Existing automations can use an opt-in compatibility mode. See its mappings and limits.
Telling it is working#
- Send a test reports the response. Any
2xxaccepts. - In Home Assistant, a webhook automation's trace shows the payload it received.
- On the phone, the destination shows
deliveredonce everything staged has been accepted. The other six states are all explained.