Opsgenie cost vs self-hosted GoAlert: where the money actually goes
Opsgenie reaches end of support on April 5, 2027, and Atlassian's stated destination is Jira Service Management. GoAlert has no license fee: it is licensed under Apache 2.0, and v0.35.0 was released on September 21, 2026. That moves the cost question to what you run and pay for directly: PostgreSQL hosting, Twilio usage for SMS and voice, setup effort, and the redundancy a paging system needs. No Opsgenie or Jira price is given here, because the outcome depends on your number of users, on-call schedules and notification volume. Count those three figures first, then compare them with each vendor's written quote.
Most of the recurring cost sits in three places. The first is the PostgreSQL database, which GoAlert's getting started guide describes as its only hard requirement, recommending PostgreSQL 17 or newer and the pgcrypto extension. The second is Twilio, which is currently the only supported provider for GoAlert voice and SMS notifications. Twilio bills you directly for messages, calls and phone numbers, so ask your team to model the pages sent per on-call engineer per month. The third is compute for the GoAlert binary or goalert/goalert container images. One-time costs include setup, rebuilding schedules and escalation policies, re-pointing alert sources and testing notifications before cutover. Ask any implementation partner to price these as separate line items.
The largest hidden cost is keeping paging available. GoAlert's guide suggests running one instance in the default engine mode and the rest with the --api-only flag, and it supports database switchover with minimal disruption. Each instance needs the same data encryption key, which protects sensitive values such as API keys in the database, so key storage and rotation become an ongoing operational task. Budget for failover tests, monitoring of the paging path itself, and staff time for on-call coverage of the platform. A missed page usually costs more than the software, so confirm these practices in a written scope before comparing totals.
Which cost components change when Opsgenie ends
This table compares each cost component of staying on Opsgenie's successor path with running self-hosted GoAlert, and marks whether each cost is one-time or recurring. Read the commercial column against your own Atlassian quote, since no list price is supplied here, and treat the self-hosted column as the work and hosting you will need to fund. The main takeaway is that licensing is only one line of the comparison, and the recurring SMS, voice and database operations lines decide most of the long-term difference.
| Cost component | Commercial path (Jira Service Management or Opsgenie renewal) | Self-hosted GoAlert |
|---|---|---|
| Subscription or license | Recurring Atlassian subscription for Jira Service Management, priced by your quote and agent or user count | No license fee: GoAlert is Apache 2.0 licensed, so the recurring cost is the infrastructure and staff time that run it |
| PostgreSQL | Not billed separately by Atlassian | Required hard dependency; you already pay for it if you run PostgreSQL, or must add a managed or self-run instance, with pgcrypto enabled and PostgreSQL 17 or newer for new installs |
| Twilio SMS and voice | Included in the Atlassian offering as your quote defines it; confirm what notification volume is covered | Usage-based and recurring: you pay Twilio per SMS and voice call, so volume of alerts and on-call responders drives the bill |
| Infrastructure for app instances | Not applicable: Atlassian hosts the service | Recurring: compute for one or more GoAlert instances, load balancing and monitoring, sized for your alert volume and redundancy target |
| Implementation | One-time: onboarding and configuring Jira Service Management or Opsgenie integrations | One-time: installing GoAlert, setting the encryption key, configuring login, rebuilding schedules and escalation policies |
| Data migration | One-time: exporting and re-mapping Opsgenie data to the Atlassian destination | One-time: exporting schedules and escalation data before the April 5, 2027 shutdown and re-creating them in GoAlert |
| Support and high availability | Recurring vendor support as covered by your Atlassian agreement | Recurring internal or retainer effort for failover, database switchover, backups and on-call for the paging system itself |
| Upgrades and internal skills | Vendor-managed upgrades; limited internal skills needed | Recurring: staff time to track releases such as v0.35.0 and to keep skills in-house, or a paid retainer to cover them |
What moves the GoAlert cost up or down
The GoAlert side of the comparison is mostly infrastructure and people, so the cost moves with how many people are on call, how many notifications they receive, and how much availability the paging path must keep. Each card below maps to a line in the cost table and names what to check before you request a quote.
Responders and schedule complexity
Responder count and the number of schedules, rotations and escalation policies drive database size and the configuration work during setup. Teams with many overlapping rotations spend more time on migration and testing than teams with a few flat schedules. Count your services, escalation policies and calendar subscriptions before asking for a quote, and ask whether the fixed scope covers rebuilding each one from exported Opsgenie data.
SMS and voice notification volume
Twilio bills SMS and voice notifications separately from GoAlert, so this line of the cost table rises with alert volume, retries and the number of escalation steps that reach phones. Your Twilio account pays for usage, not DeployOpen or GoAlert. Pull a 90-day sample of notifications by channel from Opsgenie and confirm the Twilio rates for your countries and voice routes before budgeting.
Multiple instances for availability
A single GoAlert instance is the cheapest option, but a paging system that depends on one process has a single point of failure. The getting started guide recommends one instance in the default engine mode and the rest with the --api-only flag in a cluster, and it supports database switchover with minimal disruption. Extra instances add compute and load balancer cost, plus testing of failover. Ask for the availability target in writing before choosing the instance count.
PostgreSQL operating model
GoAlert's only hard requirement is PostgreSQL, and its getting started guide recommends PostgreSQL 17 or newer with the pgcrypto extension. The cost depends on whether you run a managed PostgreSQL service in your cloud account, an in-house cluster, or a shared database. Backups, point-in-time recovery, patching and high availability for the database usually cost more than GoAlert itself. Confirm who owns the database runbook and the recovery target before comparing against a Jira Service Management subscription.
Identity integration and access
Login through GitHub OAuth or any OpenID Connect provider reduces the number of local accounts to manage, but each integration has setup and testing costs. If your identity system is not directly supported, the getting started guide suggests Dex to bridge it, which adds one more service to run and patch. Check whether your identity provider already has an OpenID Connect endpoint, and include the Dex option in the quote if you need it.
Internal skills and on-call ownership
GoAlert is licensed under Apache 2.0, so software cost is zero, but someone must own upgrades, the data encryption key, database changes and alert source configuration. The data encryption key must be the same on every instance, so losing or mismanaging it has direct consequences. Estimate the hours your platform team can spare each month, then compare that with a fixed-scope implementation plus a support retainer, and ask for the handover documentation in the quote.
How to build the comparison with your own numbers
This sequence turns the cost question into a like-for-like comparison built from your own Atlassian quote, your notification history and your own labor estimates. The output is a side-by-side view of current and self-hosted costs that your finance and security leads can check line by line.
Request the Atlassian quote for your current scope
Ask your Atlassian account team or reseller for a written quote for Opsgenie or Jira Service Management covering the same number of users, responder roles, teams and integrations you use today. Include the hosting region and any support tier you run now. The step is done when you hold a document that lists every seat type and add-on with its billing period, so the figure can be compared with the other lines below.
Count notifications from your Opsgenie reports
Pull the last several months of notification and alert history from Opsgenie reporting, separating SMS, voice, push and email. Your on-call lead or platform owner should run this, because the counts drive the Twilio line. The step is done when you have a monthly average and a peak month for SMS and voice, plus the number of distinct escalation paths that generated them. Keep the raw export so the figures can be audited later.
Price Twilio from its own rate card
Take the monthly SMS and voice counts from the previous step and multiply them by the per-message and per-minute rates on Twilio's published pricing for your destination countries. Add the phone number rental for each sender number you would need, and confirm any carrier or regulatory fees that apply to your region. Your finance team should record the result as a recurring monthly line. The step is done when the Twilio estimate is traceable to a rate card page you can cite.
Size the PostgreSQL 17 or newer database
Plan a PostgreSQL database running version 17 or newer, with the pgcrypto extension enabled, which GoAlert requires. Ask your database or cloud team to price a managed or self-run instance with backups, point-in-time recovery and the storage you expect from your alert and on-call history volume. Confirm the instance is inside your own cloud account or data center. The step is done when you have a sized configuration and a cost line that covers compute, storage, backup retention and network traffic.
Add the cost of two or more GoAlert instances
Account for at least two GoAlert instances, because the getting started guide recommends one instance in default engine mode and the others with the --api-only flag for high availability. Price the compute, load balancer or ingress, and the secret handling for the data encryption key that must be identical on every instance. Include a switchover plan for the database, since GoAlert supports switchover with minimal disruption. The step is done when you can show what runs where, and the infrastructure line reflects every instance plus the failover path.
Estimate internal and partner hours as ranges
Estimate setup, migration, testing and ongoing operations hours for your own engineers and for any implementation partner, expressed as low and high ranges rather than single values. Cover schedule and escalation rebuild, integration re-pointing, notification testing, patching, and on-call for the paging system itself. Ask any partner for a fixed-scope written quote so that the partner line is backed by a document. The step is done when both ranges are recorded with an owner for each task.
Compare one-time and recurring totals side by side
Build a table with two columns, one for the Atlassian path and one for self-hosted GoAlert, and split each into one-time costs such as migration and setup and recurring costs such as licensing, Twilio, database, compute and labor. Show the low and high ranges for the labor lines and note which inputs drive each total up or down. Review the sheet with your security, finance and operations owners. The step is done when every figure links to a quote, bill, rate card or internal estimate, and the sheet states the assumptions behind any number you could not source.
What a self-hosted GoAlert deployment needs to run
GoAlert is distributed as a single binary, and Docker images are published for each release as goalert/goalert, so the application itself is a small part of the work. The only hard requirement is a PostgreSQL database. The getting started guide recommends PostgreSQL 17 or newer for new installations and requires the pgcrypto extension. For cost planning, the database is the component that needs an owner: someone must provision it, back it up, patch it and decide whether it runs in your existing managed PostgreSQL service or on dedicated virtual machines. Confirm which of these your platform team already supports before you price anything.
GoAlert recommends setting a data encryption key so that sensitive values such as API keys are encrypted before they are written to the database. The key must be identical on every instance. Treat it as a secret with its own storage, rotation procedure and recovery copy, because an instance started with a different key cannot read what the others wrote. Login can use GitHub OAuth or any OpenID Connect provider, with Dex suggested to bridge other identity systems. Decide which identity source your responders will use before go-live, since that choice determines who can reach the paging console during an incident.
For high availability, the getting started guide describes running one instance in the default engine mode and the rest with the --api-only flag, for example across a Kubernetes cluster. The guide also states that database switchover is supported with minimal disruption. Plan and rehearse that failover, and confirm the exact behavior for your PostgreSQL topology with the GoAlert documentation at GoAlert docs. Finally, Twilio is currently the only supported provider for GoAlert voice and SMS notifications. That makes a Twilio account, its phone numbers and its usage charges a recurring line item, and it means an SMS or voice outage at Twilio is a paging outage. Ask your team to test a voice call and an SMS to every responder before cutover.
Questions buyers ask before comparing Opsgenie and GoAlert costs
How much effort does a GoAlert setup take, and what drives it?
The effort depends mostly on how many services, escalation policies, rotations and alert sources you need to recreate, and on how much of your Opsgenie history you carry over. GoAlert itself is distributed as a single binary with Docker images, and its one hard requirement is a PostgreSQL database with the pgcrypto extension. The larger share of work is usually configuration and testing: rebuilding schedules, mapping who is paged at each step, wiring alert sources such as Prometheus or Grafana, and confirming SMS and voice delivery. Multiple instances for high availability add a second layer of work, including a shared data encryption key on every instance and a database switchover procedure you have rehearsed. Ask any implementation partner to break its quote into these components.
Can our own team set up GoAlert without outside help?
Many teams can, provided they have engineers comfortable with Linux, containers, PostgreSQL and their identity provider. The GoAlert getting started guide is short on hard requirements, but a paging system is operationally sensitive, so the question is less whether the install works and more whether someone owns it after cutover. Check four things honestly: whether you have on-call capacity to build and test the system in parallel with Opsgenie, whether someone can perform database backups and restores, whether the team can test SMS and voice notifications end to end, and who patches the system on a regular schedule. If any answer is unclear, an external partner can cover part of the work under a fixed-scope agreement, with the rest kept in-house.
How long does the migration take, and what sets the timeline?
The timeline is set by your Opsgenie deadline, the number of teams and schedules to move, and how much parallel running you want before cutover. Opsgenie reaches end of support on April 5, 2027, and unmigrated data is deleted after that, so the export and rebuild work has a fixed endpoint. Other timeline drivers include the complexity of escalation chains, the number of integrations that send alerts, the time needed for change approval in regulated environments, and how many test rounds your on-call staff can absorb. Ask for a written schedule with milestones for export, build, notification testing, parallel run and cutover, and check that each milestone has a named owner.
What does GoAlert need from our staff for PostgreSQL, identity and telephony?
Three areas need staff time from the start. For PostgreSQL, you need someone who can run a supported version, configure backups and restore tests, and handle the switchover procedure; GoAlert recommends PostgreSQL 17 or newer for new installations. For identity, GoAlert supports GitHub OAuth and any OpenID Connect provider, with Dex suggested to bridge other systems, so your identity team must register the application and manage its secrets. For telephony, Twilio is the only supported provider for voice and SMS, so someone must hold the Twilio account, sender registrations and number provisioning. Each of these areas adds recurring responsibility, not only one-time setup.
Is Twilio required for SMS and voice notifications in GoAlert?
Yes, if you want SMS and voice paging through GoAlert, Twilio is the provider it currently supports, according to the GoAlert getting started guide. That means a Twilio account, purchased phone numbers and per-message or per-minute usage charges billed by Twilio, separate from any GoAlert licence cost. GoAlert is licensed under Apache 2.0, so the software itself carries no licence fee, but the notification path does. Slack notifications and email-based alert creation through Mailgun or built-in SMTP ingress are also available as escalation steps, though they do not replace phone paging for on-call engineers. Ask your telephony team to model message and call volume from your current Opsgenie history before comparing totals.
How should we compare a fixed-scope implementation quote with internal effort?
Put both options on the same basis: the same list of deliverables, the same environments and the same test coverage. A fixed-scope quote is agreed in writing before work starts, so its cost is known up front, but it covers only what the scope names. Internal effort is harder to see because it is paid through salaries and displaced project work, so calculate it in hours per role, including PostgreSQL administration, identity configuration, Twilio setup, testing and ongoing patching. Add recurring costs to both sides: Twilio usage, hosting, backups, upgrades and on-call support. DeployOpen does not publish a price list, so request a quote from a written scope and compare it line by line with your internal estimate.
What is one-time work and what recurs after GoAlert goes live?
One-time work includes the export from Opsgenie, the rebuild of schedules and escalation policies, alert source configuration, identity integration, and notification testing before cutover. Recurring work includes database backups and restore tests, applying GoAlert upgrades as new releases are published (v0.35.0 was released on September 21, 2026, according to the GoAlert releases page), rotating the encryption key handling, maintaining Twilio numbers and registrations, and keeping at least one tested path for paging when the primary instance is unavailable. Recurring cost is the one most often underestimated, so ask any quote to show it separately from setup.
Keeping a paging system highly available costs more than the software
A paging system needs more redundancy than most internal tools because a missed page is a failed escalation. If the GoAlert instance that receives an alert is down, or its database is unreachable, nobody is woken up and the incident sits unacknowledged. The license cost of GoAlert is zero, but the work to make the service survive a node failure, a database failover and a notification provider outage is the part a team has to budget for. Plan for at least two GoAlert instances behind a load balancer. The getting started guide recommends running one instance in the default engine mode and the rest with the --api-only flag, so only one instance drives the engine at a time. Test that a failed node does not stop escalations, and record how the team confirmed it.
The database is the other single point of failure. GoAlert requires PostgreSQL, and the guide recommends PostgreSQL 17 or newer for new installations and the pgcrypto extension. Someone on the team must own PostgreSQL high availability: replication, automated or runbook-driven failover, backups and restore tests. The guide states that GoAlert supports database switchover with minimal disruption, but a switchover has to be rehearsed against your own topology. Use the same data encryption key on every instance, and store it in a secrets manager so a rebuilt node can still read encrypted API keys. Each of these items recurs as engineering time, and it is usually larger than the database hosting bill.
Monitor the notification path itself, not only the GoAlert process. Twilio is currently the only supported provider for voice and SMS, so a Twilio account, numbers, and billing status are dependencies that can fail quietly. Run a scheduled test page to each on-call responder, alert when delivery fails, and keep a secondary contact path such as Slack or email for escalation steps. Support is the final cost to confirm. GoAlert is Apache 2.0 open source, so you rely on the community, your own engineers, or a third-party firm for fixes at 3 a.m. A vendor contract gives you a response commitment that community projects do not. Ask which support options exist for GoAlert in your region, and price them against a paging outage.
How DeployOpen scopes a fixed-price GoAlert implementation
DeployOpen plans, implements, hardens, documents and supports self-hosted open-source platforms inside your own cloud accounts, data centers or air-gapped networks. For an Opsgenie exit, we start with a written scope that sets out the GoAlert, PostgreSQL, Twilio and identity pieces your paging system needs, so cost and effort are visible before work begins.
How we scope
- Inventory current Opsgenie services, schedules, escalation policies, integrations and notification volumes before quoting.
- Confirm where GoAlert will run, which PostgreSQL service and high availability design fit your environment.
- Agree Twilio account ownership, SMS and voice needs, and which alert sources must be re-pointed in writing.
- Most engagements are fixed-scope, with deliverables and timelines agreed in writing before work starts.
How we build
- Deploy GoAlert as a single binary or Docker image with PostgreSQL 17 or newer and the pgcrypto extension enabled.
- Set the data encryption key, identity provider login and multi-instance layout, with one default engine and API-only instances.
- Re-create rotations, escalation policies and integrations in GoAlert, then test notifications end to end before cutover.
- Document configuration, runbooks and the failover approach so your team can judge the cost of keeping paging available.
How we hand over
- Deliver the written configuration, architecture notes and test records covering each agreed deliverable.
- Walk your on-call, platform and security teams through schedules, escalations, key handling and backup procedures.
- Provide evidence for your own compliance assessments, while independent auditors remain responsible for any audit opinion.
- Confirm the handover checklist with you in writing before the engagement closes.
How we support
- Ongoing support, upgrades and continuous testing are available as retainers after handover.
- Retainers can cover GoAlert version upgrades, database maintenance, backup checks and notification tests.
- Ask for the retainer scope, response expectations and exit terms in the same written quote as the implementation.

