FTP Connector
Description
FTP (File Transfer Protocol) is a standard network protocol for transferring files between a client and server. This component allows uploading, downloading, moving, and deleting files on an FTP or FTPS server.
A common integration pattern involves listing files in a file store, and performing a series of actions on the array of files that are returned. See the looping over files quickstart for information about how to create a loop over an array of files.
Connections
Basic Authentication
key: basicThis component supports basic authentication, meaning that a username and password can be entered for authentication, or if the FTP server allows anonymous access, those values can be left blank.
Prerequisites
- An FTP or FTPS server with accessible credentials
- Server hostname or IP address
- Port number (typically 21 for FTP or 990 for FTPS)
- SSL/TLS configuration details (if using FTPS)
Configure the Connection
Create a connection of type Basic Authentication and configure the following:
- Username: Enter the FTP username (leave blank for anonymous access)
- Password: Enter the FTP password (leave blank for anonymous access)
- Host: Enter either an IP address (e.g.
1.2.3.4) or FQDN (e.g.ftp.example.com) for the FTP server's host name - Port: Most FTP servers run on port 21 and most FTPS (secure) servers run on port 990, though ports are configurable and server administrators can choose to operate on different ports
- Secure: Some FTP servers use FTPS rather than plain FTP. For plain, unsecured FTP, select false (though encrypting the connection is recommended if possible). If the FTP server uses SSL/TLS, select true for explicit FTPS or implicit for implicit FTPS. For information on implicit and explicit FTPS, see this documentation
If the connection fails, verify the hostname, port and security information with the server administrator.
On-prem enabled: this connection can be configured to connect to an on-prem resource on a private network. Learn more.
| Input | Notes | Example |
|---|---|---|
| Host | The address of the FTP server. This should be an IP address or hostname. | ftp.example.com |
| Ignore SSL Errors | When true, ignores SSL certificate validation errors such as self-signed certificates. | false |
| Password | The password for FTP authentication. | p@s$W0Rd |
| Port | The port of the FTP server. Default is 21 for FTP or 990 for implicit FTPS. | 21 |
| Secure | Whether to use FTPS over TLS. Set to 'true' for explicit FTPS, 'false' for plain FTP, or 'implicit' for legacy implicit FTPS. | false |
| Username | The username for FTP authentication. | john.doe |
Triggers
New or Modified Files
Checks for new and modified files in a directory on an FTP server on a configured schedule. | key: newOrModifiedFiles
| Input | Notes | Example |
|---|---|---|
| Connection | The FTP connection to use. | |
| Include Subdirectories | When true, recursively monitors files in all subdirectories. When false, only monitors files in the specified directory. | false |
| Path | The directory path on the FTP server to monitor for new or modified files. | /path/to/directory |
| Pattern | A glob-style pattern to filter files by name. Use wildcards like .csv or report_.txt to match specific file types or naming conventions. | *.csv |
This trigger polls an FTP server for new and modified files on a scheduled basis.
The trigger checks for:
- New files: Files that did not exist in the previous poll
- Modified files: Files whose modification timestamp or size has changed since the last poll
How It Works
- The trigger runs on the configured schedule (e.g., every 5 minutes)
- It lists all files in the specified directory on the FTP server
- Files are compared against the previous poll's file map (stored in state)
- Files are categorized as "new" or "modified" based on their presence and attributes
- The trigger updates its state with the current file map for the next poll
Returned Data
The trigger returns an object with two arrays.
Fields shown are representative. The full response object includes additional properties.
Example Payload
{
"data": {
"newFiles": [
{
"path": "/uploads/incoming/report-2026-02-11.csv",
"size": 24576,
"modifiedAt": 1739308800000
}
],
"modifiedFiles": [
{
"path": "/uploads/incoming/daily-log.txt",
"size": 102400,
"modifiedAt": 1739312400000
}
]
}
}
Notes
- Files are tracked by path, size, and modification timestamp
- The first poll will return all files as "new"
- Polling frequency should balance freshness with server load
- A common integration pattern involves looping over the returned files to perform actions on each file
Example Payload for New or Modified Files⤓
Actions
Create Directory
Creates a new directory. When Include Subfolders is enabled, recursively creates any missing directories in the path. | key: createDirectory
| Input | Notes | Example |
|---|---|---|
| Connection | The FTP connection to use. | |
| Path | The directory path on the FTP server to monitor for new or modified files. | /path/to/directory |
| Include Subfolders | When true, recursively creates any missing directories in the path. | true |
Example Payload for Create Directory⤓
Delete File
Deletes a file from an FTP server. | key: deleteFile
| Input | Notes | Example |
|---|---|---|
| Connection | The FTP connection to use. | |
| Path | The full path of the file on the FTP server to delete. | /path/to/file.txt |
List Directory
Lists the contents of a directory. | key: listDirectory
| Input | Notes | Example |
|---|---|---|
| Connection | The FTP connection to use. | |
| Path | The full path of the directory on the FTP server to list. | /path/to/directory |
Example Payload for List Directory⤓
Move File
Moves a file on an FTP server. | key: moveFile
| Input | Notes | Example |
|---|---|---|
| Connection | The FTP connection to use. | |
| Destination Path | The new path where the file will be moved on the FTP server. | /my/destination/path.txt |
| Source Path | The current path of the file on the FTP server to move. | /my/starting/path.txt |
Read File
Reads a file from an FTP server. | key: readFile
| Input | Notes | Example |
|---|---|---|
| Connection | The FTP connection to use. | |
| Path | The full path of the file on the FTP server to read. | /path/to/file.txt |
| Return Buffer | When true, treats the file as a binary file with content type 'application/octet-stream', even if it is a text file. This is helpful if you are processing non-UTF-8 text files, as the runner assumes text files are UTF-8. | false |
Example Payload for Read File⤓
Write File
Writes a file to an FTP server. | key: writeFile
| Input | Notes | Example |
|---|---|---|
| Connection | The FTP connection to use. | |
| Data | The text or binary data to write to the file on the FTP server. | |
| Path | The full path on the FTP server where the file will be written. | /we/love/commas.csv |
Changelog
2026-08-04
Added new action and enhanced file reading:
- Added Create Directory action to create directories on an FTP server, with optional recursive creation of nested paths
- Added Return Buffer input to the Read File action to force
application/octet-streamcontent type, useful for non-UTF-8 text files
2026-05-05
Upgraded basic-ftp from 5.0.2 to 5.2.1 to patch CVE-2026-27699 (path traversal vulnerability, CVSS 9.1)
2026-02-24
- Added New or Modified Files polling trigger that detects new and modified files in a directory on a configured schedule