Text field setup

Shopify Custom Text Field Setup — Complete Merchant Guide

A custom text field is the foundation of every personalized product — name necklaces, engraved tumblers, monogrammed towels, custom apparel. Two setup paths: theme code (free but limited) or personalizer app (5-min setup, full features). Here's the complete 2026 playbook for both.

Last updated: August 14, 2026~9 min readBy the Print It My Way team

Two paths: theme code vs personalizer app

ApproachTimeCostFeatures
Theme code (Liquid)15-30 minFreeBasic text input; no live preview, no character counter, no pricing, no validation
Personalizer app5 min$0-$24.99/moText input + live preview + character counter + font selection + per-character pricing + validation + multi-line support

Use theme code for: one product, one text field, no fee, no preview needed. Use an app for: multiple products, fonts, per-character pricing, live preview, or anything at scale.

Path 1: Theme code setup (free)

Shopify's native mechanism is line-item properties. Add a text input to your product form with name="properties[Field Name]":

Step 1: Edit product-form.liquid

Online Store → Themes → Edit code → find snippets/product-form.liquid (or sections/main-product.liquid in Dawn). Add before the Add-to-Cart button:

<div class="product-form__personalization">
  <label for="engraving-text">
    Engraving text (optional, max 15 chars)
  </label>
  <input
    type="text"
    id="engraving-text"
    name="properties[Engraving]"
    maxlength="15"
    autocomplete="off"
  />
  <p class="char-counter">
    <span id="char-count">0</span> / 15 chars
  </p>
</div>

<script>
  document.getElementById('engraving-text').addEventListener('input', (e) => {
    document.getElementById('char-count').textContent = e.target.value.length;
  });
</script>

Step 2: Display in cart

Dawn theme's components/cart-items.liquid already loops over line-item properties. Verify — should show "Engraving: Emma" as a sub-line under the product name.

Older themes: add to your cart template:

{% for property in item.properties %}
  {% unless property.first[0] == '_' or property.last == blank %}
    <div class="line-item-property">
      <strong>{{ property.first }}:</strong> {{ property.last }}
    </div>
  {% endunless %}
{% endfor %}

Step 3: Verify in order

Place test order. Check admin → order detail → line item should show "Engraving: Emma" property. Also appears in order confirmation email + POD partner sync.

Path 2: Personalizer app setup (5 minutes)

Install Print It My Way (Free plan supports 1 text field on 1 personalizer, permanent — no trial expiry).

  1. App Store → search "Print It My Way" → Install
  2. Online Store → Themes → Customize → App embeds → toggle Print It My Way ON
  3. App dashboard → New Personalizer → drag in "Text" field
  4. Configure field settings:
    • Label: "Engraving text" (what customer sees)
    • Placeholder: "e.g. Emma"
    • Max chars: 15 (or per-product)
    • Required: on/off
    • Font options: 3-5 fonts (Playfair, Great Vibes, Inter, etc.)
    • Live preview: on (renders text on product mockup)
    • Pricing: per-character or flat fee (via Cart Transform)
  5. Attach personalizer to product
  6. Test on live product page — text input, character counter, live preview all work

Character limits by product

Product typeRecommended max charsReasoning
Ring (inside band)8-15Small engraving surface; longer text becomes illegible
Necklace pendant15-25Slightly larger; typically single name or short phrase
Cufflinks3-6Initials only; usually 3-char monogram
Coffee mug (wrap)25-50Ample wrap-around space; short quote or full name
Wine glass15-30Curved surface; two-line max
Tumbler (wrap)30-80Large wrap area; quote or extended text
Cutting board40-150Large flat surface; family name + established year + address
Doormat50-200Large surface; house rules or welcome message
Custom sign50-500Varies dramatically by sign size
Custom apparel print20-40 per lineDTG print area limits

Live character counter (critical for UX)

Without a counter, customer types until validation fires. Frustrating. With a counter, they self-manage:

"Chars: 12 / 25"

Print It My Way + Bold + Zepto all include this natively. Theme code version above adds a simple counter; you can enhance with color coding (green at 0-70%, amber at 70-90%, red at 90-100%).

Input validation

Types of validation to enforce:

Print It My Way includes basic profanity filter + copyright term flag on Pro tier. Manual review queue for flagged orders (merchant approves before printing).

Multi-line text fields

Some products need multiple lines of text — wedding invitations, memorial plaques, family signs. Use a <textarea> element instead of <input>:

<textarea
  name="properties[Custom Message]"
  maxlength="250"
  rows="4"
></textarea>

Preserve line breaks in cart display + order email:

{{ property.last | newline_to_br }}

Personalizer apps handle this automatically. Multi-line text is 1 field type option in Print It My Way (labeled "Multi-line text").

Multiple text fields per product

Products often need multiple text inputs — bride name + groom name + date on a wedding invitation; first line + second line + third line on a plaque; team name + player number on a jersey.

Native theme code: add multiple <input> elements, each with unique properties[Field Name]. Each captures separately in the order.

Personalizer app: drag in multiple Text fields, each with own label + limits + preview position. Cleaner UX; each field can have independent pricing.

Per-character pricing setup

Charge for extra characters via Cart Transform. Field configuration:

Full guide: Shopify Per-Character Pricing.

Font selection setup

3-5 fonts is the sweet spot. More triggers choice paralysis + adds page weight.

Recommended defaults by niche:

App-based: add Font dropdown as separate field alongside text field. Personalizer renders text in selected font in live preview.

Common issues + fixes

IssueCauseFix
Text field doesn't appear in cartCart template missing properties loop; or app embed not enabledVerify Dawn theme or add loop code; verify app embed toggled ON
Text field autofills with random dataBrowser autocomplete filling in "email" or "name" fieldsAdd autocomplete="off" attribute to input
Special characters get strippedPersonalizer app sanitizing overly aggressivelyApp settings → character set → allow Latin extended
Line breaks lost in cart/emailTemplate not using newline_to_br filterAdd filter to Liquid template rendering the property
Text appears in cart but not on orderProperty added after add-to-cart via JS (race condition)Ensure input is inside the product form, not attached after submission
Field validation not blocking on mobileBrowser tolerating invalid input silentlyJS-level validation in addition to HTML attributes

Frequently asked questions

How do I add a custom text field to my Shopify product?

Two paths. Theme code (free): add <input name="properties[Field Name]"> to product-form.liquid. Personalizer app (5 min): drag in Text field via Print It My Way / Bold / Zepto.

Best character limit for engraved products?

Rings 8-15, necklaces 15-25, mugs 25-50, cutting boards 40-150. Show live counter; enforce hard cap via maxlength.

How to charge for longer text?

Per-character pricing via Cart Transform. First 10 free, $0.50-1.00 per char after. Print It My Way Basic tier supports natively.

Can I have multiple text fields per product?

Yes. Native: multiple <input> elements with unique properties[Field] names. App: drag in multiple Text fields, each with own label + limits.

How to prevent inappropriate text?

Client-side blocklist for common profanity + server-side manual review for flagged orders. Print It My Way Pro includes profanity filter + review queue.

How to preview text on the product?

Live preview canvas renders text on product mockup in real time. Requires personalizer app (Print It My Way, Zepto, Zakeke). Not possible with theme code alone.

Multi-line text field on Shopify?

Use <textarea> element with name="properties[Message]". Preserve line breaks with newline_to_br Liquid filter.

Best app for custom text fields?

Print It My Way ($0-$24.99/mo — free plan works), Bold Product Options ($14.99+/mo), Zepto Product Personalizer ($9.99/mo), Hulk Product Options ($8.90+/mo).

How to allow font selection?

Add Font dropdown as separate field alongside text. Personalizer renders in selected font in preview. 3-5 fonts optimal; more = choice paralysis.

Text field required or optional?

Depends on product. Personalized product (name necklace) = required. Optional add-on (gift message) = optional. Configure per field.

Related setup guides

Custom text fields — free on Shopify

Print It My Way's Free plan includes text field + live preview + character counter on 1 personalizer. No credit card required.

Install Print It My Way