Automating File Uploads with Zapier and FilePost
Zapier connects thousands of apps together, but file handling has always been one of its weak spots. You can trigger a Zap when a new email arrives with an attachment, or when someone submits a form with a file upload. But what do you do with that file? Saving it to Google Drive or Dropbox gives you a file in a folder, not a public URL you can embed, share, or use in downstream actions.
This is where a file upload API fills the gap. By adding a FilePost upload step to your Zap, you can take any file from any trigger and instantly get a permanent, CDN-backed URL. That URL works in Slack messages, email templates, database records, CRM fields, or anywhere else that accepts a link.
This guide walks through setting up FilePost as a Zapier action and building two complete example Zaps from scratch.
Why Automate File Uploads in Zapier?
Manual file handling is a bottleneck in most business workflows. Think about how many times a day someone in your organization does this:
- Receives a file (email attachment, form submission, Slack upload)
- Downloads it locally
- Uploads it to some hosting service or shared drive
- Copies the link
- Pastes the link into another tool (CRM, project management, database)
That's five manual steps for something that should happen automatically. With Zapier and FilePost, the entire process collapses to zero manual steps: file arrives, gets uploaded, URL gets stored or sent wherever it needs to go.
Using Airtable too? Airtable attachment URLs expire every ~2 hours. FilePost fixes that. See Permanent URLs for Airtable attachments →
Common use cases include:
- Client file submissions. A client sends a contract, invoice, or asset via email. The file automatically gets a public URL that gets logged in your CRM or project management tool.
- Form uploads. Typeform, JotForm, or Google Forms submissions with file attachments. The files get hosted and the URLs get added to a spreadsheet or database.
- Slack file sharing. Someone uploads a file in a Slack channel. It automatically gets a permanent public URL (Slack's own file URLs expire and require authentication).
- Report distribution. A scheduled report is generated and needs to be accessible via a stable URL that you can embed in dashboards or share with stakeholders.
Setting Up FilePost as a Zapier Action
FilePost is approved as a public Zapier app, so you can connect it directly from Zapier without an invite code. The Webhooks by Zapier setup below still works if you want full control over the HTTP request, but most users should start with the native FilePost Zapier app.
Step 1: Get Your FilePost API Key
If you don't have a FilePost account, sign up:
curl -X POST https://filepost.dev/v1/signup \
-H "Content-Type: application/json" \
-d '{"email": "you@example.com"}'
You'll receive your API key in the response. Keep it handy for the next steps.
Step 2: Add the Webhooks by Zapier Action
In your Zap, after your trigger step, add an action and search for "Webhooks by Zapier". Select the "Custom Request" event type. This gives you full control over the HTTP request.
Step 3: Configure the Request
Set up the Webhooks action with these settings:
- Method: POST
- URL:
https://filepost.dev/v1/upload - Headers:
X-API-Key|your-api-key - Data Pass-Through: Select the file field from your trigger step
The specific configuration for the file data depends on your trigger. For triggers that provide a file URL (most form tools), you'll need an intermediate step to download the file first. For triggers that provide the file directly as binary data (like Gmail), you can pass it straight through.
Step 4: Use the Response
After the webhook fires, the FilePost response is available in subsequent steps. The key fields are:
{
"url": "https://cdn.filepost.dev/file/filepost/uploads/a1/a1b2c3.png",
"file_id": "a1b2c3d4e5f6",
"size": 84210
}
Map url to whatever field you need in your next action, a spreadsheet column, a Slack message, a CRM record, or an email body.
Example Zap: Gmail Attachments to Public URLs
This Zap automatically takes every Gmail attachment and uploads it to FilePost, then sends the URL to a Slack channel. It's useful for teams that receive client files via email and need them accessible without digging through inboxes.
Step 1: Trigger, New Attachment in Gmail
Set up the Gmail trigger with the event "New Attachment". Configure your search criteria, you might want to limit it to a specific label or sender to avoid uploading every email attachment you receive.
Gmail's trigger provides the attachment as binary data along with metadata like the filename, content type, and the email it came from.
Step 2: Action, Upload to FilePost
Add the Webhooks by Zapier action with the Custom Request event. Configure it as follows:
- Method: POST
- URL:
https://filepost.dev/v1/upload - Headers:
X-API-Key|your-api-key - Data: Map the attachment file from Step 1 to the
filefield
Test this step to make sure the upload works. You should see a response with a url field containing the CDN link.
Step 3: Action, Send to Slack
Add a Slack action with the event "Send Channel Message". Configure the message to include the relevant details:
- Channel: #client-files (or wherever you want notifications)
- Message Text: New file from {{Step 1: From Email}}: {{Step 2: url}}
Now every email attachment automatically gets a permanent public URL and a Slack notification. No downloading, no uploading, no copying links.
Automate Your File Uploads
Get permanent CDN URLs for files from any Zapier trigger. Free plan includes 300 uploads/month.
Get Your API KeyExample Zap: Typeform File Uploads to CDN
This Zap handles a common scenario: you have a Typeform (or similar form tool) that accepts file uploads, and you need those files hosted with stable URLs. Typeform's own file URLs are temporary and expire, so you need to re-host them.
Step 1: Trigger, New Entry in Typeform
Set up the Typeform trigger with the event "New Entry". Connect your Typeform account and select the form that includes file upload fields. When you test the trigger, you'll see the file upload field contains a URL pointing to Typeform's temporary file storage.
Step 2: Action, Download the File
Since Typeform provides a URL rather than binary data, you need to download the file first. Add a Webhooks by Zapier action with the "GET" method and set the URL to the file URL from Step 1. This downloads the file so it can be re-uploaded.
Alternatively, you can use a URL Shortener by Zapier or Formatter by Zapier step to handle the file download, depending on the file type.
Step 3: Action, Upload to FilePost
Add another Webhooks by Zapier action to upload the downloaded file to FilePost. Use the same configuration as the Gmail example: POST to https://filepost.dev/v1/upload with the X-API-Key header and the file data from Step 2.
Step 4: Action, Append to Google Sheets
Add a Google Sheets action with the event "Create Spreadsheet Row". Map the form fields and the FilePost URL to your spreadsheet columns:
- Column A (Name): {{Step 1: Name field}}
- Column B (Email): {{Step 1: Email field}}
- Column C (File URL): {{Step 3: url}}
- Column D (Submitted): {{Step 1: Submitted At}}
Every form submission with a file upload now gets a permanent CDN URL stored in your spreadsheet. The Typeform file URL can expire, your FilePost URL won't.
Using Webhooks for Advanced Workflows
For more complex scenarios, you can combine FilePost's API with Zapier's webhook capabilities in creative ways:
Uploading Multiple Files in a Loop
If a trigger provides multiple files (like an email with several attachments), use Zapier's Looping by Zapier action to iterate through the files. Each iteration uploads one file to FilePost, and you can collect the URLs in subsequent steps.
Conditional Uploads
Use Zapier's Filter step to only upload certain files. For example, only upload files larger than 100KB, or only upload PDFs and images. This helps you stay within your plan's upload limits and avoid hosting unnecessary files.
File Management
Beyond uploading, you can use FilePost's other endpoints in Zapier:
- List files: GET
https://filepost.dev/v1/files, useful for auditing or reporting on your hosted files - Delete files: DELETE
https://filepost.dev/v1/files/{file_id}, useful for cleanup workflows that remove files after a certain period
Tips for Production Zapier Workflows
Error Handling
Zapier's built-in error handling is limited, but you should still prepare for failures. If a FilePost upload fails (due to a network issue, rate limit, or oversized file), the Zap step will error. Configure Zapier's "Auto-Replay" feature to automatically retry failed steps. For critical workflows, add a Paths by Zapier step after the upload to check the response status and route to an error notification if the upload failed.
Rate Limits and Plan Selection
Think about your volume when choosing a FilePost plan:
| Plan | Price | Uploads/Month | Max File Size |
|---|---|---|---|
| Free | $0 | 300 | 50MB |
| Starter | $9/mo | 5,000 | 200MB |
| Pro | $29/mo | 25,000 | 500MB |
If your Zap processes 10 emails with attachments per day, that's roughly 300 uploads per month, the Starter plan handles that comfortably. For high-volume form submissions or batch processing, the Pro plan provides plenty of headroom. Paid plans include unlimited storage, unlimited bandwidth, and CDN delivery, so you won't get surprise bandwidth bills. The free tier includes 2GB storage.
Keep Your API Key Secure
When you enter your FilePost API key in a Webhooks by Zapier step, it's stored securely by Zapier. However, avoid sharing your Zap publicly or with untrusted collaborators, as they could see the API key in the step configuration. If you need to share a Zap template, remove the API key first and add a note to replace it.
Getting Started
Building your first file upload Zap takes about 15 minutes:
- Sign up for FilePost. Send a POST request to
https://filepost.dev/v1/signupwith your email. You'll receive an API key immediately. The free plan gives you 300 uploads per month to build and test your Zaps. - Create a new Zap with whatever trigger produces files (Gmail, Typeform, JotForm, Dropbox, Slack, etc.).
- Add a Webhooks by Zapier action configured to POST the file to
https://filepost.dev/v1/uploadwith your API key in theX-API-Keyheader. - Use the returned URL in your next action, send it to Slack, append it to a spreadsheet, store it in a CRM, or include it in an email notification.
- Turn on the Zap and let it run. Files will be automatically uploaded and hosted as they arrive.
The beauty of this approach is that FilePost handles all the file hosting complexity, storage, CDN delivery, permanent URLs, while Zapier handles the workflow logic. You end up with a fully automated file pipeline without writing any code or managing any infrastructure.