How to use your Garmin watch to tell your team you’re going for a run

2 minute(s) read

Building an API in NodeJS and R to send message to Slack from your Garmin watch.

Why on earth

ThinkR is a remote company, meaning that we all work from our home. On top of other cool things about remote work, this allows me to skip my lunch break and take a one hour break in the middle of the afternoon for sport. And I usually go for a run around 2 or 3 pm, but that moment in the day is not exactly the same every day. And most of the time, I forget to tell everyone that I’m leaving the office. I recently joked that my 2020 resolution was that I’ll be more strict about telling when I arrive and leave the “office”.

I was sure it can be done straight from my watch. And guess what, it can!

The Slack Part

The slack API is pretty amazing and allows you to use a personal web hook and a curl call to send messages to a selected channel on Slack.

Note: there are several packages in R that can be used to send messages to Slack, for example {slackr}: & {slackteams}: But as I just wanted to make a simple, unique call, it was more straightforward to write it directly.


  • Go to

  • Click on Start Building

  • Add an app name and add it to a workspace

  • Add a new “Incoming Webhooks”, and select the Channel to post in

And Tadaa 🎉 you now have a curl call that looks like this:

curl -X POST -H 'Content-type: application/json' 
  --data '{"text":"Hello, World!"}'

Now time to turn this into an API.

Node API

Here is a very simple API built in NodeJS:

const express = require('express')
const app = express()

app.get('/', function (req, res) {
  const request = require('request');
  const options = {
    url: '',
    json: true,
    body: {
      text: "I'm off for a run!"

app.listen(9999, function () {
  console.log('API listening on port 9999!')


And with R:


#* @get /
function() {
    url = '', 
    body = list(
      text  = "I'm off for a run!"
    encode = "json"

Adding this to the watch

I discovered that Garmin has a widget called “API calls”, that let you enter an API endpoint, and the API call is done from the watch.

So here it is, I’ve got a Widget on my watch that I can use to send message on Slack 🎉



What do you think?