# FTP Push and Imports

Send push notifications and update user data on Netmera by dropping files on FTP.

Use this when you want a simple, automated integration without API calls.

### Before you start

You need these in place:

* FTP access enabled for your app by Netmera.
* FTP credentials acquired.
* If IP allowlisting is used, share your **public egress IP** with Netmera.

If your goal is **report exports**, use the separate [data-export](https://user.netmera.com/netmera-user-guide/reports-and-analytics/reports/data-export "mention") module.

### Send push notifications via FTP (FTP Push)

{% stepper %}
{% step %}

#### Enable FTP Push and get credentials

Work with Netmera or your DevOps teams to access FTP features and get the FTP host, port, path, and credentials.
{% endstep %}

{% step %}

#### Prepare the CSV file

Create a **UTF-8** encoded CSV file. Use **semicolon (`;`)** as delimiter.

Columns must be in this order:

* `ExternalID`
* `Text`
* `Deeplink`

Format per row:

`ExternalID;Text;Deeplink`
{% endstep %}

{% step %}

#### Upload the file to FTP

Upload the CSV to the directory provided by DevOps.

Netmera processes the file and sends the notifications.
{% endstep %}
{% endstepper %}

{% hint style="warning" %}
**Warning: FTP Push Notifications with Inbox Inclusion**

All push notifications sent via FTP include the **Inbox** option by default. If your application does not have an Inbox feature, this will not affect you. However, if your application does have the Inbox feature, **notifications sent via FTP** **will also appear in the Inbox.**
{% endhint %}

{% hint style="info" %}
**CSV rules**

* Use **one push per line**.
* Keep `;` out of the **Text** value.
* Keep filenames unique (add timestamp).
  {% endhint %}

{% hint style="info" %}
**Example rows**

```
12345;Welcome! Check out what’s new.;https://example.com/welcome
67890;Exclusive offers for you.;https://example.com/offers
```

{% endhint %}

{% hint style="info" %}
**Line breaks in push text**

Use `\n` to break lines inside the `Text` field.

```
Welcome!\nEnjoy exploring our latest features.
```

When displayed, it will appear as:

```
Welcome!  
Enjoy exploring our latest features.
```

{% endhint %}

{% file src="<https://1642824329-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FX6uilbEAw42gqsudlclY%2Fuploads%2FwLUQCIiLSM6AMEsvff2f%2FImporting%20FTP%20Push.csv?alt=media&token=b9daeb41-8248-4c75-aaa5-2dcb480f99d4>" %}
Importing FTP Push
{% endfile %}

### Import profile attributes via FTP

Use this to update existing users’ attributes in bulk.

#### 1) Create attributes in the panel

Attribute names in the file must match the profile attributes in the panel.

See [Profile Attributes](https://user.netmera.com/netmera-user-guide/customer-data/profile-attributes).

#### 2) Create the `Profile` folder on FTP

Ask DevOps to create a `Profile` folder under your FTP path.

#### 3) Prepare the `.txt` file

Use `~` as delimiter.

First line is the pattern header.

It starts with `~~~` and lists the columns in order.

Required order:

* `extID` (required)
* `email` (optional)
* `deviceToken` (optional)
* `msisdn` (optional)
* one or more profile attributes to update

Example:

```
~~~extID~email~deviceToken~msisdn~membershipTier
12345~user@example.com~token1234~+905055555555~gold
```

#### 4) Upload to the `Profile` folder

Upload the file with a unique filename (add date-time).

Notes:

* Attribute names in the file must match profile attributes in the panel.
* Create missing attributes before uploading.
* Use `+` (E.164) for `msisdn`. Example: `+905XXXXXXXXX`.

{% hint style="info" %}
**How to confirm processing**

When the file is processed successfully, it will disappear from the folder, indicating completion.
{% endhint %}

{% hint style="info" %}
**Additional Recommendations:**

* **For large data uploads** (e.g., updating attributes for over 300,000 profiles), split the data into smaller files and upload them individually.
* Ensure **unique** **filenames** for each file.
* We recommend uploading files **during** **business hours** as nighttime processing jobs may interfere.
  {% endhint %}

{% file src="<https://1642824329-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FX6uilbEAw42gqsudlclY%2Fuploads%2F9chNynvPii9jgoVmga6H%2FFTP%20Profile%20Attribute.txt?alt=media&token=e9ea8f4e-632a-4c3c-a965-029b730d5265>" %}
Importing FTP Profile Attribute
{% endfile %}

### Troubleshooting

If a file is not processed:

* Check delimiter and column order.
* Check file encoding (**UTF-8**).
* For profile imports, confirm attribute names exist and match exactly.
* Keep filenames unique. Avoid uploading the same name twice.

If you still see issues, share the file name and timestamp with support.
