I haven't run PagerDuty in production. This is the pick from comparing six on-call services for alerts that must reach a person within a minute.
The comparison came down to three things: phone calls to Australian numbers with acknowledgement by keypress, an API that merges duplicate events (dedup_key), and a track record long enough to trust at 2 am. PagerDuty has all three, plus official Terraform and Pulumi providers. At about $250 a month for ten people, the price is a rounding error next to a missed alarm.
The alternative is incident.io: Australia fully supported, a published 99.99% on-call commitment, about $200 a month for ten, and the better fit for a team that lives in Slack. The others fell away on one point each: Better Stack's API has no deduplication key, Rootly takes 50 alerts a minute by default, Jira Service Management only calls on its Premium plan, and Opsgenie is shutting down.
Its limit is who it calls: seats, not the public. When the people to wake are site managers or customers, the calls go through Twilio and the escalation lives in your code.
Use it when
- The client's own operations team (a handful to about 15 people) must be phoned at any hour, with rotas and escalation.
- One incident sends many events (a fire trips several detectors): the Events API's dedup_key merges them into one incident.
- Acknowledgement has to be on record: who acknowledged, how, and when.
Don't use it when
- Calling people who aren't seats (site managers, the client's customers): PagerDuty only pages users; stakeholders get status updates, not calls. Use Twilio.
- Data must stay in Australia: PagerDuty runs in the US or the EU only.
Pricing
Professional: $21 per user a month billed annually, $25 monthly, so about $210–250 a month for 10 responders. Calls and SMS to Australia are included on paid plans. The free plan stops at 5 users and 100 calls or texts a month.
Gotchas, with fixes
Gotcha: Without a dedup_key, every event opens its own incident: one fire, fifty calls.
Fix: Set dedup_key to what makes the incident one (the site and the hazard, for example), and resolve with the same key.
Gotcha: Bursts of events can get HTTP 429 from the Events API.
Fix: Send from your own alarm queue, so a throttled event is retried with backoff instead of lost.
Gotcha: SMS replies aren't supported for Australian numbers.
Fix: Acknowledge by pressing a key on the call, or in the app.
Gotcha: Inheriting Opsgenie? Atlassian stopped selling it in June 2025 and shuts it down on 5 April 2027.
Fix: Plan the move now, to PagerDuty or to Atlassian's replacement.
Provisioning
Official Pulumi package · Official Terraform provider
@pulumi/pagerduty: services, escalation policies, schedules and integrations, kept next to the rest of the stack.
Instead, consider
- Twilio The people called aren't seats, or the client wants the escalation logic in its own code.
Worked examples
Where it fits
- Alerts that must wake someone up: Pick 04.
When the client's own on-call team is called: escalation, deduplication and the acknowledgement record built in.
Sources
- PagerDuty: Events API v2 (dedup_key)
- PagerDuty: supported countries for calls and SMS
- PagerDuty: pricing
- PagerDuty: service regions (US, EU)
- incident.io: pricing
- Opsgenie end of sale and shutdown
Last reviewed by Nicolas Dao