Skip to main content
Browse documentation

Type to search the documentation. Press Esc to close.

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
CSV import with five stages and optional template columns for personalized messages, birthdays and work anniversaries.
Download a blank template if you need one. Add birthday or work anniversary columns before filling it in.
  1. 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.

  2. 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.

  3. Check what Scribble read

    Inspect the headers and sample rows. If columns are shifted or combined, fix the source file before continuing.

  4. 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.

  5. 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.

  6. 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

Dates for importing
FieldExampleStored value
Birthday03/14, 1990-03-14Month and day only
Work anniversary2021-06-01Full start date, including year
Custom date for a rule2026-11-12The 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.