n8n
Webhooks require a paid plan. See Webhook automations for limits and details.
n8n is an automation platform you can self-host or use in the cloud. Connect TellDone to n8n using a Webhook node. Your n8n instance must have an HTTPS URL accessible from the internet.
Setup
In n8n
- Add a Webhook node to your workflow
- Set HTTP Method to POST
- Set a path (e.g.,
telldone) - (Optional) Enable Header Auth: Name =
Authorization, Value = your secret token - Copy the Production URL (not the test URL)
In TellDone
- Go to Settings > Integrations > Webhook Automations
- Tap New Automation and paste the n8n production URL
- If you enabled Header Auth in n8n, enter the same token as the auth header in TellDone
- Choose which data types to send
- Tap Save, then Test send
Check the n8n execution log - you should see a payload with "test": true.
Routing by event type
Add a Switch node after the Webhook node to route data by event type:
- Routing field: the
eventvalue from the incoming data - Rule 1: equals
note.created- route to your notes actions - Rule 2: equals
task.created- route to your tasks actions - Rule 3: equals
calendar_event.created- route to your calendar actions - Rule 4: equals
report.created- route to your reports actions
Connect each Switch output to the appropriate action node (Todoist, Google Calendar, Slack, etc.).
Useful expressions
When configuring action nodes, use these n8n expressions to access TellDone data:
| Expression | Description |
|---|---|
{{ $json.data.title }} | Title of the note, task, or event |
{{ $json.data.tags.join(', ') }} | Tags as a comma-separated string |
{{ $json.data.priority }} | Priority level |
{{ $json.data.due_date }} | Due date (tasks) |
{{ $json.data.summary }} | AI-generated summary (notes) |
{{ $json.event }} | Event type |
For the full list of fields in each data type, see Webhook automations - What gets sent.
Filtering test events
Add an IF node right after the Webhook node:
- Condition:
{{ $json.test }}is not true - True path: rest of your workflow
- False path: No Operation (discard test events)
Example workflows
- Webhook - Switch - Todoist: create tasks with priority and due date
- Webhook - Switch - Google Calendar: create events with time, location, and attendees
- Webhook - Switch - Slack: post daily reports to a channel
- Webhook - Switch - Google Sheets: log all notes as spreadsheet rows
- Webhook - Switch - Notion: save notes with tags and summary
Verifying webhook signatures (optional)
For production use, you can verify that webhook data genuinely came from TellDone by checking the HMAC-SHA256 signature. Add a Code node right after the Webhook node:
const crypto = require('crypto');
const secret = 'whsec_your_signing_secret_here';
const signature = $input.first().headers['x-lp-signature'];
const timestamp = $input.first().headers['x-lp-timestamp'];
const body = JSON.stringify($input.first().json);
const expected = 'sha256=' + crypto
.createHmac('sha256', secret)
.update(timestamp + '.' + body)
.digest('hex');
if (signature !== expected) {
throw new Error('Invalid webhook signature');
}
// Reject timestamps older than 5 minutes
const age = Math.floor(Date.now() / 1000) - parseInt(timestamp);
if (age > 300) {
throw new Error('Webhook timestamp too old');
}
return $input.all();
Replace whsec_your_signing_secret_here with the signing secret you copied when creating the automation in TellDone.
Disconnect
To stop sending data to n8n:
- Deactivate the workflow in n8n, or
- Disable or delete the automation in TellDone Settings > Integrations > Webhook Automations
See also
- Webhook automations - payload format, delivery limits, and security
- Zapier - cloud automation alternative
- Make - cloud automation alternative