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!"
}
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>
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}` } }];
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!")
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)
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)
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
Top comments (1)
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.