Contacts and replies

Why were contacts not imported?

In short

Why were my contacts not imported in Reply?

Most missing contacts were not lost; they were skipped or rejected, and the import result notification says which. The two most common causes are contacts that already exist in your account, skipped unless you choose Update Missing Fields, and values that do not fit their mapped field.

Quick fix

  1. Open the notification center and find the import result. It reports four numbers: Imported, Updated, Skipped and Import Errors.
  2. If contacts landed in Skipped, re-import the same file and set Matched Records to Update Missing Fields.
  3. If you are importing into a sequence and the contacts are already in another one, choose Move to this one or Add to this one and keep in current – otherwise contacts already in a sequence are left where they are.
  4. If contacts landed in Import Errors, check the columns named in the result against the field each was mapped to, fix the formatting, and re-import only those rows.
  5. Confirm the count in People → Contacts matches what you expected.

Didn't work? Contact Reply support; the team can check your account directly.

Symptom

You uploaded a CSV and the contact count does not match the file. Sometimes none appear at all. The import dialog may have stayed open for several minutes, or you closed it unsure whether the import survived. The contacts may be missing from the sequence, from People → Contacts, or from both.

Most likely causes

CauseHow to recognize it
The contacts already exist, and Matched Records was set to SkipThe result shows a high Skipped count and a low Imported count
The contacts already exist in another sequence, and no move option was chosenContacts are present in People → Contacts but did not join the target sequence
A value does not fit its mapped field – most often a phone number containing +, spaces or - in a Number-type custom fieldThe result shows Import Errors, and the affected column is a phone or other custom field
The contacts have no email address and Records Without Emails was set to SkipCommon with LinkedIn exports; Skipped roughly matches the rows with an empty email column
The import is still runningThe dialog stays open, and no result notification has arrived yet
The file was rejected before importNo result notification arrives at all. Exports often carry thousands of empty trailing columns that inflate the file far beyond its visible content
Nothing imported at all, and you chose LinkedIn Profile URL as the contact identifierNo contacts were added or updated, and the file contains people who are already in your account
Fewer contacts entered the sequence than were importedThe import succeeded, but the sequence adds contacts gradually – see Limits

Diagnostic checklist

  1. Read the result notification first. It separates Imported, Updated, Skipped and Import Errors. Skipped means the contact already existed; Import Errors means a row was rejected.
  2. Check whether the contacts exist at all. Search two or three in People → Contacts. If they are there, the problem is sequence assignment, not the import.
  3. Compare Skipped against your existing contacts. A Skipped count close to your overlap points at the Matched Records setting.
  4. Compare Import Errors against your phone and custom-field columns. Values containing +, spaces or - cannot go into a Number field.
  5. Count rows with an empty email column. If that matches Skipped, the Records Without Emails setting is the cause.
  6. If no notification ever arrived, the file did not reach import. Check the CSV for empty trailing columns and check the row count: a single import accepts up to 100,000 rows.

Resolution

Contacts already exist and were skipped

Re-import the same file and set Matched Records to Update Missing Fields. Existing contacts are then updated instead of skipped. Choose Skip only when you want to leave existing contact data untouched.

Contacts exist but did not join the sequence

When you import directly into a sequence, contacts already in another sequence are left alone by default. Re-import and choose Move to this one, or Add to this one and keep in current to have them run in both.

A column was rejected

Change the destination field's type to Text, re-map the column, and import those rows again. This is the usual fix for phone numbers: +1 555 0100 is not a number, so a Number field rejects the row.

Contacts have no email address

Set Records Without Emails to Add Generated Emails. Reply assigns a placeholder address so the contacts import. They are skipped by email steps but work normally in LinkedIn, call, SMS and WhatsApp steps.

The dialog is still open

Close it. The import continues in the background and notifies you when it finishes. Detect contact time zone automatically can add up to 30 minutes to a large import.

Nothing imported at all, with LinkedIn Profile URL as the identifier

If you chose LinkedIn Profile URL as the contact identifier and the file contains a contact whose email address already belongs to someone in your account, the import can stop without importing anything.

Re-import with Email as the contact identifier, or remove those already-existing contacts from the file and import the rest.

The file was never accepted

Delete empty trailing columns: exports frequently add thousands, and they count toward the file's size even though they hold no data. If it is still rejected, split the file. A single import accepts up to 100,000 rows.

Verification

Re-open the notification center: Imported plus Updated should account for the rows you expected. Then confirm the contacts appear in People → Contacts, and (if you imported into a sequence) on the sequence's People tab.

Prevention

  • Choose a contact identifier that is filled in and unique for every row. It is what matches a row to an existing contact, so a good one prevents both duplicates and unexpected skips. Email is the most reliable choice when your contacts have email addresses.
  • Keep phone numbers and other punctuation-bearing values in Text fields.
  • Clean exported files first: remove empty columns, and confirm the email column is populated.
  • Set Matched Records and Records Without Emails deliberately on every import rather than accepting the defaults.

FAQ

What does Skipped mean in the import results?

Skipped means Reply matched the row to a contact you already have and left it unchanged. It is not an error. Re-import with Matched Records set to Update Missing Fields if you wanted those contacts updated.

Where do I see what happened to each row?

In the notification center; the import result reports Imported, Updated, Skipped and Import Errors for the whole file.

Still stuck? Contact Reply support

If these steps didn't solve the problem, the Reply support team can look at your account directly. Open the Reply Help Center and send the team a message.

To get an answer faster, include:

  • the four counts from the import result notification
  • which contact identifier and which Matched Records option you chose
  • roughly when you ran the import, and your timezone

Don't send passwords, API keys, or access tokens.

Build with Reply

  • REST API: Import contacts – import contacts programmatically, up to 1,000 per request
  • MCP: docs.reply.io/mcp – import and update contacts from an AI assistant