T-shirt order form

A shirt order goes wrong in the sizes, not the design. This form gives each size its own number field, so a team, a club or an event can order a mixed run in one submission, and the export gives you one column per size to add up. Ask for the print text as a long text box so the wording arrives exactly as the customer typed it.

The form beside this text is live. Fill it in and submit it — it validates exactly as it would for a real respondent, and saves nothing.

One number field per size

Each size is its own number field, so quantities are validated in the browser and "two" or a blank never reaches the export. In the CSV, every size is a column you can total with a spreadsheet formula.

Print text kept as typed

The print text is a long text field, so a name or slogan reaches your records verbatim rather than through a dropdown that cannot hold it. Spelling mistakes stay the customer's, and are visible before the shirts are printed.

No card required.

T-Shirt Order

Live preview

How to build this form

5 steps in the editor. Nothing here needs a paid plan.

  1. Add short text and email fields for the person ordering, plus an optional phone field for pickup or delivery questions.
  2. Add a dropdown for the style, such as crew neck or V-neck, so the choice is one of your own options rather than free text.
  3. Add one number field per size, XS to XXL, each with a placeholder of 0. A blank size reads as no shirts in that size.
  4. Add a long text field for the print text, and say in its label exactly how the name or slogan should be spelled.
  5. In Settings, add a webhook, Slack or Discord destination so each order reaches the person who fulfils it.

Fields in this form

12 fields, using 6 of the 19 field types available.

QuestionField typeRequired
Full nameShort textYes
EmailEmailYes
PhonePhoneOptional
StyleSelectYes
XS — how many?NumberOptional
S — how many?NumberOptional
M — how many?NumberOptional
L — how many?NumberOptional
XL — how many?NumberOptional
XXL — how many?NumberOptional
Print text, spelled exactly as it should appearLong textOptional
Anything else we should know?Long textOptional

What goes wrong with this form

Specific to a t-shirt order form, not general advice about forms.

One size field for the whole order

A single "size" box forces the customer to write "2 medium, 1 large" and you to parse it. One number field per size keeps each quantity in its own column, where it can be added up without reading anyone's sentence.

Printing from a free-text name without checking it

Ask for the print text in its own long text field and state in the label how it should be spelled. Names with accents, unusual capitals or a dropped letter are the commonest reprint, and a reprint costs more than the shirt.

Treating a blank size as an answer

A blank size means "none of this size", not "unsure". If you need to know that a team has picked a size at all, put that in the form as a required field rather than inferring it from the export.

Questions about this form

How do I make a t-shirt order form?

Give each size its own number field, XS to XXL, so the quantities add up cleanly. Use a dropdown for the style with its price in the label, and a long text field for the print text. Add name and email as required fields so you know who to invoice.

Can a customer order several sizes in one submission?

Yes. Every size is a separate number field, so one order can hold any mix of sizes, each with its own quantity. Leave a size blank to order none of it.

Does the form calculate the total price?

No. The form collects sizes, quantities and the style. Totals are for you or your spreadsheet to calculate from the CSV export, and you invoice the customer separately. Payment is not taken on this form.