npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

n8n-nodes-fast2sms

v0.1.1

Published

n8n community node for the Fast2SMS SMS platform: DLT, DLT Manual and Quick routes, OTP, DLT Manager, delivery reports, logs, wallet and webhooks.

Readme

n8n-nodes-fast2sms

npm version npm downloads license n8n community node

A feature-rich n8n community node for the Fast2SMS platform — India's popular bulk SMS, OTP and DLT messaging API.

Send SMS, verify OTPs, manage DLT templates, track deliveries, and automate webhook-driven workflows — all from within n8n.


✨ Features at a Glance

| Category | Operations | Highlights | |----------|-----------|------------| | 📱 SMS | Send, Send Bulk, Send & Wait for Delivery | DLT, DLT Manual & Quick routes | | 🔐 OTP | Send, Verify, Resend | Configurable expiry & length | | 📋 DLT Manager | Get Templates, Get Senders, Get Entities | Cached lookups, guided variable UI | | 📝 DLT Registry | Add Entity, Add Sender, Add Template | Bulk upload via Excel URLs | | 📊 Reports | Delivery Report, SMS Logs, Summary | Paginated, date-filtered | | 💰 Account | Get Wallet Balance | Real-time balance & SMS count | | 🔔 Webhooks | Create, Update, Delete, Get, Set Status | SMS & OTP services | | ⚡ Trigger | Delivery Webhook Trigger | Real-time delivery callbacks |


🚀 Installation

Via n8n Community Nodes UI (Recommended)

  1. Go to Settings → Community Nodes
  2. Click Install a community node
  3. Enter: n8n-nodes-fast2sms
  4. Click Install

Via npm

cd ~/.n8n
npm install n8n-nodes-fast2sms

Via Docker

Add to your Dockerfile:

RUN cd /home/node/.n8n && npm install n8n-nodes-fast2sms

⚙️ Setup

  1. Get your API Key from Fast2SMS Dashboard → Dev API
  2. In n8n, go to Credentials → New Credential → Fast2SMS API
  3. Paste your API key — that's it!

The credential test automatically verifies your key against the /dev/wallet endpoint.


📱 SMS Operations

Three Routes Supported

| Route | Best For | Sender ID | DLT Template | Price | |-------|---------|-----------|--------------|-------| | DLT | Production bulk SMS | Required | From DLT Manager | Account-specific | | DLT Manual | Custom template text | Required | User-provided | Account-specific | | Quick | Testing & dev | Auto (FSTSMS) | Not needed | ₹5.00/SMS |

Send SMS

Send to one or multiple recipients with automatic number validation, batching, and cost estimation.

  • Smart batching — automatically splits large recipient lists into API-sized batches (100/batch)
  • Number normalization — accepts +91, 0, or raw 10-digit formats
  • Duplicate detection — removes duplicate numbers before sending
  • Segment estimation — calculates SMS segments and estimated cost before sending
  • GSM-7 / UCS-2 detection — correctly counts extension characters (€, [, ], etc.) that cost 2 septets

Send & Wait for Delivery

Sends the SMS and holds the workflow until the delivery report resolves — no polling node needed.

  • Two-stage architecture: inline polling (≤60s) and putExecutionToWait (up to 1 hour)
  • Configurable resolve conditions: all delivered, any terminal, or any failure
  • Graceful timeout handling with partial results

Personalised / Per-Recipient Messages

Turn on "Personalise per Recipient" to send a unique message to each input item via the /dev/custom endpoint. Each row gets its own text, variables, and recipient — validated up-front before anything is sent.


🔐 OTP Operations

| Operation | Description | |-----------|-------------| | Send | Dispatch an OTP via a pre-configured OTP template | | Verify | Check if the user-submitted OTP is correct | | Resend | Re-send the last OTP to the same number |

  • Configurable OTP length (4–10 digits) and expiry (1–10,080 minutes)
  • Numeric-only variable validation enforced locally before the API call

📋 DLT Manager (Read Operations)

Browse your approved DLT assets without leaving n8n:

  • Get Templates — list all templates, optionally filtered by Sender ID
  • Get Sender IDs — list approved sender IDs with entity names
  • Get Entities — de-duplicated entity list derived from senders
  • Get Template by ID — look up a single template with its variable slots

All lookups are cached (5-minute TTL) so opening dropdowns doesn't burn API calls.


📝 DLT Registry (Write Operations)

Register new DLT assets programmatically:

| Operation | What It Does | |-----------|-------------| | Add Entity | Register a new entity with screenshot proof | | Add Sender | Register a sender ID under an entity | | Add Sender (Excel) | Bulk-register senders via an Excel URL | | Add Template | Register a message template with screenshots | | Add Template (Excel) | Bulk-register templates via an Excel URL |

All URLs are validated to be publicly reachable http(s):// links.


📊 Reports & Logs

| Operation | Description | |-----------|-------------| | Get Delivery Report | Per-recipient delivery status for a request ID | | Get SMS Logs | Paginated logs with date range filtering | | Get Summary | Aggregate delivery stats for a date range |

Delivery reports can be returned as one item per recipient (split mode) or as a single summary object.


🔔 Webhook Management

Full CRUD for Fast2SMS delivery webhooks:

  • Create — register a callback URL with event filters
  • Get / Get Many — list registered webhooks
  • Update — modify URL, events, headers, or payload format
  • Delete — remove a webhook
  • Set Status — activate / deactivate without deleting

Supports both SMS and OTP webhook services.


⚡ Trigger Node

The Fast2SMS Trigger node receives real-time delivery callbacks:

  • Automatic mode — creates/deletes the webhook for you when the workflow activates
  • Manual mode — bring your own webhook ID
  • HMAC verification — optional shared-secret authentication with timing-safe comparison
  • Payload normalization — snake_case API fields mapped to camelCase with ISO timestamps

🎯 Variable System

The DLT route uses positional {#var#} template variables. This node makes them safe and easy:

| Mode | Description | |------|-------------| | Guided | One labeled input box per variable, auto-named from template context | | Pipe-delimited | Classic value1|value2|value3 format | | List | JSON array of values |

Built-in validation catches:

  • Wrong variable count
  • Pipe characters inside values (escaping or stripping)
  • Control characters that break SMS encoding
  • Empty variables
  • Template rendering verification (round-trip check)

🔒 Security

This package follows security best practices:

  • 🔐 API keys — never logged, never in URLs; header-only authentication
  • 🛡️ Timing-safe comparison — webhook HMAC verification uses SHA-256 + timingSafeEqual
  • 🚫 Path traversal prevention — webhook IDs validated against strict [A-Za-z0-9_-]+ pattern
  • 🔑 Cache isolation — template cache keyed by SHA-256 hash of API key (cross-tenant safe)
  • 📝 Header redaction — sensitive headers stripped from webhook payloads
  • ⚠️ GET method warning — opt-in only, with clear data exposure warnings

📋 Compatibility

| Requirement | Version | |-------------|---------| | n8n | ≥ 1.69.0 | | Node.js | ≥ 20.15 | | Runtime dependencies | Zero — only n8n-workflow as peer |


🧪 Testing

# Run the full test suite
npm test

# Watch mode
npm run test:watch

# Coverage report
npm run test:coverage

154 tests covering phone normalization, variable validation, segment counting, datetime parsing, webhook path security, and more.


📦 Development

# Clone the repo
git clone https://github.com/AakashRawat04/n8n-nodes-fast2sms.git
cd n8n-nodes-fast2sms

# Install dependencies
npm install

# Build
npm run build

# Lint
npm run lint

# Link to your local n8n for testing
npm link
cd ~/.n8n
npm link n8n-nodes-fast2sms

📄 License

MIT — use it however you like.


🤝 Contributing

Contributions are welcome! Please:

  1. Fork the repo
  2. Create a feature branch (git checkout -b feat/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feat/amazing-feature)
  5. Open a Pull Request

📚 Resources