Tutorials

Shirt Order Form Template for Word and Team Orders

An editable, print-friendly group shirt order form with line-level color and size choices, sample CSV rows, and reconciled totals.

Start building for free
4 min readPublished
Organizer collecting shirt order forms by color and size
On this page

Use this shirt order form template to collect one order with several size and color lines, then total quantities by variant before sending the group order to a supplier. Download the editable Word form, then use the CSV example to reconcile seven shirts and $140 in sample merchandise. Replace the sample unit price and event details before use.

Download the sample CSV · Download the form field specification · Download the Word shirt order form

Word-ready shirt order form

Download the editable Word form above, or copy this layout into Word and print it. Add the event name, order deadline, shirt design, available colors, size chart, unit price, and pickup plan before sharing it. Participants should enter one line for each color and size combination they want.

Group shirt order

Event or group: ______________________________ Order deadline: ______________

Participant name: ____________________________ Email or phone: ______________

Color Size Quantity Unit price Line total
Blue S 2 $20.00 $40.00
Blue M 1 $20.00 $20.00
Red L 1 $20.00 $20.00
Order total 4 $80.00

Additional requested lines: _________________________________________________

Order notes or pickup preference: ___________________________________________

Participant confirmation: ______________________________ Date: ______________

The example above is one sample order; the price is illustrative and should be replaced with the group's actual price. The form does not collect card numbers, security codes, bank details, or payment credentials. If payment is collected through a separate approved method, record its status in that system and reconcile it to the order ID.

Copy the order CSV

Store one row per variant in the order, rather than trying to put multiple sizes in one cell. This makes size totals and supplier quantities easy to calculate.

csv
group_id,order_id,participant,variant_id,color,size,quantity,unit_price,currency,line_total,order_status
CLUB-01,ORD-001,Avery Stone,BLUE-S,Blue,S,2,20.00,USD,40.00,Submitted
CLUB-01,ORD-001,Avery Stone,BLUE-M,Blue,M,1,20.00,USD,20.00,Submitted
CLUB-01,ORD-001,Avery Stone,RED-L,Red,L,1,20.00,USD,20.00,Submitted
CLUB-01,ORD-002,Jordan Lee,BLUE-M,Blue,M,1,20.00,USD,20.00,Submitted
CLUB-01,ORD-002,Jordan Lee,RED-M,Red,M,2,20.00,USD,40.00,Submitted

For this sample, ORD-001 has 4 shirts and totals $80. ORD-002 has 3 shirts and totals $60. The group total is 7 shirts and $140 before any tax, shipping, or discount. Variant totals are Blue/S: 2, Blue/M: 2, Red/L: 1, and Red/M: 2. Each line total is quantity × unit price, and each order total is the sum of that order's lines.

Build an order page around clear ownership

A group-order app can use groups, variants, orders, order_items, and payments. A group defines its order window and organizer. Variants identify the offered design, color, size, and price. An order belongs to one participant; its item rows capture one size/color/quantity combination each. The organizer manages the group, choices, deadline, and all orders. A member can create and view only their own order; they should not see other participants' contact details.

Calculate amounts from trusted variant prices when the server saves the order. Recalculate the order total from its item rows when an authorized edit happens; do not accept a client-supplied total as authoritative. Use an order status such as Draft, Submitted, Cancelled, or Fulfilled; keep payment status separate, such as Not required, Pending, Paid, or Refunded. This prevents a submitted order from being mistaken for a paid order.

If the group wants to collect order payments online, add a separate Stripe Checkout flow tied to the order ID. Confirm payment on the server and make fulfillment safe when the same Checkout Session is processed more than once. Stripe says automatic fulfillment must use webhooks because a customer may pay without reaching the success page; retrieve the Checkout Session, check its payment status, fulfill once, and record the fulfillment state. (Stripe, “Fulfil orders”) Keep API secrets server-side.

Atoms Cloud and Supabase are alternative backends for one project; connecting a database does not itself add a working order feature. After building, save a test order, refresh, edit a line, and read back both the item rows and calculated totals. Then sign in as another member and confirm the first participant's order is not accessible. (Atoms Help Center, “Connect Supabase”)

Connector capabilities and permissions vary, so check the current connector details before enabling any integration. Keep payment secrets out of prompts and client code. (Atoms Help Center, “Integrations”) For a larger workflow, see how to turn a spreadsheet into a web app and how to build a client portal.

Check the totals before submitting

Organizer collecting shirt order forms by color and size

AI-generated editorial concept; not a screenshot of a deployed app.

Use the sample rows to test your own spreadsheet or proposed app logic: ORD-001 should produce 4 units and $80; ORD-002 should produce 3 units and $60; group totals should be 7 units and $140. Change one quantity and make sure the relevant line, order, and group totals all update once. Submit or refresh the same order again and check that it remains one order.

The editable Word form is useful at an in-person event; a web form helps organizers consolidate multiple submissions. Keep the same line-level quantities and order IDs in either format so paper orders can be entered without losing the size breakdown.

Use this prompt to start the proposed app build:

text
Build a group shirt order app for one class or club.
Use Supabase for this project; do not connect Atoms Cloud.
Create groups, variants, orders, order_items, and payments.
Organizer manages group settings, variants, deadline, and all orders.
Member can create and view only their own order.
Do not expose another member's name, contact, or order lines.
Store each color and size choice as a separate order_items row.
Calculate line totals from quantity and trusted variant price.
Calculate order total from its item rows on the server.
Keep order status separate from payment status.
Seed Blue S, Blue M, Red L, and Red M at sample price USD 20.
Seed ORD-001 with 2 Blue S, 1 Blue M, 1 Red L; total 4 and USD 80.
Seed ORD-002 with 1 Blue M, 2 Red M; total 3 and USD 60.
Confirm group total is 7 units and USD 140 before tax or shipping.
Do not collect card numbers or payment credentials in the form.
Do not add Stripe unless actual payment collection is required.
If Stripe is added, keep secrets server-side and process confirmations idempotently.
After build, create, refresh, edit, and read back order lines and totals.
Resubmit the same order and confirm it does not duplicate.
Test as organizer, as the order owner, and as a different member.
Report any persistence, total, payment, or authorization check that cannot be completed.

Copy the build brief and use it to create your version in Atoms.

Build a shirt order app
Share this article
Made with Atoms

Your next idea starts here.

Turn what you learned into a working app or website.

Start building for free