Skip to main content

Start a background contact import from a CSV/Excel file

POST 

/api/contacts/import

Header-mapped import: columns are matched by field key (first_name, last_name, email, phone, type + custom-field keys). The upload is parked and a queued job streams it (up to 50,000 rows), so large lists never block the request. Imported contacts are saved to the Contacts list; rows with a duplicate email/phone or no identity are skipped. Poll the returned import run for progress. Requires the contacts-manage permission.

Import-time options from the preview step ride along: tag_ids are applied to EVERY row of the file (rows that matched an existing contact included), and fields promotes unknown columns into new contact custom fields before processing (requires contact_fields.manage). Both decisions are persisted on the run as its audit trail.

Request​

Responses​

The queued import run.