Documents
Documents
The Documents module lets you upload and manage files for your clients. Files are stored securely in Supabase Storage and are visible to clients through their portal under the relevant client record.
Uploading a Document
Documents are uploaded from the Client Detail page, not from a standalone Documents module list. This ensures every document is explicitly tied to a client.
How to upload
- Navigate to Clients and open the relevant client record.
- Click the Documents tab.
- Click + Upload Document.
- Select the file from your computer.
- Fill in the optional metadata:
| Field | Required | Notes |
|---|---|---|
| File | Yes | The file to upload |
| Display Name | No | Human-readable name shown to the client (defaults to filename) |
| Description | No | Brief note about what the document is |
| Visible to Client | Yes | Toggle — if enabled, the client can see it in their portal |
- Click Upload.
The file is uploaded to Supabase Storage and the record is created immediately.
Supported File Types
The following MIME types are accepted:
| Category | Formats |
|---|---|
| Documents | PDF (.pdf), Word (.docx, .doc), Excel (.xlsx, .xls), PowerPoint (.pptx, .ppt), plain text (.txt) |
| Images | PNG (.png), JPEG (.jpg, .jpeg), GIF (.gif), WebP (.webp), SVG (.svg) |
| Archives | ZIP (.zip) |
| Spreadsheets | CSV (.csv) |
Files with unsupported MIME types will be rejected at upload time. If you need to share an unsupported file type, compress it into a .zip archive first.
File Size Limit
The maximum file size per upload is 20 MB.
For files larger than 20 MB (e.g. video files, large design exports), use a cloud storage link (Google Drive, Dropbox, OneDrive) and share the link in the document's description field or directly with the client via email.
File Storage
Files are stored in Supabase Storage in a private bucket. Files are not publicly accessible via a raw URL — access is controlled by the CRM's authentication layer.
- Clients access their documents through an authenticated session in their portal.
- Admin users access documents from the client detail page.
- Direct links without authentication do not work.
Client Visibility
Each document has a Visible to Client toggle:
| Setting | Effect |
|---|---|
| On | Document appears in the client's portal under their documents section |
| Off | Document is stored internally only — clients cannot see it |
Use internal-only documents for:
- Internal briefs and strategy documents
- Vendor contracts or supplier documents related to the client
- Internal cost estimates not intended for client review
Deleting a Document
- Open the client's Documents tab.
- Find the document you want to remove.
- Click the Delete (trash) icon.
- Confirm the deletion.
Deleting a document removes both the database record and the underlying file from Supabase Storage. This cannot be undone. Download the file first if you need to keep a local copy.
Audit Trail
The CRM records who uploaded each document and when. This metadata is visible in the documents table:
| Field | Description |
|---|---|
| Uploaded By | The admin user who uploaded the file |
| Upload Date | Timestamp of the upload |
| Last Modified | Timestamp of the most recent metadata update |
This provides a basic audit trail for compliance and dispute resolution purposes.
Best Practices for Naming Documents
Good document naming makes it easy for both your team and your clients to find the right file quickly.
Recommended naming format:
[ClientName]_[DocumentType]_[Date].[ext]
Examples:
| Good ✓ | Poor ✗ |
|---|---|
AcmeCorp_ServiceAgreement_2025-07.pdf |
contract.pdf |
AcmeCorp_WebsiteProposal_v2.pdf |
proposal final FINAL.pdf |
AcmeCorp_BrandGuide_2025.pdf |
brand stuff.pdf |
AcmeCorp_InvoiceINV-042_2025-08.pdf |
invoice.pdf |
Additional tips:
- Use ISO date format (
YYYY-MMorYYYY-MM-DD) so files sort chronologically. - Use version suffixes (
_v1,_v2) for documents that go through multiple revisions. - Avoid spaces in filenames — use underscores or hyphens instead.
- Use the Display Name field to show a friendlier name to the client while keeping the technical filename consistent internally.