Skip to main content
Version: 3.0 (next)

FTP / SFTP Nodes

FTP/SFTP nodes enable pipelines to transfer files to and from remote servers. Use these nodes to automate file-based integrations, data imports/exports, and partner data exchanges. All four node types support both FTP and SFTP protocols through your configured connections.

Configuration Quick Reference​

FieldWhat you chooseDetails
ParametersConnection, Function, Function Parameters, Timeout OverrideSelect the connection profile, function, configure function parameters with expression support, and optionally override timeout.
SettingsDescription, Timeout (seconds), Retry on Timeout, Retry on Fail, On ErrorNode description, maximum execution time, retry behavior on timeout or failure, and error handling strategy. All execution settings default to pipeline-level values.

FTP Upload Node​

FTP Upload node configuration

FTP Upload Node

Upload files to remote FTP/SFTP servers.

Supported Function Types:

Function NamePurposeCommon Use Cases
UploadUpload file content to remote serverData exports, report distribution, configuration deployment

Node Configuration​

ParameterTypeRequiredDescription
ConnectionSelectionYesFTP/SFTP connection profile to use
FunctionSelectionYesUpload function from the selected connection
Function ParametersDynamicVariesAuto-populated from the function schema. See your FTP/SFTP connection functions for full parameter details.
Timeout OverrideNumber (seconds)NoOverride the default function timeout

All function parameters support expression syntax ({{ expression }}) for dynamic values from the pipeline context.

Input​

The node receives the output of the previous node as input. Input data can be referenced in function parameter expressions using $input.

Output Structure​

On success the node produces:

{
"result": {
"remotePath": "/uploads/data/report.csv",
"size": 2048
},
"_metadata": { "success": true, "functionId": "<function-id>", "durationMs": 156, "timestamp": "2026-01-15T08:30:00Z" }
}

Upload Result Fields​

FieldTypeDescription
result.remotePathstringFull path where the file was uploaded
result.sizenumberBytes sent to the remote server
result.appendedbooleanPresent, and true, only when the upload appended to an existing file (Append to File on)
_metadata.method, _metadata.connectionId, _metadata.protocolstringThe call's own facts, on every FTP node: the operation that ran, the connection it ran over, and ftp

FTP Download Node​

FTP Download node configuration

FTP Download Node

Download files from remote FTP/SFTP servers.

Supported Function Types:

Function NamePurposeCommon Use Cases
DownloadDownload file content from remote serverData imports, report retrieval, configuration fetch

Node Configuration​

ParameterTypeRequiredDescription
ConnectionSelectionYesFTP/SFTP connection profile to use
FunctionSelectionYesDownload function from the selected connection
Function ParametersDynamicVariesAuto-populated from the function schema (e.g., remotePath). See your FTP/SFTP connection functions for full parameter details.
Timeout OverrideNumber (seconds)NoOverride the default function timeout

Input​

The node receives the output of the previous node as input. Use expressions like {{ $input[0].result.files[0].name }} (after a List) to dynamically specify which file to download.

Output Structure​

On success the node produces:

{
"result": {
"remotePath": "/data/exports/sales.csv",
"size": 4096,
"encoding": "text",
"content": "header1,header2\nvalue1,value2\n..."
},
"_metadata": { "success": true, "functionId": "<function-id>", "durationMs": 234, "timestamp": "2026-01-15T08:30:00Z" }
}

Download Result Fields​

FieldTypeDescription
result.remotePathstringPath of the downloaded file
result.sizenumberFile size in bytes
result.encodingstringtext when the content is delivered as is, base64 when the file was binary
result.contentstringFile content — the text itself, or base64 when encoding says so

FTP List Node​

FTP List node configuration

FTP List Node

List files and directories on remote FTP/SFTP servers.

Supported Function Types:

Function NamePurposeCommon Use Cases
ListList files and directoriesCheck for new files, inventory contents, monitor availability

Node Configuration​

ParameterTypeRequiredDescription
ConnectionSelectionYesFTP/SFTP connection profile to use
FunctionSelectionYesList function from the selected connection
Function ParametersDynamicVariesAuto-populated from the function schema (e.g., remotePath, pattern). See your FTP/SFTP connection functions for full parameter details.
Timeout OverrideNumber (seconds)NoOverride the default function timeout

Input​

The node receives the output of the previous node as input. Use expressions to dynamically specify the directory path or file pattern.

Output Structure​

On success the node produces:

{
"result": {
"remotePath": "/incoming/data",
"count": 2,
"files": [
{ "name": "sales_2026-01-15.csv", "size": 2048, "isDir": false, "modified": "2026-01-15T06:00:00Z" },
{ "name": "archive", "size": 0, "isDir": true, "modified": "2026-01-14T12:00:00Z" }
]
},
"_metadata": { "success": true, "functionId": "<function-id>", "durationMs": 89, "timestamp": "2026-01-15T08:30:00Z" }
}

List Result Fields​

FieldTypeDescription
result.remotePathstringDirectory that was listed
result.countnumberNumber of entries delivered (after the pattern filter)
result.filesarrayOne entry per file or directory: name, size (0 for directories), isDir, modified (RFC 3339 UTC)

FTP Delete Node​

FTP Delete node configuration

FTP Delete Node

Delete files on remote FTP/SFTP servers.

Supported Function Types:

Function NamePurposeCommon Use Cases
DeleteDelete a file from remote serverClean up processed files, remove temporary data

Node Configuration​

ParameterTypeRequiredDescription
ConnectionSelectionYesFTP/SFTP connection profile to use
FunctionSelectionYesDelete function from the selected connection
Function ParametersDynamicVariesAuto-populated from the function schema (e.g., remotePath). See your FTP/SFTP connection functions for full parameter details.
Timeout OverrideNumber (seconds)NoOverride the default function timeout

Input​

The node receives the output of the previous node as input. Use expressions like {{ $input[0].result.files[0].name }} to dynamically specify which file to delete.

Output Structure​

On success the node produces:

{
"result": { "remotePath": "/processed/old_data.csv" },
"_metadata": { "success": true, "functionId": "<function-id>", "durationMs": 67, "timestamp": "2026-01-15T08:30:00Z" }
}

Delete Result Fields​

FieldTypeDescription
result.remotePathstringPath of the deleted file

FTP Rename Node​

Rename or move a file on the remote server. When a file already exists at the destination, the rename fails with destination file already exists — unless the function's Overwrite option is on, in which case that file is replaced.

Supported Function Types:

Function NamePurposeCommon Use Cases
RenameRename sourcePath to destinationPath on the serverArchiving processed files, atomic hand-off (upload under a temporary name, then rename — with Overwrite on when the rename replaces the previous file)

Output Structure​

{
"result": { "sourcePath": "/incoming/orders.csv", "destinationPath": "/incoming/processed/orders.csv" },
"_metadata": { "success": true, "functionId": "<function-id>", "durationMs": 31, "timestamp": "2026-01-15T08:30:00Z" }
}
FieldTypeDescription
result.sourcePathstringResolved source path
result.destinationPathstringResolved destination path

Common Use Cases​

Download and Process New Files​

Poll for new files, download them, and process the contents:

  1. Use FTP List to find files matching a pattern (e.g., *.csv)
  2. Use For Each Loop to iterate over the file list
  3. Use FTP Download to retrieve each file
  4. Use File Extractor to parse CSV content into JSON
  5. Process the data with subsequent nodes
[Schedule] → [FTP List] → [For Each] → [FTP Download] → [File Extractor] → [Process]

Export Data to Partner SFTP​

Generate a report and upload it to a partner's SFTP server:

  1. Generate or transform data in previous nodes
  2. Use Data Serializer to format as CSV/JSON
  3. Use FTP Upload to send the file
[Fetch Data] → [Transform] → [Data Serializer] → [FTP Upload]

Process and Clean Up Files​

Download files, process them, then delete the originals:

  1. FTP List to find files to process
  2. FTP Download to retrieve file content
  3. Process the data
  4. FTP Delete to remove the original file
[FTP List] → [For Each] → [FTP Download] → [Process] → [FTP Delete]

Dynamic File Paths​

Use expressions to build file paths dynamically. A path is relative to the connection's Base Path. An absolute path — such as the result.remotePath another FTP node returns — is used as given, but it must lie inside the Base Path: a path that resolves outside it fails with file path is outside base directory.

// Upload with date-based path
Remote Path: {{ 'exports/' + ($execution.startedAt | date: 'YYYY-MM-DD') + '/report.csv' }}

// Download file from previous node's output
Remote Path: {{ 'incoming/' + $input[0].result.files[0].name }}

// Delete processed file
Remote Path: {{ $input[0].result.remotePath }}

Settings Tab​

All FTP/SFTP node types share the same Settings tab:

SettingTypeDefaultDescription
DescriptionText—Optional description displayed on the node
Timeout (seconds)NumberPipeline defaultMaximum time the node may run before timing out
Retry on TimeoutTogglePipeline defaultAutomatically retry the node if it times out
Retry on FailTogglePipeline defaultAutomatically retry the node if it fails
On ErrorSelectionPipeline defaultError strategy: Pipeline Default (the pipeline's Error Handling setting), Stop Pipeline or Continue Execution

When left at their defaults, these settings inherit from the pipeline-level execution configuration.


Integration with Other Nodes​

File Extractor​

The FTP Download node is commonly used with the File Extractor node to parse CSV and Excel files:

  1. FTP Download retrieves the raw file content
  2. File Extractor parses the content into structured JSON rows

Set the File Extractor's inputField to result.content, where the FTP Download node puts the content.

For Each Loop​

Use For Each Loop to process multiple files from an FTP List result:

  1. FTP List returns an array of files
  2. For Each Loop iterates over result.files
  3. Each iteration processes one file

Data Serializer​

Use Data Serializer before FTP Upload to format data:

  1. Transform and prepare data in previous nodes
  2. Data Serializer converts to CSV, JSON, or XML
  3. FTP Upload sends the formatted content

Best Practices​

  • Use specific file paths when possible for better performance and clarity
  • Set appropriate timeouts for large file transfers or slow connections
  • Implement error handling with the "On Error" setting for critical transfers
  • Use parameterized paths for date-based or dynamic file organization
  • Delete processed files to prevent duplicate processing
  • Monitor connection health to catch server issues before pipeline failures
Retry Configuration

For unreliable network connections, enable "Retry on Timeout" and "Retry on Fail" with appropriate retry counts. This improves pipeline resilience without manual intervention.