Skip to content

File upload

When released, the File upload option will let a customer attach a file to their order — artwork to print, a logo to embroider, or a document to reference.

It supports flat fee, percentage of product price and quantity tiers — the charge is for supplying a file at all. There is no per-megabyte or per-file rule: the pricing function never sees the bytes, and billing by filename length would be absurd.

Maximum file size 25 MB per file
Maximum files per option 5
Accepted kinds Images, documents, fonts, audio

You choose which kinds a given option accepts. An option expecting print artwork should accept images only, so a customer does not attach a spreadsheet and discover the problem at fulfilment.

Set the size limit to what you can actually use. The customer is told the limit up front and warned immediately if their file is over it, rather than after a long upload.

The file goes directly from the customer’s browser to storage — it does not pass through your Shopify store. The order line records a reference to the file, not a public link, so a customer’s uploaded artwork is not sitting behind a guessable URL in an order record.

An upload has to complete before it counts. If a customer closes the tab mid-upload, nothing is attached, and the required-field check stops them adding to cart with a half-finished upload. This is deliberate: an upload that silently did not happen is discovered at fulfilment, by which point the order is paid for.

Open the order in your Shopify admin and follow the reference on the line item. See Reading a customer’s choices.

“That file is larger than N MB.” The customer’s file exceeds the limit you set. Either they compress it or you raise the limit.

“Uploads are still loading. Please try again.” The upload component had not finished loading when the customer picked a file. Waiting a moment and retrying resolves it.

“That file could not be accepted.” The file’s type is not one this option accepts, or it failed the server-side check. The check runs on the file’s actual contents, not its extension, so renaming a file does not get it through.