UptimeRobot has been raising prices and cutting free-tier features for years. The free plan dropped from 50 monitors to 10 in 2024, and paid plans start at $7/month for just 10 monitors. If you have been looking for a reason to switch, this is the guide that gets you moved over in under 10 minutes.
This walkthrough covers exporting your existing monitors from UptimeRobot, mapping your settings to CronAlert, and recreating everything -- either manually through the dashboard or programmatically through the API. If you are new to uptime monitoring in general, start with our uptime monitoring setup guide first.
Why teams switch from UptimeRobot
The short version: you get more for less. Here is how the two compare on the things that matter.
- Pricing -- UptimeRobot's Pro plan is $7/month for 10 monitors. CronAlert's Pro plan is $5/month for 100 monitors. That is 10x the monitors for 30% less money.
- Free plan -- UptimeRobot's free plan gives you 10 monitors at 5-minute intervals. CronAlert's free plan gives you 25 monitors at 3-minute intervals with email, Slack, Discord, and webhook alerts included.
- Alert channels -- UptimeRobot restricts Slack and webhook alerts to paid plans. CronAlert includes Slack, Discord, email, and webhook alerts on every plan, including free.
- SSL monitoring -- SSL certificate expiry monitoring is included on all CronAlert plans at no extra cost.
- Status pages -- CronAlert includes free status pages on every plan. UptimeRobot charges extra for them.
For a full feature-by-feature breakdown, see our CronAlert vs UptimeRobot comparison.
What you need before you start
Two things:
- A CronAlert account. Sign up free -- no credit card required. You can migrate everything on the free plan and upgrade later if you need 1-minute intervals or more than 25 monitors.
- Your UptimeRobot API key. Log into UptimeRobot, go to My Settings, and copy your "Main API Key" (or create a Read-Only API Key if you prefer). You will use this to export your monitor list.
Step 1: Export your monitors from UptimeRobot
UptimeRobot does not have a CSV export, but their API makes it straightforward to pull your full monitor list. Run this from your terminal:
curl -X POST https://api.uptimerobot.com/v2/getMonitors \
-H "Content-Type: application/json" \
-d '{
"api_key": "your_uptimerobot_api_key",
"format": "json"
}' | python3 -m json.tool > uptimerobot-monitors.json
This saves your monitors to uptimerobot-monitors.json. The response contains an array of monitor objects under monitors, each with fields like friendly_name, url, type, interval, and keyword_type. Here is what a typical entry looks like:
{
"id": 12345678,
"friendly_name": "Production API",
"url": "https://api.example.com/health",
"type": 1,
"interval": 300,
"keyword_type": null,
"keyword_value": ""
} Keep this file open -- you will reference it in the next steps.
Step 2: Map UptimeRobot settings to CronAlert
UptimeRobot and CronAlert use different field names and conventions. Here is how they map:
| UptimeRobot field | CronAlert field | Notes |
|---|---|---|
friendly_name | name | Direct mapping, no changes needed |
url | url | Direct mapping |
type (1=HTTP, 2=keyword, 3=ping, 4=port) | method | Types 1 and 2 map to GET. Ping and port monitors are not supported -- use an HTTP health endpoint instead. |
interval (seconds) | Auto from plan | CronAlert sets the interval based on your plan: 3 minutes on free, 1 minute on paid. No manual configuration needed. |
keyword_type / keyword_value | keyword | If keyword_type is 1 (exists) or 2 (not exists), set the keyword field. See our keyword monitoring guide for details. |
http_method | method | Maps directly: 1=HEAD, 2=GET, 3=POST, 4=PUT, 5=PATCH, 6=DELETE, 7=OPTIONS |
alert_contacts | Alert channels | Set up separately in CronAlert. Alert channels are team-wide, not per-monitor. |
Step 3: Create monitors in CronAlert
You have two options: manual creation through the dashboard, or bulk creation via the API.
Option A: Manual (dashboard)
For smaller setups (under 20 monitors), the fastest path is the CronAlert dashboard. Go to your monitors page, click "Add Monitor," and fill in the name, URL, and method for each one. The dashboard shows you a live preview of your settings before you save.
Option B: API (bulk migration)
For larger setups, use the CronAlert REST API to create monitors programmatically. First, generate an API key in your CronAlert settings. Then run this script, which reads your exported UptimeRobot JSON and creates a CronAlert monitor for each entry:
#!/bin/bash
API_KEY="ca_your_cronalert_api_key"
# Extract monitors from the UptimeRobot export and create each in CronAlert
cat uptimerobot-monitors.json | python3 -c "
import json, sys
data = json.load(sys.stdin)
for m in data['monitors']:
# Skip non-HTTP monitors (ping, port)
if m['type'] not in (1, 2):
continue
print(json.dumps({
'name': m['friendly_name'],
'url': m['url'],
'method': 'GET',
'expectedStatusCode': 200
}))
" | while read -r monitor; do
curl -s -X POST https://cronalert.com/api/v1/monitors \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d "$monitor"
echo ""
done
This creates each monitor with sensible defaults. If you had keyword monitors in UptimeRobot, you can extend the script to include the keyword field -- or add keywords manually in the dashboard after the bulk import.
Step 4: Set up alert channels
CronAlert handles alerts differently from UptimeRobot. Instead of attaching alert contacts to individual monitors, you configure alert channels at the team level and all monitors use them. This means you set up your channels once and every new monitor is automatically covered.
Go to your settings page and add the channels you need:
- Email -- enabled by default for your account email
- Slack -- add a webhook URL. See our Slack alerts setup guide for the full walkthrough.
- Discord -- add a webhook URL. See our Discord alerts setup guide.
- Webhook -- point to any HTTP endpoint to receive JSON alert payloads
All of these channels are available on every plan, including free. If you were paying UptimeRobot specifically for Slack alerts, you just saved yourself that cost.
Step 5: Verify everything is working
After creating your monitors and alert channels, give CronAlert a few minutes to run its first check cycle. Then verify:
- Check the dashboard. Every monitor should show a status (up or down) and a response time. If any show as pending, wait for the next check interval.
- Compare against UptimeRobot. Spot-check 3-5 monitors to confirm CronAlert reports the same status as UptimeRobot. If a monitor shows as down in CronAlert but up in UptimeRobot, double-check the URL and expected status code.
- Test an alert. If you have a staging endpoint you can temporarily take down, do it. Confirm you receive alerts through all configured channels. If you would rather not break anything, just verify the alert channels show as "connected" in settings.
Step 6: Deactivate UptimeRobot monitors
Do not delete your UptimeRobot monitors immediately. Instead:
- Run both services in parallel for 24-48 hours. This gives you a safety net while you confirm CronAlert is catching everything.
- Pause UptimeRobot monitors. Once you are satisfied, pause (do not delete) your UptimeRobot monitors. This stops the checks without losing your configuration.
- Cancel after a week. If everything runs smoothly for a week with CronAlert, go ahead and delete the UptimeRobot monitors and cancel your subscription.
What you get after switching
Beyond the cost savings, here is what CronAlert gives you that UptimeRobot does not (or charges extra for):
- SSL certificate monitoring -- get alerted before your certificates expire, included on all plans. See our SSL monitoring guide.
- Free status pages -- create a public status page for your users without paying extra.
- Multi-region monitoring -- check your URLs from 5 global regions simultaneously on the Team plan. See our multi-region monitoring guide.
- Full REST API -- automate monitor management from your CI/CD pipeline or scripts. See our API guide.
- MCP integration -- manage monitors from AI assistants and LLM-powered tools via the Model Context Protocol.
- All alert channels on every plan -- Slack, Discord, email, and webhooks are free. No paywalled notifications.
Create a free CronAlert account and migrate your monitors in under 10 minutes. If you have more than 25 monitors, the Pro plan at $5/month covers up to 100 -- still less than what UptimeRobot charges for 10.
FAQ
Can I import monitors from UptimeRobot automatically?
CronAlert does not have a one-click UptimeRobot import yet. However, the process described above -- export via UptimeRobot's API, then create via CronAlert's REST API -- is scriptable and takes under 10 minutes. The bash script in Step 3 handles the bulk of the work.
How long does the migration take?
Under 10 minutes for most setups. If you have fewer than 20 monitors, manual creation in the dashboard is fastest. For larger monitor counts, the API script creates them all in one pass. The longest part is verifying everything is working correctly, which is mostly just waiting for the first check cycle.
Will I lose my historical monitoring data?
Yes. Historical check results, response times, and incident history from UptimeRobot do not transfer to CronAlert. CronAlert begins collecting data from the moment each monitor is created. If you need to preserve historical records for compliance or analysis, export them from UptimeRobot before deactivating your account.
Can I keep using UptimeRobot's free plan alongside CronAlert?
Yes. There is no conflict in running both services simultaneously. Both are external monitoring tools that independently check your URLs -- they do not interfere with each other. Running both in parallel for a few days is actually recommended during migration so you can verify CronAlert catches the same events.