> For the complete documentation index, see [llms.txt](https://user.netmera.com/netmera-user-guide/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://user.netmera.com/netmera-user-guide/messaging-features/ftp-push-and-imports/import-profile-attributes-via-ftp.md).

# Import profile attributes via FTP

Use this workflow to update profile attributes for existing users in bulk. Define the attributes in Netmera first, prepare a delimited text file, and upload it to the dedicated `Profile` folder.

### Step 1: Create the profile attributes

Create every profile attribute that the import file will update. The attribute names in the file must exactly match the attribute names in the panel.

For example, create a `membershipTier` profile attribute before importing `membershipTier` values.

Learn more about [Profile Attributes](/netmera-user-guide/customer-data/profile-attributes.md).

### Step 2: Prepare the FTP folder

Ask your DevOps team to create a `Profile` folder under your application’s FTP path. Upload profile-attribute imports only to this folder.

### Step 3: Create the import file

Create a plain-text `.txt` file. Each row represents one user record. Use the tilde (`~`) character as the delimiter.

The fields must appear in this order:

1. `extID` — required user identifier.
2. `email` — optional.
3. `deviceToken` — optional.
4. `msisdn` — optional phone number.
5. One or more profile attributes to update.

For example:

```
Exid~~~email~deviceToken~msisdn~profileattribute
ExtId1~~~email1~deviceToken1~+905XXXXXXXXX~membershipTier1
ExtId2~~~email2~deviceToken2~+905XXXXXXXXX~membershipTier2
ExtId3~~~email3~deviceToken3~+905XXXXXXXXX~membershipTier3
```

The header identifies each column. Each following row supplies values for one user. Empty optional fields still require their delimiter so later values remain in the correct column.

{% hint style="info" %}
Use profile attribute names that exactly match the attributes created in the panel. Create missing attributes before uploading the file.
{% endhint %}

### Step 4: Format phone numbers

When you include `msisdn`, use the international E.164 format. Start the number with `+`.

For example, use `+905XXXXXXXXX`.

### Step 5: Upload the file

1. Give the file a unique name with a date and time.
2. Upload the `.txt` file to the `Profile` folder.
3. Wait for processing to complete.

For example, use `profile-attributes-20260810-0900.txt`. Unique filenames prevent a new upload from being confused with a previous file.

When Netmera processes the file successfully, it disappears from the folder.

### Step 6: Plan large uploads

Split large imports into smaller files before uploading them. This is recommended for updates affecting more than 300,000 profiles.

Upload files during business hours. Nighttime processing jobs can affect processing.

{% file src="/files/qnM3OEvvZvoKWmYE5MCE" %}
Importing FTP Profile Attribute
{% endfile %}


---

# 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 dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://user.netmera.com/netmera-user-guide/messaging-features/ftp-push-and-imports/import-profile-attributes-via-ftp.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
