Appearance
File Upload
Allow customers to upload files such as images, documents, or designs for product customization — as a single file or multiple files with per-option limits and type restrictions.
Overview
File Upload is an input option type that enables customers to upload files from their device. It's ideal for collecting artwork, logos, designs, documents, or any files needed for custom products or orders.
Use File Upload for:
- Custom artwork or designs
- Logos for printing or engraving
- Product images or references
- Documents or specifications
- Photos for personalization
Key characteristics:
- Single file (default) or multiple files per option, with a minimum/maximum count
- Restrict accepted file types by group (Images, Documents, etc.) or individual extension
- Can be marked as required
- Validates file type, count, and size before checkout
- Fully stylable — trigger, drop zone, file list, and feedback colors (see File Upload Styling)
Configuration
Basic Settings
| Setting | Description |
|---|---|
| Label | Option name displayed to customers (e.g., "Upload Your Logo") |
| Option is required for this option set | If enabled, customers must upload a file before adding to cart |
| Hide Label from storefront | If enabled, only the file upload button is shown (label is hidden) |
Advanced Settings
| Setting | Description |
|---|---|
| Internal Label | Admin-only identifier (replaces label in options list) |
| Help Text | Additional guidance shown to customers (based on display mode) |
| Allow multiple files | Off by default. Turns this option into a multi-file uploader — see Multiple Files |
| Minimum files / Maximum files | Only shown once Allow multiple files is on — see Multiple Files |
| Allowed file types | Restrict which file types customers can upload — see Allowed File Types |
How to Add File Upload
- Navigate to Option Sets and open your option set
- Click Add Option
- Select File Upload from the Option Type modal
- Enter a Label (e.g., "Upload Your Design")
- Check Option is required if file upload is mandatory
- (Optional) Click Advanced Settings to add Internal Label, Help Text, enable multiple files, or restrict file types
- Click Save in the contextual save bar
Multiple Files
By default, a File Upload option accepts a single file — this behavior is unchanged from before and uses the same wire format, including edit-in-cart.
Turning on Allow multiple files switches the option to accept several files at once:
| Setting | Default | What it does |
|---|---|---|
| Allow multiple files | Off | Enables multi-file mode for this option. Min/max fields only appear once this is on |
| Minimum files | Empty (no minimum) | Customers must upload at least this many files before the option validates |
| Maximum files | Empty (no maximum) | Customers can't upload more than this many files. Hard-capped at 10 regardless of what's entered |
Why 10?
The cart line only reserves 10 file-property slots per option, so Maximum files can't be set above that ceiling.
On the Storefront
- Customers click the upload trigger (a button, a drop zone, or both — see File Upload Styling) to add files, one at a time or several at once depending on their device's file picker
- Each added file appears as its own row in the file list, with a Remove control to take it back out
- Trying to add-to-cart with fewer than the minimum, more than the maximum, or a disallowed file type blocks the submission and shows the relevant error message
Cart Properties
Each uploaded file becomes its own line-item property, named after the option's label with a number appended once there's more than one file:
- Single file (or multi-file option with only one file uploaded): the property is named exactly like the option label — e.g. Logo
- Multiple files: each file gets its own numbered property — e.g. Logo 1, Logo 2, Logo 3
This keeps existing single-file cart lines byte-identical to before — nothing changes for options that don't use multiple files.
Allowed File Types
Restrict which file types a File Upload option accepts using one of three modes:
| Mode | What it does |
|---|---|
| Allow all (default) | No restriction — customers can upload any file type |
| Allow only selected | Customers can only upload the file types you check |
| Block selected | Customers can upload anything except the file types you check |
When a mode other than Allow all is selected, pick from seven file type groups. Each group expands to let you check individual extensions instead of the whole group:
| Group | Extensions |
|---|---|
| Images | .png, .jpg, .jpeg, .gif, .webp, .svg |
| Documents | .txt, .doc, .docx, .rtf, .pdf |
| Spreadsheets | .csv, .xls, .xlsx |
| Presentations | .ppt, .pptx |
| Audio | .mp3, .wav, .ogg, .m4a |
| Video | .mp4, .mov, .avi, .webm |
| Archives | .zip, .rar, .7z |
Checking a group selects every extension in it; unchecking individual extensions within an expanded group leaves the rest checked.
File Requirements
File Size
Every uploaded file is capped at 20 MB, regardless of type — this limit is fixed and isn't configurable per option or per store.
File Storage
- Uploaded files are securely stored
- Files are attached to the order
- Accessible from order details in Shopify admin
- Files remain available for order fulfillment
Error Messages
Five validation messages can be customized under Storefront Settings → Validation and Inventory. Leave any of them blank to use the default shown below.
| Message | Default text | Placeholders |
|---|---|---|
| File type not allowed message | {option} does not accept this file type | {option}, {types} |
| Minimum files message | {option}: please upload at least {min} file(s) | {option}, {min} |
| Maximum files message | {option}: you can upload up to {max} file(s) | {option}, {max} |
| File too large message | {option}: file exceeds the {size} size limit | {option}, {size} |
| Combined files too large message | {option}: combined files exceed the {size} size limit | {option}, {size} |
Immediate feedback while picking
The Maximum files message also appears instantly the moment a customer tries to add more files than allowed — before they even attempt to add the option to cart.
Customer Experience
Upload interface:
- Customer clicks the upload trigger (button and/or drop zone, per your styling)
- Device file picker (or drag-and-drop) opens
- Customer selects one or more files, depending on the option's mode
- Each file appears as a row in the file list with its name, size, and a Remove control
- Customer can remove any file and add more, up to the configured maximum
Before adding to cart:
- Required uploads must be completed
- File count must satisfy Minimum/Maximum files (multi-file options)
- Disallowed file types are rejected
- Oversized files (over 20 MB, or combined over the limit) are rejected
- Error messages guide corrections
Buy It Now hides when a file is selected
This is expected behavior, not a bug — files can only be attached through the regular add-to-cart flow, the same as it has always worked for single-file uploads.
Use Cases
Custom Logo Upload
Label: Upload Your Logo Required: Yes Help Text: Accepted formats: JPG, PNG, SVG. Minimum 300 DPI for best quality.
Result: Required file upload for customers to provide their logo for printing
Multiple Product Photos
Label: Upload Reference Photos Required: No Allow multiple files: Yes, Minimum 1, Maximum 5 Allowed file types: Allow only selected — Images
Result: Customers can upload 1–5 reference photos, each landing on the order as its own numbered property (e.g. Upload Reference Photos 1, Upload Reference Photos 2)
Design Artwork
Label: Upload Design Artwork Required: Yes Help Text: High-resolution images (min 1200x1200px) work best. We accept JPG, PNG, PDF. Allowed file types: Allow only selected — Images, Documents (PDF)
Result: Required upload for custom design artwork restricted to image and document formats
Reference Photo
Label: Upload Reference Photo Required: No Help Text: Optional: Upload a photo of what you'd like us to create
Result: Optional file upload for customers to provide reference images
Document Upload
Label: Upload Specifications Required: No Internal Label: Customer Spec Document Help Text: Upload PDF or Word document with your requirements Allowed file types: Allow only selected — Documents
Result: Optional document upload restricted to document formats
Styling
File Upload has its own dedicated styling — the upload trigger (button/drop zone), file list, and feedback colors are all configurable via named templates, the same way Accordion, Swatches, and Tabs work.
See File Upload Styling for the full settings reference, and Sandbox & Live Preview for how to preview upload states (complete, rejected, drag-over) while you style.
Best Practices
Provide clear guidance:
- Use Help Text to specify file requirements
- List accepted file types
- Mention size or resolution requirements
- Explain what the file will be used for
Set appropriate requirements:
- Mark as required only when file is essential
- Consider making optional for reference uploads
- Test the upload flow from customer perspective
- Ensure error messages are helpful
Communicate file specifications:
- Specify minimum resolution for print quality
- Mention the 20 MB per-file size limit if it matters for your use case
- List preferred file formats
- Provide examples of good uploads
Consider upload context:
- Place upload option near related settings
- Use Descriptive Text to provide instructions
- Link to file preparation guides if needed
- Offer support for file-related questions
Handle file quality:
- Request high-resolution files for printing
- Explain DPI requirements (e.g., 300 DPI)
- Mention color mode if relevant (RGB vs CMYK)
- Provide file preparation tips
Test on mobile devices:
- File uploads work on mobile browsers
- Camera roll access on smartphones
- Test upload flow on various devices
- Ensure button is easily tappable
Troubleshooting
Upload button not appearing: Check that File Upload option type is selected and saved
File rejected: Verify file type is supported and within the 20 MB size limit
Too few/too many files: Check the option's Minimum files / Maximum files settings
Upload fails: Check internet connection, try a smaller file, or a different format
File not attached to order: Ensure upload completed before adding to cart
Buy It Now missing: Expected — see the note above
Related
- File Upload Styling — trigger, drop zone, file list, and feedback colors
- Sandbox & Live Preview — simulate upload states while styling
- Short Text - Single-line text input
- Paragraph Text - Multi-line text input
- Internal Label - Admin-only identification
- Help Text - Additional context display
- Required Fields - Making options required