Reference & migration
Migrate from OpsGenie to MonoDuty
Migrate OpsGenie alert payloads to MonoDuty with the compatible Events API, field mappings, endpoint changes, test steps, and examples.
OpsGenie Migration Guide
Atlassian has announced that OpsGenie will be completely shut down on April 5, 2027. New sales have already ended (June 4, 2025) and the product is in maintenance mode. MonoDuty provides a seamless migration path with OpsGenie-compatible Events API support.
- June 4, 2025 β End of sales (no new purchases)
- 2025β2027 β Maintenance mode (no new features)
- April 5, 2027 β Complete shutdown (all data deleted)
Why MonoDuty?
- OpsGenie-Compatible API β Send OpsGenie-formatted payloads directly to MonoDuty
- 2-Minute Setup β No training required, familiar alert format
- 53% Lower Cost β $9/user/mo vs OpsGenie Standard $19/user/mo
- Voice Calls Included β All paid plans include voice call alerts
- No Minimum Seats β Pay only for what you use
- Actively Developed β Not end-of-life software
OpsGenie-Compatible Events API
MonoDuty's Events API natively understands OpsGenie Alert API v2 format. This means you can redirect your existing monitoring tool webhooks to MonoDuty without changing their configuration.
OpsGenie Format β Supported Fields
| OpsGenie Field | MonoDuty Mapping | Description |
|---|---|---|
message | Alert title | Primary alert message (required) |
alias | Dedup key | Unique identifier for deduplication |
description | Alert details | Detailed description of the alert |
priority | Severity (P1βP5) | P1=Critical, P2=High, P3=Moderate, P4=Low, P5=Info |
tags | Tags | Array of string tags |
entity | Entity | Domain/component affected |
source | Source | Source system of the alert |
details | Metadata | Key-value additional data |
actions | Actions | Available alert actions |
OpsGenie Webhook Format
If your tools send OpsGenie webhook format (with action and alert wrapper), MonoDuty automatically parses it:
{
"action": "Create",
"alert": {
"message": "CPU usage above 90%",
"alertId": "abc-123-def-456",
"alias": "cpu-alert-prod-001",
"priority": "P2",
"tags": ["production", "cpu"],
"entity": "prod-server-01"
}
}Step-by-Step Migration
Migrate from OpsGenie to MonoDuty in 4 simple steps:
Create a MonoDuty Account
Sign up at monoduty.com/signup. Free tier available β no credit card required. Takes 30 seconds.
Create a Service & Get Your Integration Key
Go to Dashboard β Services β Create Service. Give it a name matching your OpsGenie service (e.g., "Production API"). Copy the integration key from the service detail page.
Update Your Monitoring Tool Endpoints
Replace OpsGenie webhook URLs in your monitoring tools with your MonoDuty Events API endpoint:
- https://api.opsgenie.com/v2/alerts + https://api.monoduty.com/api/v1/events?integration_key=YOUR_KEY
Test & Go Live
Use the built-in test button in Dashboard β Integrations β OpsGenie to send a test event. Verify it appears in your incidents. OpsGenie alert format is natively supported β no payload changes needed.
OpsGenie Alert Format Reference
Here's a complete example showing all supported OpsGenie-compatible fields:
{
"message": "Database replication lag exceeding threshold",
"alias": "db-replication-lag-prod",
"description": "MySQL replication lag on replica-02 has exceeded 30 seconds for the past 10 minutes. This may affect read consistency for user-facing queries.",
"priority": "P2",
"tags": ["database", "replication", "production", "mysql"],
"entity": "mysql-replica-02",
"source": "Prometheus/Alertmanager",
"details": {
"current_lag": "45 seconds",
"threshold": "30 seconds",
"cluster": "prod-mysql-01",
"dashboard": "https://grafana.example.com/d/mysql"
},
"actions": ["Restart Replication", "Failover to Replica-03"]
}Common Monitoring Tool Configurations
Grafana β MonoDuty (OpsGenie format)
In Grafana Contact Points, change the OpsGenie URL to your MonoDuty endpoint:
API URL: https://api.monoduty.com/api/v1/events?integration_key=YOUR_KEY API Key: (leave empty β key is in URL)
Prometheus Alertmanager β MonoDuty
receivers:
- name: 'monoduty'
webhook_configs:
- url: 'https://api.monoduty.com/api/v1/events?integration_key=YOUR_KEY'
send_resolved: trueCustom Script Example
import requests
# Same payload format as OpsGenie β just change the URL
MONODUTY_URL = "https://api.monoduty.com/api/v1/events"
INTEGRATION_KEY = "YOUR_INTEGRATION_KEY"
def send_alert(message, priority="P3", alias=None, tags=None):
payload = {
"message": message,
"priority": priority,
"alias": alias,
"tags": tags or [],
"source": "my-monitoring-script"
}
response = requests.post(
f"{MONODUTY_URL}?integration_key={INTEGRATION_KEY}",
json=payload,
timeout=10
)
return response.json()
# Usage
send_alert(
message="Disk usage above 85% on web-01",
priority="P3",
alias="disk-web-01",
tags=["disk", "production"]
)