platform

Import, export & Smart Template (multi-aftermarket CSV)

How globNIC ingests Afternic, Sedo, GoDaddy, Dynadot, Spaceship, and generic CSV; export formats; and limits from the import API.

Updated 2026-04-26

What “Smart Template Import” means in code

  • The upload handler POST /api/member/domains/import only accepts .csv files via multipart/form-data field file.
  • The server reads the file as text and runs parseCSV from src/lib/csv-parser.ts, with optional manual platform override from form field platform: one of afternic | sedo | godaddy | dynadot | spaceship | generic (omitting it triggers header-based auto-detect).
  • Auto-detect inspects the header row for known signatures (e.g. Afternic, Sedo fixed_price, GoDaddy markers, etc.). If nothing matches, imports fall back to the Generic column map.

In practice: you can import an export that came from another aftermarket or registrar without hand-editing, as long as the CSV has a recognizable domain column and a price column the mapper knows — the parser maps alternate header names to internal fields, maps prices to integer cents (parsePrice), and assigns a tier from the buy-now value.

Supported column detection (import)

From PLATFORM_MAPPINGS (non-exhaustive list of header aliases the parser looks for):

  • Domain column: e.g. domain, Domain Name, domainname, etc. (per platform map).
  • Buy now / list price column: e.g. Buy Now Price, fixed_price, Buy Now, price — normalized to cents after stripping $, commas, and symbols.
  • Optional floor / min offer / category where defined for that platform (see the mapping table in the source file for exact strings).

If both parser errors and zero parsed rows: the API returns 400 with a joined error string and the detected/forced platform name.

Member UI — import

Limits and plan rules (enforced in the API)

  • Max rows per file: MAX_DOMAINS_PER_IMPORT = 500 accepted parsed domains per upload (larger files error before insert).
  • Free / Navigator (50-domain portfolio cap): The route counts your active assets (deletedAt: null). If the CSV would push you over 50 slots, the API returns 403 with upgradeUrl /pricing and a remainingSlots number when applicable.
  • Strategist+: Unlimited domain count in code (isFreePlan false skips the 50 check).
  • Soft-deleted duplicates: If a name exists only as trash for you, the import can restore and merge CSV pricing. If a soft-deleted name belonged to another member, the route hard-deletes the stale row so a new owner can claim the domain.
  • Active duplicates are skipped and returned in the duplicates array.
  • Invalid rows may appear in skipped with a human reason (e.g. bad domain or price).

Strategist (capitalization in some messages) is the paid plan referenced in copy when upgrading from free limits.

Export (simple globNIC CSV)

  • Button: “Export My Domains” on the import page → GET /api/member/domains/export
  • Rows: Non-hidden, non-deleted member domains. Columns: domain,price,category,status,views,description,createdAt (price in dollars with decimals in the file — note this differs from cent integer storage in other APIs).
  • Empty portfolio: 404 “No domains to export. Add some domains first!”

Transfer export (other marketplaces)

  • From Bulk Operations or direct API, POST /api/member/domains/transfer-export supports:

    • csv (wide globNIC-style),
    • json (structured, prices in dollars as numbers),
    • godaddy, sedo, afternic-shaped CSV exports,
    • Request body: optional domains array (max 500 entries) and/or includeAll boolean (export entire owned portfolio if valid per handler).
  • Use the Transfer Export tile on /member/domains/bulk-operations; choose a format in the panel before downloading.

RAG / LLM quick facts

  • Import: multipart field file; optional platform. Only CSV. Smart detection + manual override. Cents internally.
  • Export (simple): GET — CSV download with marketing-friendly columns.
  • Transfer export: POST — JSON/CSV, marketplace-specific.

Related