Skip to content
GitHub
Get started →

Spelo + n8n

n8n is a self-hostable automation platform. Use it when you want full control of where the data lands and how it’s transformed, without paying per-task fees.

Workflow

Webhook node → Function node (HMAC verify) → Switch node → CRM/Slack/etc.

1. Webhook node

  • Method: POST
  • Path: anything you want (e.g. /spelo)
  • Response: “Immediately” with a 200 — Spelo retries on non-2xx, so don’t hold the connection.

n8n shows you a Test URL — paste that into Spelo’s webhook config. After it fires once, switch to the Production URL.

2. HMAC verify (Function node)

const crypto = require('crypto');
const SECRET = 'env-spelo-webhook-secret';
const sig = $input.headers['x-spelo-signature']?.replace(/^sha256=/, '');
const expected = crypto
.createHmac('sha256', SECRET)
.update(JSON.stringify($input.body))
.digest('hex');
if (sig !== expected) {
throw new Error('invalid signature');
}
return $input;

(In n8n, store SECRET in the workflow’s environment variables, not inline.)

3. Switch node — by event type

Branch on {{ $json.event }}:

  • lead.captured → create CRM contact
  • conversation.recording_ready → kick off a transcription archive job
  • lead.updated → update CRM status

4. Destinations

n8n has 400+ integration nodes. The common ones:

  • HubSpot, Salesforce, Pipedrive, Zoho — direct CRM nodes
  • Google Calendar — book a follow-up if data.preferred_date is set
  • Slack — alert your sales channel
  • Postgres / MySQL — also store the lead in your own DB

Self-hosting tip

Run n8n behind nginx/Traefik with HTTPS. Spelo will refuse to deliver to plain http:// URLs in production.