# Move from StatusCake to up4

> Match StatusCake’s terms to up4’s, bring your uptime checks over with the CSV import, see what does not carry over and run both tools side by side before you switch alerts.

Source: https://upfour.io/docs/moving/statuscake

You will have your StatusCake checks running in up4 while StatusCake keeps running, so you can compare both before you switch your alerts.

- **Who:** Anyone who can create monitors in your Company
- **Time:** One sitting, then 48 to 72 hours side by side

You need a StatusCake API token and the people or channels that should receive alerts. In that one sitting you move a first batch.

## Match StatusCake’s words to up4’s

| StatusCake | up4 | What to know |
| --- | --- | --- |
| Uptime check | **Monitors** | up4 has HTTP, ping, TCP and DNS checks. HEAD and HTTP checks both become HTTP monitors. SMTP and SSH checks have no counterpart. |
| Check rate | **Interval (seconds or 1m / 5m)** | StatusCake counts in seconds, which up4 reads as they are. |
| Heartbeat check | **Scheduled jobs** | Your job checks in with up4 at a URL. |
| Contact group | **Alert channels** | You connect each recipient again. An **Alert plans** entry decides who is told, in which order. |
| Maintenance window | **Maintenance window** | A setting on each monitor, with a time of day, a time zone and weekdays. |
| Status page | **Status pages** | You build it again in up4. |
| Tags | **Tags** | Imported as text in the monitor’s metadata. |

## Export your checks and import them

We found no export of the check list in StatusCake’s documentation. The documented route out is the [StatusCake API](https://developers.statuscake.com/): **GET /uptime** with a Bearer token returns all uptime checks, in pages. Turn that response into a CSV file.

**In up4:** Monitoring › Paste many URLs · [Open in up4](https://app.upfour.io/monitors/new/batch)

## Steps

### 1. List your checks through the API

Follow the pages until you have every check. Keep the name, website URL, test type, check rate, paused flag and tags of each one.

### 2. Write the CSV file with up4’s column names

Named like this, the columns are recognized without any mapping. StatusCake writes its test types in capitals; write them in lowercase, and write HEAD and HTTP both as http.

```
name          →  name
website_url   →  url
test_type     →  monitor_type   (http, ping, tcp, dns)
check_rate    →  interval       (seconds, as they are)
tags          →  tags
paused        →  state          (PAUSED, otherwise empty)
```

A check rate of 0 is not an interval in up4: choose one yourself. Leave out SMTP and SSH checks.

### 3. Add what a TCP, DNS or content row needs

A TCP row needs **TCP host** and **TCP port** columns; the port is in the detailed description of the check. A DNS row needs **DNS name**, and StatusCake’s DNS server fits **DNS server**. For an HTTP check, its search string fits **Required keyword**. Leave cells empty where a row does not need them.

### 4. Open Import websites

Choose **Choose CSV file** or paste the file. up4 accepts up to 500 rows and 2 MB at a time. Under **Map columns**, every column needs a field or **Ignore this column**.

### 5. Choose Preview import, then create

The preview creates nothing. Read each row, fix or exclude errors, and tick **Create paused for setup review** if you want to look first.

## How you know it worked

**View imported monitors** lists exactly the monitors you created. A monitor reads as pending until its first check result arrives.

## See what does not carry over

- **History.** Check results, uptime figures and outages stay in StatusCake. up4 starts measuring with its first check.
- **Contact groups.** Connect each recipient once as an **Alert channels** entry. The import only assigns channels that already exist.
- **Heartbeat checks.** The import creates monitors only. Create each **Scheduled jobs** entry and swap the URL in your job. StatusCake’s heartbeat period, the time since the last ping before a check counts as down, becomes **Expect a check-in every**; add a **with a grace period of** if your job’s run time varies.
- **Maintenance windows.** Set them again on the monitors.
- **Status pages.** Build them again.
- **Page speed and server monitoring.** up4 has no counterpart for these check types.

## What up4 does not do here

up4 does not read your StatusCake account and has no one-click migration. You bring the file; up4 shows a preview before it creates anything.

## Expect these differences

- **Confirmation.** up4 does not alert on one failed check. A change of state needs 3 consistent observations: the first differing check plus 2 instant re-checks. Read your StatusCake settings before you compare alert timing.
- **Check interval.** StatusCake offers a fixed list of check rates. up4 accepts any interval from 10 seconds.
- **Web addresses.** A bare hostname on an HTTP row becomes an https address, and the preview warns you. Check it before you create the monitor.
- **Price per check.** Every check type costs €9 per million checks. One monitor checked every minute from one region comes to €0.39 a month. Each extra region repeats the checks. See [What costs money](https://upfour.io/docs/how/what-costs-money.md).

## Run both tools side by side

1. Pilot three to five checks that matter, with one alert channel.
2. Leave StatusCake running. 48 to 72 hours is a rule of thumb, not a requirement.
3. Import the rest of your list.
4. Send a test alert per channel and confirm it arrived. Then turn off the alerts in StatusCake.

The [switching overview](https://upfour.io/switch) has the same plan in short.

## Take your monitors back out

Open **Monitor tools** in the monitor list and choose **Export monitors (CSV)**. The file imports again into this or another up4 account. Passwords, request headers and proxy settings are not included. For StatusCake, keep the name, address, type and interval, and create the checks in its dashboard or through its API (**POST /uptime**).

## If something is off

- The preview button stays disabled: every column must be mapped or set to **Ignore this column**, and each field only once.
- A row reports a problem with the interval: write whole seconds or a unit such as 60s, 5m or 1h.
- A TCP row is rejected: it needs both a TCP host and a TCP port.
- More fixes are in [Troubleshooting](https://upfour.io/docs/troubleshooting.md).
