ForgeSendDocs

Importing contacts

There are three ways to get contacts into a list. CSV import is the one people re-run over time — worth knowing exactly what happens the second time you upload the same file.

Creating a list

A list is just a name — 2 to 120 characters. Creating one from the Lists page's Import CSV button or from quick-add takes you straight to that list, whether or not you attached a file.

CSV import

The importer parses your file entirely in the browser (nothing is uploaded until you click Import) and tries to auto-map columns to Email, First Name, Last Name, and Company based on common header spellings.

CSV import — read only

Import CSV

Upload and map contacts

Match CSV headers to core fields. Unmapped columns are preserved as custom fields.

Drop or choose a CSV fileParsing happens locally in your browser.

Map headers

Email

work_email

First Name

first

Last Name

last

Company

Do not map
312 parsed rows · 2 custom fields will be saved.
Import contacts
  • Mapping an Email column is mandatory — Import is blocked without it.
  • Any column you leave as "Do not map" is saved on each contact as a custom field, keyed by its original CSV header.
  • Rows with no value in the mapped email column aren't silently dropped — each one is skipped with the reason "Missing email", counted in the import summary, and listed in a "Skipped rows" panel after import.
  • Import runs as one call, capped at 5,000 rows; a larger file only imports the first 5,000.

Re-importing: what actually happens

Every contact is identified by workspace + email — importing a CSV finds or creates that contact, then merges the row's fields onto it rather than overwriting wholesale.

Re-importing is safe: a field only changes if the new row actually has a value for it. If a column is unmapped, or a specific row's cell is blank, ForgeSend leaves whatever is already on the contact untouched — it doesn't get blanked out just because this import didn't mention it. This applies to first name, last name, company, and custom fields alike, so a previous import's or Lead Finder's data survives a later, less-complete CSV re-import.

The single-contact Add contact form works the same safe way — it only ever writes email, first name, last name, and company, and even those only update when you actually type a value, so it's safe to use on an already-enriched contact without wiping anything.

Manual add and quick-add

Two entry points add one contact at a time, both requiring only an email:

  • Add contact on a list's own page — a simple modal, adds directly to that list
  • Add contact on the Lists page (quick-add) — a 2-step flow: choose an existing list or name a new one first, then enter the contact, then it navigates you straight into that list
Quick-add — step 1 of 2
Step 1 of 2

Choose a list

Select which list to add the contact to.

+ Create new list
CancelNext

Editing a contact

Clicking a contact's email (or "+ Add email" if it has none) opens an edit modal for name, company, and email. Saving is not purely cosmetic:

  • Changing the email resets verification status — it's cleared back to unverified, since the old verdict no longer applies to the new address.
  • A duplicate email within the same list is rejected outright: "A contact with this email already exists in this list."
  • Two non-blocking warnings can appear after a successful save: "This email is suppressed in your workspace. Future sends will be skipped." and/or "This contact is in N active campaign(s). Future queued sends will use the new email." Both are informational — the save has already gone through by the time you see them, and the modal only auto-closes when there are none.
  • The same modal has a Verify email action — see Verification.

Related docs

Next: Tags and custom fields