New: Submission data retention controls are now available ->
Back to all posts

Shopify File Uploads: The Complete Guide

Oguzcan in Guides • Published September 4, 2026

If you sell personalized, made-to-order, or custom products on Shopify, you often need more from a customer than an Add to Cart button can collect.

A 3D printing shop needs a model file, material, quantity, and print requirements before it can quote. A printing company needs artwork. A sign maker needs a logo and dimensions. An embroidery shop needs artwork, thread colors, and placement instructions. A manufacturer might need drawings or specifications before it can provide a price.

The question is usually the same:

How can customers upload a file on Shopify and send it with their order or custom-order request?

There are four common ways to solve it:

  1. Shopify line item properties for files that belong directly to a normal product order.
  2. Shopify Forms for simple standalone forms with a file field.
  3. A dedicated Shopify file-upload app for advanced product personalization, very large files, or specialist workflows.
  4. A custom form with Forminit for 3D print quotes, custom orders, quote requests, post-purchase artwork, and workflows where the uploaded file is only one part of the information you need.

The right option depends less on the upload itself and more on what should happen after the customer selects the file.

What you needRecommended approach
File associated with a normal Shopify product orderShopify line item property
Image preview, cropping, DPI checks or advanced personalizationDedicated upload app
Automatic 3D geometry analysis and instant print pricingDedicated 3D printing app
Manual or reviewed 3D printing quote with model files and specificationsForminit
Very large production filesDedicated upload app
Simple standalone form with one fileShopify Forms
Custom order form with files, dimensions, notes and customer detailsForminit
Request-a-quote form with artwork or technical filesForminit
Upload artwork after an order is placedForminit
File upload on a custom contact pageForminit
Completely custom form UI without an iframe or form-builder widgetForminit

This guide covers all four approaches and the most common ways Shopify businesses use file uploads.

Quick answer

Shopify can collect customer files through product line item properties, Shopify Forms, or third-party upload apps.

If you’re selling a standard customizable product and the file belongs directly to that product, a Shopify line item property may be enough.

If you need image previews, cropping, automated 3D model pricing, or very large production files, a specialized Shopify app will often be the better option.

But if your workflow looks more like:

requirements → files → review → quote → order

rather than:

upload → add to cart → checkout

you can build the form directly inside your Shopify storefront and use Forminit as the backend.


Common Shopify file-upload use cases

File uploads appear across many types of Shopify businesses, but the underlying workflows tend to fall into a few recurring groups.

1. 3D printing quote requests

This is one of the clearest examples of why a business might need more than a standard product page.

A customer already has a 3D model and wants to know:

How much will it cost to print this?

The print shop needs more than the file.

A useful quote form might collect:

  • 3D model file
  • material
  • color
  • printing process
  • quantity
  • infill
  • quality or layer height
  • finishing requirements
  • deadline
  • notes
  • customer email

For example:

Model: prototype.stl Material: PETG Color: Black Process: FDM Infill: 30% Quantity: 5 Deadline: 18 September Notes: “This is a functional prototype and needs good dimensional accuracy.” → Request a quote

The workflow becomes:

Upload 3D model → Choose print requirements → Submit → Review → Quote

This is a particularly good Forminit use case because the file is only one part of the request.

A specialized 3D printing app can be a better choice if your store needs to analyze STL or other model geometry automatically, calculate volume and machine time, display an interactive 3D preview, and return an instant price.

But many 3D printing businesses don’t need fully automated pricing.

They want the model and requirements first so a human can review manufacturability, orientation, tolerances, material, finishing, and price.

For that workflow, Forminit can act as the quote-request backend without forcing the merchant into a specialist 3D quoting system.

It also means the request stays structured:

Customer
john@example.com

Model
prototype.stl

Material
PETG

Color
Black

Print process
FDM

Infill
30%

Quantity
5

Deadline
18 September

Notes
Functional prototype.
Dimensional accuracy is important.

And because fields such as Material, Print process, Color, and Infill can be represented as structured Form Blocks, you can later see which options customers request most often.


2. Printing and print-on-demand artwork

Printing is one of the biggest natural categories for customer uploads.

Examples include:

  • business cards
  • brochures
  • posters
  • banners
  • stickers
  • labels
  • DTF transfers
  • custom apparel
  • promotional products
  • photo prints

A customer might need to send:

brochure-final.pdf

along with:

  • print size
  • paper type
  • finish
  • quantity
  • single or double sided
  • deadline
  • delivery requirements

This is another situation where the actual requirement is not simply:

Upload PDF

It is:

PDF + production specifications + customer → quote/order


3. Custom signs and large-format printing

Signage businesses often need several pieces of information before they can quote.

For example:

Artwork: company-logo.ai Width: 180 cm Height: 80 cm Material: Aluminum composite Mounting: Exterior wall Quantity: 2 Reference photo: shopfront.jpg

A customer may also need to upload:

  • logos
  • vector artwork
  • building photos
  • technical drawings
  • examples of existing signage

This fits naturally into a custom Shopify quote form.


4. Embroidery and branded clothing

Embroidery businesses often need customers to provide a company logo as well as product requirements.

A typical form could collect:

  • logo
  • garment
  • quantity
  • embroidery location
  • thread colors
  • logo width
  • names or personalization
  • notes

For example:

Garment: Polo shirt Quantity: 30 Logo: acme-logo.svg Placement: Left chest Width: 80 mm Thread colors: Red + white

For a simple personalized product, a Shopify product-personalization app may be ideal.

For B2B uniform enquiries or larger custom jobs that need review before pricing, a quote form can be simpler.


5. Engraving and laser cutting

Custom engraving and laser-cut products often combine customer files with structured specifications.

For example:

  • SVG or vector artwork
  • text to engrave
  • material
  • dimensions
  • thickness
  • quantity
  • engraving position
  • finishing

A laser-cutting business might receive:

panel-design.svg

alongside:

Material: 3 mm acrylic Size: 400 × 300 mm Quantity: 20 Finish: Polished edge

This is very similar to the 3D-printing workflow:

technical file + manufacturing options → review → quote


6. CNC, fabrication and custom manufacturing

Shopify isn’t only used for simple consumer products.

Some businesses use it as the storefront for custom manufacturing or fabrication.

Customers may need to upload:

  • CAD drawings
  • technical drawings
  • reference PDFs
  • diagrams
  • specifications
  • photos

and provide:

  • material
  • dimensions
  • tolerances
  • quantity
  • finishing
  • delivery requirements

Instead of trying to represent every possible combination as Shopify variants, the merchant can collect a manufacturing enquiry and quote it manually.


7. Packaging and custom labels

Packaging orders often depend heavily on customer artwork and production specifications.

For example:

Product: Custom cardboard box Quantity: 1,000 Dimensions: 250 × 180 × 80 mm Material: Kraft Printing: Full color Artwork: packaging-artwork.pdf Dieline: box-dieline.ai

Other common fields might include:

  • laminate
  • foil
  • embossing
  • spot UV
  • delivery date
  • shipping destination

Again, the uploaded file is only one part of a larger production brief.


8. Personalized photo products and gifts

Another major upload use case is customer imagery.

Examples include:

  • personalized mugs
  • photo books
  • canvas prints
  • phone cases
  • cushions
  • blankets
  • jewelry
  • custom cards
  • photo cakes

The basic workflow can be:

Choose product → Upload photo → Add to cart

For this kind of product, a dedicated personalization app is usually a strong option, especially if customers need:

  • cropping
  • positioning
  • live previews
  • text overlays
  • templates

A custom form becomes more useful when the request requires manual design or approval before production.


9. Custom cakes and edible printing

File uploads also appear in custom food orders.

For example, a bakery might let customers send:

  • a photo for an edible print
  • a logo
  • cake inspiration
  • theme references

along with:

  • cake size
  • flavor
  • servings
  • date
  • custom message
  • dietary requirements

The form becomes the customer brief rather than merely a file uploader.


10. Custom furniture and interior projects

A custom furniture maker might ask customers for:

  • room photos
  • sketches
  • floor plans
  • inspiration images

alongside:

  • dimensions
  • material
  • finish
  • budget
  • delivery location

For example:

Project: Custom fitted shelving Width: 3.4 m Height: 2.5 m Finish: Oak Room photo: living-room.jpg Drawing: shelving-sketch.pdf

The merchant can then review the project before preparing a quote.


11. B2B and wholesale quote requests

Some file uploads have nothing to do with product personalization.

A B2B buyer might upload:

  • purchase lists
  • spreadsheets
  • specifications
  • drawings
  • tender documents
  • existing product sheets

and request pricing.

For example:

Company: ACME Ltd Products required: See attached spreadsheet Estimated volume: 5,000 units/year File: requirements.xlsx

This is another workflow where a general form backend often makes more sense than a product-upload app.


12. Upload files after placing an order

Sometimes the purchase happens first.

The customer then needs to provide:

  • artwork
  • photos
  • print-ready files
  • technical drawings
  • personalization information

The workflow becomes:

Order → Pay → Upload files → Production

Instead of asking customers to email attachments, you can create a dedicated upload page and collect the Shopify order number alongside the files.


Which use cases fit Forminit best?

A useful rule is:

Use Shopify line item properties when:

The workflow is:

product + file → cart → checkout

Use a dedicated personalization app when:

The workflow is:

product + upload + preview/configurator → checkout

Use Forminit when:

The workflow is:

file + specifications + customer requirements → review/quote

or:

order → files + instructions → production

This makes Forminit particularly well suited to:

  • 3D printing quotes
  • printing requests
  • signage quotes
  • packaging quotes
  • laser cutting
  • CNC and fabrication
  • custom manufacturing
  • embroidery enquiries
  • B2B custom orders
  • custom furniture
  • post-purchase artwork collection

Option 1: Shopify line item properties

If the customer is buying a normal Shopify product and the uploaded file belongs to that cart item, Shopify’s product form can handle it.

Shopify line item properties are additional fields submitted alongside a product.

They are commonly used for things such as:

  • engraving text
  • monograms
  • gift messages
  • custom instructions
  • customer artwork
  • file uploads

A basic file field looks like this:

<input
  type="file"
  name="properties[Artwork]"
  accept=".pdf,.jpg,.jpeg,.png"
>

When the field belongs to the product form, it can be submitted as part of the product’s custom properties.

Why a simple file input can fail on modern themes

This is where many Shopify file-upload tutorials become confusing.

You add:

<input type="file" name="properties[Artwork]">

The field appears.

The customer selects a file.

They click Add to cart.

But the file doesn’t reach the cart.

One common reason is that the input isn’t actually associated with Shopify’s product form.

Modern Shopify themes can render a Custom Liquid block visually inside the Product information section while the actual product <form> exists elsewhere in the markup.

Adding a file field on Dawn

In Shopify, open:

Online Store → Themes → Customize → Products → Default product

Inside the Product information section, add a Custom Liquid block.

Then add:

<div class="product-form__input">
  <label class="form__label" for="artwork">
    Upload your artwork
  </label>

  <input
    id="artwork"
    type="file"
    name="properties[Artwork]"
    accept=".pdf,.jpg,.jpeg,.png"
    form="product-form-{{ section.id }}"
    required
  >
</div>

The HTML form attribute associates the upload field with the Shopify product form even when it isn’t physically nested inside the <form> element.

Always test your theme

Third-party themes can implement product forms, Add to Cart actions, quick-add buttons and cart drawers differently.

If your upload doesn’t reach the cart:

  • confirm that the input belongs to the real product form
  • inspect the product form ID
  • test your cart drawer
  • complete a real test checkout
  • verify the uploaded file on the resulting order

When line item properties are enough

Use this approach when your workflow is:

Choose product → Upload file → Add to cart → Checkout

For example:

Custom T-shirt Size: Large Color: Black Artwork: company-logo.png Add to cart

When they stop fitting

Now consider a 3D printing business.

A customer uploads:

prototype.stl

But you still need to know:

  • material
  • process
  • color
  • quantity
  • infill
  • quality
  • finishing
  • tolerance
  • deadline

You may need to inspect the model before deciding whether you can manufacture it at all.

That’s no longer simply a product option.

It’s a quote request.


Option 2: Shopify Forms

Shopify Forms is useful for relatively straightforward standalone forms.

It can work well for:

  • contact forms
  • wholesale applications
  • B2B applications
  • lead forms
  • simple upload requests

If your form only needs a few fields and one straightforward attachment workflow, this may be enough.

But custom manufacturing workflows often require greater control over:

  • file fields
  • technical specifications
  • product data
  • validation
  • custom UI
  • integrations
  • analytics
  • attribution

That’s where a custom form backend becomes more useful.


Option 3: Use a dedicated Shopify file-upload app

Dedicated upload apps make sense when file handling is tightly coupled to the product-purchasing experience.

Use one when you need features such as:

  • large uploads
  • visual previews
  • cropping
  • DPI validation
  • dimension validation
  • product personalization
  • automatic pricing
  • specialist file processing

For 3D printing specifically

There are Shopify apps built specifically around the 3D-printing workflow.

They can analyze customer-uploaded models, calculate prices from geometry, material and machine time, show an interactive 3D preview, and create Shopify orders.

If you want:

STL → geometry analysis → instant price → checkout

use a specialized 3D printing quoting solution.

If you want:

STL → requirements → human review → quote

Forminit is a much simpler fit.


Option 4: Build a custom Shopify quote form with Forminit

Let’s use the 3D-printing example because it shows why a general-purpose form backend can work well.

Suppose your Shopify store offers custom 3D printing.

Instead of creating hundreds of product variants, you want the customer to submit:

Model: prototype.stl Material: PETG Color: Black Print process: FDM Infill: 30% Quantity: 5 Deadline: 18 September Notes: Functional prototype, dimensional accuracy is important. Customer: john@example.com → Request a quote

The model file is important.

But it isn’t the entire order.

The real information is:

model + manufacturing specifications + customer + context

Forminit handles that as one structured submission.


Build a Shopify 3D printing quote form

A simplified form could look like:

<form id="print-quote-form">

  <input
    type="email"
    name="fi-sender-email"
    placeholder="Your email"
    required
  >

  <input
    type="file"
    name="fi-file-model[]"
    multiple
    required
  >

  <select name="fi-select-material" required>
    <option value="">Choose material</option>
    <option value="pla">PLA</option>
    <option value="petg">PETG</option>
    <option value="abs">ABS</option>
    <option value="resin">Resin</option>
  </select>

  <select name="fi-select-process">
    <option value="">Choose print process</option>
    <option value="fdm">FDM</option>
    <option value="sla">SLA</option>
    <option value="sls">SLS</option>
  </select>

  <select name="fi-select-infill">
    <option value="">Choose infill</option>
    <option value="10">10%</option>
    <option value="20">20%</option>
    <option value="30">30%</option>
    <option value="50">50%</option>
    <option value="100">100%</option>
  </select>

  <input
    type="number"
    name="fi-number-quantity"
    min="1"
    placeholder="Quantity"
    required
  >

  <input
    type="date"
    name="fi-date-deadline"
  >

  <textarea
    name="fi-text-requirements"
    placeholder="Tell us anything we should know about the part"
  ></textarea>

  <button type="submit">
    Request a quote
  </button>

</form>

<p id="form-status"></p>

Field names follow the Forminit fi-{blockType}-{name} convention, and the [] suffix on fi-file-model[] is required whenever a file input uses the multiple attribute. Uploads are sent as multipart/form-data with a limit of 25 MB total per submission.

Add the Forminit browser SDK and submit the form as FormData:

<script src="https://forminit.com/sdk/v1/forminit.js"></script>

<script>
  (function () {
    const forminit = new Forminit();

    const form = document.getElementById('print-quote-form');
    const status = document.getElementById('form-status');

    form.addEventListener('submit', async (event) => {
      event.preventDefault();

      status.textContent = 'Sending your request…';

      const { error } = await forminit.submit(
        'YOUR_FORM_ID',
        new FormData(form)
      );

      if (error) {
        status.textContent = error.message;
        return;
      }

      status.textContent =
        'Thanks! We will get back to you with a quote.';

      form.reset();
    });
  })();
</script>

Replace YOUR_FORM_ID with the Form ID from your Forminit dashboard.

You can adapt those fields to match your own manufacturing process.

For example, a resin printer might ask for:

  • resin type
  • color
  • layer height
  • supports
  • finish

A production FDM shop might ask for:

  • filament
  • color
  • infill
  • wall count
  • strength requirements

An engineering print bureau may instead care about:

  • tolerances
  • surface finish
  • certification
  • quantity
  • lead time

The frontend is entirely yours.


Learn which 3D printing options customers request

This is another reason structured Form Blocks are useful.

Imagine your Material field receives:

PLA      41%
PETG     34%
ABS      15%
Resin    10%

Or your Print process field shows:

FDM      65%
SLA      24%
SLS      11%

Now the form is giving you demand information as well as quote requests.

You might learn that:

  • PETG demand is increasing
  • most customers request 30% infill
  • SLA enquiries originate from a particular campaign
  • a certain product category generates mostly high-volume enquiries
  • one material hardly receives any requests

The same applies to other industries.

A sign shop can analyze material and dimensions.

A printer can analyze paper and finish.

An embroidery company can analyze garment and placement.

A packaging business can analyze material and finishing.


Track which campaigns generate valuable quote requests

Forminit’s attribution data becomes particularly useful for quote-based Shopify businesses.

Imagine you’re running Google Ads for:

Custom 3D Printing Service

A visitor searches, reaches your Shopify page, uploads a model and requests five PETG parts.

The submission can retain campaign context such as:

utm_source
google

utm_medium
cpc

utm_campaign
3d-printing

gclid
...

Now you’re not only measuring:

ad click → page view

You can see:

campaign → 3D printing quote request

And because the form contains structured order requirements, you can begin connecting acquisition with actual demand:

Google Ads

PETG

FDM

Quantity 5

STL uploaded

Quote request

For businesses where the sale happens after a manual quote, this is much more useful than looking only at Shopify checkout conversions.


Use case: printing and signage quote

The same structure works for commercial printing and signage.

For example:

Product: Aluminum exterior sign Dimensions: 180 × 80 cm Material: ACM Quantity: 2 Artwork: company-logo.ai Site photo: shopfront.jpg Mounting: Exterior wall → Request quote

One submission contains both production requirements and artwork.


Use case: packaging quote

A packaging company could collect:

Box size: 250 × 180 × 80 mm Quantity: 1,000 Material: Kraft Printing: Full color Finish: Matte laminate Artwork: package-design.pdf Dieline: dieline.ai

Instead of turning every possible configuration into a Shopify variant, the merchant reviews the request and quotes accordingly.


Use case: CNC or laser-cutting quote

A fabrication shop could collect:

Drawing: panel.svg Material: 3 mm acrylic Dimensions: 400 × 300 mm Quantity: 20 Finish: Polished edge Tolerance: ±0.2 mm

The underlying Forminit workflow is nearly identical to the 3D-printing example.


Use case: artwork after checkout

Sometimes the customer should pay before uploading a production file.

The workflow becomes:

Order → Pay → Upload artwork

Create a page such as:

/pages/upload-artwork

and collect:

Order number
#1842

Customer
john@example.com

Artwork
company-logo.pdf

Instructions
Use the black logo.

That gives production a structured record instead of asking customers to email attachments.


Which Shopify file-upload approach should you use?

Normal personalized product

Shopify line item properties

Best for:

Product → Upload → Cart → Checkout

Visual personalization

Dedicated Shopify personalization app

Best for:

Upload → Crop/Preview → Product → Checkout

Instant 3D printing pricing

Dedicated 3D printing quote app

Best for:

STL → Geometry analysis → Instant price → Checkout

3D printing quote request

Forminit

Best for:

3D model → Material + requirements → Review → Quote

Custom manufacturing or B2B quote

Forminit

Best for:

Technical files + specifications → Review → Quote

Artwork after purchase

Forminit

Best for:

Order → Upload → Production


Frequently asked questions

Can I collect 3D printing quote requests on Shopify?

Yes.

Instead of trying to represent every material, print process, quantity and production requirement as Shopify variants, you can build a quote form that collects the customer’s model file and manufacturing requirements together.

Forminit can receive the resulting request as one structured submission.

Should I use Forminit or a specialist 3D printing Shopify app?

Use a specialist 3D-printing app if you need automatic geometry analysis, interactive model previews, machine-time calculations or instant pricing.

Use Forminit when your team reviews the model and sends the quote manually, or when you need a flexible custom intake workflow.

What information should a 3D print quote form collect?

Common fields include:

  • model file
  • material
  • color
  • print process
  • infill
  • quality
  • quantity
  • tolerance
  • finishing
  • deadline
  • customer contact details
  • additional requirements

The exact fields should reflect your own production process.

What other Shopify businesses commonly need customer uploads?

Common examples include:

  • commercial printers
  • sign makers
  • embroidery companies
  • laser-cutting services
  • CNC and fabrication businesses
  • packaging manufacturers
  • personalized gift stores
  • photo-product businesses
  • custom furniture makers
  • B2B suppliers
  • custom manufacturers

Can I see which options customers choose most often?

Yes.

Structured select, radio and checkbox Form Blocks can provide response breakdowns so you can understand which materials, dimensions, finishes, processes or other options customers request most often.

Can I track where quote requests came from?

Yes.

Using the Forminit JavaScript SDK, campaign attribution such as UTM parameters and supported advertising click IDs can be captured with the submission.

That lets you connect campaigns with actual quote enquiries, not only website visits.


Build the file-upload workflow that fits your Shopify business

A Shopify file upload doesn’t always mean the same thing.

For a personalized T-shirt, the file may simply belong to a product going into the cart.

For a photo product, the customer may need a visual preview before buying.

For a 3D printing service, the file might be a technical model that needs to be reviewed alongside material, process, quantity, tolerances and deadline.

For a manufacturer, the customer may need to send an entire technical brief before anyone can calculate a price.

That’s why the important question isn’t:

How do I add a file input to Shopify?

It’s:

What should happen after the customer uploads the file?

If your workflow is:

requirements → files → review → quote → order

Forminit lets you build that workflow directly inside your Shopify storefront while keeping control of the frontend.

You can collect:

  • customer details
  • product context
  • technical files
  • artwork
  • specifications
  • quantities
  • materials
  • custom options
  • marketing attribution

and keep them together as one structured submission.

Then use the same data to understand which products and options customers request, and which campaigns are generating those requests.

Create your Forminit form, add the fields your business actually needs, and start receiving complete Shopify quote requests with files.