The Things Stack Sensor Connection (beta)
Send temperature readings from LoRaWAN devices on The Things Stack to OpenBoxes Lift with a webhook. Lift then shows each device's readings beside its OpenBoxes location and checks them against your alert rule.
Lift shows a copy of your logger's record. Use your logger's own record for decisions about your vaccines and medicines, and for inspections. Lift is not a validated system.
Sensor connections are in beta on every plan, at no extra charge during the beta. This connection is built to The Things Stack's published webhook format. See Temperature Loggers for how readings, alert rules and alerts work.
Before you start#
Your application in The Things Stack needs a payload formatter that decodes each uplink, so each uplink message carries a decoded_payload with the temperature as a number. The part of the webhook Lift reads looks like this:
{
"end_device_ids": { "dev_eui": "70B3D57ED0000000" },
"uplink_message": {
"decoded_payload": { "temperature": 4.5 },
"received_at": "2026-10-08T12:00:00Z"
}
}
Lift never decodes the raw payload itself. Each uplink gives one reading, and its time is the time The Things Stack received it.
1. Add the connection in Lift#
- In the customer portal, open Devices & sensors > Sensors > Connections. Only the account owner or an Admin can add a connection.
- Choose Add a connection and pick The Things Stack.
- Under How the platform signs in, choose A secret token in a header.
- In Temperature field, enter the name your payload formatter gives the temperature, for example
temperature. For a nested field use dots, for examplesensors.temp. - In Unit of that field, choose Celsius (°C) or Fahrenheit (°F).
- Lift shows the connection's web address, the header name and its secret. Copy the secret now: Lift shows it only once.
Lift stores no readings from the connection until the temperature field is set. You can change the field and unit later.
2. Add the webhook in The Things Stack#
In your application, add a custom webhook:
- Webhook format: JSON.
- Base URL: the web address Lift showed you.
- Additional header: name
X-Lift-Sensor-Token, value the secret. - Enabled event types: Uplink message only, with no extra path.
- Turn on retries for this webhook, so readings sent while Lift is briefly unreachable still arrive.
Simulated uplinks sent from the Console are ignored, so a test from there stores nothing.
3. Accept each device#
Lift does not store readings from a device until it is accepted. Once a device has sent an uplink that Lift can read (one whose decoded payload holds the temperature field you entered), open the connection's Devices in the portal: it waits there under its DevEUI. If it does not appear, check the field name first: it must match your payload formatter's exactly, including capital letters. Choose Accept readings, and give the logger a name if you like. Readings sent before you accept it are not added. Then place the logger at its OpenBoxes location on Locations and give it an alert rule.
Good to know#
- Readings more than 35 days old are not stored.
- An account can have up to 10 connections, each with up to 200 accepted devices.
- Make a new secret keeps the old secret working for 24 hours while you update the webhook. If a secret may have leaked, use Turn off instead: it stops the connection at once. Then add a new one. A connection can't be deleted: once turned off, it stays in the list, below the active ones.
- Temperature alerts are a second channel, not a replacement for your devices' own alarms.
Related#
- Cold chain overview: the beta on one page, with every way to bring readings in and how temperature alerts work.
- Temperature Loggers: uploads, alert rules, excursions and temperature alerts.