Attachments
How image attachments work. Formats, limits, where files live, and what happens when you copy or duplicate.
Every spec item can have image attachments. Use them to capture supplier photos, site photos, customer-provided references, anything that makes the spec unambiguous downstream.
Formats and limits
| Limit | |
|---|---|
| Formats | PNG, JPEG, WebP, GIF, AVIF |
| Max size per file | 10 MB |
| Max files per item | 10 |
If you try to upload something larger or in an unsupported format, the upload fails with a clear error.
Where files live
Attachments are stored in Google Cloud Storage under a path scoped to your workspace and project. You don't see the storage layer, you upload through the workspace, the workspace generates a short-lived secure URL, and the file lands at a known path.
The implication: deleting an item or a project doesn't immediately scrub the underlying file (those clean-ups happen on a schedule), but the file becomes unreachable through the workspace immediately.
Uploading
Drag a file onto the camera icon on an item row, or click and pick. Multiple files at once is fine, up to the per-item cap.

What happens when you copy or duplicate
Attachments clone along with their items. The new item gets fresh storage paths and its own copies of the files, so editing or deleting the originals doesn't touch the clones, and vice-versa.
This applies to:
- Duplicating a project, every attachment in the source project is copied into the new project's storage area.
- Copying a unit, every attachment on the unit's per-unit sheets is copied with it.
- Copying a sheet or item, attachments come along for the ride.
Cloning happens server-side; you don't re-upload anything.
In exports
Attached images are embedded in the Miivo workbook export at a fixed gutter column on each category sheet. The legacy export does the same. There's no setting to disable image embedding, the assumption is that attachments matter for the customer's record.
Deleting attachments
Click an attachment and choose Remove. The thumbnail disappears immediately; the underlying file is queued for storage cleanup.