Migrate from Better Stack to SolidPing
SolidPing reads your Better Stack account through its public API and converts every monitor and every heartbeat into a check. You paste one API token, SolidPing does the paging. It previews first, so nothing is written until you say so.
Not sure you want to move? Read SolidPing vs Better Stack first. It says where Better Stack is the better choice too.
1. Get an API token
In Better Stack open Uptime, go to Settings > API tokens and create a token. Read access is enough.
The token is sent once, used as a bearer credential to read /api/v2/monitors and
/api/v2/heartbeats, then discarded. SolidPing never writes it to the database, never
logs it and never echoes it in an error message. Revoke it in Better Stack when you are
done.
2. Preview
In the SolidPing dashboard open Checks > Import, pick Better Stack (API token), paste the token and click Import preview. You get the list of checks that would be created and every item that did not map cleanly.
Or use the API with an organization admin token:
curl -s -X POST \
-H "Authorization: Bearer $TOKEN" \
-H 'Content-Type: application/json' \
-d '{"token":"YOUR_BETTER_STACK_TOKEN"}' \
'https://your-instance/api/v1/orgs/myorg/checks/import/convert?source=betterstack&dryRun=true'
3. Apply
Confirm in the dashboard, or drop dryRun=true from the API call. Checks are matched by
slug, so running it again updates in place instead of duplicating. You can keep Better
Stack running next to SolidPing until you are ready to cut over.
What maps
| Better Stack | SolidPing |
|---|---|
status, expected_status_code | http |
keyword | http, body must contain the keyword |
keyword_absence | http, body must not contain the keyword |
ping | icmp |
tcp, udp | tcp, udp |
smtp, pop, imap | smtp, pop3, imap |
dns | dns |
| Heartbeats | heartbeat (period is the expected interval, grace becomes the confirmation period) |
Name, frequency, timeout, method, body, expected status codes and required keyword carry
over. A paused monitor is imported disabled. Request headers come along, and the ones that
look like credentials (Authorization, X-Api-Key...) land in the encrypted
secret-headers field.
What you do by hand
The preview lists all of this as warnings.
- Heartbeats get new URLs. SolidPing issues its own ping URLs. Copy the new one from each imported heartbeat and repoint the cron job or agent that pushes to it.
- Playwright monitors. Not converted. Recreate them as SolidPing browser checks.
- Basic auth credentials. Never imported, on purpose. Re-enter them on the check.
- IPv4 and IPv6. A Better Stack monitor with no IP version set watches both families.
A SolidPing check probes one. Monitors left unset are imported as
auto, the preview counts them, and you add a second check pinned toipv6where it matters. - SSL and domain expiry. These are dedicated
sslanddomainchecks in SolidPing. Add one per host. - Monitor groups, escalation policies, on-call schedules. Rebuild them with SolidPing check groups and on-call.
- Status history. Results are not portable between tools.
Imported checks carry the label solidping-managed=betterstack, so you can filter on
exactly what the import created.
Full reference
The complete guide, kept next to the code, is at solidping.io/docs/features/migrate/from-better-stack. If something does not import the way you expect, open an issue with a sample. That sample is most of the work.