Firstline SMS — every inbound lead answered in seconds.
An SMS lead receiver and qualifier on n8n: inbound texts verified, deduplicated, qualified against a deterministic rule table, and answered automatically. Built and hardened into a reusable base package.
Leads arrive by text. Replies arrived hours later.
A human phone as the single point of failure.
- After-hours texts sat unanswered until morning.
- Duplicate deliveries of the same message were spotted by eye, or not at all.
- STOP requests — a hard compliance requirement for SMS — were honoured ad hoc, by memory.
- History lived in a message thread. Nothing was queryable.
Two workflows — a fast path that answers, a decision child that qualifies.
- HMAC-SHA256 signature verification on every request, with ±5 minutes of timestamp skew tolerance. Unauthenticated traffic exits on a 401 reject branch — fail-closed.
- Message parsing: sender, text, and message ID lifted from the payload.
- Opt-out guard: STOP, STOPALL, UNSUBSCRIBE, CANCEL, END, and QUIT honoured automatically — compliance enforced in the pipe, not by memory.
- Deduplication guard: per-message-ID replay protection, so a re-delivered webhook cannot double-process a lead.
- Session lookup: every conversation is a database row keyed to the phone number — a state machine that survives across messages.
- Dispatch to the decision child, then a signed response back to the caller.
The child qualifies each lead against a deterministic rule table — keyword and intent matching, contact completeness, urgency signals — picks a templated, SMS-appropriate reply, updates the session state and last-message timestamp, and delivers the reply to the sender through the SMS provider's API.
HMAC-SHA256 verification on every inbound request, signed responses out. Auth fails closed — unauthenticated traffic gets a 401.
Workflow definitions carry credential references only — nothing to leak in an export.
SMS provider and database are parameters. The system swaps providers without rework.
Measured, not promised.
The numbers land here when the observation window closes: median inbound-to-reply latency, the share of leads answered after hours, opt-outs honoured, and duplicate deliveries suppressed — pulled straight from the session table. Until then this section stays deliberately empty. No invented figures, ever.