File Transfers Overview
The File Transfers feature is ClientCove's built-in answer to the "how do I get this big file to my client without email rejecting it" problem. You send files via expiring secure links; they upload files back to you via single-purpose request links. Everything is cloud-backed, password-optional, audited, and lives inside the same portal you already use for tickets, projects, and contracts.
File Transfers requires cloud storage. This feature only works when your portal has a cloud storage provider configured (S3, R2, GCS, DigitalOcean Spaces). Local WordPress storage isn't supported because transfer links must be reachable from outside your server. If File Transfers is enabled but no cloud storage is configured, the dashboard shows a "Cloud Storage Required" notice with a link to Settings → Storage. See Cloud Storage Requirement below.
What File Transfers Is
A built-in transfer system that does two things:
- Outbound — send files to someone via a generated download link they can open in any browser, no account required
- Inbound — receive files from someone via a generated upload link they can drop files onto, no account required
Both modes work the same way under the hood — a unique URL with a token, hosted on a public-facing template that doesn't require login, backed by your portal's configured cloud storage (S3, R2, GCS, DigitalOcean Spaces).
How It Compares to Standalone Services
If you've used WeTransfer, Smash, Tresorit Send, or similar one-off transfer tools, the mental model is familiar — drop files, get a link, send it. ClientCove's version focuses on a few different things:
| Capability | Standalone services | ClientCove File Transfers |
|---|---|---|
| Send files via link | ✓ | ✓ |
| Request files via link | Some (paid tiers) | ✓ |
| Custom expirations | Mostly fixed (7 days) | 1 day, 3 days, 1 week, 2 weeks, 1 month, never |
| Password protection | Paid tiers | ✓ |
| Email verification before download | — | ✓ (optional per transfer) |
| Tied to a client / project / ticket | — | ✓ — every transfer can link to portal records |
| Audit log of access | Partial | ✓ — every view, verify, download is recorded with IP |
| Branded landing page | Limited | ✓ — your logo, colors, custom imagery |
| Storage in your own bucket | — | ✓ — uses your configured cloud storage |
| Download notifications | Some | ✓ — get notified when recipients download |
| User management & roles | Per-team subscription | Built into the portal user model |
The trade-off: ClientCove File Transfers requires cloud storage configured on your portal and is part of your portal subscription rather than a standalone tool. Standalone services are easier to start with for a one-off send to someone outside any client relationship; File Transfers wins when the file is part of an ongoing engagement and you want it tied back to that work.
Quick Glossary
| Term | What it means |
|---|---|
| Outbound transfer | You upload files; recipient downloads via your generated link |
| Inbound transfer | You generate an upload link; recipient uploads files to it |
| Recipient | The person on the other end (name + email) — they don't need a portal account |
| Expiration | When the transfer link stops working — 1 day to never |
| Password | Optional access password the recipient must enter to use the link |
| Email verification | Optional gate — recipient must enter a code sent to their email before access |
| Public page | The unauthenticated download/upload page recipients land on |
| Audit log | DB record of every view, verification, and download with timestamp + IP |
| Related post | Optional link to a portal project / ticket / resource the transfer relates to |
| Cloud storage | The S3 / R2 / GCS / Spaces bucket your portal is configured to use |
Outbound vs Inbound
The two transfer modes are designed for opposite directions:
Outbound — "I have files for you"
- You upload files into the dashboard
- Set a recipient name and email
- Configure expiration, optional password, optional email verification
- ClientCove generates a download URL
- Recipient gets an email with the link
- They open it, download files, and ClientCove logs each access
Use cases: delivering a final design package, sending a signed contract, sharing photos from a site visit, returning edited footage.
Inbound — "Send me files"
- You configure the receive form: title, recipient info, max files, max size, allowed file types
- ClientCove generates an upload URL
- You send the URL to whoever needs to upload
- They open it, drop files, and ClientCove uploads directly to your cloud storage
- You get notified when files arrive
- Files appear in the transfer's record
Use cases: collecting source assets from a client, receiving documents for an intake, gathering files from a vendor.
The Dashboard
Open Transfers from the left sidebar (/transfers/). The dashboard is a Vue.js app with:
Toolbar
- Send Files button — opens the outbound creation modal
- Request Files button — opens the inbound creation modal
- Search input — matches transfer title, recipient name, recipient email
Tabs
- All — every transfer
- Outbound — sends only
- Inbound — requests only
Status filter
- All / Active / Expired / Completed / Cancelled
Table
Columns: Title, Type, Recipient, Status, Expiration, Created, Actions
Click any row to drill into the transfer detail view (files, audit log, public link copy actions).
Detail view
Shows for a single transfer:
- Status banner with expiration countdown
- Recipient details
- Files list with per-file download
- Public link with copy-to-clipboard
- Audit log timeline (every access, with IP)
- Actions: extend expiration, regenerate link, cancel, delete
Cloud Storage Requirement
File Transfers requires a cloud storage provider configured. Local storage isn't supported because:
- Transfer links must be reachable from outside the server (recipients aren't on your network)
- Files often exceed PHP upload limits — direct browser-to-cloud uploads bypass that
- Expired transfers need automated cleanup that's safer at the cloud-API level
Supported providers (configured in Settings → Storage):
- DigitalOcean Spaces — common ClientCove choice, S3-compatible
- AWS S3 — native AWS infrastructure
- Cloudflare R2 — S3-compatible, no egress fees
- Google Cloud Storage — GCP-native
If File Transfers is enabled but no cloud storage is configured, the dashboard shows a "Cloud Storage Required" notice with a link to Settings → Storage for admins to configure.
The same cloud storage powers Resources file uploads (see Cloud Storage & Upload Limits) — configure once, reuse everywhere.
Permissions
| Capability | Who |
|---|---|
| Open the Transfers dashboard | Administrator, Editor, Representative |
| Create outbound transfer | Administrator, Editor, Representative |
| Create inbound request | Administrator, Editor, Representative |
| View any transfer | Administrator, Editor, Representative |
| Cancel transfer | Administrator, Editor, Representative |
| Delete transfer (and files) | Administrator, Editor |
| Extend expiration | Administrator, Editor, Representative |
| Configure transfer panel branding | Administrator, Editor |
| Receive download notifications | Whoever created the transfer |
The /transfers/ page redirects non-managers to home — client users don't see it. Recipients of transfer links don't need accounts at all.
Recipients are anonymous by design. A transfer link works for anyone who has it, with optional password and email-verification gates layered on top. This makes File Transfers ideal for sending to people outside your portal (vendors, prospective clients, one-off contractors) without provisioning accounts.