Guides
How to get notified when a The Things Stack device goes quiet
The Things Stack Community Edition has no device-offline alerting. How to build it with a webhook, and what the paid tiers actually include.
If you run The Things Stack — Community Edition on The Things Network, or your
own deployment — and you are looking for the setting that emails you when a device
stops sending, it is not there. Community Edition has no alerting of any kind.
The Things Industries offer network operations and alerting features on their
paid Cloud tiers. If you are already paying for Cloud, look there first. If you are
on Community Edition, or self-hosting Open Source, you need to build it or buy it
separately.
Build it with a webhook
Under Integrations ▸ Webhooks ▸ Add webhook ▸ Custom webhook, set a base
URL and enable the uplink message event. The Things Stack will POST
JSON to that URL on every uplink.
{
"end_device_ids": {
"device_id": "ls101sm",
"dev_eui": "24E124126C005678"
},
"uplink_message": {
"f_cnt": 9,
"rx_metadata": [
{ "gateway_ids": { "gateway_id": "eui-2cf7f12001a10000" },
"rssi": -83, "snr": 9 }
],
"decoded_payload": { "distance": 420, "battery": 71 }
}
}
Note the shape differs from ChirpStack's: identifiers live under
end_device_ids, the frame counter is f_cnt rather than
fCnt, and gateway ids are nested one level deeper inside
gateway_ids. If you run both network servers, normalise them to a
common structure at the door rather than scattering the difference through your
code.
Anything that receives those POSTs and remembers a timestamp per device can
alert you when one stops. Our
uplink-watchdog
script handles both shapes and is a single file with no dependencies.
Enable only the events you mean
Webhook configuration lets you subscribe to join accepts, downlink events and
several others alongside uplinks. Enable uplinks for this purpose and be careful
about treating anything else as a sign of health. A join accept means a device is
trying; it does not mean it is delivering data. A device stuck in a join loop can
look busy while sending you nothing.
How long is too long?
Do not use one global timeout for every device. Devices on the same network
routinely differ in reporting interval by a factor of a hundred, and a single
window either floods you with false alarms from the slow ones or misses real
failures on the fast ones.
Track each device's own average interval and alert after about three missed
reports. Exclude outage-length gaps when computing that average, or one long
outage quietly doubles the time it takes to detect the next one.
Fair warning about self-hosting the watchdog
Whatever you build, it runs somewhere, and that somewhere is not itself
monitored. A watchdog that has silently died is worse than no watchdog, because
you believe you are covered. Decide deliberately whether that risk is acceptable
for the fleet you are responsible for.
Or use a hosted one
We run UplinkWatch for exactly this: paste our ingest URL into
the webhook base URL field, and device and gateway monitoring happens on our
infrastructure. It reads both The Things Stack and ChirpStack payloads on the same
endpoint, which is useful if you run a mixed estate. Free for 5 devices.
Hosted in the EU: our servers are in Helsinki, Finland, run by
Hetzner. Your uplink metadata does not leave the EU.
Stop finding out from your client
UplinkWatch alerts you the moment a device or gateway
goes quiet. Paste one URL into your network server. Free for 5 devices.
Start free
What it does
Last updated 2026-09-03.