Order Form With File Upload

Running a print shop on WooCommerce comes with one recurring headache: the artwork. Customers email their files after ordering, attach the wrong resolution, forget to mention the size, and then wonder why their poster looks blurry. Every order turns into a small email thread before production can even start.

A file upload order form fixes this at the source. The customer uploads their artwork directly on the product page, picks a size, watches the price update, and the file arrives attached to their order. No inbox archaeology required.

This guide walks through building exactly that: a print-shop product page with a file upload field for customer artwork, a size dropdown with per-size pricing, bulk-quantity discounts, and a touch of conditional logic to keep the page tidy. The tool is PPOM (Personalized Product Option Manager), a WooCommerce plugin built by Themeisle, the same team behind this blog. There’s the disclosure. 🙂

One honest note before the build starts: the setup mixes free and Pro features. The size dropdown and conditional logic work in the free version, but the file upload field and bulk pricing are Pro only. Every section is marked, so there are no surprises at checkout.

⚖️ DISCLAIMER: PPOM is a member of the Themeisle family of products. The tutorial below still marks clearly what is free and what costs money, including where the free version is enough.

What the finished product page does

The demo product is a custom poster. By the end of this tutorial, its product page will let the customer:

  • Upload their artwork (PDF, JPG, PNG) with file type and size limits enforced before checkout.
  • Pick a print size from a dropdown, with each size adding its own price to the product.
  • Get a bulk discount automatically when ordering larger quantities.
  • See extra options appear only when relevant, thanks to conditional logic.

Here is how those pieces map to PPOM fields, and which license each one needs:

Build piecePPOM fieldTier
Artwork uploadFile InputPro 💰
Size select with pricesSelect (per-option pricing)Free 🆓
Bulk-quantity discountsBulk Quantity (or Price Matrix)Pro 💰
Conditional logicDisplay ConditionsFree 🆓

Time to build it. 🔨

Step 1: Install PPOM (and add Pro for uploads)

PPOM’s free version lives in the WordPress plugin directory, where it has 20,000+ active installs and a 4.4 out of 5 rating. You need WooCommerce installed and at least one product created before PPOM has anything to attach to.

  1. Go to Plugins → Add New in your WordPress dashboard.
  2. Search for PPOM, then click Install and Activate.
  3. For the Pro fields, purchase a plan from the PPOM Pro page, download the zip from your Themeisle account, and upload it via Plugins → Add New → Upload Plugin.
  4. Activate your license key under Dashboard → Settings → General.

⚠️ One quirk worth knowing: the free version must stay installed and activated alongside Pro. Pro is an extension, not a replacement, so don’t deactivate the free plugin after upgrading.

On pricing: the Essential plan covers one site at €99 per year, and it includes every field used in this tutorial, file upload and bulk pricing included. The higher tiers (Plus, VIP) mostly add features like Cart Edit, the Fields Popup, and the Variation Quantity Matrix, which a straightforward print shop doesn’t need. Note that the introductory price applies to the first term only; renewals are at full price. There’s a 30-day money-back guarantee if it doesn’t fit.

Step 2: Create the print-shop field group

PPOM organizes custom fields into meta groups: reusable sets of fields that you attach to one product, a whole category, or specific variations. For a print shop, one group called something like “Poster printing options” usually covers the entire catalog.

  1. Navigate to WooCommerce → PPOM Fields.
  2. Click Add New Group.
  3. Choose Start from scratch, or pick one of the template presets. There’s a print shop preset and a custom print preset, both of which pre-fill the group with sensible fields you can edit.
  4. Give the group a name and start adding fields with the Add field button.
The PPOM field group editor with the basic settings and the Add PPOM Fields table where new fields are added to a group

The next four steps add the actual fields. Order matters for the customer experience: upload first, size second, extras last.

Step 3: Add the artwork upload field (Pro)

The File Input field is the whole point of this build, and it is a Pro-only field type. The free version of PPOM does not handle file uploads at all, so if this field is the reason you’re here, the free plugin alone won’t get you there.

  1. In your field group, click Add field and choose File Input.
  2. Set the title to something instructive, like “Upload your artwork”.
  3. Mark the field as required, so the order can’t go through without a file.
  4. Open the field’s advanced settings and set allowed file types (for example jpg,png,pdf) and a maximum file size that matches your hosting and your workflow.
  5. If you print raster images, also set minimum image dimensions, so a 400-pixel-wide logo can’t sneak through and turn into a blurry 24-inch poster.

A nice touch: when you configure file types or a size limit, PPOM displays those limits next to the uploader on the product page, so customers see the rules before they hit upload rather than after an error.

💡 PRO TIP: Lock things down globally too. Under WooCommerce → Settings → PPOM Settings, the free Basic Settings include a Restricted File Types option. Blocking executable and script formats there protects every upload field on the site, not just this one.

Step 4: Add a size dropdown with price modifiers (Free)

Good news for the budget: this part needs no license at all. The Select field is a free input type, and per-option pricing is a free feature. Each size gets its own add-on price, which PPOM adds to the product’s base price when the customer picks it.

  1. Add a Select field and title it “Print size”.
  2. Add one option per size, for example 12×18 in, 18×24 in, and 24×36 in.
  3. Set a price on each option: say +$0 for the smallest (your base price covers it), +$6 for the medium, +$14 for the large. Adjust to your real margins, obviously.
  4. Set the most popular size as the default selected option, so the page loads with a sensible choice.

Why Select and not Radio? Both are free and both support per-option prices, but PPOM’s own documentation recommends Select when you have many options, since a long radio list eats vertical space. For three sizes either works; for twelve paper formats, the dropdown keeps the page sane.

While you’re here, look at the group’s price display settings. Show Each Option’s Price displays the add-on next to every option, which is exactly what you want for a short size list. Customers should never have to do mental arithmetic at a print shop. 🧮

Step 5: Set up bulk-quantity discounts (Pro)

Print economics reward volume: the 50th poster costs you far less than the first. The Bulk Quantity field (Pro) lets you pass that on, with prices that depend on both the quantity ordered and the chosen option, such as size. It was practically designed for printing businesses.

  1. Add a Bulk Quantity field to the group.
  2. Define your quantity tiers per size, with the per-unit price dropping as quantity rises.
  3. Decide how the price appears: Hide Base Price removes the default WooCommerce price display, and Show Price Range shows customers the full span of possible prices instead of a single number.

If your discount depends on quantity alone (same percentage off regardless of size), the Price Matrix field is the simpler tool. Each row is a quantity range with a price, written as start-end: 1-10, 11-50, 51-100. Two formatting traps to avoid: single numbers and ranges with a plus sign (like 50+) are not accepted, and there must be no spaces around the hyphen. An Apply as discount option flips the matrix into percentage-off mode if that’s how you think about pricing.

Step 6: Add conditional logic (Free)

Conditional logic keeps the product page short by hiding fields until they’re relevant. Basic display conditions are a free PPOM feature, and the mechanics are simple: every field has a Conditions tab where you enable conditions and build show/hide rules based on the values of other fields.

A print-shop example that works entirely on the free tier: add a Checkbox field called “Add design help (+$25)”, then add a Textarea titled “Tell the designer what you need”. Open the Textarea’s Conditions tab, tick Enable Conditions, and set it to show only when the design-help checkbox is checked. Customers who don’t tick the box never see the extra field, and the page stays clean.

PPOM Conditions tab with Enable Conditions ticked and a rule showing the design brief textarea only when the design help checkbox is selected

One limitation to design around: only choice and text inputs (select, checkbox, radio, text, number) can trigger conditions. The File Input field can be shown or hidden by a rule, but it can’t be the thing that triggers one. In practice this rarely matters, but it’s good to know before you plan an elaborate flow around the upload field.

Step 7: Attach the group and review the product page

Fields do nothing until the group is attached somewhere. After saving, use the Attach to products selectors inside the group editor to assign it to your poster product, a whole product category, or tags. Pro can also scope a group to specific product variations, and attach multiple groups to one product if your catalog outgrows the single-group setup.

Use the Save & Preview button to open the live product page with your fields in place. Then play a picky customer: upload a file, switch sizes, bump the quantity, and watch the price table update. If the price table clutters the page, the group settings let you show only the options total instead of a per-option breakdown.

A WooCommerce product page with the PPOM artwork uploader showing file limits and the updating price table above Add to Cart

Storage and bandwidth: the unglamorous part

Every uploaded artwork file lands on your hosting. Print-ready PDFs and TIFFs are heavy files, and a busy store collects them with every order. Left alone, that means a steadily growing disk footprint, bigger backups, and more bandwidth spent serving files to your production workflow.

Three habits keep this under control:

  • Set a realistic max file size in the File Input settings. If your print workflow can’t use files above 50 MB anyway, don’t accept them.
  • Restrict file types both per field and globally in PPOM Settings, as covered in step 3.
  • Plan a cleanup routine: once an order ships and the reprint window closes, decide whether the artwork still needs to live on the server. Your backup size will thank you. 🗄️

Test-order checklist ✅

Before you announce the store to actual humans, place a full test order and run through this list:

  • ✅ Upload a valid file and confirm it arrives attached to the order in WooCommerce → Orders.
  • ✅ Try an oversized file and a banned file type: both should be rejected with your custom error message, not a cryptic failure.
  • ✅ Leave the required upload empty and confirm Add to Cart refuses to proceed.
  • ✅ Switch sizes and verify each price modifier lands correctly in the cart total.
  • ✅ Order a quantity that crosses a bulk tier and check the discounted per-unit price applies.
  • ✅ Toggle your conditional trigger (the design-help checkbox) and confirm the dependent field appears and disappears.
  • ✅ Complete checkout with a test payment and read the order emails, making sure the options and upload reference show up where you and your production team will actually look for them.

Ten minutes of pretending to be your own most confused customer beats a week of apologetic support emails. 😅

Want the bigger picture first?

This tutorial focuses on the build itself. If you’re still weighing tools or want a deeper feature tour, two pieces on this blog are worth a read:

  • The PPOM review goes field by field through what the plugin does well and where it falls short.
  • The WooCommerce product add-ons roundup compares PPOM against the main alternatives, useful if file upload isn’t your only requirement.

Wrapping up 🏁

A print-shop order form with file upload boils down to four PPOM pieces: the File Input field for artwork (Pro), a Select field with per-size pricing (free), a Bulk Quantity or Price Matrix field for volume discounts (Pro), and display conditions to keep the page tidy (free). Attach the group, test the whole flow with a real order, and the “please resend your artwork” email thread becomes a thing of the past.

Start with the free version if you only need priced options and conditional logic today, and upgrade when the upload workflow becomes the bottleneck. Running a print shop with PPOM already, or hitting a snag with a specific field? Share it in the comments section below! 👇

Yay! 🎉 You made it to the end of the article!

0 Comments
Newest
Oldest Most Voted