Access: Products → CSV Import or any CRM page with an Import CSV button.

Standard CSV format

Minimum required columns for a customer import:
ColumnRequiredExample
first_nameyesHoa
last_nameNguyen
emailyes (or linkedin_url)hoa@acme.com
linkedin_urlyes (or email)https://linkedin.com/in/hoa
phone+84 90 ...
telegram_chat_id123456789
company_nameAcme Corp
company_domainacme.com
languagevi / en
countryVN
tagshot-lead,fintech (comma-separated)
Extended columns:
  • segment_id — auto-add to a static segment.
  • owner_email — set owner.
  • product:<productId>:score — fit score (-1..1) on a specific product.
Download the sample CSV template from the Download template button in the wizard.

Import wizard

1

Upload the file

Drag-and-drop or pick a file. CSV ≤ 20 MB.
2

Map columns

If headers match the standard names → auto-mapped. Otherwise → click each dropdown to map manually.
3

Dry-run preview

The system parses the first 100 rows and shows:
  • New customers
  • Matches against existing customers (by email / linkedin)
  • Errors (bad email format, invalid link…)
You can choose:
  • Skip duplicate — ignore matches
  • Update existing — overwrite the profile with the CSV values
4

Submit

A background job starts. The page redirects to CSV Imports → :id for progress.

Import status page

Each import has:
  • Status: pendingprocessingcompleted / failed
  • Counters: created, updated, skipped, failed
  • Error log — downloadable CSV of failed rows + reasons
Duplicate email handling: if an existing customer already has an owner, the import does NOT overwrite the owner unless you check “Force overwrite ownership”. This protects sales-claimed data.

Best practices

  • Clean the file first (trim spaces, normalize email casing).
  • Make sure company_domain is accurate → auto-matches companies.
  • Start with a 50-row batch to test the mapping before importing 5000.