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.
On this page
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.
Import CSV
Upload and map contacts
Match CSV headers to core fields. Unmapped columns are preserved as custom fields.
Map headers
First Name
Last Name
Company
- 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
Choose a list
Select which list to add the contact to.
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