[{"data":1,"prerenderedAt":424},["ShallowReactive",2],{"\u002Fblog\u002Fbulk-import-monitors-csv":3},{"id":4,"title":5,"author":6,"body":8,"category":382,"date":383,"description":384,"extension":385,"faq":386,"howTo":402,"image":417,"lastUpdated":383,"meta":418,"navigation":419,"path":420,"readingTime":225,"seo":421,"stem":422,"__hash__":423},"blog\u002Fblog\u002Fbulk-import-monitors-csv.md","Bulk-Importing Monitors from a CSV (From Any Provider)",{"name":7},"Theo Cummings",{"type":9,"value":10,"toc":375},"minimark",[11,35,43,71,76,79,179,182,229,236,240,243,263,268,272,275,281,292,303,307,310,339,343,346,357,371],[12,13,14,15,20,21,20,25,29,30,34],"p",{},"The one-click importers cover ",[16,17,19],"a",{"href":18},"\u002Fblog\u002Fmigrate-from-uptimerobot-in-60-seconds","UptimeRobot",", ",[16,22,24],{"href":23},"\u002Fblog\u002Fmigrate-from-pingdom-in-60-seconds","Pingdom",[16,26,28],{"href":27},"\u002Fblog\u002Fmigrate-from-statuscake-in-60-seconds","StatusCake",", and ",[16,31,33],{"href":32},"\u002Fblog\u002Fmigrate-from-better-stack-in-60-seconds","Better Stack",". But maybe you're coming from Site24x7, Uptime.com, Freshping, HetrixTools, or a self-hosted Uptime Kuma. Maybe your \"monitoring tool\" is a spreadsheet someone in ops maintains, or a Terraform file, or an infrastructure inventory that's never been monitored at all.",[12,36,37,38,42],{},"For all of those, there's the universal escape hatch: ",[39,40,41],"strong",{},"CSV bulk import",". Every monitoring tool, spreadsheet, or inventory system can produce a CSV - and Vantaj can turn one into monitors in a single upload. The flow:",[44,45,46,55,61,64],"ul",{},[47,48,49,50,54],"li",{},"Build a CSV with four columns: ",[51,52,53],"code",{},"name,type,target,interval"," (or download the in-app template)",[47,56,57,58],{},"Upload it under ",[39,59,60],{},"Settings → Import Monitors → Bulk import from CSV",[47,62,63],{},"Review the validated rows - errors are flagged per-row, duplicates deselected",[47,65,66,67,70],{},"Click ",[39,68,69],{},"Import"," and monitoring starts immediately",[72,73,75],"h2",{"id":74},"the-format-four-columns-one-of-them-optional","The format: four columns, one of them optional",[12,77,78],{},"The CSV is deliberately minimal so any source can produce it:",[80,81,82,95],"table",{},[83,84,85],"thead",{},[86,87,88,92],"tr",{},[89,90,91],"th",{},"Column",[89,93,94],{},"What goes in it",[96,97,98,109,131,156],"tbody",{},[86,99,100,106],{},[101,102,103],"td",{},[51,104,105],{},"name",[101,107,108],{},"Whatever you want the monitor called",[86,110,111,116],{},[101,112,113],{},[51,114,115],{},"type",[101,117,118,20,121,20,124,127,128],{},[51,119,120],{},"http",[51,122,123],{},"ping",[51,125,126],{},"port",", or ",[51,129,130],{},"smtp",[86,132,133,138],{},[101,134,135],{},[51,136,137],{},"target",[101,139,140,141,143,144,146,147,149,150,153,154],{},"A URL for ",[51,142,120],{},"; a hostname or IP for ",[51,145,123],{}," and ",[51,148,130],{},"; ",[51,151,152],{},"host:port"," for ",[51,155,126],{},[86,157,158,163],{},[101,159,160],{},[51,161,162],{},"interval",[101,164,165,166,20,169,127,172,175,176],{},"Optional - like ",[51,167,168],{},"30s",[51,170,171],{},"1m",[51,173,174],{},"1h",". Defaults to ",[51,177,178],{},"5m",[12,180,181],{},"The header row is optional too. A complete, working example:",[183,184,189],"pre",{"className":185,"code":186,"language":187,"meta":188,"style":188},"language-csv shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","name,type,target,interval\nMarketing site,http,https:\u002F\u002Facme.com,1m\nAPI health,http,https:\u002F\u002Fapi.acme.com\u002Fhealth,30s\nOffice router,ping,203.0.113.7,5m\nPostgres,port,db.acme.com:5432,1m\nMail server,smtp,mail.acme.com,5m\n","csv","",[51,190,191,199,205,211,217,223],{"__ignoreMap":188},[192,193,196],"span",{"class":194,"line":195},"line",1,[192,197,198],{},"name,type,target,interval\n",[192,200,202],{"class":194,"line":201},2,[192,203,204],{},"Marketing site,http,https:\u002F\u002Facme.com,1m\n",[192,206,208],{"class":194,"line":207},3,[192,209,210],{},"API health,http,https:\u002F\u002Fapi.acme.com\u002Fhealth,30s\n",[192,212,214],{"class":194,"line":213},4,[192,215,216],{},"Office router,ping,203.0.113.7,5m\n",[192,218,220],{"class":194,"line":219},5,[192,221,222],{},"Postgres,port,db.acme.com:5432,1m\n",[192,224,226],{"class":194,"line":225},6,[192,227,228],{},"Mail server,smtp,mail.acme.com,5m\n",[12,230,231,232,235],{},"Don't want to start from a blank file? There's a downloadable template in-app: ",[39,233,234],{},"Settings → Import Monitors → Bulk import from CSV → Download template",".",[72,237,239],{"id":238},"upload-review-import","Upload, review, import",[12,241,242],{},"Upload the file and Vantaj validates every row before creating anything:",[44,244,245,251,257],{},[47,246,247,250],{},[39,248,249],{},"Errors are reported per-row."," A malformed URL on line 7 doesn't block the other 40 rows - valid rows still import, and each bad row tells you exactly what's wrong with it.",[47,252,253,256],{},[39,254,255],{},"Duplicates are auto-deselected."," Rows matching monitors that already exist in Vantaj are flagged and unchecked, so re-uploading a CSV never creates copies.",[47,258,259,262],{},[39,260,261],{},"Plan limits are enforced up front."," If the file has more monitors than your plan allows, you find out before anything is created - not halfway through a partial import.",[12,264,66,265,267],{},[39,266,69],{},", and checks start immediately from multiple regions for every monitor created.",[72,269,271],{"id":270},"what-csv-import-doesnt-carry","What CSV import doesn't carry",[12,273,274],{},"Honesty section. A four-column CSV carries monitor identity, not provider-specific configuration:",[12,276,277,280],{},[39,278,279],{},"Keyword assertions, custom headers, expected status codes."," These don't fit in the minimal format. Add them after import on the monitors that need them - or use a one-click importer if you're coming from a provider that has one, since those translate assertions automatically.",[12,282,283,286,287,291],{},[39,284,285],{},"Heartbeats."," Cron monitors need a ping URL generated per-monitor, so they can't come from a CSV. Create them in ",[16,288,290],{"href":289},"\u002Fdocs\u002Fheartbeats","Heartbeats"," - it's a name and a schedule.",[12,293,294,297,298,302],{},[39,295,296],{},"Alert channels and history."," Same as every migration: set up ",[16,299,301],{"href":300},"\u002Fdocs\u002Falerts","Alerts & Notifications"," once in Vantaj and they apply to every monitor, and your uptime history starts fresh at import time.",[72,304,306],{"id":305},"getting-a-csv-out-of-common-tools","Getting a CSV out of common tools",[12,308,309],{},"The export side is usually easier than people expect:",[44,311,312,318,324,333],{},[47,313,314,317],{},[39,315,316],{},"Uptime Kuma"," has a JSON backup (Settings → Backup). A ten-line script - or one prompt to an LLM with the JSON pasted in - converts it to the four-column format.",[47,319,320,323],{},[39,321,322],{},"Most SaaS dashboards"," (Site24x7, Uptime.com, Freshping, HetrixTools) render their monitor list as a table you can select and paste straight into a spreadsheet, then rearrange into the four columns and export as CSV.",[47,325,326,329,330,332],{},[39,327,328],{},"Anything with an API"," can be scripted: fetch the monitor list, print ",[51,331,53],{}," per line, done. The format is small enough that the script is trivial.",[47,334,335,338],{},[39,336,337],{},"No tool at all?"," An infrastructure inventory, a DNS zone file, or a list of production URLs in a doc is a fine starting point - this is a chance to get things monitored that never were.",[72,340,342],{"id":341},"why-we-built-this","Why we built this",[12,344,345],{},"One-click importers are the best experience, but they'll never cover every source - there's a long tail of monitoring tools, and the longest tail of all is \"a spreadsheet and good intentions.\" The CSV importer means no one is stuck re-typing URLs into a form, no matter where they're coming from.",[12,347,348,349,20,351,20,353,29,355,235],{},"Coming from a supported provider? The one-click importers carry more detail: ",[16,350,19],{"href":18},[16,352,24],{"href":23},[16,354,28],{"href":27},[16,356,33],{"href":32},[12,358,359,360,366,367,235],{},"Ready to try it? ",[16,361,365],{"href":362,"rel":363},"https:\u002F\u002Fapp.vantaj.co\u002Fregister",[364],"nofollow","Create a free Vantaj account"," - 20 monitors free, no credit card - and see the ",[16,368,370],{"href":369},"\u002Fdocs\u002Fimport-csv","full CSV import guide in the docs",[372,373,374],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":188,"searchDepth":201,"depth":201,"links":376},[377,378,379,380,381],{"id":74,"depth":201,"text":75},{"id":238,"depth":201,"text":239},{"id":270,"depth":201,"text":271},{"id":305,"depth":201,"text":306},{"id":341,"depth":201,"text":342},"tutorials","2026-07-05","Vantaj's CSV importer creates HTTP, ping, TCP, and SMTP monitors from a four-column spreadsheet - the universal escape hatch from Site24x7, Uptime.com, Freshping, Uptime Kuma, or any tool without a one-click importer.","md",[387,390,393,396,399],{"q":388,"a":389},"What columns does the CSV need?","name, type, target, and optionally interval. The header row itself is optional. Types are http, ping, port, and smtp; targets are a URL for http, a hostname or IP for ping and smtp, and host:port for port monitors. Intervals look like 30s, 1m, or 1h and default to 5m.",{"q":391,"a":392},"What happens if some rows have errors?","Errors are reported per-row - a bad URL on line 7 doesn't block the other 40 rows. Valid rows import normally; fix the flagged ones and re-upload just those if you want.",{"q":394,"a":395},"Will re-uploading the same CSV create duplicate monitors?","No. Rows matching monitors that already exist in Vantaj are flagged as duplicates and deselected automatically, so re-running an import is safe.",{"q":397,"a":398},"What if the CSV has more monitors than my plan allows?","Plan limits are enforced before anything is created - you'll see the problem up front rather than getting a partial import that stops midway.",{"q":400,"a":401},"My old tool doesn't export CSV. Now what?","Almost everything gets you to a CSV in a few minutes: Uptime Kuma's JSON backup can be converted with a short script, most SaaS dashboards paste cleanly into a spreadsheet, and any tool with an API can be scripted into four columns. The format is deliberately minimal so any source works.",{"name":403,"description":404,"steps":405},"How to bulk-import monitors into Vantaj from a CSV","Create monitors in bulk from any provider or inventory by uploading a simple four-column CSV.",[406,409,412,415],{"name":407,"text":408},"Build your CSV","Four columns - name, type, target, interval. Types are http, ping, port, or smtp; the target is a URL, host, or host:port; the interval is optional and defaults to 5m. Or download the template in-app.",{"name":410,"text":411},"Open the importer in Vantaj","In Vantaj, go to Settings → Import Monitors and choose Bulk import from CSV.",{"name":413,"text":414},"Upload and review","Upload the file. Vantaj validates every row, reports errors per-row, and pre-selects everything valid. Duplicates of existing monitors are deselected automatically.",{"name":69,"text":416},"Click Import. Plan limits are checked up front, and monitoring starts immediately for every created monitor.",null,{},true,"\u002Fblog\u002Fbulk-import-monitors-csv",{"title":5,"description":384},"blog\u002Fbulk-import-monitors-csv","4sw6y4xTKQsDxbSah9xgiwBESzJuKR-ISaYxmAaMdc8",1783178927503]