# Activate customer profiles via files
## Learn how to export customer profiles to a file, ready for activation.
Krenalis lets you export customer profiles from your data warehouse into files that can be shared or ready to feed into marketing platforms, analytics pipelines, or AI applications.
## How it works
1. **Choose where to store files.** Connect a file storage such as S3, SFTP, or an HTTP destination.
2. **Select your audience.** Decide which customer profiles to include in each export.
3. **Pick a format.** Choose CSV, Excel, JSON, or Parquet.
4. **Schedule exports.** Run them manually or automatically at regular intervals.
The result: Krenalis exports all Customer Model properties as they are, without transformations, and keeps generating up-to-date files with your latest customer data.
## Steps
### 1. Connect a storage
To get started, connect to the file storage where your file will be located (unless you've already connected it earlier, for example for another export).
1. Go to the **Destinations** page of your Krenalis workspace.
2. Click on **Add a new destination ⊕** and click on the card corresponding to your file storage type (**S3**, **SFTP**, or **HTTP POST**).
3. Click on **Add destination...**.
4. Enter the connection details for the storage:
### S3
| Field | Description |
|-------------------|-----------------------------------------------------------------|
| Access Key ID | Your AWS access key ID. |
| Secret Access Key | Your AWS secret access key. |
| Region | AWS region where the S3 bucket is located. |
| Bucket name | Name of the S3 bucket that contains the files you wish to read. |
### SFTP
| Field | Description |
|--------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Host | Hostname or IP address of the SFTP server. |
| Port | Port number used for the SFTP connection (default is `22`). |
| Username | Username for authentication. |
| Password | Password associated with the username. |
| Temporary directory path | Optional temporary directory path to which the file will be written before being atomically renamed to the target name. Requires the _posix-rename\@openssh.com_ extension for the rename operation. |
### HTTP POST
| Field | Description |
|---------|----------------------------------------------------------------|
| Host | Hostname or IP address of the HTTP server. |
| Port | Port used to connect (default is `443` for `https`). |
| Headers | Key/value pairs of HTTP headers to send with the POST request. |
### File System
> ⚠️ **File System is for development and testing only. Not recommended for production.**
>
> Use this storage for local testing without relying on remote services. To use the File System storage, [run Krenalis with Docker Compose](https://www.krenalis.com/docs/installation/using-docker-compose.md) or include it in your Krenalis build and set the [required environment variables](https://www.krenalis.com/docs/configuration/environment-variables.md#file-system).
| Field | Description |
|---------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Simulate high latency during I/O operations | This setting simulates random I/O latency between 0.3s and 1.3s during I/O operations to test how Krenalis and connected systems behave under slower storage or network conditions. |
You don't need to specify the file name at this step — you'll do that after adding the storage.
Click **Add** to confirm the configuration. The connection you just created is a destination connection. You can access it later by clicking **Destinations** section in the sidebar.
💡 For best security, use credentials with write-only access limited to the destination path.
### 2. Add a pipeline to export profiles
In the new connection for S3, click **Add pipeline...** next to the **Export users** pipeline.
[Add pipeline](https://www.krenalis.com/docs/activate-profiles/images/add-pipeline.s3.png)!
Each export pipeline tells Krenalis what data to include, how to format it, and where to store the resulting file.
You can create multiple pipelines for the same storage — for example, one for all customers, another for active users, or one per region or business unit.
This flexibility allows you to maintain different export rules, file types, or schedules within a single storage connection.
### 3. Filter profiles
If you don't want to export all profiles into the file, use filters to select which profiles to export. Only profiles that match the filter conditions will be exported. If no filters are set, all profiles will be exported. For more information on how to use filters, see the [Filters documentation](https://www.krenalis.com/docs/filters.md).
[Filter](https://www.krenalis.com/docs/activate-profiles/images/filter.png)!
### 4. Choose a format
Choose the format of the file you want to export. You can change it later if needed.
[Select file format](https://www.krenalis.com/docs/activate-profiles/images/select-file-format.png)!
### 5. Enter file settings
Fill in the following fields:
#### CSV
[CSV format settings](https://www.krenalis.com/docs/activate-profiles/images/csv-format-settings.png)!
Set the following options for your CSV file:
| Field | Description |
|--------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| File path | Path of the CSV file, relative to the storage root path. When you enter the relative path, Krenalis displays the full absolute path so you can verify it's correct.
You can include [placeholders in the file name](#file-path-placeholders) to automatically generate unique files each time you export, preventing overwrites. |
| Compression | Compression format. If the CSV file is compressed, select the compression format; Krenalis automatically decompresses the file upon reading. |
| Order users by | Property by which profiles should be ordered in the file. |
| Separator | Character used to separate fields. By default, this is a comma. Specify another character if different. |
| Use CRLF | If selected, the Windows line ending format (CRLF) will be used. |
#### Excel
[Excel format settings](https://www.krenalis.com/docs/activate-profiles/images/excel-format-settings.png)!
Set the following options for your Excel file:
| Field | Description |
|--------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| File path | Path of the Excel file, relative to the storage root path. When you enter the relative path, Krenalis displays the full absolute path so you can verify it's correct.
You can include [placeholders in the file name](#file-path-placeholders) to automatically generate unique files each time you export, preventing overwrites. |
| Sheet | Name of the file's sheet.
It cannot start or end with a single quote `'`, and cannot contain any of the following characters: `*`, `/`, `:`, `?`, `[`, `\`, and `]`. |
| Compression | Compression format. Note that the XLSX format is already compressed by design, so select a compression format only if you want the file additionally compressed. Krenalis automatically compresses the file when writing it. |
| Order users by | Property by which profiles should be ordered in the file. |
#### JSON
[JSON format settings](https://www.krenalis.com/docs/activate-profiles/images/json-format-settings.png)!
Set the following options for your JSON file:
| Field | Description |
|-------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| File path | Path of the JSON file, relative to the storage root path. When you enter the relative path, Krenalis displays the full absolute path so you can verify it's correct.
You can include [placeholders in the file name](#file-path-placeholders) to automatically generate unique files each time you export, preventing overwrites. |
| Compression | Compression format. Krenalis automatically compresses the file upon writing. |
| Order users by | Property by which profiles should be ordered in the file. |
| Indent the generated output | If selected, the JSON source code will be indented. |
| Generate an ASCII output, by escaping any non-ASCII Unicode | If selected, the JSON source code will have all the non-ASCII characters escaped. The uncompressed file might be larger, but the JSON content itself stays exactly the same. |
| Allow non-standard NaN, Infinity, and -Infinity values | When selected, Krenalis writes special floating-point values exactly as they are:
`{ "a": NaN, "b": Infinity, "c": -Infinity }`
Some tools, such as Python and pandas, can read these values, but strict JSON parsers might fail to parse them.
When not selected, Krenalis replaces them with `null`. |
> For details on how a JSON file is exported, see [Exported JSON format](https://www.krenalis.com/docs/integrations/json.md#exported-json-format).
#### Parquet
[Parquet format settings](https://www.krenalis.com/docs/activate-profiles/images/parquet-format-settings.png)!
Set the following options for your Parquet file:
| Field | Description |
|--------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| File path | Path of the Parquet file, relative to the storage root path. When you enter the relative path, Krenalis displays the full absolute path so you can verify it's correct.
You can include [placeholders in the file name](#file-path-placeholders) to automatically generate unique files each time you export, preventing overwrites. |
| Compression | Compression format. Krenalis automatically compresses the file upon writing. |
| Order users by | Property by which profiles should be ordered in the file. |
> For technical details on how a Parquet file is exported, see [How Krenalis types are exported to Parquet](https://www.krenalis.com/docs/integrations/parquet.md#how-krenalis-types-are-exported-to-parquet).
#### File path placeholders
Using the following placeholders in the file path helps you create a new file for each export instead of replacing the existing one. For example, `exports/customers_${today}.csv` will produce a different file every day.
| Placeholder | Replacement | Example result |
|-------------|--------------------------------------------|--------------------------------------------------------------|
| `${today}` | Current date (YYYY-MM-DD) | `customers_${today}.csv` → `customers_2025-10-29.csv` |
| `${now}` | Current date and time (readable timestamp) | `customers_${now}.csv` → `customers_2025-10-30-16-33-25.csv` |
| `${unix}` | UNIX timestamp (seconds since 1970) | `customers_${unix}.csv` → `customers_1730312005.csv` |
### 6. Save your changes
When you're done, click **Add** (or **Save** if you're editing an existing pipeline). The new pipeline will appear in the storage connection page.
## Pipelines
Once saved, the new pipeline appears in the pipelines list for S3. From here, you can monitor export, adjust filters, and manage transformations. Each pipeline defines how and when profiles flow from your warehouse to S3.
For a single S3 connection, you can also create multiple pipelines to export different files.
[Pipeline to export profiles](https://www.krenalis.com/docs/activate-profiles/images/pipelines.csv.png)!
| Column | Description |
|--------------|--------------------------------------------------------------------------------------------------------------------------------|
| **Pipeline** | Name and description of the export pipeline. |
| **Filters** | Conditions used to select which profiles are exported. If not set, all profiles are included. |
| **Enable** | Switch to activate or deactivate the export pipeline. When disabled, the pipeline will not run, even if a schedule is defined. |
| **Run now** | Run the export immediately, one time only. _Available only when the pipeline is enabled_. |
| **Schedule** | Frequency of automatic exports. You can also run the export manually at any time. |
| **Manage** | Edit settings such as filter, file format, path, and other file options. |
| **⋮ (More)** | Additional options, such as deleting the pipeline. |