---
updatedAt: 2026-09-16T08:36:58.000Z
agentTools:
  projectIndex: https://docs.reteno.com/llms.txt
---

# File Uploading

Upload information about your customers or subscribers and use this data for targeting and segmentation.

## File Uploading

1. [Prepare a contact list](https://docs.reteno.com/docs/file-preparation) in one of the following formats: `XLS`, `XLSX`, `CSV`, or `TXT`. The file must include phone numbers or emails — identifier fields by which the system recognizes unique contacts.

2. Go to the **Contacts → Import** tab and click **Upload file**.

<Image align="center" alt="Contacts import page with the Contacts menu and Import tab underlined and the Upload file option highlighted in red" width="80% " src="https://files.readme.io/e41ba5cbab631dd6fa86d6eee4875b793f87902ac0c44ea8eef14f9d90fefa33-image01.png" />

3. Drag the file to the upload area or click on it to upload the contact information file.

<Image align="center" alt="File with contacts upload dialog with the drag-and-drop upload area highlighted in a red box" width="80% " src="https://files.readme.io/225b37f62762e215a4d8084f6ebc95f9dab2e1eedfffcdc48e0448b0b9dd0385-image02.png" />

You will move on to contact field mapping after downloading the file.

## Mapping Contact Fields

1. Select the field by which the uniqueness of contacts will be established. When importing, a contact will be searched for in this field. If the contact is found in the Reteno database, it will be updated according to the uploaded file. It will be created if the contact is not found ([more about contact IDs and field matching](https://docs.reteno.com/docs/customer-identifiers-and-matching)).

<Image align="center" alt="Map Contact Fields screen with the Unique contact field by option underlined in red, set to External ID" width="80% " src="https://files.readme.io/1b9a81e195493c9b9ff4c5ec8deea93caeaa407957fafbdda0867376e6b3872a-image03.png" />

> 📘 Important
>
> * We recommend setting the uniqueness of contacts using an **external ID**, which allows you to avoid duplicating contact profiles, collect all available data into a single profile, and obtain complete information about the contact’s interaction with your company. [More details >](https://docs.reteno.com/docs/external-id-for-creating-and-updating-users)
> * When your file contains **External ID** **and** **User ID**, **External ID** maps to system **externalCustomerId** field and becomes the unique contact identifier. User ID is stored like any other [additional custom field](https://docs.reteno.com/docs/usage-of-additional-fields).
> * When your file contains **User ID** **only**, it maps to system **externalCustomerId** field and becomes the unique contact identifier.
> * The uniqueness and column mapping settings are carried over from your previous import. Before uploading, check the **Unique contact field by** line: if it still shows the value from your last import and you need External ID, assign External ID to the column manually — the uniqueness then changes to External ID.
> * If the imported file column assigned as External ID contains empty values, the Reteno system runs a check and reports the number of errors before and after importing the file.
> * If the file contains several rows with the same value of the uniqueness identifier, one contact is created or updated from them, and the remaining duplicate rows are skipped.
> * If uniqueness is set by email and the base already contains several contact profiles with that email, one of them is updated — which one exactly is not guaranteed. To update a specific profile, set uniqueness by **external ID**.
> * If uniqueness is set by **external ID**, rows with the same email but different external IDs are treated as different contacts: each one creates a separate contact with that email.

2. Select whether to import empty values. If this option is enabled, filled contact fields will be replaced by empty values from the file when updated as a result of import.

<Image align="center" alt="Map Contact Fields screen with the Import empty values toggle underlined in red, switched off" width="80% " src="https://files.readme.io/9afde2282f63c83fc3885f2bc9826aac25b12a84fe80ccfb4d52cfc50169f325-image04.png" />

3. Select whether to ignore the first line in the file: turn off the option if the contact information begins with the first line or enable it if the information in the file starts with a technical line with column names.

<Image align="center" alt="Map Contact Fields screen with the Ignore first line toggle underlined in red, switched on" width="80% " src="https://files.readme.io/8673dca55303cd2673bd89f78f583f8b07cb1053c17f4c71c3d4cdbcd85138eb-image05.png" />

4. Set the correspondence between the fields from the file and [additional fields](https://docs.reteno.com/docs/usage-of-additional-fields) in the contact card in Reteno. If you don't need information from a column, set it to **Ignore**. There is no field for a mobile push token in this list: the mobile SDK passes tokens when a user opens the app.

<Image align="center" alt="Map Contact Fields screen with step 4 Map fields underlined in red, showing file columns mapped to Email, Phone number, First name, Last name, and Skip" width="80% " src="https://files.readme.io/698b9e40a9310a7391364f2c6d0108b8eb568e7e22324912b3b36b50d1b3f040-image06.png" />

### Data Checking

The value will have a red or orange marker if it does not match the field format.

* Errors in the field identifying the contact (email or SMS) are highlighted in red.
* Warnings about inconsistencies in all other fields are highlighted in orange.

Contacts with errors are not saved or updated in the system, and fields with warnings are not updated.

<Anchor label="Read more about contact field values and formats >" target="_blank" href="https://docs.reteno.com/docs/contact-fields">Read more about contact field values and formats ></Anchor>

The first 100 contacts from the file are available for viewing in the download window. The system automatically calculates the number of errors and warnings in the first hundred. This is done to ensure that the data in the import file is valid and can be loaded correctly into the selected fields.

You can manually correct errors in the preview window (the **Start the search of errors** button) or immediately proceed to the next import stage (the **Next** button).

<Image align="center" alt="Import preview showing no errors or warnings found in 10 contacts, with the Next button highlighted in red" width="80% " src="https://files.readme.io/27008554321245cab1c60b22f97564c3598058d968e5d902a38cdf2c90fe4342-image07.png" />

## Import Parameters

1. Determine which segments your contacts should fall into after import. This can be a new list segment or existing list segments. For a new segment, you can [add tags](https://docs.reteno.com/docs/adding-tags) to help with filtering and set a name instead of the automatically generated one.

<Image align="center" alt="Import parameters screen with Import to a new list segment and Add contacts to the existing list segments toggles underlined in red, both switched on" width="80% " src="https://files.readme.io/d9281a5688ae577dc0e236b6f4d105af66ed7314052b3fd95b650c20451031d0-image08.png" />

2. By importing contacts, you can restore and update the contacts contained in the file. To do this, make the corresponding switcher active.

<Image align="center" alt="Import parameters screen with the Restore and update previously deleted contacts toggle underlined in red, switched on" width="80% " src="https://files.readme.io/73ec8262d2ec5772c6131e46e6a1d261321c868f45585892c834e4d9c1a892a8-image09.png" />

> 📘 Note
>
> With the switcher off, deleted contacts stay outside the import: they are neither matched nor changed. A row whose identifier matches only a deleted contact therefore creates a new contact instead of updating the deleted one, which is one way duplicates appear after an import.
>
> To check whether the deleted contacts in your file are duplicates of active ones, export the **Deleted** list and compare it with the file by External ID.

4. Confirm that you know the terms and conditions of system use and import.
5. Click **Start Import**.

Once completed, the file will appear in the history, showing the segments the contacts were added to, the user who uploaded the file, and details about the contacts (number of new, updated, duplicates, etc.)

<Image align="center" alt="Import History section listing a completed Contacts import with 10 new contacts, 0 updated, and 0 duplicates or errors" width="80% " src="https://files.readme.io/1d3cfa1fd1113461d4ed9a18f63838a8ce51fcace6eded1344110be214dbec6c-image10.png" />