> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.meetgail.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.meetgail.com/_mcp/server.

# SFTP Upload

> Uploads a file from the run to a path on a remote SFTP server.

The Upload node pushes a file from your workflow out to a path on a remote SFTP
server. You give it the file from the run and the destination path, and it writes
the file there.

## When to use it

* You produced a file in the run and need to deliver it to a partner's server.
* You downloaded or built a file and want to place it in a specific directory.
* You want to hand a file off to a system that picks files up over SFTP.

## Inputs

| Field            | What it's for                                                    | Example                                                         |
| ---------------- | ---------------------------------------------------------------- | --------------------------------------------------------------- |
| Server           | The SFTP server to connect to.                                   | `sftp.example.com`                                              |
| Port             | The server's port, usually 22.                                   | `22`                                                            |
| Username         | The username to sign in with.                                    | `automation-user`                                               |
| Password or key  | The password or private key to sign in with, stored as a secret. | A [Secret](/platform/workflows/core-concepts/secrets) reference |
| Destination path | The full path on the server to write the file to.                | `/inbound/uploads/incoming.csv`                                 |
| File             | The file from the run to upload.                                 | A file from a start step or a download                          |

The password or key must reference a workflow [Secret](/platform/workflows/core-concepts/secrets).
Any field can be a fixed value or an [expression](/platform/workflows/core-concepts/expressions/using-expressions-in-nodes)
that reads from an earlier step.

## Outputs

| Field             | What you get back                                  |
| ----------------- | -------------------------------------------------- |
| Path written      | The path where the file was written on the server. |
| Bytes transferred | How many bytes were uploaded.                      |

## Example

A workflow builds a nightly claims export for Chen Insurance Group and needs to
deliver it to the carrier's SFTP server. It uses Upload to write the file to
`/inbound/uploads/claims.csv`, then follows with a
[Check](/platform/workflows/node-reference/logic-and-flow/check) step so the run can raise
an alert if the delivery did not succeed.

![The SFTP Upload node configuration panel, showing the server, destination path, and file.](https://fdr-prod-docs-files-public.s3.us-east-1.amazonaws.com/gail.docs.buildwithfern.com/64ce1ee1fcffb50ae4eb5bc7296135fa9720872435068700ef15938a378f57e0/docs/pages/platform/workflows/assets/sftp-upload.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA6KXJSKKNFOCF7G4B%2F20260823%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260823T232934Z&X-Amz-Expires=604800&X-Amz-Signature=231030d13091ef2ea63880fe511409c40e8ccda1ec1d74c1c39ca0f405ad315c&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject)

The destination directory has to exist already and be writable by your username -
Upload writes the file, it does not create missing parent folders. If the path is
not writable the node hands back a failure you can branch on.

## Related nodes

#### [Download](/platform/workflows/node-reference/integrations/sftp/sftp-download)

Pull a file off the server before working with it.

#### [List Directory](/platform/workflows/node-reference/integrations/sftp/sftp-list-directory)

See what is already in a directory before uploading.

#### [Create CSV](/platform/workflows/node-reference/files-and-documents/create-csv)

Build a CSV file in the run before uploading it.

#### [Check](/platform/workflows/node-reference/logic-and-flow/check)

Branch on whether the upload succeeded.