> For the complete documentation index, see [llms.txt](https://docs.mediarithmics.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.mediarithmics.io/setup-and-monitor/collect-and-manage-your-data/import-data-in-batch/data-loader/load-identifiers.md).

# Load identifiers

Associate several identifiers from a CSV file with a single user.

## Your goal

Declare, from a CSV file, that several identifiers on the same row belong to the same person - so their UserPoints become one.

## Expected outcome

One user per row, carrying all the identifiers on that row.

{% hint style="danger" %}
This operation merges UserPoints, and a merge cannot be undone. Check the file before uploading: a row that wrongly pairs two people permanently joins their histories.
{% endhint %}

## Prerequisites

* A CSV file meeting the [file requirements](/setup-and-monitor/collect-and-manage-your-data/import-data-in-batch/data-loader.md#file-requirements), with **at least two identifier columns**.
* The compartments and registries the identifiers belong to.

## Configure the import

You must configure **at least two properties** from the CSV that you want to bind together. For each of them:

* Select the **CSV property** to use as the identifier.
* Choose the **identifier type**: `USER_ACCOUNT`, `USER_EMAIL`, or `USER_DEVICE_TECHNICAL_ID` - and specify the related **compartment** for an account, or **registry** for a device technical ID.
* Optionally select a **hashing** method. Hashing is the only transformation available on identifiers, and only one method per field.

## What happens per row

Every identifier provided is used to match an existing user:

| Situation                                | Result                                                               |
| ---------------------------------------- | -------------------------------------------------------------------- |
| A user is found with a single identifier | The other identifiers are attached to that user.                     |
| Several users are found                  | They **merge** into a single user with all the identifiers attached. |
| No user is found                         | A **new** user is created, with all the identifiers attached.        |

## Example file

```csv
Email_sha256,Email_md5,user_account,aaid
ce5bfa8406dd062b059a4b841bf36de186977fe515dc5a704a58e973cab1a5d5,0859e624f8a3eae16afd07a516d21259,X1234,a5ac7016-f329-4ef9-9208-1263aaf12dae
9980f7e8331dce3bfa2e3b3ab6b69dcb960658bcb400801cece7873afeb5a905,be61735432bd1fb5a84de127e3423e35,Y12,dec1c0b2-d7ed-4c21-8b01-3cad93a919c5
```

Four identifier columns on one row: two email hashes with different functions, an account ID, and a mobile advertising ID. Each is mapped to its type, and the row declares that all four are the same person.

{% hint style="info" %}
Two hashes of the same address are two distinct identifiers in the platform, so declaring both is meaningful when your partners use different functions.
{% endhint %}

## Verify

* The transformation report shows no errors before upload.
* The execution succeeds with the expected success count.
* A test user that had several UserPoints now has one, carrying all the identifiers.
* The UserPoint total does not fall much further than the number of merges you expected. See [Monitor collection volume](/setup-and-monitor/operate-and-monitor/monitor-collection-volume.md).
* No ordinary user becomes a [hyper point](/setup-and-monitor/collect-and-manage-your-data/design-your-data-model-and-schema/user-identity/userpoint-and-identity-graph.md#hyper-point).

## Related pages

<table data-view="cards" data-search="false"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Enrich users with identifiers</strong></td><td>The same job through the API.</td><td><a href="/setup-and-monitor/collect-and-manage-your-data/import-data-in-batch/enrich-users-with-identifiers.md">Enrich users with identifiers</a></td></tr><tr><td><strong>Resolve identities</strong></td><td>The strategy behind these declarations.</td><td><a href="/setup-and-monitor/collect-and-manage-your-data/design-your-data-model-and-schema/user-identity/resolve-identities.md">Resolve identities</a></td></tr><tr><td><strong>Data loader</strong></td><td>The upload flow and file requirements.</td><td><a href="/setup-and-monitor/collect-and-manage-your-data/import-data-in-batch/data-loader.md">Data loader</a></td></tr></tbody></table>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.mediarithmics.io/setup-and-monitor/collect-and-manage-your-data/import-data-in-batch/data-loader/load-identifiers.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
