Migrate from Better Stack
One-click import of your Better Stack (Uptime) monitors into HowlOps — plus a manual checklist for channels and status pages.
Overview
HowlOps imports your Better Stack Uptime monitors directly over the Better Stack API. Notification channels and status pages are still a short manual step (they don't map one-to-one). Nothing in Better Stack is ever modified — the import only reads.
Time: a few minutes for monitors, plus a little for channels/status pages Prerequisites: a Better Stack Uptime API token; a HowlOps account
One-click monitor import (recommended)
- In HowlOps, go to Settings → Import (or start it from the onboarding wizard).
- Choose Better Stack and paste your API token (Better Stack: Uptime → API tokens). A read-only token is enough — the import only reads, and HowlOps never stores your token.
- Click Load items to see a preview table of every monitor and what it maps to. Rows that can't be imported are shown in yellow with the reason.
- Tick the monitors you want and click Import. A progress bar shows
Importing 34/120…; a problem with one monitor never stops the rest. - You get a summary —
117 imported, 3 skipped— and a Download report CSV.
What gets imported
| Better Stack monitor type | HowlOps equivalent | Notes |
|---|---|---|
| Status / Expected status code | HTTP / HTTPS monitor | Direct equivalent |
| Keyword | HTTP monitor + keyword check | Maps to must contain |
| Keyword absence | HTTP monitor + keyword check | Maps to must not contain |
| Ping | Ping (ICMP) monitor | Host taken from the monitor URL |
| TCP, UDP, SMTP, POP, IMAP, DNS, Playwright | not imported | HowlOps has no equivalent check type for these — see below |
- TCP / UDP / SMTP / POP / IMAP / DNS / Playwright monitors are skipped with a reason in the report. For most "is the service up" cases, recreate them as an HTTP monitor against the service's health endpoint.
- Keyword monitors with no keyword configured are still imported (as a plain HTTP-style check) with a note in the report — set the keyword afterwards in the monitor's settings if you want the check re-enabled.
- Check intervals are clamped up to your plan's minimum and a note is added to the report (Better Stack's check frequency can go as low as 30 s depending on plan; HowlOps Uptime Free = 120 s, and paid plans go faster). Nothing fails just because an interval was too fast for your plan.
Re-running is safe
Every import is idempotent — HowlOps remembers which Better Stack monitor created which HowlOps monitor, so a second run updates or skips rather than duplicating. If an import is interrupted (e.g. a deploy restarts the service mid-run), just run it again.
Manual steps (channels & status pages)
The rest of the migration is a short manual checklist. The concepts map closely between the two platforms.
Concept mapping
| Better Stack | HowlOps equivalent | Notes |
|---|---|---|
| Status / Expected status code monitor | HTTP / HTTPS monitor | Direct equivalent |
| Ping monitor | Ping (ICMP) monitor | Direct equivalent |
| TCP / UDP / SMTP / POP / IMAP / DNS / Playwright monitor | none | HowlOps does not have these monitor types. For most "is the service up" cases, use an HTTP monitor against the service's health endpoint instead. |
| Keyword / Keyword absence monitor | HTTP monitor + keyword check | Keyword check is a setting on the HTTP monitor |
| On-call calendar | On-call schedule | Recreate manually — not covered by this importer |
| Integration | Notification channel | HowlOps calls them "channels" |
| Status page | Status page | More customisation options available |
Step 1: Recreate notification channels
In Integrations → + Add Channel, recreate each Better Stack integration:
| Better Stack integration | HowlOps channel type |
|---|---|
| Slack | Slack (Incoming Webhook) |
| Webhook | Custom Webhook |
| PagerDuty | PagerDuty |
| SMS / Phone call | SMS / Voice |
After adding each channel, click Send Test Alert to verify it works before assigning it to monitors.
Step 2: Assign channels to monitors
For each monitor:
- Open the monitor and click Edit.
- In the Notifications section, add the appropriate channels.
- Click Save.
Step 3: Recreate your status page
- Go to Status Pages → + New Status Page.
- Give it the same name and select the same monitors.
- If you had a custom domain on Better Stack, follow the custom domain setup in Tutorials: Public status page.
Step 4: Validate and cut over
Before disabling Better Stack:
- Let HowlOps run in parallel for at least 24 hours to confirm monitors are checking correctly.
- Trigger a deliberate test failure (take down a test endpoint briefly) to confirm alert delivery.
- Verify the status page looks correct.
Once you are confident everything is working:
- Disable or delete monitors in Better Stack.
- Update your DNS or subscriber links to point to the new HowlOps status page URL.
Differences to be aware of
- Check intervals: HowlOps Uptime Free has a 120-second minimum. Paid Uptime plans get faster intervals: 60 s on S, 30 s on M, down to 15 s on L.
- Probing regions: HowlOps probes from four global regions — Nuremberg (EU), Helsinki (EU), N. California (US), and Singapore (Asia) — so you keep worldwide coverage when cutting over from Better Stack's checkpoints.
- Heartbeats: if you were using Better Stack's heartbeat/cron monitoring, switch to native HowlOps heartbeats — they are not covered by this importer and need to be recreated (Heartbeats → + New Heartbeat).
- On-call and escalation: Better Stack on-call schedules are not imported. Set up schedules and escalation policies in HowlOps to ensure alerts are not missed.
What's next
- Concepts: Monitors: understand all monitor options
- Concepts: Escalation: set up escalation policies
- Tutorials: Public status page: configure your new status page
Was this page helpful?