> ## Documentation Index
> Fetch the complete documentation index at: https://parabola.io/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Connect FTP to Parabola

> Pull CSV, TSV, Excel, XML, JSON, and EDI files from FTP, SFTP, and FTPS servers into Parabola, and write results back to remote folders with merge-tag file names.

## What is FTP?

[FTP (File Transfer Protocol)](https://en.wikipedia.org/wiki/File_Transfer_Protocol) is a standard network protocol used to transfer files between a client and a server over the internet. It enables businesses to securely upload, download, and manage files on remote servers. FTP is commonly used for bulk data transfers, website management, and automated file exchanges between systems.

## Pull from FTP

Pull in files from an FTP, SFTP, or FTPS server. Target exact files, or find files based on rules within a folder. Supports csv, tsv, excel, xml, and json file parsing. Can parse edi files as csv.

## Connecting to your FTP server

The first thing that you need to do is connect to your server in order to pull in any files.

When you first add an FTP step to a flow, you can open it and will see an Authorize button.

Click **Authorize**, and you will see this form:

<Frame>
  <img src="https://mintcdn.com/parabola-7119dfb0/ax03C-lTVjtzT6TL/images/integration/image-64.png?fit=max&auto=format&n=ax03C-lTVjtzT6TL&q=85&s=37c60fdc4de0d19a5eeb3d65d3599a24" alt="FTP authorization form with transfer protocol, host, username, password, and port" width="608" height="601" data-path="images/integration/image-64.png" />
</Frame>

You will need to fill in each field in order to connect.

The **Port** can be manually set, or it will default to a port depending on which choice you have selected for the transfer protocol.

Using FTP (instead of SFTP or FTPS) is **not recommended**. Most FTP servers offer one of the other options.

If you are connecting via SFTP and are using a private key to connect, you will need to check the "Use public key authentication" box to see the option to upload that key and connect.

## Editing your FTP connection settings or adding another connection

If you need to edit or add another connection, open your FTP step, click on "**Select accounts**", and then either click to **add a new account**, or **edit** the existing one.

After editing your connection settings, click the **refresh** button to have the step re-connect with the new settings.

## Pulling in a specific file

The main option at the top of the step allows you to switch between pulling in a specific file and a file based on rules.

<Frame caption="Pulling in a file at the root folder">
  <img src="https://mintcdn.com/parabola-7119dfb0/ax03C-lTVjtzT6TL/images/integration/image-65.png?fit=max&auto=format&n=ax03C-lTVjtzT6TL&q=85&s=16d5aa6f67a02e41fd74df82d13b1357" alt="Pull from FTP step configured to pull a specific file at the root folder" width="538" height="174" data-path="images/integration/image-65.png" />
</Frame>

When pulling in a specific file, enter the path to that file. All paths should start with */* and then progress through any folders until ending in the name of the file and its extension.

<Frame caption="Pulling in a file within a folder">
  <img src="https://mintcdn.com/parabola-7119dfb0/ax03C-lTVjtzT6TL/images/integration/image-66.png?fit=max&auto=format&n=ax03C-lTVjtzT6TL&q=85&s=e81503e79db8047ea2a983c6d6610dfb" alt="Pull from FTP step pulling a specific file from inside a folder" width="534" height="178" data-path="images/integration/image-66.png" />
</Frame>

Click the `3-dot more` menu to override how to parse a file. By default, this step will parse the file based on the extension of the file. But you can change that. For example, if you have a .**txt** file that is really a **csv** file inside, you can choose to parse that txt file as if it were a csv.

<Frame caption="How to override the file parsing">
  <img src="https://mintcdn.com/parabola-7119dfb0/ax03C-lTVjtzT6TL/images/integration/image-67.png?fit=max&auto=format&n=ax03C-lTVjtzT6TL&q=85&s=b2a67f0e0a1b0c84a0d63b54fa2c9507" alt="Pull from FTP file parsing override menu" width="538" height="250" data-path="images/integration/image-67.png" />
</Frame>

## Pulling in a file based on rules

The main option at the top of the step allows you to switch between pulling in a specific file and a file based on rules.

When pulling a file based on rules, a new file will be pulled in every time the flow is run, or the step is refreshed.

A file can be selected based on:

* The **last\_modified** date of the file
* The **folder** the file is in
* Matching **part of the name** of the file

<Frame>
  <img src="https://mintcdn.com/parabola-7119dfb0/ax03C-lTVjtzT6TL/images/integration/image-68.png?fit=max&auto=format&n=ax03C-lTVjtzT6TL&q=85&s=40810aaaacadcee86fe6c83bc352dc7b" alt="Pull from FTP step configured to pull a file based on rules" width="548" height="606" data-path="images/integration/image-68.png" />
</Frame>

First, choose between pulling the **newest** file or the **oldest** file, based on its last modified date.

Second, choose a **file name pattern**. If you select `is anything`, no filtering based on file name will be applied. You can select to filter for files that `start with`, `end with`, or `contain` a certain set of characters. This can also be used to match the file extension (.csv for example).

Third, choose a folder to find the file within. If you use `/` then it will search the root folder. Other folders that are inside of the folder that you have indicated **will not be searched** and will be ignored.

Finally, select a **parsing option** if you want to override the default.

Every time a file is pulled in from a rule, the name will be displayed in the step settings.

<Frame>
  <img src="https://mintcdn.com/parabola-7119dfb0/ax03C-lTVjtzT6TL/images/integration/image-69.png?fit=max&auto=format&n=ax03C-lTVjtzT6TL&q=85&s=dc8f2c05bbfd186a7438bbe87c2379c4" alt="Pulled file name displayed in the Pull from FTP step settings" width="540" height="166" data-path="images/integration/image-69.png" />
</Frame>

### Moving files after processing (archiving)

Enable the `Archive file once processed` setting to automatically move files from the target folder to a different folder.

Files will be moved immediately after the data from the file is fetched by the Pull from FTP step. If the step fails for some reason with an error, the file will not be moved.

If the file is pulled in successfully, but another step causes the flow to fail, then the file will still be archived, even if the overall flow failed to complete.

In the run history of the flow, the names of any files pulled in from FTP will be listed to show what file was moved during successful or failed runs.

Use of this setting is best combined with the "Pull in a file based on rules" setting. With this combination, a Pull from FTP step can continuously cycle through a specific FTP folder and process any files available within it.

<Frame>
  <img src="https://mintcdn.com/parabola-7119dfb0/ax03C-lTVjtzT6TL/images/integration/image-70.png?fit=max&auto=format&n=ax03C-lTVjtzT6TL&q=85&s=23af79bbbdcfb3b5fd96d58b59078bf3" alt="Archive file once processed setting in the Pull from FTP step" width="744" height="386" data-path="images/integration/image-70.png" />
</Frame>

## Parsing XML Files

Sometimes XML files will not successfully pull into this step. In that case, it may be due to how the step is parsing the file by default. Use the Top Level Key field to indicate which key to expand into the table. This can help if there is a list of data, but there are other keys surrounding it, and you just need to get to that interior list. You can indicate a deeper key by placing dots between each key level. For example, if you have an object called `Cars`, and inside it is a list called `Colors`, which you want to expand, you would put `Cars.Colors` in the Top Level Keys field.

### File Metadata

To pull in file metadata like the date the file was last modified, it must be included as a value in a column.

### Limits

This FTP step can be used to pull in files up to 600MB. Contact us if you need larger files to be pulled in.

Global limits my stop your file before its size does, however. Steps can only run for 1 hour, and can only pull in 5 million rows and 5000 columns.

## Send to FTP

Create or overwrite files in an FTP, SFTP, or FTPS server. Supports CSV, TSV, Excel, JSON, and XML file creation.

## Connect to your FTP server

<Steps>
  <Step>
    Add the **Send to FTP** step to your flow
  </Step>

  <Step>
    Open the step and click the blue 'Authorize' button.
  </Step>

  <Step>
    Fill out the authorization form and save

    1. Transfer protocol
    2. Hostname
    3. Username
    4. Password
    5. Port
  </Step>
</Steps>

### Notes

* You can set the Port manually, or leave it blank to use the default for your selected protocol.
* Prefer SFTP or FTPS for secure transfers—plain FTP isn't recommended.

<Frame>
  <img src="https://mintcdn.com/parabola-7119dfb0/ax03C-lTVjtzT6TL/images/integration/image-71.png?fit=max&auto=format&n=ax03C-lTVjtzT6TL&q=85&s=d066c6ce1d92461ec9746f37911a4127" alt="Send to FTP authorization form with transfer protocol and host fields" width="608" height="601" data-path="images/integration/image-71.png" />
</Frame>

## Edit or add a connection

Open the step, click 'Select accounts,' then either add a new account or edit an existing one. After you edit, click the refresh icon to re-connect with the new settings.

## Choose your output mode

At the top of the step, choose one:

* **Create a new file** (recommended for dated or run-specific outputs)
* **Overwrite an existing file** (recommended for stable file names/paths)

<Frame caption="Creating a new file in the root folder">
  <img src="https://mintcdn.com/parabola-7119dfb0/ax03C-lTVjtzT6TL/images/integration/image-72.png?fit=max&auto=format&n=ax03C-lTVjtzT6TL&q=85&s=95af3c83e584962ca1f6cbd8daf4a0ae" alt="Send to FTP step configured to create a new file in the root folder" width="540" height="500" data-path="images/integration/image-72.png" />
</Frame>

## Create a new file

Configure three things:

<Steps>
  <Step>**Format:** CSV, TSV, Excel, JSON, or XML</Step>
  <Step>**File name:** Do not include an extension—Parabola adds it automatically</Step>
  <Step>**Folder path:** The destination directory on your server</Step>
</Steps>

<Frame caption="Available file formats to create">
  <img src="https://mintcdn.com/parabola-7119dfb0/ax03C-lTVjtzT6TL/images/integration/image-73.png?fit=max&auto=format&n=ax03C-lTVjtzT6TL&q=85&s=1530ce9368a994f5f3924b7852a092fc" alt="Send to FTP file format dropdown showing CSV, TSV, Excel, JSON, and XML" width="520" height="232" data-path="images/integration/image-73.png" />
</Frame>

### Supported formats

**CSV**

* Output extension: `.csv`.

**TSV**

* Tab-separated values.
* Output extension: `.tsv`.

**Excel**

* Output extension: `.xlsx`.
* No additional formatting is applied.

**JSON**

* Top-level JSON array; each row becomes an object.
* Output extension: `.json`.

**XML**

* The XML content must be stored in a single column in your input data—select this column in the step settings.
* Output extension: `.xml`.
* Supports exporting one file per row, up to 50 files per run.
* XML is validated during step edits by default (can be toggled off). Invalid XML will not be exported.
* Only creating new files is supported—overwriting is not available for XML.

### Name the file

Type the base file name without an extension. For example, enter `customers` (not `customers.csv`). If you include an extension, you'll end up with a duplicate (e.g., `customers.csv.csv`).

Use merge tags to make the name unique:

**Column merge tags (create mode only)**\
Reference values from your data to build the file name:

* Wrap the column name in curly braces like,` {CustomerId}`
* Examples:
  * `invoices_{CustomerId}_{date}` → `invoices_12345_2025-09-30`
  * `export_{Region}_{timestampDash}` → `export_APAC_2025-09-30_14-03-22`

### Advanced Settings

* Enable checkbox to omit header rows in exports (default is off)
* Enable checkout to remove merge columns from output (default is off)

### Tips

* Most servers reject duplicate names in the same folder. Use date/time or column merge tags to avoid collisions.
* Avoid special characters your server may not allow in file names.

<Frame>
  <img src="https://mintcdn.com/parabola-7119dfb0/ax03C-lTVjtzT6TL/images/integration/image-74.png?fit=max&auto=format&n=ax03C-lTVjtzT6TL&q=85&s=abea43fa4521d83b83b34d0142a3c38f" alt="Send to FTP file name field with merge tag examples" width="656" height="796" data-path="images/integration/image-74.png" />
</Frame>

### Choose a folder to put the file

Specify the destination folder path:

* Paths start at the root: `/`
* Example for a root-level folder named `reports`: `/reports`
* Example nested path: `/exports/daily`

## Overwrite an existing file

Set File options dropdown to "Overwrite an existing file". Select the output format and enter the full path (including the file name and extension) in the "File o overwrite" field.

<Frame>
  <img src="https://mintcdn.com/parabola-7119dfb0/ax03C-lTVjtzT6TL/images/integration/image-75.png?fit=max&auto=format&n=ax03C-lTVjtzT6TL&q=85&s=c01fb57b77c4e610b9383d8ddc3ef810" alt="Send to FTP step configured to overwrite an existing file" width="536" height="356" data-path="images/integration/image-75.png" />
</Frame>

### Select a format

Choose the format that matches the file's intended use. While Parabola replaces the file contents entirely (so mismatched extensions can still "work"), keeping the extension aligned with the actual format prevents downstream confusion.

### Choose the file path

Provide an absolute path from the root `/`:

* Root example: `/customers.csv`
* Nested example: `/crm/customers.csv`

<Frame>
  <img src="https://mintcdn.com/parabola-7119dfb0/ax03C-lTVjtzT6TL/images/integration/image-76.png?fit=max&auto=format&n=ax03C-lTVjtzT6TL&q=85&s=2299de91de0f8303245ebd2d8399dd93" alt="Send to FTP file path field with absolute root path example" width="554" height="380" data-path="images/integration/image-76.png" />
</Frame>

### Advanced Settings

* Enable checkbox to omit header rows in exports (default is off)
