Usage
Setup Overview
- Create a Twilio Notification profile (Services > Alarming > Notification)
- Enter the Account SID, the credential (API Key SID + secret, or the Auth Token), the Region, and the Messaging Service SID
- Add each recipient's phone number as an SMS contact in E.164 format (see Configuration)
- Add a Twilio notification block to an alarm pipeline and set its Message / Throttled Message / Test Mode and roster
Alarm Pipeline
Notification Block Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| Message | Expression | See below | Content of the message to send |
| Throttled Message | Expression | See below | Message when multiple alarm events are batched |
| Test Mode | Boolean | false | Log the message instead of contacting Twilio |
Message Templates
Expression Syntax
The Message and Throttled Message fields support Ignition's expression syntax, allowing dynamic content based on alarm properties.
Default Message:
At {eventTime|hh:mm:ss}, alarm "{name}" at "{displayPath}" transitioned to {eventState}.
Default Throttled Message:
{alarmEvents.Count} alarm events have occurred.
Which template is used
| Situation | Template |
|---|---|
| One alarm event, no custom message | Message |
One alarm event with a CustomTwilioMessage | The per-alarm Custom Message |
| Several alarm events batched together | Throttled Message (a custom message is ignored) |
SMS Notifications
Each notification is sent through the configured Twilio Messaging Service, one request per SMS contact on the notified user.
Characteristics:
- The module POSTs to
https://<region-host>/2010-04-01/Accounts/<AccountSid>/Messages.jsonwithTo,MessagingServiceSidandBodyform parameters - What recipients see as the sender is determined by the Messaging Service's sender pool, not by the module
- A user with no SMS contact is skipped and logged at debug level
- Twilio accepting the message (HTTP 2xx) counts as success; any other status is logged as an error with Twilio's response body
Messages are one-way. Replies to the SMS are not processed, and there is no reply code or keypress acknowledgement — the module registers no inbound endpoint. Acknowledge alarms in Ignition, or see Overview for profiles that do support two-way notification.
Test Mode
Enable Test Mode on the notification block to validate a pipeline without sending anything. The module logs the message it would have sent, at INFO level, including the target number and the Messaging Service SID:
[TEST MODE] Would send SMS via Twilio messaging service 'MG…' to '+33612345678': At 14:03:21, alarm …
Twilio is never contacted, so no message is billed. Auditing still records the notification.
Audit Logging
When an Audit Profile is configured on the profile, one audit record is written per alarm event per notification.
Logged information:
- Action:
Twilio SMS - Actor: the Ignition user receiving the notification
- Actor host: the notification profile name
- Target: the alarm event path (alarm source extended with the event id)
- Value:
SUCCESSorFAILURE - Timestamp and a status code
The record reflects whether Twilio accepted the message, not whether the handset received it. Twilio's own delivery status is not polled back into Ignition — check the Twilio Console for delivery receipts.
Troubleshooting
| Issue | Possible Cause | Solution |
|---|---|---|
| No SMS sent, no error | User has no SMS contact | Add an SMS contact to the user; check the gateway log at debug level |
| Twilio rejects the message (HTTP 4xx) | Number not in E.164 format | Store contacts as +<country code><number> with no separators |
| Twilio rejects the message (HTTP 401) | Credential and region mismatch | The API Key or Auth Token must come from the same region as the Messaging Service |
| Twilio rejects the message (HTTP 404) | Wrong Account SID or Messaging Service SID | Re-check both SIDs in the Twilio Console |
| Messages accepted but never delivered | Messaging Service sender pool or compliance | Check the Messaging Service's senders and delivery logs in the Twilio Console |
| Nothing sent and the log says test mode | Test Mode left enabled | Disable Test Mode on the notification block |
| Notifications stop entirely | Trial expired | Activate a license — see Licensing |
Best Practices
- Use an API Key rather than the account Auth Token, so the credential can be revoked independently
- Store contacts in E.164 — the module does not normalise numbers, and Twilio rejects anything else
- Match the region across the Messaging Service, the credential and the profile's Region field
- Keep messages short — long bodies are split into multiple segments and billed per segment
- Use Test Mode when building a pipeline, so validation runs cost nothing
- Enable an audit profile so every send attempt is recorded alongside the alarm journal
- Keep a license current — an expired trial stops notifications silently