How do I import contacts from a CSV?
No code needed
Open Import contacts, upload a CSV or paste spreadsheet cells with headers, then check the columns and fix or skip problem rows. Nothing is saved until you confirm the import.
On this page

Get a template if you need one
Use Download CSV template on Import contacts. Select optional Birthday, Work anniversary or Personalized message columns before downloading. Fill in the file and save it as CSV.
Upload or paste
Choose a CSV file, drop it onto the page, or paste cells from Excel or Google Sheets, including the header row. For pasted cells, choose Read what I pasted.
Check what Scribble read
Inspect the headers and sample rows. If columns are shifted or combined, fix the source file before continuing.
Map the columns
Confirm the suggested fields. Map birthdays to Birthday and full start dates to Work anniversary. Check ambiguous headers by hand. Unmapped columns become custom fields, such as
personal_note.Fix problems
Review rows needing attention, duplicates and do-not-mail matches. Correct addresses or skip rows you do not want imported. Check the final number of contacts.
Confirm the import
Choose the destination list if offered, then import. Review the result and open a saved contact to check its address and dates.
You’ll know it worked when The contacts appear in the selected space with the fields you mapped.
#Date formats
| Field | Example | Stored value |
|---|---|---|
| Birthday | 03/14, 1990-03-14 | Month and day only |
| Work anniversary | 2021-06-01 | Full start date, including year |
| Custom date for a rule | 2026-11-12 | The custom field value; use YYYY-MM-DD for date matching |
#Custom columns and messages
A header such as Personal note becomes personal_note, available as {{personal_note}} in a message. Keep custom field names consistent across imports. See contact fields and merge fields.
#Importing again
Review duplicate matches before confirming another import. A contact with the same email or address may already exist. For repeat syncs from another system, use a stable external_id through the contacts API.
Last checked against the product on . Something wrong or missing? Tell us.
