Send a webhook from your Garmin watch when something happens on it.
Backhaul needs a server you run yourself. It posts to an HTTPS address you enter in the app settings, and nowhere else. If you do not already have an endpoint that can receive a JSON POST, this app will not do anything useful for you.
Finish an activity and your server hears about it in seconds, rather than whenever your next poll of Garmin Connect happens to run. It also fires on daily goals, step milestones, sleep and wake, plus an optional heartbeat.
There is no cloud service in the middle, no account and no sign-up. The watch talks to your URL and nobody else's.
| Event | When |
|---|---|
activity.completed | Any activity is saved or discarded, including ones recorded by other apps |
goal.reached | A daily step, floors or active-minutes goal is met |
steps.milestone | Every 1000 steps (off by default, it is chatty) |
sleep.start / wake | The watch decides you fell asleep or woke up |
heartbeat | A configurable interval, minimum 5 minutes |
The activity-completed event arrives the instant you press stop, which is very often the instant your phone is still in a locker on the other side of the building. Backhaul writes undelivered events to device storage and retries them on its next wake-up, for up to 48 hours or 10 delivery attempts, whichever comes first. Time away from the phone costs no attempts, so a watch that simply cannot reach anything keeps its events for the full two days.
How deep that queue goes depends on the watch. Garmin gives a background process 64 KB on newer devices and 32 KB on older ones; Backhaul measures the room it has before each write, and drops the oldest event to make room for the newest when it runs out.
Install the app from the
Connect IQ Store and open it once, then set the webhook URL in Garmin
Connect Mobile under your device → Connect IQ Apps → Backhaul
→ Settings. It must be https://. Optionally set a bearer
token or a custom header so your endpoint can tell your watch apart from
the rest of the internet. Back in the app, Send test event
confirms the round trip.
Backhaul is MIT-licensed. The source, the payload documentation and a dependency-free example receiver are at github.com/tallekene/backhaul.