Contacts and replies
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
- Open the notification center and find the import result. It reports four numbers: Imported, Updated, Skipped and Import Errors.
- If contacts landed in Skipped, re-import the same file and set Matched Records to Update Missing Fields.
- 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.
- 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.
- 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
| Cause | How to recognize it |
|---|---|
| The contacts already exist, and Matched Records was set to Skip | The result shows a high Skipped count and a low Imported count |
| The contacts already exist in another sequence, and no move option was chosen | Contacts 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 field | The 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 Skip | Common with LinkedIn exports; Skipped roughly matches the rows with an empty email column |
| The import is still running | The dialog stays open, and no result notification has arrived yet |
| The file was rejected before import | No 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 identifier | No contacts were added or updated, and the file contains people who are already in your account |
| Fewer contacts entered the sequence than were imported | The import succeeded, but the sequence adds contacts gradually – see Limits |
Diagnostic checklist
- 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.
- 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.
- Compare Skipped against your existing contacts. A Skipped count close to your overlap points at the Matched Records setting.
- Compare Import Errors against your phone and custom-field columns. Values containing
+, spaces or-cannot go into a Number field. - Count rows with an empty email column. If that matches Skipped, the Records Without Emails setting is the cause.
- 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.
Related
- Import contacts – the full import procedure
- Limits – import size and sending limits
- Why was a contact not enrolled? – the contact imported but never started the sequence
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