Import Monitors
Migrate your existing monitors, notification channels, and check history from other monitoring services.
Supported Services
| Service | Monitors | Channels | History | Auth Method |
|---|---|---|---|---|
| UptimeRobot | ✅ | ✅ Email, Webhook, Slack | ✅ Response times + downtime logs | API key |
| Pingdom | ✅ | — | ✅ Check results | Bearer token |
| StatusCake | ✅ | ✅ Contact groups | ✅ Uptime history | Bearer token |
| Better Stack | ✅ | — | ✅ Response times + incidents | Bearer token |
| Oh Dear | ✅ | — | ✅ Uptime + downtime periods | Bearer token |
| Uptime Kuma | ✅ | — | — | JSON backup file |
How to Import
- Go to your project's Monitors tab
- Click Import
- Select your monitoring service
- Enter your API key (or paste JSON for Uptime Kuma)
- Select which monitors to import
- Review heartbeat URL mappings (if applicable)
- Optionally import notification channels
- Optionally import check history (response times and uptime data)
History Import
When you import history, kamustatus fetches response times and downtime events from your previous service and stores them as hourly rollups. This means:
- Your uptime charts show data from before the migration
- Uptime percentage calculations include historical data
- Response time graphs have historical baselines
You can choose how far back to import: 30, 90, 180, or 365 days.
Import history after importing monitors — the history import matches monitors by name.
UptimeRobot
Getting Your API Key
In UptimeRobot: My Settings → API Settings → Read-Only API Key
A read-only key is sufficient for importing.
Supported Monitor Types
| UptimeRobot Type | kamustatus Type |
|---|---|
| HTTP (type 1) | HTTP |
| Keyword (type 2) | HTTP with body match |
| Ping (type 3) | Ping |
| Port (type 4) | TCP |
| Heartbeat (type 5) | Heartbeat (new URL) |
Notification Channels
Email, webhook, and Slack contacts are imported as notification channels.
Heartbeat Monitors
Heartbeat monitors get a new kamustatus ping URL. After import, you'll see a mapping of old → new URLs. Update your services to ping the new URLs.
Pingdom
Getting Your API Token
In Pingdom: My Pingdom → API Tokens → Add API Token
Supported Monitor Types
| Pingdom Type | kamustatus Type |
|---|---|
| HTTP / HTTPS | HTTP |
| Ping | Ping |
| TCP | TCP |
| DNS | DNS |
| SMTP / POP3 / IMAP | TCP |
History
Pingdom results include response times and up/down status per check. History is imported from the /results API endpoint.
StatusCake
Getting Your API Token
In StatusCake: Account → API Testing → Copy API Key
Supported Monitor Types
| StatusCake Type | kamustatus Type |
|---|---|
| HTTP | HTTP |
| HEAD | HTTP (HEAD) |
| TCP | TCP |
| DNS | DNS |
| PING | Ping |
| SSH / SMTP | TCP |
| PUSH | Heartbeat |
Notification Channels
Contact groups with email addresses are imported.
Better Stack (Better Uptime)
Getting Your API Token
In Better Stack: Settings → API Tokens
You can use either a Global API Token or an Uptime API Token (team-scoped).
History
Response times are imported per monitor. Downtime events are imported from the incidents API.
Oh Dear
Getting Your API Token
In Oh Dear: Dashboard → API Access
Tokens can be scoped to specific monitors.
History
Oh Dear provides hourly uptime and response time data, plus downtime period logs.
Uptime Kuma
Uptime Kuma uses Socket.IO instead of REST, so import works via JSON backup file.
How to Export
In Uptime Kuma: Settings → Backup → Export
This downloads a JSON file with all your monitors.
How to Import
- Select "Uptime Kuma" as the provider
- Paste the contents of the exported JSON file into the text area
- Select which monitors to import
Limitations
- No history import — Uptime Kuma's backup doesn't include check results
- No notification channels — notification settings are not in the backup format
Supported Monitor Types
| Uptime Kuma Type | kamustatus Type |
|---|---|
| HTTP / Keyword / gRPC | HTTP |
| Ping / Tailscale | Ping |
| TCP / Port / MQTT / Redis / Kafka | TCP |
| DNS | DNS |
| Push | Heartbeat |
| Docker / Steam / SQL databases | TCP |
API Import
You can also use the API directly for scripted migrations:
# List available providers
curl -H "Authorization: Bearer km_..." \
https://api.kamustatus.com/api/import/providers
# Preview monitors from a provider
curl -X POST -H "Authorization: Bearer km_..." \
-H "Content-Type: application/json" \
-d '{"apiKey": "ur_...", "provider": "uptimerobot"}' \
https://api.kamustatus.com/api/import/PROJECT_ID/preview
# Import monitors
curl -X POST -H "Authorization: Bearer km_..." \
-H "Content-Type: application/json" \
-d '{"apiKey": "ur_...", "provider": "uptimerobot", "monitorIds": ["123", "456"]}' \
https://api.kamustatus.com/api/import/PROJECT_ID/monitors
# Import history (last 90 days)
curl -X POST -H "Authorization: Bearer km_..." \
-H "Content-Type: application/json" \
-d '{"apiKey": "ur_...", "provider": "uptimerobot", "days": 90}' \
https://api.kamustatus.com/api/import/PROJECT_ID/history