Migrate from UptimeRobot
Import UptimeRobot monitors safely, review fidelity, and complete the remaining cutover manually.
Overview
HowlOps reads UptimeRobot v3 (with a monitor-only legacy v2 compatibility path) and can create supported monitors, heartbeats, maintenance windows, and unpublished status pages. It does not modify UptimeRobot and does not store the source API key. Before you select anything, preview classifies each row as Exact, Imports with changes, Needs review, or Unsupported.
Notification contacts, integrations, groups, and tags are fetched as secret-free inventory, not activated as standalone HowlOps resources. Incident and performance history is not migrated. Use the cutover checklist below for everything the provider API cannot transfer safely.
Time: a few minutes for monitors, plus manual validation and cutover
Prerequisites: a UptimeRobot Read-only API key and a HowlOps account
Run the monitor import
- In UptimeRobot, open Integrations & API → API and create a Read-only API key. A write-capable Main API key is not required.
- In HowlOps, go to Settings → Import, choose UptimeRobot, paste that key, and confirm the source account's IANA timezone (for example
Europe/Prague). UptimeRobot does not expose this setting through its API; HowlOps needs it to interpret maintenance-window wall-clock times. - Run the read-only preview. Nothing is created during preview. Review every fidelity badge, warning, and expanded Details section.
- Exact, dependency-complete rows may be selected by default. Lossy rows require an explicit selection. Missing or unknown fidelity is never treated as Exact or preselected. Unsupported rows cannot be imported. Paused monitors and heartbeats remain paused; an otherwise active lossy monitor is also staged paused until you verify its replacement notification channels and changed behavior.
- Confirm the selected rows. One item-level creation error does not stop later items; an authentication, pagination, or malformed provider response fails the read safely.
- Review the summary and download the CSV report. The summary keeps a provider-specific pending cutover inventory for unsupported contacts, integrations, and lossy mappings; a completed job is not shown as a green cutover success while that inventory remains.
You can leave the page after starting. Return to Settings → Import and use Latest migration import to reopen a running job or its final report. Job progress and pending cutover inventory are stored tenant-scoped in HowlOps; the source API key is not stored.
Monitor type matrix
| UptimeRobot v3 type | Classification | HowlOps result | Preserved / action required |
|---|---|---|---|
| HTTP | Exact or lossy | HTTP monitor | URL, interval, timeout, method, redirect setting, accepted status codes, response-time threshold, SSL/domain-expiry enablement, and supported IP preference can be preserved. Any unrepresentable setting makes the row lossy; read its warnings. |
| Keyword | Exact or lossy | Keyword monitor | URL, interval, keyword value, and exists/not-exists behavior are preserved. Case sensitivity and other advanced HTTP behavior require review. A missing keyword is unsupported. |
| Ping | Exact or lossy | Ping (ICMP) monitor | Host and interval are preserved. An interval raised to the HowlOps plan minimum is lossy. |
| Port | Exact or lossy | TCP monitor | Host, TCP port, and interval are preserved. This is a TCP connect only; it does not inspect a protocol payload. |
| Heartbeat | Exact or lossy | Heartbeat | Interval and grace period are preserved. Attached provider-only settings remain manual. |
| DNS | Exact for a single supported expectation | DNS monitor | One A, AAAA, CNAME, MX, TXT, or NS record/value pair and a supported IP preference can be preserved. Multiple expectations and other record types are rejected rather than weakened. |
| API, UDP, Visual Comparison, or an unknown future type | Unsupported | Nothing created | Keep the row as a migration exception and recreate an equivalent HowlOps check manually where one exists. Never substitute a different check silently. |
| Any paused supported monitor or heartbeat | Exact or lossy | Paused resource | The configuration is created but stays paused. HowlOps never reactivates a paused source object implicitly. |
| Any active lossy monitor | Lossy | Paused monitor | HowlOps stages it paused atomically. Recreate and verify replacement notification paths, review every changed setting, send a controlled test, and only then activate it. |
An interval below the workspace's current minimum is raised to that minimum and reported as a lossy change.
Settings and related-resource matrix
| Source data | Classification in this migration | What the importer does | Cutover action |
|---|---|---|---|
| Basic monitor fields listed above | Exact when fully equivalent | Creates the selected monitor or heartbeat | Validate with a test failure before cutover. |
| URL and request secrets | Query parameters in a valid monitor URL are preserved in the created monitor but redacted from preview/report/fingerprint. URL-embedded username/password is rejected. Structured headers, body, and HTTP-auth values are never copied. | Shows only a redacted URL and secret-presence warnings in preview | Review whether query parameters contain credentials; rotate them after migration. Re-enter required headers, body, or destination auth manually, then test. |
| TLS and keyword behavior | Mixed | TLS certificate-error validation (checkSSLErrors) is preserved. SSL-expiration delivery preferences remain manual. Case-insensitive keyword checks are rejected; they are never weakened into case-sensitive checks. | Review delivery preferences and recreate rejected keyword behavior deliberately. |
| Unsupported advanced type configuration, regional data, custom fields | Lossy or unsupported | Preserves only the supported subset and lists the difference | Review and reproduce the intended behavior manually. |
| Monitor groups and tags | Inventory/manual | Fetches standalone inventory and copies referenced tag names onto imported monitors. UptimeRobot groups are organization metadata, not access/ownership teams, so they are not converted into RBAC teams. | Review monitor organization; assign imported monitors to HowlOps teams only where access ownership is intended. Tag colours have no portable equivalent. |
| Alert contacts and monitor contact assignments | Inventory/manual | Fetches personal and organization contact inventory without destination values. Each monitor detail preserves the assigned contact ID plus source threshold and recurrence for exact cutover review; no notification channel or assignment is activated. | Recreate and verify each HowlOps notification channel, then reproduce the reviewed assignments. |
| Active maintenance windows | Exact only for the supported subset | Creates windows with the confirmed timezone, explicit imported-monitor assignments, notifications disabled, and alert suppression enabled | Once, daily, weekly, and one-numbered-day monthly recurrences are supported. Paused, auto-add, missing-assignment, multi-day monthly, and last-day-of-month windows remain manual. |
| Public status pages | Imports with changes for the supported subset | A page with static imported-monitor membership can be created unpublished. Password-protected or tag-driven pages are rejected. | Review and publish manually. Recreate password, custom domain/DNS, subscribers, branding, analytics, display options, and announcements. |
| Integrations and ChatOps | Inventory/manual | Fetches secret-redacted integration inventory. No OAuth grant, webhook URL/header, bot identity, routing key, or channel binding is copied or activated. | Re-authorize Slack, Teams, Google Chat, Discord, webhooks, PagerDuty, and other integrations in HowlOps, then send a test notification. |
| Monitor history, incidents, response-time samples, uptime statistics | Unsupported | No historical data is fetched or imported | Export separately if you need an archive; history must never trigger HowlOps alerts. |
“Inventory/manual” means the preview provides a standalone, secret-free cutover row; it does not create or activate the corresponding destination resource.
Re-running is safe
HowlOps remembers the source identity for each created resource. A later run skips an already linked item instead of duplicating it or overwriting subsequent HowlOps edits. If a run is interrupted, you can safely run it again.
Cutover checklist
- Recreate notification channels and provider integrations. Credentials, OAuth grants, phone ownership, bot tokens, webhook secrets, and routing keys must be re-authorized rather than copied.
- Review imported tag labels and maintenance-window timezone, recurrence, suppression, and monitor assignments. Recreate rejected windows manually.
- Review imported status pages before publishing. Recreate branding, subscribers, announcements, password protection, analytics/display settings, and custom-domain DNS as needed.
- Review every lossy or unsupported row. Re-enter request secrets and advanced behavior, and replace unsupported check types deliberately.
- Run HowlOps and UptimeRobot in parallel for at least 24 hours. Trigger controlled failures for HTTP/keyword, ping, TCP, DNS, and heartbeat coverage and verify recovery notifications.
- Confirm that paused source objects stayed inactive and that no old UptimeRobot history was replayed.
- Only after validation, disable the corresponding UptimeRobot monitors and update status-page DNS and subscriber links.
What's next
Was this page helpful?