Skip to main content
CSV import is the fastest way to add many contacts at once. Xobito reads your file in batches, validates each row, and imports the valid rows while listing any errors in an import log.
CSV import screen

Key limits

Xobito’s CSV import has a 50 KB file-size limit, not a row-count limit. If your file is larger than 50 KB, split it into smaller files and import each one in turn.
LimitValue
Maximum file size50 KB
Batch size100 rows at a time (processed in the background)
Invalid rowsSkipped per-row; valid rows still import
A 50 KB CSV typically holds around 250–500 contacts depending on how many columns you include. If in doubt, split into files of 200 rows each.

What you need before you start

  • A CSV file in UTF-8 encoding.
  • A header row naming each column. Header names are case-insensitive but must match Xobito’s field names exactly — there is no column-mapping UI.
  • All phone numbers in E.164 format.
  • Any statuses, sources, and custom fields already created in Xobito (the CSV refers to them by their ID).

Download a sample CSV

The import screen offers a sample CSV you can download. It has the correct header row and one example data row. Use it as a template.

Required columns

These columns must be present in your CSV. Rows missing any required value are skipped.
ColumnDescriptionValidation
firstnameFirst / given nameMax 191 characters
lastnameLast / family nameMax 191 characters
typeContact typeMust be lead or customer
phonePhone in E.164 formatMust match /^\+[1-9]\d{5,14}$/. Unique within your workspace.
status_idStatus identifierMust be the ID of an existing status
source_idSource identifierMust be the ID of an existing source
status_id and source_id are the numeric IDs assigned to the status/source records you created in Contacts → Status and Contacts → Source. Check those screens to find the IDs before building your CSV.

Optional columns

ColumnDescription
companyCompany name
descriptionFree-text notes
emailEmail address — if provided, must be unique in your workspace
country_idCountry identifier
city, state, zip, addressAddress details
assigned_idStaff user ID assigned to the contact
group_idGroup identifier(s) — See Groups
Custom-field slugsAny custom field’s field_name can be used as a column

Sample CSV

firstname,lastname,type,phone,email,status_id,source_id,city,country_id
Alex,Morgan,customer,+14155551234,alex@example.com,2,1,San Francisco,1
Priya,Shah,lead,+919876543210,priya@example.com,1,3,Mumbai,91
Tom,Becker,customer,+447911123456,,2,2,London,44
Leave a cell empty for optional fields you don’t have — don’t write null or -.

Phone number format

Phone numbers are the number-one cause of failed imports. The rules:
  • Must start with + followed by the country code.
  • No spaces, no dashes, no parentheses.
  • No leading zero after the country code (UK 07911… becomes +447911…).
  • Total length between 7 and 15 digits after the +.
ExampleAccepted
+14155551234Yes
+447911123456Yes
+919876543210Yes
415-555-1234No
(415) 555 1234No
07911123456No — missing country code
14155551234No — missing +

Step-by-step import

1

Create your statuses, sources, and custom fields first

CSV references them by ID — they must exist before you import.
2

Prepare your CSV

Build the spreadsheet using the required columns above. Save as CSV UTF-8. Confirm the file is under 50 KB.
3

Open the import screen

In the sidebar, go to Contacts and open the import option.
4

Download the sample CSV (first time only)

Use it as the reference header layout.
5

Upload your file

Drag and drop or click to browse. Xobito checks the file size — if over 50 KB you’ll see an error before any rows are processed.
6

Start the import

Xobito processes rows in batches of 100. Very small imports finish almost instantly; larger ones run in the background.
7

Review the import log

Once processing completes, the import log lists: total rows, successful rows, and each skipped row with the reason (row number + field errors).

What happens to each row

CaseResult
All required fields present and validContact is created.
Phone number already exists for another contactRow is skipped with “phone already exists”.
Phone number is invalid (bad format)Row is skipped with a format error.
type is not lead or customerRow is skipped with a validation error.
status_id or source_id doesn’t existRow is skipped with a reference error.
Custom field value fails validationRow is skipped with the field name and reason.
Email already exists for another contactRow is skipped with “email already exists”.
Xobito never aborts the whole import when a bad row is found. Invalid rows are skipped per-row. All valid rows still import. Check the import log after it finishes.

Import log

Every import writes a log entry containing:
  • Which file was uploaded and when.
  • Total rows, successful rows, and skipped rows.
  • For each skipped row: row number + specific field errors.
Use the log to fix bad rows in your original spreadsheet and re-import just the corrected rows.

Best practices

The hard limit is 50 KB. Split large exports into several small files. This is faster and easier to recover from if something goes wrong.
Get the status_id, source_id, and any country_id values you need before building the CSV. Without them every row will fail.
Before uploading your main file, upload a trimmed 5-row version. Check the log, open one of the created contacts, then run the full import.
Non-Latin names (Hindi, Arabic, Chinese) need UTF-8 encoding. Export from Excel as CSV UTF-8, not plain CSV.
Only import contacts who have agreed to receive WhatsApp messages from you. Unsolicited messages hurt your quality rating.

Troubleshooting

Your CSV exceeds the 50 KB limit. Split it into smaller files.
Open the import log — it lists the exact reason per row. The most common causes are phone numbers without a country code, and missing status_id or source_id.
Your CSV is in the wrong encoding. Re-export as CSV UTF-8 from your spreadsheet tool.
Column names must match Xobito’s field names exactly (case-insensitive). There is no mapping UI. Check spelling and avoid extra spaces.
Xobito expects dates in a standard format — see Custom Fields for details.

Next steps

Organise into groups

Segment your imported contacts for targeted campaigns.

Run a campaign

Broadcast to your freshly imported list.