Back to blog

How to Upload Files to SFTP via Zapier

Upload files from any Zapier trigger to your SFTP server through PushFTP's fixed IP relay.

·4 min read

The Upload Problem

You've got a file in Zapier — maybe from a form submission, a Google Drive export, or an email attachment. You need it on an SFTP server. Zapier can't connect to SFTP directly because SFTP servers require IP whitelisting, and Zapier's IPs rotate.

PushFTP bridges the gap. It connects to your SFTP server from a single fixed IP address. Whitelist that IP once, then upload files through Zapier as easily as any other action.

What You Need

  • A PushFTP account with an SFTP connection (sign up free)
  • PushFTP's static IP whitelisted on your SFTP server
  • A Zapier account

Step 1: Set Up the Trigger

Your Zap needs a trigger — the event that produces the file you want to upload. Common triggers:

  • Google Forms → New form response with file upload
  • Gmail → New email with attachment
  • Google Drive → New file in folder
  • Webhooks → Incoming POST with file URL
  • Schedule → Generate a report on a timer

Pick whatever matches your use case.

Step 2: Add the PushFTP Upload Action

In your Zap, add a new action step:

  1. App: PushFTP
  2. Event: Upload File
  3. Account: Your PushFTP account

Configure the upload:

Connection: My SFTP Server
Remote Path: /uploads/{date}-{original}
File: (map from trigger step — URL or file object)

The File field accepts a URL to the file. Most Zapier triggers provide this automatically. If you have raw content instead of a URL, you may need an intermediate step to create a file first.

Step 3: Use Filename Templates

PushFTP supports dynamic filenames so you don't overwrite files or create naming conflicts:

/uploads/{original}                  → report.pdf
/uploads/{date}-{original}           → 2025-01-15-report.pdf
/uploads/{uuid}.{ext}                → a1b2c3d4-e5f6.pdf
/uploads/{datetime}/{original}       → 2025-01-15T14-30-00/report.pdf
/invoices/{counter}-{name}.{ext}     → 001-report.pdf

Available placeholders: {date}, {time}, {datetime}, {timestamp}, {uuid}, {original}, {name}, {ext}, {counter}.

For more on templates, see the upload API docs.

Step 4: Test the Upload

Click Test in Zapier. PushFTP will:

  1. Receive the file from Zapier's trigger
  2. Connect to your SFTP server from its fixed IP
  3. Upload the file to the specified remote path
  4. Return a success response with the file path and size

Check your SFTP server — the file should be there.

If the test fails, check:

  • Is PushFTP's static IP whitelisted on your server?
  • Does the remote directory exist? PushFTP won't create parent directories automatically
  • Are the SFTP credentials correct?

Real-World Upload Workflows

Form Submissions to SFTP

Trigger: Typeform → New Entry (with file upload)
Action: PushFTP → Upload File
  Path: /submissions/{date}-{original}

Email Attachments to SFTP

Trigger: Gmail → New Email (matching search)
Action: PushFTP → Upload File
  Path: /email-attachments/{date}/{original}

Note: For emails with multiple attachments, Zapier creates one run per attachment, so each file gets uploaded individually.

Scheduled Report Distribution

Trigger: Schedule → Every Monday at 9am
Action 1: Google Sheets → Export to CSV
Action 2: PushFTP → Upload File
  Path: /reports/weekly-{date}.csv

Multi-Step: Upload Then Notify

Trigger: Google Drive → New File
Action 1: PushFTP → Upload File
  Path: /shared/{original}
Action 2: PushFTP → Create Shared Link (via API)
Action 3: Gmail → Send Email with download link

Handling Large Files

PushFTP handles the file transfer between its servers and your SFTP server. The file passes through PushFTP's infrastructure, which means:

  • Upload speed depends on the network between PushFTP and your server
  • There's no strict file size limit from PushFTP's side
  • Very large files may time out in Zapier if the upload takes too long

For consistently large files (100MB+), consider using PushFTP's REST API directly from a script instead of going through Zapier, which has its own timeout constraints.

Uploading to FTP and S3

Everything above works the same for FTP and S3 connections. Just select the right connection in the PushFTP action step. The same fixed IP is used for all connection types.

For S3, the remote path is the object key:

Connection: My S3 Bucket
Remote Path: uploads/{date}/{original}

Uploading files to SFTP through Zapier takes one action and about a minute to configure. PushFTP's fixed IP means your server stays locked down, and filename templates keep everything organized without manual effort.

FAQ

Can I upload to a directory that doesn't exist yet?

No. PushFTP requires the parent directory to exist. If you need to create it first, add a Create Folder action step before the upload. Check the Zapier docs for how to chain actions.

What happens if a file with the same name already exists?

PushFTP overwrites it. If you want to avoid overwrites, use filename templates with {uuid}, {timestamp}, or {counter} to ensure unique names.

Can I upload multiple files in one Zap run?

Each Upload File action handles one file. For multiple files, use Zapier's looping feature or create separate action steps for each file.

What file types can I upload?

Any file type. PushFTP transfers bytes — it doesn't care about the file format. PDFs, CSVs, images, ZIP archives, whatever.

Go Build

You've got files flowing from Zapier triggers to your SFTP server through a fixed IP. The upload action is the workhorse of most PushFTP workflows — it's where automation meets file infrastructure. Pair it with filename templates and you've got organized, collision-free uploads running on autopilot.

Ready to automate your file transfers?

Connect to any SFTP, FTP, or S3 server from a fixed IP address. Free plan available — no credit card required.