File trigger
The File type starts a workflow when a file is sent to Ecosystem. The workflow reads and processes the file content, whose data is exposed in data and context:
{
"data": { "filename": "orders-2026-07-20.csv" },
"context": { "source": "FTP_SFTP" }
}
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Name | String | ✅ | — | Trigger label in the lists. |
| Path (slug) | String | ✅ | — | URL identifier, generated from the name. |
| Tags | List | ❌ | — | Labels for search and filters. |
| Description | String | ✅ | — | Specifies the role of the trigger for the team. |
| Source | DIRECT_UPLOAD / FTP_SFTP / EMAIL | ✅ | — | File reception mode. |
| File format | CSV / XLS / XML / JSON / RAW | ✅ | — | Parsing format applied to the file. |
Specify the expected file extensions to avoid triggering the workflow on irrelevant files.
Sending sources
Direct upload
Send the file from the Send files tab of the trigger. Each uploaded file triggers the workflow.
FTP / SFTP
The trigger monitors a remote directory. The connection is configured with:
| Parameter | Type | Required | Description |
|---|---|---|---|
| Host | String | ✅ | IP address or domain name of the FTP server. |
| Port | Number | ✅ | Listening port of the FTP connections. |
| FTP/SFTP credentials | PASSWORD / PRIVATE_KEY | ✅ | PASSWORD (username/password) or PRIVATE_KEY (username/privateKey/passphrase). |
Working directory (workingPath) | String | ✅ | Monitored folder. |
Archive directory (archivePath) | String | ✅ | Destination folder after reading. |
Archive with timestamp (archiveWithTimestamp) | Boolean | ❌ | Adds a timestamp to the archived file name. |
Overwrite archive (overwriteArchive) | Boolean | ❌ | Allows overwriting in the archive. |
| Test connection | Button | ❌ | Tests the connection with the configured access on a chosen environment. |
| Polling interval (CRON) | String | ❌ | Interval at which file retrieval occurs (default: every minute). |
Schedule (cronConfig) | String | ❌ | File retrieval schedule. |
Time zone (timezone) | String | ❌ | Time zone applied to the CRON schedule. |
To build the retrieval schedule, use the generator below then report the expression in the corresponding field:
0 9 * * *By email
Send an email with attached files: Ecosystem analyzes the attachments to extract the data. It is recommended to fill in a sender whitelist: Ecosystem only takes into account files coming from addresses listed in this list. The trigger's email address is communicated after deployment: click on the tag bearing the environment name, the address appears in a pop-in.
| Parameter | Type | Required | Description |
|---|---|---|---|
Sender whitelist (sendersEmailsWhiteList) | List | ❌ | Whitelist of allowed senders. |
Allow empty send (noFilesAllowed) | Boolean | ❌ | Allows sending without an attachment. |
Options per format
CSV
| Parameter | Description |
|---|---|
Delimiter (delimiter) | Separator character (default: ,). |
Trim whitespace (trim) | Removes whitespace from column names. |
Skip empty lines (skipEmptyLines) | Ignores empty lines. |
Skip number of lines (skipNumberOfLines) | Number of lines to skip before reading. |
Forced headers (headers) | Forced headers to replace those of the file. |
Group data by key (dataGroupByKey) | Key for logical grouping of the read data. |
Processing mode (processingMode) | PROCESS_FILE_PER_LINE or PROCESS_WHOLE_FILE (default: PROCESS_WHOLE_FILE). |
Processing interval (processingIntervalInLinesMode) | Delay in milliseconds between each line in line-by-line mode. |
XLS
| Parameter | Description |
|---|---|
Sheet name (sheetName) | Name of the sheet to read (first sheet by default). |
Skip empty lines (skipEmptyLines) | Ignores empty lines. |
Skip number of lines (skipNumberOfLines) | Number of lines to skip before reading. |
Forced headers (headers) | Forced headers to replace those of the file. |
Group data by key (dataGroupByKey) | Key for logical grouping of the read data. |
Processing mode (processingMode) | PROCESS_FILE_PER_LINE or PROCESS_WHOLE_FILE (default: PROCESS_WHOLE_FILE). |
Processing interval (processingIntervalInLinesMode) | Delay in milliseconds between each line in line-by-line mode. |
XML
The workflow receives an automatic conversion to JSON of the received XML file.
| Parameter | Description |
|---|---|
Extraction path (dataExtractionPath) | Extraction path (jsonPath format). In whole-file mode (PROCESS_WHOLE_FILE), $ to process the whole file from its beginning, or the name of a particular section. In line-by-line mode (PROCESS_FILE_PER_LINE), the name of the lines — e.g. orders.order for order tags within an orders array. |
Processing mode (processingMode) | PROCESS_FILE_PER_LINE or PROCESS_WHOLE_FILE. |
Processing interval (processingIntervalInLinesMode) | Delay in milliseconds between each line in line-by-line mode. |
Parsing mode (parsingMode) | NATIVE (default) or DETAILED. |
Skip empty lines (skipEmptyLines) | Ignores empty lines. |
Skip number of lines (skipNumberOfLines) | Number of lines to skip before reading. |
JSON
| Parameter | Description |
|---|---|
Skip empty lines (skipEmptyLines) | Ignores empty lines. |
Extraction path (dataExtractionPath) | Extraction path of the JSON data. |
Processing mode (processingMode) | PROCESS_FILE_PER_LINE or PROCESS_WHOLE_FILE. |
Processing interval (processingIntervalInLinesMode) | Delay in milliseconds between each line in line-by-line mode. |
RAW
For data coming from a plain-text file, the file content is passed through as-is; if the file is ASCII or binary, it is sent in base64. No parsing option.
Processing mode
Whatever the input format, two processing modes are possible:
- Whole file: a single execution, with the file in its entirety.
- Line by line: one execution per line of the file; the input data of each execution represents the corresponding line.
The per-line processing interval adds a wait time between two lines, useful when the recipient of the lines (database, API…) cannot absorb the lines at maximum speed.
Input
The trigger receives a file from one of the configured sources (upload, monitored FTP/SFTP directory, email attachment). The content is parsed according to the configured File format — for example, a CSV:
orderId,status
CMD-4821,new
CMD-4822,new
Output
The workflow receives the parsed content of the file in data — the whole file (whole-file mode) or the current line (line-by-line mode) — with the metadata in context:
| Property | Description |
|---|---|
data | Parsed content of the file (JSON object) or current line depending on the processing mode. |
data.filename | Name of the source file. |
context.source | Sending source (DIRECT_UPLOAD, FTP_SFTP, EMAIL). |
{
"data": { "orderId": "CMD-4821", "status": "new" },
"context": { "source": "FTP_SFTP" }
}
Errors
- Parsing failure — a file that does not match the configured format makes the execution fail; the failure is handled by the connected On Error node.
- Double processing — the trigger continuously monitors the configured directory, detects new files and avoids processing the same file twice.
Limits
- By email: 5 files maximum per email, 10 MB per file maximum. Each file sent generates a separate trace.
- Line-by-line mode: the processing interval (
processingIntervalInLinesMode) adds a configurable delay between each line.
Example
Processing CSV files from an SFTP: create a File type trigger with an FTP_SFTP source pointing to /uploads/orders, associate a workflow that reads, parses and processes each line, then archives the processed file. After deployment, the trigger automatically monitors the directory.
See also
- Trigger node — received data for a File trigger
- FTP node — file operations in workflows
- Create a trigger
- Deploy a trigger