DEV Community

Pirate Prentice
Pirate Prentice

Posted on

n8n Twilio Node: Send SMS, Make Calls, and Build Voice Workflows (Free Workflow JSON)

If you need to send SMS notifications, trigger phone calls, or build voice-based workflows, the n8n Twilio node gives you direct access to Twilio's messaging and voice APIs — no custom HTTP requests required.

This guide covers every operation, the six gotchas that trip up most users, three production-ready workflow patterns, and a free downloadable workflow JSON.


What the Twilio Node Does

The Twilio node in n8n connects to the Twilio REST API and supports two resource types:

Resource Operations
SMS Send a text message
Call Make an outbound phone call (with TwiML)

For inbound SMS or calls (webhooks from Twilio), use the Webhook Trigger node with a Twilio webhook URL.


Credentials Setup

In n8n, create a Twilio API credential:

  • Account SID — from your Twilio Console dashboard
  • Auth Token — from your Twilio Console dashboard

Trial accounts: Twilio trial accounts can only send SMS to verified numbers. Upgrade to a paid account for production use.


Sending an SMS

Resource: SMS

Operation: Send

Field Description
From Your Twilio phone number (E.164 format: +15551234567)
To Recipient phone number (E.164 format)
Message The SMS body (max 1600 chars; long messages split into segments)

Example: Send an SMS

{
  "resource": "sms",
  "operation": "send",
  "from": "+15551234567",
  "to": "={{ $json.phone }}",
  "message": "Hi {{ $json.name }}, your order #{{ $json.order_id }} has shipped!"
}
Enter fullscreen mode Exit fullscreen mode

Making a Voice Call

Resource: Call

Operation: Make

Field Description
From Your Twilio number
To Recipient number
URL A TwiML URL that tells Twilio what to say/do during the call

TwiML for a simple call

You need a publicly accessible URL that returns TwiML. For simple announcements, use Twilio's TwiML Bins (free, hosted in your Twilio Console):

<?xml version="1.0" encoding="UTF-8"?>
<Response>
  <Say voice="alice">Hello, this is an automated reminder from Acme Corp. Your appointment is tomorrow at 2 PM. Goodbye.</Say>
</Response>
Enter fullscreen mode Exit fullscreen mode

In the Twilio node, set URL to your TwiML Bin URL.


The 6 Gotchas

1. E.164 phone number format is mandatory

All numbers must be in E.164 format (+15551234567). Missing the + or country code causes The 'To' number is not a valid phone number errors. Normalize incoming data with a Code node first:

// Normalize to E.164
const raw = $json.phone.replace(/\D/g, '');
return [{ json: { phone_e164: raw.length === 10 ? `+1${raw}` : `+${raw}` } }];
Enter fullscreen mode Exit fullscreen mode

2. SMS segments and cost

SMS messages over 160 characters (GSM-7 encoding) or 70 characters (Unicode/emoji) are split into multiple segments. Each segment is billed separately. Keep notifications short or monitor segment count in Twilio logs.

3. Trial account restrictions

Trial accounts require all recipient numbers to be verified in the Twilio Console. Unverified numbers get a 21608 error. Upgrade to a paid plan for production sends.

4. Twilio rate limits

Twilio enforces per-second rate limits based on your account type. For bulk sends, use a Split In Batches node with a Wait node (1-2 seconds delay) between batches to avoid 429 errors.

5. Inbound SMS requires a Webhook Trigger, not the Twilio node

The Twilio node only handles outbound messages and calls. For inbound SMS, configure a Twilio webhook URL pointing to an n8n Webhook Trigger node. Then reply using the Twilio node in the same workflow.

6. Call URL must be publicly accessible

The TwiML URL you provide for calls must be reachable by Twilio's servers — not localhost. Use a hosted URL (Twilio Bin, AWS Lambda, n8n webhook on a public instance, or ngrok for testing).


3 Production Workflow Patterns

Pattern 1: Stripe Payment → SMS Receipt

Send an instant SMS confirmation when a Stripe payment succeeds.

Webhook Trigger (Stripe payment_intent.succeeded)
  → Code node (extract customer phone from metadata)
  → Twilio node (send SMS: "Payment of $X confirmed. Thanks!")
Enter fullscreen mode Exit fullscreen mode

Use case: E-commerce order confirmations, subscription renewals, DFY service payment alerts.


Pattern 2: Scheduled Appointment Reminder

Send SMS reminders 24 hours before appointments stored in Google Sheets.

Schedule Trigger (runs daily at 9 AM)
  → Google Sheets node (get rows where appointment_date = tomorrow)
  → Split In Batches node (50 per batch)
  → Wait node (1s)
  → Twilio node (send SMS reminder per row)
Enter fullscreen mode Exit fullscreen mode

Use case: Service businesses, healthcare scheduling, coaching practices.


Pattern 3: Critical Alert → Phone Call

When a monitoring webhook fires a high-severity alert, call the on-call engineer.

Webhook Trigger (alert from monitoring tool)
  → IF node (severity == "critical")
    → [Yes] Twilio node (make call with TwiML: "Critical alert: {{ $json.message }}")
    → [No] Slack node (send non-critical alert to channel)
Enter fullscreen mode Exit fullscreen mode

Use case: DevOps on-call escalation, server downtime alerts, payment failure spikes.


Comparison: Twilio Node vs HTTP Request Node

Twilio Node HTTP Request Node
Setup API credential only Manual auth + endpoint construction
Operations Send SMS, Make Call Full Twilio API (lookup, verify, Studio, etc.)
Ease of use Beginner-friendly Flexible but verbose
Advanced use Limited to 2 ops Any Twilio endpoint

For Twilio Lookup (phone validation) or Verify (OTP flows), use the HTTP Request node with your Twilio credentials — the built-in node doesn't cover those resources.


Free Workflow JSON

Download the full workflow JSON including all three patterns above:

👉 n8n Twilio → Slack SMS Alert Workflow JSON — $9, instant download. Includes the 3-node inbound SMS → Slack alert workflow ready to import.

👉 n8n Workflow Starter Pack (includes Twilio patterns) — $29, instant download.


Need This Built For You?

If you'd rather have a production-ready Twilio automation set up in your n8n instance, I offer a Done-For-You n8n Workflow Build service:

👉 $99 — Done-For-You n8n Workflow — specify your Twilio use case at checkout.

👉 $9 — n8n Twilio → Google Sheets Call & SMS Logger (Workflow JSON) — inbound Twilio webhook → parse → Sheets append. Import and run in under 5 minutes.


Summary

The Twilio node covers the two most common automation use cases — SMS and outbound calls — without any custom HTTP configuration. Pair it with a Webhook Trigger for inbound flows, normalize phone numbers to E.164, and keep an eye on SMS segments and rate limits for bulk sends.

Tags: n8n, automation, twilio, webdev

Related Articles

Top comments (1)

Collapse
 
pirateprentice profile image
Pirate Prentice

Are you using the n8n Twilio node to send SMS alerts, trigger phone calls, or route inbound messages? Drop your use case in the comments — curious whether people are using it more for outbound notifications or inbound webhook flows.