Shopify Order File Attachments: How to Tie Files to Orders
Shopify orders have no built-in file attachment field, so the reliable approach is to collect the file before purchase and store a link to it on the order line item (as a line item property), with the file itself kept in proper storage. For files that arrive after checkout, keep them matched to the order number and record the link on the order with a note, a timeline comment or a metafield, so anyone opening the order can find the file.
Why "attaching a file to an order" is harder than it sounds
When merchants search for this, they usually mean one of two things. Either a customer needs to send a logo, photo or print file that belongs to a specific order, or staff want to keep a proof, invoice or production file next to the order in the admin.
Shopify handles neither natively in a tidy way. An order holds products, prices, customer details, notes, tags, timeline comments and custom data (metafields and line item properties). It doesn't have a "files" tab. So every working setup comes down to the same pattern: the file lives somewhere, and the order holds a pointer to it.
The design questions are where the file lives, what the pointer looks like, and whether it's attached to the whole order or to the specific item it belongs to.
Decide when you collect the file
This is the first decision, and it shapes everything else.
| Collect before purchase | Collect after purchase |
|---|---|
| Customer uploads on the product page, file is tied to the cart line | Customer replies to an email or uses an upload link after ordering |
| No chasing, the file is there when the order arrives | Orders stall while you wait for files |
| Works best for simple, repeatable products (custom mugs, photo prints, logo stickers) | Works best when you need a conversation first (custom quotes, complex print jobs) |
| Risk: customer uploads a bad file and you need to ask again | Risk: files arrive unmatched, or never arrive |
Most made-to-order stores end up doing both: pre-purchase upload for standard products, and a post-purchase route for replacements and corrections. A photo canvas shop, for example, collects the photo on the product page, then emails the customer if the resolution is too low and asks them to resend through a link that requires the order number.
Attach the file to the line item, not just the order
If a customer buys three custom t-shirts with three different designs, a single file attached to "the order" is useless. Production needs to know which file goes with which shirt, size and colour.
Shopify's answer for this is line item properties. These are key-value pairs attached to a specific cart line, set on the product form with inputs named properties[Your label]. They carry through to:
- the cart and checkout (unless the key starts with an underscore, which most themes hide from customers)
- the order details page in the admin, under each line item
- order notification emails, if the template outputs
line.properties - packing slips, if you edit the packing slip template to print them
A property's value is text. For a file, that text should be a URL to the file, plus anything useful such as the original filename. That's the pointer.
Two practical consequences:
- Two identical products with different files become two separate cart lines. That's correct behaviour, because they are different items to produce.
- Changing properties after the order is placed isn't something you do casually from the order page. If a customer sends a replacement file, record it in a note or comment rather than expecting the original property to update.
The native theme file input, and its limits
Shopify themes have long supported a plain file input on the product form (<input type="file" name="properties[Artwork]">), which uploads the file to Shopify and stores a link as a line item property. It sounds ideal, but in practice:
- It depends on how your theme submits the add-to-cart form. Many modern themes add to cart with JavaScript, and file inputs don't always survive that, so the upload silently goes missing.
- It's meant for small files. Large print files, videos and layered design files are where it breaks.
- You get no notification, no folder, and no copy in your own storage. The link sits on the order and that's it.
- It requires editing theme code, and theme updates can overwrite your change.
It can work for a low-volume store with small images on a theme you've tested. Test it with a real file and a real checkout before relying on it, and check the order in the admin afterwards.
Where the file itself should live
The link on the order is only as good as the place it points to. Consider who needs the file and for how long.
Email inbox. Fine as a notification, poor as storage. Gmail caps attachments at 25 MB and Outlook is in a similar range, so print-ready PDFs and high-resolution photos often won't fit. Inboxes also get searched badly under deadline.
Shopify Files (Content > Files). Staff can upload files here and copy the URL. It's convenient for proofs or reference images you create, but it's a public CDN link, it isn't organised by order, and it's not a good home for customer artwork in bulk.
Cloud storage (Google Drive, Dropbox, OneDrive, Box). Best for most small teams. Use a folder per order or per day, and name folders with the order number so your designer or print partner can find files without opening Shopify.
SFTP server. Common when files feed straight into a print workflow or RIP software, or when a production partner pulls files on a schedule.
Whatever you choose, decide on retention. Reorders are a real use case: a café that bought 500 branded cups in March will often want the same print in September and won't have the file anymore. Keep production files for at least a year, longer for repeat B2B customers.
Recording files on the order after checkout
When files arrive later (by email, from a designer, or as a proof you created), put a record on the order itself so nobody has to search mailboxes.
- Order notes. Quick and visible at the top of the order. Paste the storage link and a one-line description: "Final artwork v2 (customer approved 14 May): [link]". Notes are a single text field, so add to it rather than overwriting.
- Timeline comments. Each comment is timestamped and attributed to the staff member, which makes it the better place for a history of versions, approvals and customer replies. The comment box also lets staff attach files directly.
- Order metafields. Under Settings > Custom data > Orders you can define fields such as "Artwork link" or "Proof approved". These are structured, can be shown in the order page, and are readable by apps, Shopify Flow and some fulfilment integrations. Good for stores with a defined process.
- Tags. Not for links, but useful for status:
artwork-missing,artwork-received,proof-sent. Filter the orders list by tag every morning to see what's blocked.
A simple combination that works for a two-person shop: tag artwork-missing on orders without a file, a timeline comment with the link when it arrives, then swap the tag to artwork-received.
Matching late files to the right order
Post-purchase collection is where files get lost. Common situations:
- The customer replies from a different email address than they ordered with.
- They send the file to a general inbox with "here's my logo" and no order number.
- They place two orders and send one file.
Reduce this by making the order number unavoidable. Put it in the subject line of any request email ("Upload artwork for order #1047"), and if you use a form or upload page, make the order number a required field. In your order confirmation template, add a short block for products that need files, explaining exactly how and where to send them.
Set expectations on the product page
Many attachment problems are really instruction problems. Tell customers before they upload:
- Accepted formats, in plain words: "PDF, PNG, JPG or AI. Vector files give the sharpest print."
- Size and resolution: "At least 300 DPI at print size. For a 20×30 cm poster that's roughly 2400×3600 pixels."
- Colour and bleed for print products: CMYK preferred, 3 mm bleed, text kept inside the safe area.
- What happens next: "We'll email a proof within 1 business day" or "Files are printed as supplied, no proof."
- How many files: one per item, or multiple (front and back, several photos for a collage).
If a file is mandatory to make the product, make the upload required before add to cart. Optional uploads on products that can't be made without them guarantee follow-up emails.
Mistakes that cost time
Using the cart note for files. The cart note is order-level, often hidden in drawer carts, and only takes text. It can't distinguish between items.
Relying on email attachments as the record. The file is in one person's inbox. When they're off sick, production stops.
Not testing the full path. Place a test order with a large real file on mobile and desktop, then check the order page, the notification email and the storage folder. Upload fields that work on desktop sometimes fail on phones, and phones are where customers take photos.
Overwriting the original. When a customer sends a corrected file, keep both and label them (v1, v2). Disputes about "what I sent" are easy to settle when the history exists.
Forgetting privacy. Customer photos and documents are personal data. Don't put them in publicly shared folders, limit who has access, and delete them on a schedule that matches your privacy policy.
Ignoring packing slips. If production works from printed slips, edit the packing slip template (Settings > Shipping and delivery > Packing slips) to print line item properties, so the file reference travels with the physical job.
A setup that scales
For a store doing a few dozen custom orders a week, this structure holds up:
- Upload field on the product page, required for products that can't be made without a file, with clear format instructions next to it.
- File linked to the line item as a property, so each item carries its own artwork.
- File copied to shared storage in a folder named by order number.
- A notification to the person who handles production.
- Tags for status, timeline comments for replacements and approvals.
- A post-purchase upload link with a required order number field, for corrections.
How File Upload To Inbox helps
File To Inbox adds an upload field to product pages (all products or chosen ones) and attaches the uploaded files to the cart line item, so they arrive tied to the order, and the Shopify order page gets a "View uploaded files" link. Files up to 5 GB each go to built-in storage or your own Dropbox, Google Drive, OneDrive, Box or SFTP, with email notifications. A standalone upload page with extra required fields (such as an order number) covers files sent after purchase. See adding a file upload field to product pages for the setup steps.
Don't have File To Inbox yet? Install it from the Shopify App Store →
Frequently asked questions
Can I attach a file to an existing order in the Shopify admin?
There's no dedicated file field on orders. Staff can attach a file in a timeline comment, or store the file in Shopify Files or cloud storage and paste the link into the order note, a comment or an order metafield. A comment is usually best because it's timestamped and shows who added it.
Where do line item properties show up on a Shopify order?
They show under each line item on the order page in the admin, and in the cart and checkout unless the property name starts with an underscore. They appear in notification emails and packing slips only if those templates output them, so check your templates if staff work from printed slips.
Why is the customer's uploaded file missing from the order?
The usual causes are a theme that adds to cart with JavaScript and drops the file input, a file too large for the method you use, or a customer who skipped an optional upload. Test the add-to-cart flow with a real file on mobile and desktop, and make the upload required where the product can't be made without it.
Can customers email files instead of uploading them?
They can, but email attachments are often capped around 25 MB and get separated from the order easily. If you allow email, require the order number in the subject line and save the file to shared storage with a link recorded on the order.
Can customers upload files at Shopify checkout?
Standard Shopify checkout doesn't offer a file upload field for merchants to add. Collect files on the product page before add to cart, or send customers a post-purchase upload link that asks for their order number.