Contents
6 sections · 6 min read
Domain Management

How to Import Domains via CSV: The Exact Format That Avoids Errors

A
Domain 360 Team
·August 7, 2026·6 min read

A CSV import is the fastest way to get a large domain portfolio into Domain 360, but the importer is unforgiving about format: it reads columns by position, applies no validation, and skips anything it can't parse without telling you what went wrong. This is the exact format it expects, based on how the import actually works under the hood, not a general "how CSV works" explainer.

Quick answer: Domain 360's CSV import expects nine columns in a fixed order — Domain, Type, Registrar, Status, Registered, Expires, Email, Auto-renewal, Notes — with dates in YYYY-MM-DD format and no commas inside any field. Only the Domain column is required; everything else can be left blank.

The Exact Column Order

The importer doesn't match your header row against expected column names — it reads position 1 as the domain, position 2 as the type, and so on, no matter what text is actually in row 1. That means your header row can say almost anything, but the columns underneath it must be in this order:

  1. Domain — the only required field, e.g. example.com
  2. Type — own, client, or personal
  3. Registrar — free text, e.g. Namecheap, GoDaddy, Cloudflare Registrar
  4. Status — active, expired, pending, or parked
  5. Registered — the registration date, in YYYY-MM-DD format
  6. Expires — the expiry date, in YYYY-MM-DD format
  7. Email — the contact email tied to the domain
  8. Auto-renewal — yes or no
  9. Notes — free text

If you export your existing domains from Domain 360 first (Dashboard → Export), the file you get back is already in this exact order — editing that export and re-importing it is the safest way to bulk-update domains, since you know the format will round-trip cleanly.

Why a Header Row Is Mandatory (Even Though Its Text Doesn't Matter)

The import always discards row 1, treating it as a header, regardless of what's actually written there. If you paste raw domain data into row 1 with no header above it, that entire row is silently thrown away — not imported, not flagged as an error, just gone. Always keep a header row, even a simple one like the nine column names above.

Get the Date Format Wrong and Nothing Will Warn You

Registered and Expires accept whatever text you give them with no validation or reformatting at import time. The dashboard's expiry countdowns and renewal alerts read that value back through JavaScript's built-in date parser, which reliably understands YYYY-MM-DD (2026-03-15) but handles other formats inconsistently — DD/MM/YYYY and MM-DD-YYYY can parse into the wrong date entirely, or fail silently and show a broken countdown, without any error appearing during import itself. If you're exporting dates from Excel or Google Sheets, format the date columns as plain text in YYYY-MM-DD before saving to CSV, since spreadsheet software often auto-formats dates in a locale-specific way that doesn't match.

The Comma Mistake That Shifts Every Column After It

This is the least obvious failure mode and the one most likely to silently corrupt a whole row rather than just skip it. The importer splits each line on commas and does not correctly handle commas placed inside quoted fields — so a Notes entry like "Renewal, handled by IT" doesn't stay in one column. It splits into two, and every column after Notes (in this case, nothing — but if you reorder columns, this can shift real data) ends up misaligned. Keep every field comma-free. Use a semicolon, a dash, or just rephrase — "Renewal handled by IT" or "Renewal - handled by IT" both work fine.

Duplicates and Plan Limits Fail the Same Way

Two other things cause rows to disappear without an explicit error, and both get reported together in one confirmation message after import: Imported X domain(s). Skipped Y duplicate(s). A domain already in your account (matched case-insensitively, so Example.com and example.com count as the same domain) gets skipped as a duplicate. Separately, if you're on the free plan (15 domains) or Pro (50 domains) and your import would push you past that limit, the import stops adding new domains once the limit is hit — those remaining rows get lumped into the same "skipped" count as duplicates, so the message alone won't tell you which reason applies. If your skipped count is higher than expected, check your current domain count against your plan's limit before assuming every skip was a duplicate.

A Template That Imports Cleanly

Rather than building a CSV from scratch, download the import template with the correct header row and three example rows already in the right format and order — replace the example rows with your own domains and the column positions, date format, and field values will already be correct.

Once your domains are in, set up expiry reminders so a CSV import is the last time you have to think about tracking renewals manually.

Frequently Asked Questions

Never lose a domain again

Track every domain you own in one dashboard. Free for up to 15 domains.