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:
- App: PushFTP
- Event: Upload File
- 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:
- Receive the file from Zapier's trigger
- Connect to your SFTP server from its fixed IP
- Upload the file to the specified remote path
- 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.