Set up Getwello with n8n
Self-hosted workflows. Branch on mood, fan out to multiple destinations, verify HMAC. About 15 minutes.
This guide wires Getwello into a self-hosted (or cloud) n8n instance so check-ins, missed-day alerts and visits trigger your own workflows. Branch on event type, verify signatures, fan out to anywhere.
What you need
- An n8n instance running (self-hosted, cloud or local). v1.x or newer.
- A Getwello Coordinator account with active subscription.
- About 15 minutes.
Step 1: Add a webhook trigger node
- In your n8n editor, click + and search for “Webhook”.
- Drop the Webhook node onto the canvas.
- HTTP Method: POST. Path: /getwello (or whatever you like).
- Activate the workflow once so n8n issues the public URL. Copy it.
Step 2: Mint a Getwello API key
Open Settings → Developer API as a Coordinator. Name the key “n8n”. Copy the gw_live_ token.
Step 3: Create the Getwello webhook subscription
Settings → Developer API → Webhooks → Create. URL is the n8n webhook from Step 1. Pick the events you want. Copy the signing secret for Step 4.
Step 4: Verify the HMAC signature
After the Webhook node, add a Function node with this code:
const ts = $input.first().headers['x-getwello-timestamp'];
const provided = $input.first().headers['x-getwello-signature']
.replace(/^.*v1=/, '');
const body = JSON.stringify($input.first().body);
const expected = require('crypto')
.createHmac('sha256', $env.GETWELLO_SECRET)
.update(`${ts}.${body}`)
.digest('hex');
if (expected !== provided) throw new Error('bad signature');
return $input.all();
Set GETWELLO_SECRET in n8n environment variables. Now any unsigned or tampered request fails the workflow.
Step 5: Branch and act
Add IF or Switch nodes to branch on {{$json.event}} (check_in.created, check_in.missed, etc.). After the branch, drop in destination nodes: HTTP Request, Telegram, Discord, Google Sheets, anything n8n supports.
Test
- Click the Webhook node, click “Listen for test event”.
- On Getwello, click Test next to the webhook. The synthetic event arrives in n8n.
- Step through the nodes. Confirm the signature verifies and the right branch fires.
- Save the workflow and switch the trigger to Production mode.
Troubleshooting
Signature fails: the body must be the exact bytes received. Make sure you are JSON-stringifying the parsed object the same way the original arrived. Some n8n setups need $input.first().bodyRaw instead.
Workflow never fires: the trigger node has a Test URL and a Production URL. Make sure you wired Getwello to the Production URL once you saved the workflow.
More on developer api, mcp and webhooks
- What the Developer API is for, in plain English
- Create your first API key
- Set up the Getwello MCP server with Claude Desktop
- What webhooks are, and why you would want one
- Set up your first webhook
- Recipe: Sonos announces "Mum has just checked in" via Home Assistant
- Troubleshooting integrations
- Set up Getwello with Slack, end to end
- Set up Getwello with Amazon Alexa
- Set up Getwello with Apple Shortcuts and Siri
- Set up Getwello with Google Home and Nest
- Set up Getwello with Zapier
- Set up Getwello with Notion
- Set up Getwello with Make.com
- Set up Getwello with Discord
- Set up Getwello with Microsoft Teams
- Set up Getwello with Telegram
- Set up Getwello with IFTTT
- Set up Getwello with Pushover
- Set up Getwello with Cursor
- Set up Getwello with Ollama
- Set up Getwello with Apple HomeKit
- Set up Getwello with SmartThings
- Set up Getwello with Hubitat
- Set up Getwello with Tasker
- Set up Getwello with Sonos
- Set up Getwello with Google Calendar
- Set up Getwello with Apple Calendar
- Set up Getwello with Obsidian
- Set up Getwello with ntfy
Didn't answer your question?
Email hello@getwello.co.uk