Tutorials

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 through the Better Stack API. Notification channels and status pages are still a short manual step because they do not 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


  1. In HowlOps, go to Settings → Import (or start it from the onboarding wizard).
  2. Choose Better Stack and paste your API token (Better Stack: Uptime → API tokens). A read-only token is enough because the import only reads, and HowlOps never stores your token.
  3. 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.
  4. Tick the monitors you want and click Import. A progress bar shows Importing 34/120…; a problem with one monitor never stops the rest.
  5. You get a summary such as 117 imported, 3 skipped and a Download report CSV.

What gets imported

Better Stack monitor typeHowlOps equivalentNotes
Status / Expected status codeHTTP / HTTPS monitorDirect equivalent
KeywordHTTP monitor + keyword checkMaps to must contain
Keyword absenceHTTP monitor + keyword checkMaps to must not contain
PingPing (ICMP) monitorHost taken from the monitor URL
TCPTCP monitorHost and port taken from the monitor's target
UDP, SMTP, POP, IMAP, DNS, Playwrightnot importedHowlOps has no equivalent check type for these; see below
  • 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; a DNS resolution check can be recreated as a HowlOps DNS monitor.
  • 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 the workspace's current minimum and the report records the adjustment. An imported monitor is not rejected only because its source interval is faster than the active HowlOps entitlement.

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 StackHowlOps equivalentNotes
Status / Expected status code monitorHTTP / HTTPS monitorDirect equivalent
Ping monitorPing (ICMP) monitorDirect equivalent
TCP monitorTCP monitorDirect equivalent: a raw TCP connect check, no payload inspection
UDP / SMTP / POP / IMAP / DNS / Playwright monitornoneHowlOps does not have these monitor types (DNS resolution checks can be recreated manually as a HowlOps DNS monitor). For most "is the service up" cases, use an HTTP monitor against the service's health endpoint instead.
Keyword / Keyword absence monitorHTTP monitor + keyword checkKeyword check is a setting on the HTTP monitor
On-call calendarOn-call scheduleRecreate manually: not covered by this importer
IntegrationNotification channelHowlOps calls them "channels"
Status pageStatus pageMore customisation options available

The one-click import above handles the monitors, so you do not need to recreate them by hand. The steps below cover the parts the importer does not touch: notification channels and status pages.

Step 1: Recreate notification channels

In Integrations → + Add Channel, recreate each Better Stack integration:

Better Stack integrationHowlOps channel type
EmailEmail
SlackSlack (Incoming Webhook)
WebhookCustom Webhook
PagerDutyPagerDuty
SMS / Phone callSMS / 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:

  1. Open the monitor and click Edit.
  2. In the Notifications section, add the appropriate channels.
  3. Click Save.

Step 3: Recreate your status page

  1. Go to Status Pages → + New Status Page.
  2. Give it the same name and select the same monitors.
  3. 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:

  1. Let HowlOps run in parallel for at least 24 hours to confirm monitors are checking correctly.
  2. Trigger a deliberate test failure (take down a test endpoint briefly) to confirm alert delivery.
  3. Verify the status page looks correct.

Once you are confident everything is working:

  1. Disable or delete monitors in Better Stack.
  2. Update your DNS or subscriber links to point to the new HowlOps status page URL.

Differences to be aware of

  • Check intervals: the importer applies the minimum returned for your current Uptime plan. Review current intervals on the pricing page.
  • Probing regions: Select from the regions currently available to your workspace. The monitor form always shows the live list; Probing regions explains how regional results are combined.
  • 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

Was this page helpful?