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 Uptime | StackEye equivalent |
|---|---|
| Monitor (HTTP/HTTPS) | HTTP Probe |
| Alert Policy | Notification Channel (Email / Slack / Webhook) |
| Status Page | Status Page |
| Escalation policy | Alert Channel assignment per probe (no escalation tiers in MVP) |
| On-call schedule | Not available in current release |
| Heartbeat monitor | Not available in current release |
| Cron job monitor | Not available in current release |
| TCP / Ping monitor | TCP Probe / Ping Probe (Phase 2 — not yet released) |
| Incident timeline | Alert history and probe status history in dashboard |
| Maintenance window | Maintenance Window (silence alerts during scheduled downtime) |
| Team member | Team 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
| Plan | Better Uptime | StackEye |
|---|---|---|
| Free | 3 min (10 monitors) | 5 min (10 monitors) |
| Entry paid | 30 sec — $24/mo (50 monitors) | 2 min — $5/mo (25 monitors) |
| Pro | 30 sec — $60/mo (unlimited) | 1 min — $12/mo (100 monitors) |
| Team | 30 sec — bundled incident mgmt | 30 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 Uptime → Monitors, 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 loginCreate 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: trueThen preview and import:
# Preview without creatingstackeye probe import --file probes.yaml --dry-run# Import all probesstackeye probe import --file probes.yamlStep 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 Pages → New Status Page, name it, assign your imported probes, and configure your custom domain (CNAME status.yourdomain.com → pages.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