My default · Twilio · Phone calls and SMS

Twilio

Calls and SMS from code, including the call that has to wake someone up. Not amazing, but it works, and approval is quick.

Twilio is the one I know, and it's the one I'd use. It isn't amazing, but it works: the console is better than AWS's, and getting a number approved is quicker.

For alerting it has the one feature that matters. A call can say "smoke detected at the north warehouse, press 1 to acknowledge", and Twilio posts the keypress back to your code. Nothing else counts as "someone knows". AWS's own voice service can't do that without adding Amazon Connect, a call-centre product.

Twilio gives you the channels, not the process. Who to call first, how long to wait, who's next, and how fifty events from one fire become one incident: that's your code (a queue, a function and an EventBridge Scheduler timer per step), or PagerDuty's job if the people being called are the client's own on-call team.

Use it when

  • Alert calls that must be acknowledged: the call says what happened, asks to press 1 (), and posts the keypress back to your code.
  • Calling or texting people who aren't seats on a paging service: site managers, residents' families, the client's customers.
  • Two-way SMS: a reply such as ACK reaches your code on the same number.

Don't use it when

  • The client's own on-call team, with rotas: escalation, schedules and duplicate merging come ready-made in PagerDuty. With Twilio you write them.

Pricing

Australia (USD): SMS $0.0515 per segment, calls to mobiles $0.075 a minute, answering-machine detection $0.0075 a call. An Australian mobile number costs about $8.25 a month (one of Twilio's pricing pages says $20: check the console). Pay as you go. An alerting month of 20 alarms and 4 drills (72 one-minute calls, 120 SMS) is about $20.

In my words: what hurts

  • Not a delightful product, just a dependable one.

Gotchas, with fixes

Gotcha: Since 1 July 2026, a branded sender name (an alphanumeric sender ID) to Australian phones must be on the ACMA register, or the message shows as "Unverified" next to possible scams.

Fix: Send alerts from an Australian mobile number: numeric senders aren't affected, and recipients can reply. Register a name only if the client wants one.

Gotcha: An Australian number needs a regulatory bundle (business and address details), reviewed in up to three business days, sometimes longer.

Fix: Buy the numbers in the first week of the project, not the week before go-live.

Gotcha: A trial account only calls and texts verified numbers, and expires after 30 days.

Fix: Upgrade before testing real escalation chains.

Gotcha: A call that reaches voicemail reports as answered.

Fix: Count only a keypress as an acknowledgement, and turn on answering-machine detection to move on to the next person sooner.

Gotcha: Anyone who finds your webhook URL can post fake call results to it.

Fix: Validate the X-Twilio-Signature header on every webhook.

Provisioning

Pulumi via a Terraform provider · Official Terraform provider

The twilio/twilio Terraform provider, still 0.x. Buying numbers and the regulatory bundle are console steps; keep call logic (TwiML) in code.

Instead, consider

  • PagerDuty The people called are the client's own team, with rotas and escalation.
  • AWS End User Messaging SMS only, and everything must stay on the AWS bill.

Worked examples

Where it fits

  • Alerts that must wake someone up: Pick 05.

    When the people called aren't paging seats: a call that asks to press 1, with escalation in your code (an EventBridge Scheduler timer per step).

Sources

Last reviewed by Nicolas Dao

Want this stack in your AWS account?

Cloudless Labs is a Sydney consultancy. We migrate on-premises systems to AWS, build serverless apps on this stack, and coach teams to ship with Claude Code and Codex.

Contact Us

For general inquiries, please contact us at:

For e-learning capabilities, please contact: