ScreenshotNeo

BlogHow-to

How to Import Hundreds of Website Monitoring Jobs from a CSV File

Import hundreds of website monitors safely: map your inventory to the destination template, test a small batch, and verify every created check.

By the ScreenshotNeo team4 October 20268 min read

The safest way to import hundreds of website monitoring jobs is to start with the destination service’s current import template, map and normalize your source rows to its accepted fields, upload a small representative batch, then reconcile the created monitors against your intended inventory. CSV formats are not universal: some services provide a CSV template, some accept one URL per line or an API request, and code-managed platforms let you define monitors in source-controlled configuration.

This guide uses UptimeRobot as the documented CSV example. Its dashboard template is authoritative for the exact current headers and accepted values; do not assume a header row from another service will work.

1. Build a source-of-truth inventory

Before editing a CSV, list every intended target and the settings you need to preserve. Keep this planning inventory separately from the upload file because the destination may not support every source setting or may use different names.

  • Target URL or IP address
  • What the target represents and its desired friendly name
  • Monitor type and any type-specific settings
  • Desired checking interval, subject to the destination account’s plan
  • Tags or grouping information
  • Notification or alert-routing requirements to verify separately

For migration work, retain the original export unchanged. That gives you a reference for conversion and reconciliation and makes it easier to redo the mapping if the destination template changes.

2. Download the destination’s current template

For UptimeRobot, the documented workflow is to open the plus icon, choose Bulk Upload, download the supplied template, fill its predefined columns, and upload the completed file. Follow the current template and dashboard instructions if they differ from a description here. See the UptimeRobot bulk upload instructions.

The documented UptimeRobot fields include:

Field How to map it Important detail
Type Use an accepted monitor type: HTTP, Ping, Port, or Keyword. HTTP is the default in the documented template.
URL/IP Set the monitored URL or IP address. This is the only required attribute listed in the help article.
Interval Enter the checking interval in seconds. The article documents 60 to 86,400 seconds; the shortest interval available depends on the plan.
Friendly Name Map a useful, stable name for operators. Do not use this as a substitute for the target URL/IP.
Keyword Type and Value Populate these for a Keyword monitor. Include the keyword settings required by the current template.
Port Populate this for a Port monitor. Confirm the destination’s current accepted value format.
Tags Map applicable tags. The documented format separates multiple tags with semicolons.

The list above explains the documented fields; it is not a substitute CSV header row. Use the file downloaded from your live account for exact column names, ordering, and formatting.

3. Map and normalize the rows

  1. Map by meaning, not just by column position. Match each source field to the destination template’s field and accepted values. Source and destination exports often differ.
  2. Normalize target values. Check URL schemes, hostnames, IP addresses, whitespace, and accidental line breaks. Preserve meaningful paths and query strings where the monitor needs them.
  3. Set types explicitly when needed. UptimeRobot documents HTTP, Ping, Port, and Keyword. For Keyword monitors, include keyword type and value; for Port monitors, include a port value.
  4. Respect interval limits. Use seconds where requested and check the plan’s shortest available interval before assigning a value. The documented UptimeRobot range is 60–86,400 seconds, with the actual minimum plan-dependent.
  5. Format tags as required. For UptimeRobot, separate multiple tags with semicolons as described in its instructions.
  6. Identify duplicates before upload. Compare normalized targets, not just display names. Decide whether an existing check should be updated, retained, or replaced according to the destination’s behavior.

Do not assume that source-specific options such as alert rules, authentication, or redirects will be represented in a basic import. Check the destination’s documentation and plan to validate those settings after creation.

4. Test a representative batch

Start with a small group that includes the variations in your full inventory: ordinary HTTP checks, any Ping or Port checks, Keyword monitors, different intervals, and tags. Uploading a small batch first is a practical safeguard; it does not imply that the service offers a preview or rollback feature.

  1. Save a copy of the completed test file.
  2. Upload it using the destination service’s documented workflow.
  3. Inspect the resulting monitor list and open the created records.
  4. Compare target, type, interval, name, keyword or port settings, and tags with the source rows.
  5. Confirm notification routing separately if it is configured outside the import template.
  6. Correct the mapping and repeat the small batch if any field was misread.

5. Upload the remaining rows and reconcile

Once the representative batch maps correctly, import the remaining rows using the same template and mapping rules. Then reconcile the result against the source-of-truth inventory.

  • Count intended rows and created monitors, and investigate any difference.
  • Compare normalized target URLs or IP addresses to catch omissions and duplicates.
  • Check each monitor’s type-specific settings, interval, name, and tags.
  • Review import errors or skipped rows shown by the destination.
  • Verify alert destinations and notification policies in the dashboard.
  • Keep the source export, transformed file, and a record of the upload for future maintenance.

Do not assume a bulk upload is transactional or reversible unless the destination explicitly documents that behavior. If the interface does not provide a clear result for each row, verify the created monitor list directly before considering the migration complete.

Convert an existing monitor export

UptimeRobot’s Site24x7 migration guide describes exporting monitor configurations as a CSV inside a ZIP, obtaining UptimeRobot’s template, converting the exported rows to match that template, then uploading them. This is an example of one vendor migration, not a universal field mapping. Consult the UptimeRobot Site24x7 migration guide and inspect the converted values yourself.

A safe conversion sequence is:

  1. Extract the source CSV and preserve an untouched copy.
  2. Download the destination’s current template.
  3. Create an explicit mapping for each supported source field.
  4. Flag settings with no clear destination equivalent instead of silently dropping them.
  5. Convert a small sample and inspect every cell, especially type-specific values and intervals.
  6. Import and reconcile the sample before converting the full export.

An AI tool can help transform column layouts, but generated output still needs validation against the current template and the source inventory. It cannot establish that unsupported settings were preserved.

When CSV is not the right import path

Bulk creation does not always mean CSV upload. Choose the method the destination documents for your source format and the way your team manages configuration.

Approach Useful when What to verify
CSV template upload The service supplies an import template and the source contains structured settings. Exact current columns, allowed values, plan limits, and row-level results.
URL list You have a simple list of targets and can configure checks after entry. Whether settings can be edited before creation and whether duplicates are detected.
API You need a repeatable transformation or the source already has structured data. Authentication, request limits, error handling, idempotency, and how to reconcile created records.
Configuration as code Monitor definitions should be reviewed and maintained in source control. Deployment workflow, supported fields, and how changes or removals affect existing monitors.

Better Stack documents pasting URLs one per line, editing monitor configuration before creation, or using its Monitors API. Its documentation also says: “Please message us at hello@betterstack.com, and we will help you with the transition.” See Better Stack’s bulk importing guide.

For teams that prefer code-managed definitions, Checkly describes generating hundreds of monitors from a TypeScript file and managing them through its CLI, REST API, Terraform, or Pulumi workflows. That is a source-controlled alternative, not a CSV import method. See Checkly’s monitoring as code documentation.

Or skip the browser setup

If you need screenshots of monitored pages for visual review or incident records, ScreenshotNeo is a website screenshot API and MCP server. One GET request returns an image or PDF. For example:

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp

See the ScreenshotNeo API documentation for request options. Cookie banners, popups, and chat widgets are removed before the shot. Bot checks, blank pages, and failed loads are never billed. An MCP server lets AI agents take screenshots. The free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000. Sign up for 1,000 free screenshots a month, with no card required.

Troubleshooting CSV imports

Symptom Likely cause Fix
Upload rejects the file or columns The file does not use the current destination template, or headers/order were changed. Download a fresh template from the account and map values into it. Avoid guessing the header row.
Rows import with the wrong monitor type A type value is missing, misspelled, or unsupported. Use accepted values from the current instructions; UptimeRobot documents HTTP, Ping, Port, and Keyword.
Keyword monitor is incomplete Keyword type or value was not mapped. Populate the keyword-specific fields required by the template and inspect the created monitor.
Port monitor is incomplete The required port setting was omitted or mapped to the wrong column. Supply the port value using the current template’s format, then verify the created check.
Interval is rejected or differs from intent The value is outside the accepted range or faster than the account plan allows. Confirm seconds are used, check the documented range and current plan limit, then adjust.
Tags appear as one tag or are missing The separator or destination syntax differs from the source export. For UptimeRobot, format multiple tags with semicolons as documented; verify in the dashboard.
Duplicate monitors appear Rows were compared by display name or existing checks were not accounted for. Deduplicate by normalized URL/IP and compare the created list with the pre-import inventory.
Monitor exists but alerts do not arrive Notification routing may be separate from the CSV import. Check alert contacts, policies, and test notifications in the service dashboard.

Performance, reliability, and cost considerations

  • Batch size: Hundreds of rows are easier to diagnose when the mapping is proven on a small sample first. Use the destination’s documented limits; do not assume a particular maximum upload size.
  • Reliability: Preserve the original export and record which rows were created. Reconcile targets after import and investigate partial results instead of blindly re-uploading the whole file.
  • Intervals affect monitoring load and plan fit: Assign only frequencies supported by the account. For UptimeRobot, the documented interval range is 60–86,400 seconds, and the shortest interval depends on plan.
  • Cost: Check current plan limits and pricing with the destination before choosing monitor counts and intervals. The cited migration documentation does not establish a comparable pricing basis across UptimeRobot, Better Stack, and Checkly.
  • Ongoing maintenance: If monitor definitions change often or need review history, an API or code-managed workflow may be easier to repeat than editing exports manually.

FAQ

What columns should a website monitoring CSV have?

Use the destination service’s current template. UptimeRobot documents URL/IP, type, interval, friendly name, keyword settings, port, and tags, but its live downloadable file determines the exact headers.

Can I bulk import website monitors?

Yes, when the destination supports a bulk workflow. That workflow might take a CSV, a line-separated URL list, API calls, or code-defined configuration; check the service’s current documentation.

Can I convert one provider’s monitor export directly into another’s template?

Usually you need to map fields and inspect settings because providers do not share a universal CSV format. Test a representative subset and reconcile the imported records.

Should alert settings be included in the monitor CSV?

Only if the destination template and documentation explicitly support them. Confirm notification routing separately when alerts are configured elsewhere.