How to migrate from UptimeRobot to StackEye

UptimeRobot is a solid starting point for teams getting started with uptime monitoring. But as your infrastructure grows, you often hit its limits: a 5-minute minimum check interval on the free tier, no multi-region consensus, and limited status page customization. This guide walks you through migrating your UptimeRobot monitors to StackEye — step by step.

Why migrate?

  • Faster check intervals — UptimeRobot free plan checks every 5 minutes. StackEye Starter ($5/mo) checks every 2 minutes, and Team ($29/mo) checks every 30 seconds.
  • Multi-region consensus — UptimeRobot checks from a single location. StackEye probes from 3 regions simultaneously and only alerts when a majority of regions report failure, eliminating false positives from regional blips.
  • Scoped API keys — UptimeRobot has no per-key permission scoping. StackEye API keys carry granular permissions (probes:read, probes:write, etc.) — ideal for CI/CD pipelines and read-only dashboards.
  • Notification channel grouping — Route alerts per monitor or team, not just globally.
  • Brandable status pages — Custom domain, logo, and color scheme on all paid plans.

Feature mapping

UptimeRobotStackEye equivalent
MonitorProbe
Alert ContactNotification Channel
Status PageStatus Page
HTTP(S) MonitorHTTP Probe
Keyword MonitorHTTP Probe with content assertion
Port MonitorTCP Probe (Phase 2)
Ping MonitorPing Probe (Phase 2)
API keyAPI Key (se_<64-hex-chars>)
Response time graphsReliability & latency dashboard

Check interval comparison

PlanUptimeRobotStackEye
Free5 min5 min (10 monitors)
Entry paid1 min2 min — $5/mo (25 monitors)
Pro30 sec1 min — $12/mo (100 monitors)
Team30 sec — $29/mo (500 monitors)

Step 1: Export your monitors from UptimeRobot

Log in to UptimeRobot, go to My Monitors, click the bulk action dropdown, and select Export as CSV. The CSV includes monitor name, URL, check interval, and alert contacts.

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.

Step 4: Import probes via CLI

The StackEye CLI imports probes from a YAML or JSON file. Convert your UptimeRobot CSV export to StackEye YAML format:

# Install CLI
brew install stackeye-io/tap/stackeye  # macOS
# or: curl -sSfL https://stackeye.io/install.sh | sh

# Authenticate
stackeye auth login

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

# probes.yaml — one entry per UptimeRobot monitor
- name: "My Website"
  url: "https://example.com"
  check_type: "http"
  method: "GET"
  interval_seconds: 60
  regions:
    - nyc3
    - sfo3
    - chi1
  expected_status_codes: [200]
  ssl_check_enabled: true
  follow_redirects: true

Then preview and import:

# Preview without creating
stackeye probe import --file probes.yaml --dry-run

# Import all probes
stackeye probe import --file probes.yaml

Note: Labels are not applied during import. If your YAML file includes labels, they appear in --dry-run output but are silently dropped when the actual import runs. Apply labels after import using stackeye probe label:

# Get the probe IDs of newly imported probes
stackeye probe list

# Apply labels to each probe (--no-input skips confirmation prompts)
stackeye probe label PROBE_ID env=prod tier=web --no-input

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: 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.

Step 7: Set up your status page

Navigate to Status PagesNew Status Page. Name it, assign your imported probes, set your custom domain (CNAME status.yourdomain.compages.stackeye.io), and publish.

Step 8: Cutover checklist

Before canceling UptimeRobot, verify:

  • All probes imported and showing correct status
  • All notification channels tested and confirmed
  • Team members invited (Settings → Team)
  • Status page live and accessible
  • API integrations updated to use StackEye API key (se_...)
  • 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.

Check interval not matching: Free tier is capped at 5-minute intervals. Upgrade to Starter ($5/mo) for 2-minute intervals.

Start your 14-day free trial →

← Back to Blog