How to migrate from Better Uptime to StackEye

Better Uptime (now Better Stack) combines uptime monitoring with on-call management and incident timelines in one platform. If you're primarily using it for HTTP uptime monitoring and status pages — and don't need the on-call rotation or integrated incident feed — StackEye offers a simpler, purpose-built alternative at a lower price point. This guide covers exactly what migrates, what doesn't, and how to get running in an afternoon.

Why teams migrate

  • Simpler pricing — Better Stack bundles monitoring with incident management, making pricing complex if you only need uptime checks. StackEye starts at $0 (10 monitors, 5-minute checks) and $5/mo for the next tier.
  • Multi-region consensus — StackEye probes from 3 regions simultaneously and alerts only when a majority agree — reducing false positives from single-region blips that single-location checks can't distinguish from real outages.
  • Scoped API keys — StackEye API keys carry granular permissions (probes:read, probes:write, probes:delete, etc.), useful for read-only dashboards or restricted CI pipelines.
  • No bundled on-call overhead — If you route alerts to Slack or email and don't need an on-call rotation system, StackEye removes the complexity you don't use.

Feature mapping

Better UptimeStackEye equivalent
Monitor (HTTP/HTTPS)HTTP Probe
Alert PolicyNotification Channel (Email / Slack / Webhook)
Status PageStatus Page
Escalation policyAlert Channel assignment per probe (no escalation tiers in MVP)
On-call scheduleNot available in current release
Heartbeat monitorNot available in current release
Cron job monitorNot available in current release
TCP / Ping monitorTCP Probe / Ping Probe (Phase 2 — not yet released)
Incident timelineAlert history and probe status history in dashboard
Maintenance windowMaintenance Window (silence alerts during scheduled downtime)
Team memberTeam member (Settings → Team)

Edge cases to plan for: If you rely on Better Uptime's heartbeat monitoring (for cron jobs or background workers) or on-call scheduling, these are not available in StackEye's current release. Continue using Better Uptime for those monitors, or route heartbeat pings to a separate tool during the transition. StackEye focuses on external HTTP/HTTPS uptime monitoring in the current release.

Check interval comparison

PlanBetter UptimeStackEye
Free3 min (10 monitors)5 min (10 monitors)
Entry paid30 sec — $24/mo (50 monitors)2 min — $5/mo (25 monitors)
Pro30 sec — $60/mo (unlimited)1 min — $12/mo (100 monitors)
Team30 sec — bundled incident mgmt30 sec — $29/mo (500 monitors)

Better Uptime's lower check intervals come bundled with incident management features. If you don't need those, StackEye is significantly cheaper at equivalent or near-equivalent intervals.

Step 1: Export your monitors from Better Uptime

Log in to Better Stack, navigate to UptimeMonitors, and use the API to export your monitor list. Better Uptime's web UI doesn't provide a one-click CSV export, so use their REST API:

curl -s "https://uptime.betterstack.com/api/v2/monitors" \-H "Authorization: Bearer YOUR_BETTERUPTIME_API_TOKEN" | \jq '[.data[] | {name: .attributes.url, url: .attributes.url, interval: .attributes.check_frequency}]'

This outputs a JSON array of your HTTP monitors. Save it to bu-monitors.json for reference during the next step.

Step 2: Sign up for StackEye

Visit stackeye.io/signup and start your 14-day free trial — all paid features included, no credit card required. Complete the onboarding wizard to create your organization.

Step 3: Set up notification channels

Before importing probes, configure where alerts go. Navigate to Channels in the sidebar and add each alert destination: Email, Slack (OAuth integration), or Webhook. Use the Send Test button to confirm each channel is working before proceeding.

Better Uptime combines alert policies with on-call schedules. In StackEye, notification channels are simpler — each channel is a destination (email address, Slack workspace, or webhook URL), and you attach one or more channels to each probe.

Step 4: Import probes via CLI

The StackEye CLI imports probes from a YAML or JSON file. Convert your Better Uptime monitor list to StackEye YAML format:

# Install CLIbrew install stackeye-io/tap/stackeye  # macOS# or: curl -sSfL https://stackeye.io/install.sh | sh# Authenticatestackeye auth login

Create a YAML file (probes.yaml) with your monitor list:

# probes.yaml — one entry per Better Uptime HTTP monitor- name: "My Website"url: "https://example.com"check_type: "http"method: "GET"interval_seconds: 60regions:- nyc3- sfo3- chi1expected_status_codes: [200]ssl_check_enabled: truefollow_redirects: true

Then preview and import:

# Preview without creatingstackeye probe import --file probes.yaml --dry-run# Import all probesstackeye probe import --file probes.yaml

Step 5: Import via API (programmatic)

For large monitor lists, use the REST API directly:

API_KEY="se_..."curl -X POST https://api.stackeye.io/v1/probes \-H "Authorization: Bearer $API_KEY" \-H "Content-Type: application/json" \-d '{"name": "My Website","url": "https://example.com","interval": 60,"regions": ["nyc3", "sfo3", "chi1"],"channels": ["channel-id-here"]}'

Step 6: Migrate your status page

Better Uptime status pages support custom domains and subscriber notifications. StackEye status pages support the same. Navigate to Status PagesNew Status Page, name it, assign your imported probes, and configure your custom domain (CNAME status.yourdomain.compages.stackeye.io).

Better Uptime allows subscribers to sign up for status page email updates. StackEye status pages are public read-only pages in the current release; subscriber notifications are planned for a future release.

Step 7: Verify configuration

After importing, go to the Dashboard — all probes should show their initial status within 5 minutes. Check the Regions column to confirm each probe shows green for all configured regions. The first check cycle may take up to one full interval.

Step 8: Cutover checklist

Before canceling Better Uptime, verify:

  • All HTTP monitors imported as probes and showing correct status
  • All notification channels tested and confirmed (use Send Test)
  • Team members invited (Settings → Team)
  • Status page live with custom domain verified
  • API integrations updated to use StackEye API key (se_...)
  • Heartbeat monitors noted — keep Better Uptime active for these until StackEye releases heartbeat support, or migrate to an alternative heartbeat tool
  • On-call schedule members notified of change in alert routing
  • At least 48 hours of clean operation observed in StackEye

Troubleshooting

Probe shows DOWN immediately after import: Your URL may resolve to a private IP address. StackEye probes run from regional cloud clusters and cannot reach private networks. Use a StackEye Private Relay agent for internal services.

Alerts not firing: Verify the notification channel is attached to the probe. Go to the probe → Edit → Channels tab. Also confirm the channel passed its Send Test.

Check interval not matching: Free tier is capped at 5-minute intervals. Upgrade to Starter ($5/mo) for 2-minute intervals, Pro ($12/mo) for 1-minute intervals, or Team ($29/mo) for 30-second intervals.

Heartbeat monitors: StackEye does not currently support heartbeat/cron job monitors. Keep those monitors active in Better Uptime or route heartbeats to a dedicated heartbeat tool while StackEye's heartbeat feature is in development.

Start your 14-day free trial →

← Back to Blog