N8N Cold SMS Engine Architecture
Overview
Four interconnected N8N workflows that manage cold SMS outreach at scale through Signal House, backed by Supabase.
Flow
- Fires at 9:00 AM — Daily scheduled trigger
- Get leads — Pulls leads that need to be sent messages today
- Determine slot — Checks if proper lead count is available for the sending slot
- Check inventory — Routes leads by slot allocation
- Pick leads — Select specific leads for this batch
- Send message — Execute SMS send via Signal House
- Log it — Record send status, timestamp, message content in Supabase
- CTA failure handling — Handle failed sends with callback logic
- Quota check — If more room in quota AND more leads available → loop back and send more
- Complete — End when quota exhausted or all leads sent
Key Design Points
- All connected to Supabase backend for state management
- Supports pause/resume (can pause SMS sending at will without breaking the system)
- Handles ~1,000 new leads/day
- Uses Signal House for sending (cheaper for high volume outbound: ~7 cents/SMS)
- Reply classification handled by separate N8N workflow that routes to Mattermost (Slack alternative)
Pause Capability
- Need ability to pause SMS sending when sales team is unavailable
- Pausing should not break any workflows or lose leads in queue
- Leads should be held and sent in next available window
Why Not GHL Native for Agency Outbound
- GHL has messaging limits on native numbers
- Limits get hit daily for high-volume cold outreach
- Signal House bypasses these limits
- GHL native is fine for client sub-accounts (local service businesses with lower volume)