@swemmanuelgz/n8n-nodes-telnyx
v0.1.0
Published
n8n community node for Telnyx — WhatsApp (templates + free-form), SMS/MMS, Verify (OTP) and Number Lookup. Includes a dedicated Trigger node for inbound events and delivery status webhooks.
Downloads
64
Maintainers
Readme
@swemmanuelgz/n8n-nodes-telnyx
Community node for n8n that gives you complete coverage of the Telnyx v2 API — with first-class support for WhatsApp Business (templates + free-form messages), SMS/MMS, Verify (OTP) and Number Lookup, plus a dedicated Trigger node for inbound webhooks.
The highlight: when you pick WhatsApp Message → Send Template, the template list is fetched live from your Telnyx account and the parameter fields for the template you select are generated automatically, so you just fill in the blanks.
Table of contents
Features
| Area | What's covered |
| --- | --- |
| WhatsApp Message | Send Template, Send Text, Send Media (image/video/audio/document), Send Interactive (buttons/list), Send Location, Send Contacts, Get, List |
| WhatsApp Template | List, Get, Create, Update, Delete |
| WhatsApp Business Account | List, Get |
| WhatsApp Phone Number | List, Get, Verify (register new number) |
| SMS / MMS Message | Send SMS, Send MMS, Schedule, Cancel, Get, List |
| Messaging Profile | List, Get, Create, Update, Delete, Get Metrics, Regenerate Secret |
| Messaging Phone Number | List, Get, Update (reassign profile) |
| Short Code | List, Get, Update |
| Hosted Number | List, Get, Update |
| Verify (OTP) | Create (SMS / Voice / Flashcall / WhatsApp), Submit Code, Get, List Profiles |
| Number Lookup | Carrier + CNAM lookup |
| Trigger | Filter by event type: message.received, message.sent, message.finalized, message.delivery.updated, verify.verification.verified/expired, whatsapp.message.received, whatsapp.message.updated, or all |
Dynamic WhatsApp templates
- The From number and Template fields are loaded live from your Telnyx account.
- When you select a template, the UI inspects its components (HEADER, BODY, BUTTONS) and renders one input per variable:
{{1}},{{2}}, header media URL, button URL parameter, etc. - At send time the node builds the
template_parameterspayload for you — no JSON hand-crafting.
Installation
From the n8n UI (recommended)
- Open n8n and go to Settings → Community Nodes.
- Click Install.
- Enter
@swemmanuelgz/n8n-nodes-telnyxand confirm.
Via npm (self-hosted)
cd ~/.n8n/custom
npm install @swemmanuelgz/n8n-nodes-telnyx
# then restart n8nDocker
Mount a volume that contains the installed package under /home/node/.n8n/custom/:
volumes:
- ./custom:/home/node/.n8n/custom
environment:
- N8N_CUSTOM_EXTENSIONS=/home/node/.n8n/customCredentials
- Go to Mission Control Portal → API Keys and create a key (or reuse an existing one).
- In n8n, open the Credentials panel and add a new Telnyx API credential.
- Paste the API key into the
API Keyfield. - Click Test — the node sends a lightweight
GET /whatsapp/business_accounts?page[size]=1request to verify authentication.
The same key authenticates every resource (WhatsApp, SMS, Verify, Lookup).
Nodes
Telnyx (action node)
The main node. Pick a Resource (e.g. WhatsApp Message) then an Operation (e.g. Send Template) and fill in the fields. Resource-specific fields appear and disappear via displayOptions, so the form only ever shows what's relevant.
Architecture on disk (contributors' reference):
nodes/Telnyx/
├── Telnyx.node.ts # Dispatcher: routes resource+operation to the right handler
├── GenericFunctions.ts # HTTP helper, pagination, WhatsApp template parser/builder
├── descriptions/ # One *.ts per resource (INodeProperties[])
├── operations/ # One *.ts per resource (execute handlers)
└── methods/ # loadOptions + resourceMapping
├── loadOptions.ts
├── smsLoadOptions.ts
├── verifyLoadOptions.ts
└── resourceMapping.ts # Generates template parameter fields dynamicallyTelnyxTrigger (webhook node)
Add TelnyxTrigger to a workflow and n8n will expose a webhook URL. Paste that URL in your Telnyx Messaging Profile (or WhatsApp configuration) and every event Telnyx sends will start the workflow.
Options:
- Events — multi-select filter. Default is
All Events. If you narrow the list, events that don't match get a 200 acknowledgement but do not trigger the workflow (so Telnyx doesn't retry them). - Response Code — HTTP status returned to Telnyx (default 200).
- Raw Body — when enabled, the first item contains
{ headers, params, query, body }instead of the parsed payload — useful for signature verification or debugging.
Ed25519 signature verification (telnyx-signature-ed25519) is planned — currently the trigger accepts any caller that reaches the webhook URL, so keep the webhook path private and optionally put a reverse-proxy check in front of it.
Examples
Send a WhatsApp template
- Drop a Telnyx node and select
Resource: WhatsApp Message,Operation: Send Template. - From Phone Number — pick a number from your Telnyx account (dropdown is loaded live).
- To — the E.164 number of the recipient (e.g.
+34612345678). - Template — pick an approved template. The name, language and ID are packed into a single value.
- Template Parameters — the fields shown are generated from the template components. Fill them in.
- Execute. The node builds the
template_parameterspayload (body / header / buttons) and POSTs/messages/whatsapp.
Send an SMS
Resource: SMS / MMS Message,Operation: Send SMS.From: any SMS-enabled number on your account.To: E.164 recipient.Text: your SMS copy.- Optional —
Messaging Profile(dropdown),Webhook URLfor per-message DLR,Auto-Detect Encoding.
To send MMS, switch to Send MMS and add one or more Media URLs (HTTPS, public).
Run an OTP verification
Resource: Verify (OTP),Operation: Create SMS Verification.- Pick a
Verify Profile(dropdown). Phone Number: recipient's number.- Optional
Custom Code,Timeout Secs.
Later, when the user submits their code, call Operation: Submit Code with the same Phone Number, the entered code, and the same Verify Profile.
React to an inbound message
- Drop a TelnyxTrigger node — copy the webhook URL shown.
- In Telnyx Mission Control, open the Messaging Profile you want to listen to and paste the URL into Inbound Webhook URL. For WhatsApp, configure the webhook under the Business Account.
- Keep the
Eventsfilter onAll Eventsinitially so you can inspect what Telnyx sends, then narrow it.
Known limitations
- WhatsApp 24-hour window — free-form messages (text, media, interactive…) can only be sent within 24 hours of the user's last inbound message. Outside that window, use a template.
- SMS availability — Spanish numbers cannot send SMS as of 2026 (Telnyx limitation, not ours). Receiving still works. Use a foreign sender number or a messaging profile with Alphanumeric Sender ID.
- Template approval — templates go through Meta review (24-72h). Only
APPROVEDtemplates can be sent; the loadOptions dropdown filters byAPPROVEDby default. - Webhook signature verification is not yet implemented in
TelnyxTrigger— see the TODO inTelnyxTrigger.node.ts.
Roadmap
- Ed25519 webhook signature verification (opt-in via a new credential field).
- Voice / Call Control resources (answer, bridge, speak, gather, etc.).
- Number Management (search & order phone numbers).
- Fax API resource.
- Storage / Object Storage resource.
- Translating Telnyx's paginated responses into native n8n binary
pairedItemdata for better item tracking.
PRs welcome.
Development
git clone https://github.com/swemmanuelgz/n8n-nodes-telnyx.git
cd n8n-nodes-telnyx
npm install
npm run build # compiles TS + copies SVG icons to dist/
npm run lint # eslint-plugin-n8n-nodes-base
npm run dev # tsc --watch
# Link into a local n8n for manual testing
npm link
cd ~/.n8n/custom && npm link @swemmanuelgz/n8n-nodes-telnyx
n8n startContributions and bug reports: https://github.com/swemmanuelgz/n8n-nodes-telnyx/issues.
License
MIT © Emmanuel Obaseki
