Skip to main content

n8n

Basic plan and above

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

  1. Add a Webhook node to your workflow
  2. Set HTTP Method to POST
  3. Set a path (e.g., telldone)
  4. (Optional) Enable Header Auth: Name = Authorization, Value = your secret token
  5. Copy the Production URL (not the test URL)

In TellDone

  1. Go to Settings > Integrations > Webhook Automations
  2. Tap New Automation and paste the n8n production URL
  3. If you enabled Header Auth in n8n, enter the same token as the auth header in TellDone
  4. Choose which data types to send
  5. 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 event value 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:

ExpressionDescription
{{ $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