Zapier File Storage
Permanent File Storage for Zapier Workflows
Store files from Zapier automations with reliable global access.
Zapier excels at shuttling files between apps — a Gmail attachment into a Trello card, a Typeform upload into a Google Sheet — but it isn't a storage layer. Within a Zap, files travel as an ephemeral file object (a temporary hydrate URL Zapier generates for that run). Once the Zap finishes, that URL stops resolving, so you can't write it into a record and expect it to work next week. The fix is to land the file somewhere permanent during the run and store that durable URL instead.
The cleanest way to do this without a Code step is the Webhooks by Zapier action. The files.link three-call upload doesn't map neatly to a single no-code action, so most people use a small Code by Zapier (JavaScript or Python) step that performs all three calls and returns the CDN URL as an output field. A JavaScript Code step:
const FOLDER = inputData.folderId;
const KEY = inputData.apiKey; // store as a Zapier secret
const src = inputData.fileUrl; // Zapier's hydrate URL for this run
const bytes = await (await fetch(src)).arrayBuffer();
// 1) metadata
const meta = await (await fetch(`https://api.files.link/v1/files/${FOLDER}`, {
method: 'POST',
headers: { Authorization: KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({ filesMetadata: [{ name: inputData.fileName }] }),
})).json();
const { url, id } = meta.urls[0];
// 2) upload bytes to the presigned URL
await fetch(url, { method: 'PUT', body: bytes });
// 3) confirm
await fetch('https://api.files.link/v1/files/confirm-upload', {
method: 'POST',
headers: { Authorization: KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({ ids: [id] }),
});
output = { cdnUrl: `https://cdn.files.link/${id}`, fileId: id };Map output.cdnUrl into the next action — write it to your CRM, post it to Slack, or append it to a sheet. The Authorization header is the raw API key, kept in a Zapier secret rather than hard-coded. For files that should not be public, upload them as private and mint a signed URL only at the moment a downstream step needs to expose them. Because billing is prepaid credits rather than per-seat, adding more Zaps or routing higher volume doesn't multiply a per-user license cost — you just draw down credits as files land.
Benefits With No Complexity
Global CDN delivery
Edge-cached worldwide
Signed-URL security
What You Get
Unlimited files
Unlimited storage
Public + Private storage
CDN ready links
Prepaid credits
More coming soon
How files.link Works
1. Upload
2. Copy
3. Use Anywhere
Why Developers Choose files.link
A Better Way to Store & Deliver Files
| Zapier transient files | Google Drive | Dropbox | files.link | |
|---|---|---|---|---|
| Permanent storage after the Zap ends | ||||
| Global CDN delivery | ||||
| REST API (Webhooks/Code by Zapier compatible) | ||||
| Signed URLs for private files | ||||
| No per-seat / per-user pricing | ||||
| Direct download link, no recipient account |
Calculate Your Needs
Storage
Egress
CDN Bandwidth
Start Zapier Storage
- Global CDN delivery
- Edge-cached worldwide
- Signed-URL security
- Unlimited files
- Unlimited storage
- Public + Private storage
- No subscription — prepaid credits keep spend predictable