SMS Gateway & Mobile Alerts
Reliable two‑way SMS delivery, escalation alerts and transactional messaging for operational incidents, user verification and mass notifications. Built for high deliverability, compliance and predictable costs.
Core capabilities
Cost & routing policies: dynamic provider selection based on price, latency, and success rate statistics.
Multi‑SMSC architecture: route messages across multiple providers (primary, secondary) with failover and cost‑aware routing.
Delivery guarantees: configurable retry/backoff, DLVR receipts parsing, and per‑country delivery strategy (concatenation, encoding, TLV).
Two‑way messaging & short codes / long numbers: support for inbound webhooks, keyword parsing, automated replies and consent management.
Throughput & throttling: per‑provider and per‑campaign rate controls, burst protection, and compliance with carrier limits.
Integrations: REST API, SMPP, Webhooks, SDKs (Go, Python, Node), and connectors to ticketing (Jira), paging (PagerDuty) and CRM systems.
Quick facts
Modes: transactional, promotional, alerts, two‑way
Provider types: SMPP, HTTP API, Aggregators, Direct Carrier
Docs / Repo:
Recommended architecture
- Edge enqueueing: accept message requests via REST and persist to durable queue (Redis streams / Kafka) for resilient delivery.
- Worker pool per provider: separate worker groups for each SMS provider to observe per‑provider throttles and independent retry logic.
- Delivery state machine: states (queued → sent → delivered/failed → retried → dead_letter) with observability for each transition.
- Feedback loop: ingest delivery receipts and provider error codes to update routing score and for automated retry decisions.
- Consent & opt‑out: maintain per‑msisdn consent state; honour local opt‑out lists and legal requirements per country (TCPA, GDPR consent records).
API examples
# Send SMS (REST) POST /api/v1/sms/send Authorization: Bearer Content-Type: application/json
{
"to": "+XXXXXXXXXXX",
"from": "AbilIT",
"body": "ALERT: Your service has triggered an incident. Check dashboard: ",
"priority": "high",
"callback_url": "https://your.service/webhooks/sms-delivery"
}
Webhook example (delivery receipt)
POST /webhooks/sms-delivery
{
"message_id": "abc-123",
"to": "+XXXXXXXXXXX",
"status": "DELIVERED",
"provider_code": "0",
"timestamp": "2026-02-01T12:34:56Z"
}
Operational practices
- Testing & sandbox: use dedicated test sender IDs and numbers; separate production and staging provider contracts.
- Rate limiting & campaign windows: schedule bulk notifications to avoid carrier throttles and avoid peak hours in target regions.
- Cost controls: set per‑campaign caps, daily spend limits, and automated failover to lower‑cost provider only when appropriate.
- Monitoring & alerts: track send_rate, delivery_rate, failure_reasons (per‑provider), latency_ms and opt_out_rate. Feed to Prometheus/Grafana.
- Security: sign webhooks with HMAC, rotate API keys, store credentials in secrets manager (HashiCorp Vault / AWS Secrets Manager).
Compliance & privacy
- Keep consent records for each recipient (who, when, how). Provide an auditable trail for opt‑ins and opt‑outs.
- Local regulations: follow country‑specific rules (e.g., sender ID rules, times of day for promotional messages, auto‑consent opt‑out handling).
- PII handling: minimise PII in logs; use redaction or pseudonymization for archived logs kept beyond the retention window.
Failure modes & mitigations
- Provider outages: automatic failover to secondary providers and replay from dead‑letter for non‑deliverable but retryable messages.
- Carrier blocks / filtering: monitor success rates per carrier and adapt message templates (avoid spammy keywords, short links). Maintain compliance with A2P registration where needed.
- High latency: detect slow provider responses and reduce worker concurrency or switch routing until provider recovers.
CLI & runbook snippets
# Enqueue a test SMS smsctl send --to +XXXXXXXXXXX --from "AbilIT" --body "Test message" --priority high
Replay failed messages (DLQ)
smsctl dlq replay --provider twilio --limit 500
Show provider health stats
smsctl provider status --provider ""
Abil’I.T. — SMS Gateway
Contact: ops@abilit.eu
