DOCS

Bulk import monitors

Create dozens of monitors at once from a CSV or JSON file, including screenshots, SSL checks, regions, and TCP/DNS fields.

Instead of adding monitors one at a time, upload a CSV or JSON file and create up to 200 at once. The import is all-or-nothing: if any row is invalid, or the batch would exceed your plan's monitor limit, nothing is created and every reason is listed so you can fix the file and retry.

The fastest path

  1. Go to Monitors, then click Bulk import in the top right.
  2. Drag and drop a .csv or .json file, or click to browse for one.
  3. Review the parsed rows. Optionally pick a team and default regions for the whole batch, and tick Enable screenshots for all and/or Enable SSL check for all if you want every imported monitor to have those on regardless of what the file says.
  4. Optionally click Check reachability to probe every URL once and see an UP/DOWN badge per row before you commit. This is advisory only: a site that blocks automated probes may show DOWN yet still be worth importing, so a DOWN badge never stops the import.
  5. Click Import N monitors.

CSV columns

Only name and url are required (url is optional for ping, tcp, dns, and group monitors, which target a host instead of a URL). Every other column is optional:

ColumnMeaning
methodHTTP method (default GET)
interval, timeoutSeconds (defaults 60 / 30)
typehttp (default), ping, tcp, or dns
ping_targetHost to ping (type ping)
hostHost to check (type tcp or dns)
tcp_portPort number (type tcp)
dns_record_typeA, AAAA, A_AAAA, CNAME, MX, TXT, or NS (type dns)
dns_expected_valueOptional substring the resolved record must contain (type dns)
ssl_checktrue/false — HTTPS certificate expiry check
screenshot_enabled (aliases: screenshot, screenshots)true/false — capture a screenshot when the monitor goes down
follow_redirectstrue/false
keyword, keyword_typeBody keyword to assert (contains, not_contains, or regex)
valid_status_codese.g. 200-299
regions (alias: prober_regions)Which prober regions to check from
tagsFree-text tags

Multi-value cells (valid_status_codes, regions, tags) use ; or | to separate values (commas are the CSV delimiter):

name,url,method,interval,timeout,ssl_check,screenshot_enabled,regions,valid_status_codes,tags
"My API",https://api.example.com,GET,60,10,true,true,howlops-a;howlops-arb,200-299,"prod;api"
"Health",https://app.example.com/health,GET,30,5,false,false,,200-299|301,prod

JSON files use the same field names as an array of objects, with regular JSON arrays and booleans instead of the ;/| and true/false string conventions.

Toggling screenshots or SSL for monitors you already have

You don't need to re-import to change these settings in bulk. On the Monitors page, select the monitors with the checkboxes, and the yellow bulk action bar that appears has two more icons alongside pause/resume/interval/regions/tags/team/delete: a camera icon for screenshots and a lock icon for SSL checks. Click one and choose Enable or Disable — the change applies to every selected monitor immediately, and your selection stays in place afterward so you can keep going.

Selecting monitors without losing your place

While you're ticking checkboxes to build a selection, clicking anywhere else on a row toggles that row's selection too, instead of navigating away and clearing everything you'd already picked. To open a monitor's detail page while you have a selection in progress, click its name (or use the kebab menu) — both still navigate normally.

See also

Was this page helpful?