Files, SFTP and downloads
Exchange files with SFTP, FTP and FTPS servers, download files from https links, and read, write and attach files from the app's Files store.
Many systems still talk in files: a supplier's price list, a warehouse's stock file, an accountant's export. Three steps and one page handle them.
| Step | What it does |
|---|---|
| File transfer (SFTP / FTP) | Reaches a server over SFTP, FTP or FTPS: list a folder, download, upload, delete or move a file |
| Download file | Downloads a file from an https link into Files |
| Files | Your store's files in this app: read a text file, write one, delete or list |
Files is also a page in the app menu. It lists what your workflows stored, lets you upload and download files by hand, and shows your usage against the plan.
File keys
A file in Files is named by a file key, a path of your choice such as imports/stock.csv. Letters, digits, spaces and . _ - / are allowed, without .. and without a leading /. A file with the same key is replaced.
Steps hand files to each other by key: a download stores imports/prices.csv, the next step reads it, an email attaches it.
File transfer (SFTP / FTP)
- Choose the Protocol: SFTP, FTP (not encrypted) or FTPS (FTP over TLS).
- Enter Host, Port (empty means 22 for SFTP and 21 for FTP and FTPS; port 990 uses implicit TLS) and Username.
- Password: never type it here. Save it under Secrets and write
{{ secrets.SFTP_PASSWORD }}. For SFTP you can use a Private key (a secret that holds the PEM key) with an optional Passphrase of the key, instead of or as well as a password. - Optional for SFTP: Host key fingerprint, the server's SHA-256 fingerprint as
ssh-keygen -lfprints it. When set, a server with another key is refused. - Choose What to do:
| Choice | Fields |
|---|---|
| List a folder | Folder, optional File name pattern such as *.csv. Up to 1,000 entries |
| Download a file | File on the server, and Where the file goes: Into Files under a File key, or As text into this step's result (up to 256 KB) |
| Upload a file | Path on the server, and What to upload: A file from Files or Text written here. A file that is already there is replaced. The folder must exist |
| Delete a file | File on the server |
| Move or rename a file | File on the server and New path |
A workflow whose login is written into the step as plain text cannot be turned on. It must read a secret. See Secrets.
To handle every file of a folder, list it, then use the list in a Repeat for each and read each file as loop.item.path. The template Collect new files from your SFTP server and archive them there does that.

Download file
- Link: https only, and a public address. Up to 3 redirects are followed.
- File key: where the file goes in Files.
- Optional Headers, for example an
Authorizationheader from a secret. Headers are sent to the host of the link only, never to a host it redirects to.
A file larger than your plan allows fails the step. It is never cut.

Files step
| Choice | Notes |
|---|---|
| Read a text file | Text files up to 256 KB. The text is in the step's result |
| Write a file | Content is text. One variable that holds an object or a list is stored as JSON. Content type is optional: empty means by the key's ending (.csv, .json, .xml, .txt), else text/plain |
| Delete a file | |
| List files | File keys that start with narrows the list. Up to 1,000 files: keys, sizes and types |


Working with a file's content
Text up to 256 KB can be read into a step's result and worked on: a Liquid script step splits a CSV into lines, a Run function step parses it in JavaScript (it receives the text through input.steps). Larger files move between a server, a link and Files without passing through a step's result.
Limits by plan
| Plan | Files in total | Largest file |
|---|---|---|
| Free | 100 MB | 5 MB |
| Starter | 1 GB | 10 MB |
| Grow | 5 GB | 25 MB |
| Unlimited | 50 GB | 50 MB |
In tests
In a preview, listing and downloading from a server run for real. An upload, a delete, a move and a write to Files are only previewed. Download file downloads and checks the file, but does not store it.
When it fails
A server that cannot be reached, a timeout or a broken connection is tried again automatically. Listing, downloading and uploading can safely run twice; a delete or a move is only repeated when the server was never reached. A wrong login or a missing file fails the step at once. See Automatic retries.
Send a file by email
The Send email step attaches a file from Files by its key, up to 10 MB per email. See Send email and email senders and Recipe: email a daily file from SFTP.
Templates
The category Files and SFTP has complete workflows: drop every paid order as a CSV file on your SFTP server, set stock from a daily CSV file, update prices from a supplier's price list behind a link, copy a file from a link to your SFTP server.
