FeaturesEverything includedAI advisorPricingOpen app
Guide

Shopify team apparel: names, numbers and logos

How to take a player name, a number, an uploaded logo and a print placement on a Shopify product page without turning every combination into a variant.

A team order is a stack of jerseys that are identical until they reach the press: the same blank in different sizes, each with its own player’s name and number. Shopify’s variants handle the blank, in its sizes and colors. They cannot take the name, because a name is free text. And the print shop needs the name, the number and the artwork on the order line.

In short: the blank garment is the variant, and the name, number, placement, method and artwork are custom options on top of it. This guide covers what stores ask for and how to build the page. It draws on our research into how hundreds of e-commerce apparel stores configure personalization.

Where stock lives on a team apparel product

Size and garment color are variants, because they are blanks you buy, hold and run out of. Shopify allows up to three options and 2,048 variants per product, and size and color use two of them.

Everything the customer types, uploads or chooses about the decoration is a custom option. Custom options are not built into Shopify; they come from a product options app such as OptionWise, or from custom theme code. The choices are saved as Shopify line item properties on the order, packing slip and notification email, with artwork attached to the order line. That is the press operator’s job sheet (where options appear).

What a name and number order actually needs

The same handful of fields turn up across decorated-apparel stores. The values are what they really list; the prices are the add-ons seen on those choices.

What stores ask forField used mostValues and limitsTypically priced?
NameText, one lineFree text, usually requiredUsually free; else $5–$25
PlacementDropdown or buttonsLeft, right and center chest; front; back; left, right sleeveAbout one in four
NumberNumber or text field0–99; some stores list 1–15 as dropdown valuesUsually free
Print or embroideryDropdown or radioTwo or three named methods, sometimes one per positionAbout a third
Thread or ink colorDropdown or swatchesWhite, black, red, navy, royal blue, gold, green, pinkUsually free
Lettering styleImage swatches, default BlockBlock, ScriptShown unless Blank
Logo or artworkFile uploadOne upload per position; some accept up to about five filesSometimes, by position

The name is priced less often than owners expect: most stores include it and charge for the method or the extra position. Stores that list numbers as dropdown values get a long list; a number field with a minimum and maximum does it in one control.

How stores actually set up jersey personalization

Three structures from real stores, with the names changed.

The club uniform with a roster. One dropdown, “Personalize your kit”: “No thanks, keep it blank”, then twenty-one entries reading “R. Delgado — #1 (+$20)”, “T. Okafor — #2 (+$20)”, all at the same price. Below it a text field and a number field, for anyone not on the list.

The player pack. A youth club sells a bundle, so size is a choice on the bundle rather than a variant: “T-shirt size” and “Sweatshirt size” as separate required choices, each Adult Small to 3X-Large with $2 on 2X and $4 on 3X, then one required text field, “Name on the backs”. The size upcharge sits on the value.

The custom team run. A workwear printer that buys blanks per order asks “Individual names — per shirt”, Yes (+$5) or No; a text area headed “Sizes required”; an “Add logos/images” choice revealing a file upload; and an order notes box. Fifty shirts stay one cart line.

Setting up name and number options in OptionWise

Create an option set and assign it by tag or collection, so next season’s jersey carries the options on day one.

Build the form around one buttons choice, “Personalization”: Blank, Name only, Number only, Name and number. With conditional logic, the name text field (with a character limit) and the number field (with a minimum and maximum) appear only for the values that need them, and hidden fields send nothing, so a blank-jersey order arrives clean.

Show print color and lettering as image swatches photographed on a real garment, take artwork with a file upload revealed by a checkbox, and offer a matching team bag as an add-on product with the linked-product option. Add-to-cart and express checkout are held until required choices are made.

A team order of twelve jerseys is twelve cart lines, each with one name and number. Add-on prices are per unit, so two shirts for one player charge the personalization twice. For a team price, a Shopify discount with a minimum quantity of items applies across all twelve lines. If you buy blanks per order, the custom-team-run pattern above keeps a run of fifty on one line.

A starter option set for team apparel

Install OptionWise, keep size and garment color as Shopify variants, then add this set. Prices are examples in dollars; see currencies for shoppers elsewhere.

OptionTypeValuesNotes
PersonalizationButtons, required, default BlankBlank; Name only (+$12); Number only (+$12); Name and number (+$18)Controls the fields below
Player nameText, required, max 12 charactersShown for the name values
Jersey numberNumber, required, min 0, max 99Shown for the number values; for 00 or 07, use a text field with a maximum of 2 characters
Print colorImage swatches, required, default WhiteWhite, Black, Red, Royal blue, Navy, GoldShown unless Blank, or when the logo box is checked; photograph each
Lettering styleImage swatches, default BlockBlock, ScriptShown with the name
MethodRadio, required, default PrintPrint; Embroidery (+$6)Shown unless Blank, or when the logo box is checked
Add a team logoCheckboxes, no headingAdd our team logo (+$8)Reveals the next two
Logo artworkFile upload, requiredShown when the box is checked
Logo placementDropdown, required, default Left chestLeft chest, Right chest, Center chest, Full back, Sleeve (+$4)Shown when the box is checked
NotesText area, optional

Common mistakes on jersey and team apparel pages

  • Numbers as variants. A hundred numbers by six sizes by three colors is 1,800 variants for eighteen blanks. Take the number as a number field.
  • A product per player. “Home jersey — Delgado #1” means a new product per team member, every season.
  • Unbounded fields. Without a character limit you get names that do not fit the back; as free text, the number arrives as “eleven” or “11 or 12 if taken”.
  • A required upload on every order. A blank-jersey buyer should not be asked for artwork; reveal the upload from a yes/no choice.
  • Placement as free text. “On the front-ish, quite big” is what you get; the job sheet needs a fixed list anyway.
  • Pricing per letter. Price what you do (a name, a number, a method, a position), not the length of the name.

Options should load with the page

On a jersey page the size and the name and number are one decision to the customer, so they should arrive together. Most options apps add their fields after the page has loaded, so the name and number fields appear a moment later and push the add-to-cart button down. OptionWise’s custom options load as part of the product page, next to the size picker, so they appear with the price and photos and nothing moves (learn more).

Frequently asked questions

How do I add a name and number to a jersey on Shopify without creating variants?

Keep the blank garment's size and color as Shopify variants, because those are what you stock and count, and take the name and number as custom options on top. A name is free text, so it can never be a variant. With OptionWise the name is a text field with a character limit and the number is a number field with a minimum and maximum, and both arrive on the order as Shopify line item properties for the print shop.

Can customers upload their team logo on a Shopify product page?

Yes. OptionWise has a file upload option, and the uploaded file is attached to the order line, so the artwork arrives with the order rather than in a separate email. Pair it with a placement choice (left chest, full back, sleeve) so you know where the logo goes, and use OptionWise's conditional logic to show the upload only when the customer says they have a logo.

How do I take an order for twelve jerseys with different names and numbers?

Each cart line carries one name and one number, so a twelve-player order is twelve lines: the customer picks a size, types a name and number, adds to cart, and repeats. Printers who buy blanks per order often take bigger runs on a single line instead, with the size and name breakdown in a text area or an uploaded spreadsheet.

How do I charge extra for adding a name and number to a shirt?

Put a fixed add-on price on the value that adds the personalization, for example a 'Name and number' choice at $18. OptionWise totals it live on the product page and carries it through the cart, checkout and order, where the add-on appears as its own line. The amount is per unit of the line, so two of the same shirt charges it twice.

Should jersey size be a Shopify variant or a custom option?

A variant, if you hold stock of the blank in each size and count it. Size is the one choice on a custom jersey that is usually a real stock item, so it stays on Shopify's variant picker, and the name, number, placement, print method and artwork sit alongside it as custom options added with an app such as OptionWise.

How do I only ask for a number when the customer wants one?

Use conditional logic. In OptionWise, a 'Personalization' choice with the values Blank, Name only, Number only and Name and number controls the fields below it, so the name and number fields appear only for the values that need them. Hidden fields are not validated and send nothing to the order, so a blank-jersey order arrives clean.

OptionWise for team apparel

OptionWise is a Shopify product options app. For team apparel, it puts the player name, number, lettering, print color and logo upload next to the theme’s size picker, and saves every choice to the order line for the print shop. The same approach for the rest of a clothing catalog is in the apparel guide.

OptionWise is free for life for stores that install today. It adds a block to your theme, with no code changes.

Add to Shopify