FTP/SFTP

Transfer files securely between your workflows and remote servers.

Overview

FTP and SFTP remain the standard for exchanging files with ERPs, EDI partners, 3PLs, warehouse systems, accountants, and any legacy system that does not expose a modern API. The connector supports both plain FTP and SFTP (SSH File Transfer Protocol) against the same remote server credentials.

In Spojit workflows, FTP/SFTP is typically used at the edges of a pipeline - either picking up incoming files dropped by a partner and feeding them into downstream processing (CSV parse, AI extraction, knowledge base indexing), or generating reports and dropping them onto a remote server for another system to consume.

What You Can Do

The FTP connector exposes these tools:

  • create-directory - create a new directory on the remote server.
  • delete-file - remove a file from the remote server.
  • download-file - fetch a file from the remote server into the workflow.
  • get-file-info - return metadata (size, modified time, type) for a remote file.
  • list-directory - list files and folders at a given remote path.
  • remove-directory - delete a directory from the remote server.
  • rename - rename or move a file or directory on the remote server.
  • upload-file - upload a file to a path on the remote server.
  • verify-connection - test that the configured credentials can connect successfully.

Authentication

FTP/SFTP authenticates with host, port, username, and password. SFTP can also accept a private key in place of a password. Get these from the server administrator hosting the remote system. Standard ports are 21 (FTP) and 22 (SFTP) but many providers use custom ports - confirm with the host. Spojit needs network access to the server, so partners may need to allowlist Spojit's outbound IPs.

Setting Up Your Connection

  1. Confirm the host, port, protocol (FTP vs SFTP), username, and password (or private key) with the server administrator.
  2. In Spojit, go to Connections in the sidebar.
  3. Click + Add Connection.
  4. Search for FTP/SFTP and select it.
  5. Enter the host, port, username, and password (or paste the private key) in the credential fields.
  6. Give the connection a name (e.g. "3PL SFTP" or "EDI Partner FTP").
  7. Click Save, then run verify-connection from a test workflow to confirm.

Using in a Workflow

Add a Connector node and select your FTP/SFTP connection. Use Direct Mode for predictable file operations - this is the common case. For example, call list-directory in a scheduled trigger, then loop with download-file over each new file. Use Agent Mode only when the file layout is unknown and an agent must discover the right path. Pair this connector with CSV Tools, PDF Tools, or JSON Tools to parse downloaded files in the same workflow.

Tips

  • Use get-file-info to check modification time before downloading - this avoids reprocessing the same file when polling on a schedule.
  • After successfully processing a file, rename it into a processed/ subdirectory rather than deleting, so you have an audit trail.
  • For large files, prefer SFTP over FTP for resumability and integrity.
  • Use verify-connection as the first node in production pipelines to fail fast on credential or network issues.
  • Combine list-directory with a Loop node and a filename filter to handle batch arrivals.

Common Pitfalls

  • Plain FTP is unencrypted - never use it for sensitive data. Use SFTP unless the partner explicitly requires FTP.
  • FTP passive vs active mode can affect connectivity behind NAT or firewalls; SFTP avoids this entirely.
  • Paths are case-sensitive on Linux servers but not on Windows servers - double-check the exact casing returned by list-directory.
  • Some servers lock files briefly while a partner uploads them - check get-file-info for a stable size before downloading, or wait a short interval.
  • Private key formats vary (OpenSSH vs PEM). If a key fails, convert it with ssh-keygen -p -m PEM.

Common Use Cases

Related Articles

For technical API details and field specifications, see the FTP/SFTP connector documentation.

Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.