Import contacts and manage your lists

Import contacts from a CSV or a paste, map your columns, carry your old provider's opt-out list across, and sort everyone into lists you can trust.

Your audience is the foundation of every campaign, so it pays to get it right from the start. Most of that work happens once, in the import wizard, and the choices you make there decide what your lists look like for months.

This guide walks the import end to end: what Mailsoftly accepts, how to map your columns, what the wizard does to contacts you already have, and how to find and fix the rows that did not make it. Then it covers organizing everyone into lists you can trust.

Start an import

Import Contacts sits on your audience screen, on the contact lists screen, and in the Add a contact menu inside any list. Every one of them opens the same full screen wizard, Import Contacts from CSV, with three steps across the top: Upload Contacts, Match Column, and Review and Complete.

  • Step 1 offers two tabs, Upload CSV File and Copy & Paste. The drop zone reads Drop a file here or click here to select a file, with the limit spelled out under it: CSV files only. Max 10,000 rows.
  • CSV is the only file type the wizard accepts. If your contacts live in Excel or Numbers, use Save As or Export to make a CSV first. A ready made template is linked from the top of the step and holds three columns: first name, last name and email.
  • Files bigger than 10,000 rows are refused before anything is uploaded, so split a larger export into batches and run them one after another. They can all land in the same list.
  • Drop a file in and you get a green card with the file name and N rows detected, plus a Replace button if you grabbed the wrong file, and a strip telling you whether Mailsoftly recognized your first row as column names.

You do not need a column named exactly Email, and you do not need to tell Mailsoftly how your file is punctuated. Commas, semicolons and tabs are detected for you, and so is the file’s encoding, so an Excel export full of Turkish characters comes through intact instead of arriving as question marks.

The audience screen listing contacts, with the Import Contacts button in the header
Step one of the import wizard with the upload and paste tabs, the tips card and the drop zone

Paste contacts instead of uploading a file

When your contacts are already open in a spreadsheet, pasting is faster than exporting. Switch to the Copy & Paste tab, select the cells in your sheet, and paste them into the editor.

  • The editor numbers each line as you go, so you can see at a glance how many contacts you are about to import. The Process button stays greyed out until there is something to process.
  • Columns can be separated by commas or tabs, and the first line can be your column headers. A straight paste out of Google Sheets or Excel arrives tab separated and works as it is.
  • Press Process and the rest of the wizard is identical to a file upload, including the same 10,000 line ceiling.

Your paste is saved as a real file behind the scenes, named after the day you pasted it, so it shows up in Import History and can be downloaded again later just like an upload.

The copy and paste tab of the import wizard with numbered lines of contact data and the Process button

Choose where the contacts land

As soon as a file or a paste is accepted, Where should we save your contacts? appears underneath it with two tabs.

  • Create New List prefills a Contact List Name for you, taken from the file name plus today’s date. Rename it to something you will recognize in three months, or leave it and rename the list later.
  • Select Existing List gives you a Choose a list… dropdown of your current lists, newest first. The imported contacts are added to that list, and the contacts already on it are not touched.
  • The existing list tab is greyed out until you have at least one list, so a brand new account always starts by creating one.
Tip

If you start the import from inside a list, using Import Contacts in that list’s Add a contact menu, the wizard opens on the existing list tab with that list already selected. It is the shortest path when you are topping up a list you already send to.

The where should we save your contacts panel with the create new list tab and a prefilled list name
The select existing list tab of the import wizard with a dropdown of current contact lists

Match your columns to Mailsoftly fields

Step 2 is where your file meets your contact record. A File detection summary at the top counts the columns it found, the fields it mapped, and whether an email column is among them, and it updates live as you work.

  • The switch The first row contains column names controls whether row 1 is treated as headers or as your first contact. Mailsoftly guesses and tells you what it guessed, and you can flip it either way. With it off, your columns are labelled Column 1, Column 2 and so on, and every row is imported.
  • The table below has two columns, Column in your file and Save as. Each row carries a Data Preview badge that shows the first few real values from that column, which is the quickest way to confirm you are looking at the column you think you are.
  • Familiar headers are matched for you. Anything called mail, e-mail or email address lands on Email, phone or mobile lands on Mobile Phone, organization or employer lands on Company. If the header means nothing, Mailsoftly reads the first values in the column and detects addresses and phone numbers by their shape.

The Save as dropdown holds eighteen standard fields: First Name, Last Name, Email, Date of Birth, Mobile Phone, Work Phone, Company, Industry, Job Title, Website, Country, State, City, ZIP Code, Address Line 1, Address Line 2, Opt-in Date and Note. Any custom fields your account already has appear below them, marked as a Custom Field. Skip This Column drops a column you do not want.

Note

Exactly one column must be mapped to Email, and the wizard will not move on without it. It also blocks you from pointing two different columns at Email, First Name or Last Name. Tags are not in this list: they are applied to the whole import on the next step, not per row.

The column matching step of the import wizard pairing each file column with a Mailsoftly field

Handle columns Mailsoftly does not recognize

Columns that match nothing are not thrown away. Each one is proposed as a new custom field and badged yellow as pending, and Next stays blocked with Pending Custom Fields until you have made a decision about every one of them.

  • Click a pending badge to open Custom Field Settings, where three buttons decide its fate: Skip this column ignores it, Create New stores it as a brand new custom field, and Accept confirms the field name shown.
  • In a hurry, Skip All Pending and Accept All Pending settle every outstanding column at once.
  • Anything you accept becomes a real custom field on your account, so it is available on contact profiles and in segment rules from then on.

Date of Birth gets its own treatment. Choose it and a small window asks you to describe the order your file uses, as Part 1, Part 2 and Part 3, each set to Day, Month or Year. Pick three different parts, since repeating one is refused as an Invalid Format. Dots, dashes and commas between the parts are all understood.

The custom field settings dialog offering to skip the column, create a new field or accept the proposed one

Review, tag and start the import

Review and Complete is the last step, and it is the one with the settings people wish they had noticed. It opens with a plain reading of what is about to happen: how many contacts are ready, which list they are going to, and how many rows will be skipped for a missing or invalid email. Import Summary lists the fields being imported and the ones being ignored, and View details expands the file name, the mapped field count and your tags.

  • Tags is a text box with an Add button. Mailsoftly has already put one tag there for you, named after your file and today’s date, so this batch stays findable forever. Remove it if you do not want it, and add your own, such as a source or an event name.
  • Overwrite empty values decides what blank cells do. Left alone, a blank cell is ignored and whatever you already stored is kept. Tick it and a red confirmation appears, because from that point a blank cell in your file will erase the value on the contact. Confirm Overwrite is a deliberate second step for a reason.
  • Email me when the import finishes is unticked by default. Tick it if you want the result in your inbox, especially for a large file you plan to walk away from.
  • Email subscriptions appears if your account has more than one subscription. Every one is ticked; unticking one opts this batch out of it. It applies to new and existing contacts alike, and it never re-subscribes anyone who opted out on their own.
  • The consent checkbox is required. Start Import refuses to run until you confirm that the people in this file agreed to hear from you. Bought and scraped lists produce spam complaints that damage deliverability for everything you send afterwards.
Careful

If one of your tags is the trigger for an active automation, Mailsoftly warns you and asks you to confirm before it starts, because every contact in this import would be enrolled into that automation at once. Read that warning rather than clicking through it.

Note

The completion email carries the number of contacts that landed, an Errors.txt file listing every rejected row when there were any, and your new list’s health grade when the grading finished in time. You only get it if you ticked the box.

If the import would take you past your plan’s contact limit, Mailsoftly stops you with Contact limit reached before the job starts, so you are never left with a half loaded list.

The review and complete step showing the import summary, tags, the import options and the consent checkbox

Let the import run in the background

Start Import hands your file to a background job. The wizard swaps to a processing card that reads We’re preparing your contact list, and the important line underneath it: You can safely leave this page. We’ll notify you when it’s done. Go to Contact Lists takes you away without stopping anything.

  • Closing the tab, navigating away, or shutting the laptop does not cancel the import. The list’s own page carries the same processing state with a Refresh button, and replaces itself with the finished list as soon as the job ends.
  • If you stay, the card becomes Import Completed! with four numbers: List Name, Total File Rows, Successfully Imported and Invalid or Ignored. View Contact List opens the list, and a short countdown takes you there anyway.
  • If nothing landed at all, the card turns red and says so rather than pretending it worked.

Your very first successful import hands you straight to Audience Insights, a full read of who you just brought in. Later imports show an Audience snapshot card on the success screen instead, with View full analysis to open the same thing. Mailsoftly also grades the new list’s health in the background, which is why a grade badge may appear on the list a moment after the contacts do.

The import wizard processing card explaining that you can safely leave the page while the import runs
The import completed card showing total file rows, successfully imported and invalid or ignored counts

Know what an import does to contacts you already have

An import is not only a way to add people, it is also a way to update them, and that catches most people out the first time. Here is exactly what happens, row by row.

  • A row whose address matches a contact you already have is not skipped. That contact is updated in place with the values from your file and added to the destination list if they were not on it. It counts as a success, not a failure.
  • A row with no email, or an address that is not shaped like an email, is skipped.
  • If the same address appears twice inside one file, the first one wins and the later ones are skipped as duplicates.
  • Blank cells are ignored unless you ticked Overwrite empty values, so an empty Company column will not wipe the companies you already stored.

The practical upshot is that re-importing a corrected file is safe: nobody is duplicated, nobody joins the list twice, and the corrected values simply replace the old ones. It also means an import of stale data will overwrite good data, so make sure the file you are importing is the newer of the two. For a full tour of a single record, see Understand a contact profile.

A contact profile showing the details an import wrote onto an existing record

Check Import History and fix the rows that failed

Every import is kept. Open Import History from the contact lists screen, or from your company settings, to see the full record newest first.

  • Each row shows the File Name, which downloads the exact file you uploaded, the Date, the Contact List Name it fed, and two counts, Success and Fail.
  • When rows failed, the Actions column carries a red Download Error File pill. When they did not, it simply reads No Actions Required.
  • Rows with an analysis also carry a link to it and the list health badge that came out of the import.

The error file is a plain text list with one line per rejected row, and each line names the reason: a missing email, an invalid email format, or a duplicate address inside the file. The row numbers are line numbers in your original file counting the header as line 1, so you can open the CSV, jump straight to the line, fix it, and import the corrected rows again.

Tip

You do not need to strip out the rows that worked before re-importing. Contacts you already have are updated rather than duplicated, so the simplest fix is to correct the file and run the whole thing through again.

The import history table listing past imports with success and fail counts and a download error file action

Bring your unsubscribe list with you when you switch

If you are arriving from Mailchimp, Constant Contact or ActiveCampaign, your old tool has been keeping a list of people who told you to stop. Mailsoftly starts that list empty, and nothing carries it across for you. Your first campaign here will reach every one of those people again unless you move the list yourself, and the people most likely to report you as spam are precisely the ones who already asked you once. That is a legal problem and a deliverability problem in the same envelope, which is why it belongs before your first send rather than after it.

  • Export the opt-outs from your old provider. They all offer it, usually under a name like Unsubscribed or Cleaned contacts, and usually as a CSV. The email address is the only column that has to survive the trip.
  • Import that file the way you would any other, with two deliberate choices: give it its own list, named so that nobody mistakes it for a sending list, and keep the tag the wizard added on Review and Complete. That tag is what makes the batch findable a minute from now.
  • Back on your audience screen, open Advanced Filter and build a single condition: Tag Name, Equals, your tag. Apply it, tick any row to raise the action bar, then press Select all results so the whole filtered set is covered rather than the first page, and choose Unsubscribe.

Mailsoftly reads the consequence back before it does anything: selected contacts will be marked as unsubscribed and will stop receiving your emails. Confirm, and everyone caught by that filter is opted out of everything, which is exactly what a suppression file you carried across should mean. You will find them afterwards on the Unsubscribes screen, in the dropdown under your audience page title.

Careful

The Email subscriptions panel back on Review and Complete is not a substitute for this. Unticking a subscription there opts the batch out of that one subscription and leaves every other kind of mail open to them. A file of people who left your old provider means never again, and never again needs the global switch.

Note

An opt-out your account set can be lifted by your account. An opt-out someone made themselves, through a footer link or a preference page, is locked, and only they can undo it. If your file is large enough that driving it by hand feels wrong, the same result is one API call per address: see Use the Mailsoftly API.

The contacts screen with rows selected and the bulk unsubscribe dialog asking you to confirm before anyone is marked as unsubscribed

Organize contacts into lists

Lists are how you group people for a campaign. On the contact lists screen, Create a Contact List offers two cards: import straight into a new list, or start an empty one and add people later.

  • Inside a list, the Add a contact menu offers Create Contact, Choose from contacts, Import Contacts, and Merge with another list.
  • Add to Another List and Merge with Another List both create lists on the fly: type a name that does not exist yet and the dropdown offers Create Contact List right there.
  • Merge with Another List gives you two option cards, Merge contacts into this list or Merge contacts and create a new list, which reveals a New List Name field so both originals stay as they are.

Split Contact List goes the other way and cuts a list into exactly the number of balanced pieces you ask for, so 7 contacts across 3 lists lands as 3, 2 and 2. Clear list names make your later sends much faster to set up.

The create a contact list chooser offering an import card and an empty list card
The contact lists screen with named lists ready to receive subscribers

See who joined or left a list, and when

Every list keeps its own membership record. Open the list, use the three dot menu beside its name, and choose List activity.

  • One row per event: the address, whether they joined or were removed, where the change came from, and the date. Form submission names the form, Import names the list the file fed, and Admin names the teammate who did it.
  • The search box filters by email address, which is how you answer the question this panel exists for: when did this person get on this list, and who put them there.
  • Thirty entries load at a time, with Load more for the rest. Nothing written here is ever edited or deleted afterwards.

Anyone who can open the list can read its activity, so a colleague can check the record without borrowing your account. The record begins on the day Mailsoftly started tracking membership, so people who joined a list before that show as members with no entry rather than an invented one. Deleting a whole list does not fill this with a removal for every member either, so everything you read here is a real join or a real departure. For one person’s history across every list and subscription at once, the Activity tab on their contact profile is the wider view.

The list activity panel for a contact list showing who joined or was removed with the source and date of each change

Set email subscriptions in bulk or one at a time

If your account uses more than one email subscription, you can decide who receives which, either for a batch of contacts or for one person. Select several contacts on the audience screen and open the Email subscriptions action.

  • Pick the subscription from the dropdown, choose whether the selected contacts should receive it, and apply that to everyone selected.
  • Unsubscribing this way never overrides someone who opted out on their own, and it never touches a global unsubscribe.

On a single profile, the Email subscriptions card shows the same information with the reasons attached. A status badge sits at the top, each row explains how and when the person subscribed or who opted them out, and a row locks when the contact opted out themselves so only they can turn it back on.

A modal for setting the email subscription type on several selected contacts at once
The email subscriptions card on a contact profile showing what a person is opted into and why

Check a list’s health and clean it up

Open a list and List health sits at the top as a single summary row: a colored grade from A to F, a headline such as No risk signals found, and a note of when it was graded.

  • A Details toggle expands the row into the signals behind the grade: addresses on dead domains, domains with no mail server, role addresses like info@ and sales@, disposable addresses, and addresses that have bounced before.
  • The expanded panel also shows the typical bounce and open ranges for a list like yours, with buttons for Clean up list and View full report.
  • Clean up list recounts the numbers live, so you act on what the list holds right now rather than on the last grade. Risky groups are ticked for you; role addresses start unticked, since they are deliverable but rarely engaged.
Careful

If a list has changed a lot since its last check, the old grade is hidden as no longer reliable. Use Re-check list health for a fresh grade before you send. Cleaning up only takes contacts off this list; they are never deleted from your account.

A contact list detail view with the list health summary row at the top
The clean up list modal with checkbox groups for risky address types and a count of the contacts to be removed

Auto-add new subscribers to a list

A general list can also fill itself as people subscribe. In the list header, a bell icon marks a list that grows this way, and the Auto-add subscribers of: control chooses which email subscription feeds it. Picking one asks you to confirm, and if that subscription already feeds another list, it tells you it will stop adding there first, since a subscription can only feed one list.

The pairing is one to one in both directions, one subscription per list and one list per subscription, so the list always mirrors exactly who is subscribed. Adding someone to the list yourself even re-opens the subscription if a teammate had opted them out earlier, though a person’s own opt-out is never overridden. To create the subscriptions and their links in the first place, see Design your preference center.

Note

Auto-add only ever adds contacts. If someone opts out of the email subscription later, they stay on the list unless you remove them yourself.

A contact list header with a bell icon and an auto-add control that adds subscribers of an email subscription to the list

Ready to try it in your own account?

Free to start with your Google Workspace or Microsoft 365 account. No credit card required.

Keep going