Import contacts from a file
Importing is how most people get into ColdMerge. This page walks the whole thing. For the file rules themselves (separators, size, what counts as an address), see CSV format and what gets skipped.
The wizard has four steps, shown across the top of the screen: Upload, Map, Apply, Done. Nothing touches your contacts until you press Apply import at the third step.
Step 1: Upload or paste
Section titled “Step 1: Upload or paste”Go to Contacts, then the Imports tab.
- Drop a file onto Drop a CSV here, or click to choose, or switch to the Paste rows tab and paste rows straight out of a spreadsheet.
- Leave Separator on Detect automatically unless you already know the detection is wrong. The other options are Comma, Semicolon, and Tab.
- Select Read the rows.

Reading the rows writes nothing to your contacts. It only stages the file so you can check it.
If the file is refused at this point, the reason is shown right under the form: it is too big, it has too many rows, no column reads as email addresses, or the file is not plain text. Fix the file and choose it again.
If you arrived here from a list’s Import into this list button, a banner reads “Importing into your list”, and the destination is already decided.
Step 2: Map
Section titled “Step 2: Map”Now you check what ColdMerge made of the file.
What we read
Section titled “What we read”The top section restates the reading in one line, for example “Read as comma-separated: 1,240 rows, 6 columns”, with the first ten rows below it. Two guesses sit above the preview, and you can overrule either.
- First row contains column names. Ticked when the first row looks like headings rather than a person. Untick it if your file has no heading row.
- Email column. Detected from the values in each column, not from the
headings, because real exports call it
Contact,Email 1, or nothing at all. Pick a different column if the wrong one was chosen.
Either correction re-reads the preview straight away. Correcting the email column keeps every field name you have already typed below.
The column mapping
Section titled “The column mapping”Each column of the file gets a row with the field name it will become. Every
proposed name is editable, and the box suggests field names your workspace
already uses, so Company lands on the company you already have instead of
creating a second one.
Under each box is a line saying why the name says what it says:
| Line under the column | What happened |
|---|---|
| A field you already use. | The heading matched a field name your contacts already carry |
| A standard field. | The heading was recognized as first name or last name |
| A new field. | The heading becomes a new field name |
| Not imported. Rename it to use in merge tokens. | The heading contains a character merge tokens cannot address |
Not imported: {{email}} already renders this. |
The heading is email, which is the one built-in token |
| Not imported: another column already uses that field. | Two columns were pointed at the same field name |
| Not imported: no heading. Name it to import. | The column has no heading. Type one to bring it in |
| Not imported. | You cleared the box, so this column is left out entirely |
Clearing a box is a normal thing to do. A column you leave empty is simply not imported.
The address column itself has no box. It is the contact, not a field.
Any field you do import becomes usable in a message as {{fieldName}}.

Choose the destination list
Section titled “Choose the destination list”At the bottom of the mapping form is List. Pick an existing list, or choose Create a new list… and type a name in the Name it box next to it.
If you came in from a list’s own page, the destination is stated rather than asked: “Going into your list.”
Select Save mapping. A confirmed mapping reads “Saved. Apply below to write these contacts.”
Step 3: Apply
Section titled “Step 3: Apply”The Import these contacts section says how many rows are about to be imported, and reminds you that existing people are updated and suppressed addresses are skipped.
The live campaign warning
Section titled “The live campaign warning”If the destination list feeds a campaign that is running and set to keep enrolling new members, a notice appears above the button. It names the campaigns and says plainly that the people you import will start receiving them, follow-ups included, as soon as they are added.
The warning does not block anything. It is a checkpoint so a file aimed at the wrong list is caught before it goes out rather than after.

Select Apply import. This is the first action that writes anything.
Step 4: Watch it run
Section titled “Step 4: Watch it run”The Importing section shows a progress bar, a “480 of 1,240” count, and a live breakdown of what each row is coming to. It is safe to leave the page; the import keeps running, and you can find it again under Past imports.
If the connection drops for a moment, the line “Can’t reach the server. Still trying.” appears. That is not a failed import; the screen keeps asking.

Step 5: Read the outcome
Section titled “Step 5: Read the outcome”When it stops, What each row came to lists every row grouped by what happened to it. An outcome nobody hit is left out rather than shown as a zero.
| Outcome | Meaning |
|---|---|
| Added | A new contact was created |
| Updated | A contact you already had was updated from this row |
| Skipped: on your suppression list | The address must never be emailed, so nothing was written |
| Skipped: not an address | The cell in the email column was not a usable address |
| Skipped: repeated in the file | The same address appeared earlier in this same file |
A suppression-list import uses different words for the same counts: Suppressed instead of Added, and Skipped: already suppressed.

If it stopped early
Section titled “If it stopped early”Two different lines can appear here.
- Stopped before finishing. Results below. The import failed partway. The counts underneath are still true for the rows it reached.
- 840 of 1,240 rows were reached. Re-upload the file to finish; nothing is duplicated. Re-uploading the same file is safe. Rows this import already accounted for are recognized rather than repeated.
There is no way to resume an import that has already been applied. Re-uploading is the way forward, and it costs nothing.
Download the skipped rows
Section titled “Download the skipped rows”If any rows were skipped, a Skipped rows section offers Download the N skipped rows. The file gives you those rows back so you can fix them and upload just them.
Underneath is the date it is kept until. Skipped rows are held for 30 days after the upload. Past that, the row is marked in the Past imports table with “Past the 30-day window, nothing left to download”, and the import’s own page reads “Skip report expired after 30 days.”
The count on the button is a live count, not a frozen one. It answers “what can I still download”, so it can differ from what the summary said at the time.
Undo the import
Section titled “Undo the import”Undo this import deletes only the people this file added. Nobody it merely updated is touched, because ColdMerge records which import created each contact and never claims one it only edited.
Select it, read the confirmation naming the exact number of contacts, and select Delete them. Anyone who has been emailed since the import is kept, and the message afterwards says how many were kept for that reason.
Undo is not always offered. When an import added people but has nothing left to undo, the page says so: “Nothing left to undo. Those people were emailed since or already removed.”
A suppression-list import has no undo at all. Bulk-removing suppression rows would risk emailing people who opted out. See unsubscribes and suppression.
Find an old import
Section titled “Find an old import”The Past imports table under the upload form lists every import, with its file name (or “Pasted rows” for a paste), its status, its type, and when it started. Selecting a row reopens it at whatever step it is on.
| Status | What it means |
|---|---|
| Not applied | Read and staged, waiting for you to check the columns and apply it |
| Running | Being applied right now |
| Finished | Done |
| Stopped | Stopped before finishing |
Not applied is not a warning. Nothing is running, and nothing is wrong; the file is simply waiting for you.
It does not wait forever, though. An import can sit at Not applied for 30 days from the upload, the same 30-day window the skip report lives under, counted from the same moment: the day the file arrived, not the day you press Apply. When the window passes, a daily sweep releases the staged rows and the import moves to Stopped. Your contacts are untouched, because nothing was ever applied; re-uploading the file starts fresh.
This table works fully on a phone, so you can check on an import from anywhere even though you started it at a computer.