Shopify File Uploads: The Complete Guide
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:
- Shopify line item properties for files that belong directly to a normal product order.
- Shopify Forms for simple standalone forms with a file field.
- A dedicated Shopify file-upload app for advanced product personalization, very large files, or specialist workflows.
- 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 need | Recommended approach |
|---|---|
| File associated with a normal Shopify product order | Shopify line item property |
| Image preview, cropping, DPI checks or advanced personalization | Dedicated upload app |
| Automatic 3D geometry analysis and instant print pricing | Dedicated 3D printing app |
| Manual or reviewed 3D printing quote with model files and specifications | Forminit |
| Very large production files | Dedicated upload app |
| Simple standalone form with one file | Shopify Forms |
| Custom order form with files, dimensions, notes and customer details | Forminit |
| Request-a-quote form with artwork or technical files | Forminit |
| Upload artwork after an order is placed | Forminit |
| File upload on a custom contact page | Forminit |
| Completely custom form UI without an iframe or form-builder widget | Forminit |
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.stlMaterial: 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.aiWidth: 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.svgPlacement: 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.pdfDieline: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.jpgDrawing: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.pngAdd 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.stlMaterial: 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.aiSite photo:shopfront.jpgMounting: 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.pdfDieline: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.svgMaterial: 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.