How to Add a File Upload Field in Shopify (2026)

Last updated
Expert reviewed
5 min read
Jacques Blom
Jacques Blom
CTO at Fudge.

Key takeaways

  • Shopify does not have a native file upload field in its contact form.
  • For product customization uploads (custom logo, design file), use Shopify’s line item properties with a file input.
  • For contact form file uploads (proof of purchase, reference images), use a form app that supports file uploads.
  • Hulk Form Builder and Jotform both support file uploads with cloud storage.

File uploads in Shopify serve two distinct use cases: uploads attached to product orders (like a custom logo for an engraved item), and uploads attached to contact form submissions (like a warranty claim photo). The right approach differs for each.

Use case 1 — File uploads for product customization

The most common reason Shopify merchants need file uploads: customers ordering personalized products need to submit their design file, logo, or reference image with the order.

The correct Shopify method: line item properties.

Line item properties let you attach custom data to a cart item, including file uploads. The uploaded file is stored by Shopify and linked to the order.

How to add a file upload line item property

Step 1 - Duplicate your theme and open the code editor.

Step 2 - Find your product form. This is usually in sections/main-product.liquid or snippets/product-form.liquid.

Step 3 - Inside the <form> tags, add a file input:

<div class="product-form__input">
  <label for="file-upload">Upload your design file</label>
  <input
    type="file"
    id="file-upload"
    name="properties[Design File]"
    accept=".jpg,.jpeg,.png,.pdf,.ai,.eps"
  />
</div>

The name="properties[Design File]" format is how Shopify associates the field with the line item. “Design File” is the label that appears in the order admin.

Step 4 - Shopify handles the file storage and displays the uploaded file in the order details.

Limitation: Shopify’s line item property file upload works in the standard cart and checkout flow. It does not work with accelerated checkout buttons (Shop Pay, PayPal) that skip the normal cart.

Describing it to Fudge

Rather than editing Liquid files yourself, describe the customization to Fudge:

“Add a file upload field to my product pages for custom products. Label it ‘Upload your design or logo (JPG, PNG, PDF)’. Show it only on products tagged ‘custom’.”

Related: Customize Your Shopify Product Page.

Related: Add Conditional Logic to Shopify Forms.


Use case 2 — File uploads in contact forms

For contact forms where customers might submit proof of purchase, warranty photos, or reference images, Shopify’s native contact form doesn’t support file uploads at all.

Related: Add a Custom Contact Form in Shopify.

Options:

Form apps with file upload support

Hulk Form Builder — includes file upload as a field type. Free plan supports basic file uploads. Uploaded files are emailed to you or stored in the app’s dashboard.

Powerful Contact Form Builder — similar functionality, same developer.

Setup: Install the app → create a new form → drag a “File Upload” field into the form → configure allowed file types and size limits → embed the form on your contact page.

Third-party form tools

Typeform and JotForm both support file uploads natively. Files are stored in the platform’s cloud storage and accessible via the form submission dashboard. Embed these on your Shopify page as an iframe.

Google Forms — free, supports file uploads (stored in Google Drive), very basic design. Works but looks generic.


What types of file uploads are commonly needed?

Custom product stores:

Service-based Shopify stores:

B2B or wholesale stores:

Always specify accepted file types and maximum file size clearly. Standard limits: images up to 10MB, documents up to 5MB.

Build custom Shopify forms by describing what you need.
Try Fudge for Free

Custom file upload implementation

For stores that need a file upload experience that’s fully integrated with their store design — not embedded from a third-party form tool — a custom implementation using a cloud storage service is an option.

The approach: use an <input type="file"> in a custom form, upload the file to a cloud storage provider (AWS S3, Cloudinary, or a similar service) via a server-side endpoint, then pass the resulting URL as a hidden field in the form submission or as a line item property.

This is complex to build correctly (authentication, file size limits, security). It’s best handled by a developer or by describing the full requirement to Fudge:

“Build a contact form with a file upload field. Files should be uploaded to [storage service] and the submission should include the file URL. Limit uploads to images and PDFs under 10MB.”


Security considerations for file uploads

Any file upload field can be abused to submit malicious files. Always:


FAQ

What's the maximum file size for Shopify file uploads?

For line item property file uploads (custom product orders), Shopify caps individual files at 20MB. For uploads through form apps or external services, the limit depends on the tool - Hulk Form Builder and Jotform typically support 100MB+ on paid plans, while free tiers often cap at 10MB. Check your specific app's plan details.

Can I add a file upload to the Shopify cart page?

Yes, but it requires custom implementation. Cleanest path: describe what you want to Fudge ("add a file upload field to the cart drawer for special instructions") and it edits the cart template with <input type="file" name="properties[…]"> so Shopify saves uploads as line item properties. Manual: edit the cart template yourself. For per-line-item uploads, use the product page approach in this guide.

Does Shopify charge for file uploads from customers?

No. Files attached as line item properties are stored by Shopify at no additional cost. They appear in the order details and remain accessible to merchants for the lifetime of the order. Form-app uploads usually count toward the app's storage tier instead.

What file types should I allow on a custom product upload?

Restrict the accept attribute to only the formats you can actually use - typically images (.jpg, .png, .svg) and design files (.pdf, .ai, .eps). Allowing .doc, .zip, or executables creates security and processing risk without benefit. The narrower the accept list, the lower the abuse surface.

Where do uploaded files go when a customer submits an order?

Line item property files are stored by Shopify and linked to the order. Open the order in admin → click the line item → the file appears as a downloadable link in the line item properties. Files uploaded through form apps live in the app's dashboard or in your connected storage (Hulk's dashboard, Jotform's cloud, your S3 bucket).

Jacques's signature
Add file uploads and custom form fields by describing them to Fudge.

Related: Add Custom JavaScript in Shopify.

You might also be interested in

How to Add a Custom Contact Form in Shopify (2026)
Learn how to add a custom contact form in Shopify — use the built-in form, add custom fields with apps, or embed Typeform. Compares ease of setup vs flexibility.
How to Add Conditional Logic to Shopify Forms (2026)
Learn how to add show/hide conditional logic to Shopify forms — using form apps, custom JavaScript, or a native conditional form build.
How to Create Multi-Step Forms in Shopify (2026)
Add multi-step forms to Shopify using Typeform, JotForm, a form app, or custom Liquid code. Workarounds for Shopify's single-step limitation.