Photos, CAD Files, & Attachments on Work Orders
Each work order has a compact Photos chip near the top of the job — a small thumbnail with the attachment count. Click it to open the tile grid (one tile per attachment), so photos never eat a full row. Designed for two main flows:
- Custom builds: inspiration shots, vendor drawings, 3D model files
- Repairs: 5-10 angles of damage at intake, progress photos through the job
How to upload
- Open the work order. Click the Photos chip to open the grid.
- Click the dashed + Add tile at the end of the grid.
- Caption — optional but recommended (e.g. “Pre-repair image”, “Stage 3”). The caption is what tells the photo’s story, so it’s worth filling in.
- File — pick the file. Max 8 MB.
- Upload.
The file uploads to your tenant’s R2 storage; a new tile appears in the grid.
Supported file types
| Category | Extensions / MIME |
|---|---|
| Images | PNG, JPG, WebP, GIF |
| Documents | |
| CAD / 3D | STL, OBJ, 3DM, DWG, DXF, STEP, STP, IGS, IGES, X_T, X_B |
CAD files are gated by extension (not MIME) because browsers don’t always recognize them with a registered MIME type — they often come through as application/octet-stream. The whitelist covers Rhino, Matrix, AutoCAD, SolidWorks, Parasolid, and the common interchange formats.
How the tiles work
Each tile shows the file type (JPG, PNG, PDF, STL, …) and its caption beneath the thumbnail:
- Images render as photo thumbnails
- PDFs show a document icon labeled “PDF”
- CAD files show a cube icon labeled with the extension (e.g. “STL”, “DWG”)
Click any tile to open the preview overlay. For images, click the photo to zoom to actual size and click again to fit (the overlay scrolls when zoomed — no extra browser tab). PDF and CAD files show an Open file button. The overlay header shows the file type and the date it was added; with more than one attachment, use the ‹ › arrows to step through them.
Caption & delete
- Caption — click the caption line in the preview to edit it, then Save. Captions also show under each tile in the grid, so you can read them without opening the photo.
- Delete — click Delete, then confirm with Delete (or Keep to back out). Removes the R2 object first, then the database row. Cannot be undone.
Legacy single-URL slots
The old InspirationPhotoURL and VendorDrawingURL fields on the work order (single-URL slots from the original CustomBuilds module) still exist for legacy data — new uploads go into the multi-photo repair_images table.
See also
- Sharing Item Photos with Customers — Web Share API for sending photos to customers’ phones