Common use cases
| Use case | Typical char limit |
|---|---|
| Gift message (card inside) | 200-300 chars, 3-5 lines |
| Poem or verse for engraved plaque | 500-800 chars, 5-8 lines |
| Delivery instructions (leave at door, ring bell) | 150-250 chars, 2-3 lines |
| Custom care notes for POD partner | 250-500 chars |
| Wedding invitation body copy | 400-800 chars, formal invite text |
| Custom apparel back-print quote | 150-300 chars |
| Memorial plaque inscription | 500-1000 chars, longer memorial verse |
Setup with Print It My Way
- Install Print It My Way (Free plan supports 1 text field)
- Dashboard → New Personalizer → drag in "Multi-Line Text" field
- Configure:
- Label: "Gift message" or "Poem"
- Placeholder: sample text as guide
- Max chars: 250 typical
- Rows (visible height): 4-6
- Required: No (usually optional)
- Attach to product
Native theme code (free)
Textarea element with line-item property name:
<label for="gift-message">
Gift message (optional, max 250 chars)
</label>
<textarea
id="gift-message"
name="properties[Gift Message]"
maxlength="250"
rows="4"
></textarea>
<p class="char-counter">
<span id="char-count">0</span> / 250 chars
</p>
<script>
document.getElementById('gift-message').addEventListener('input', (e) => {
document.getElementById('char-count').textContent = e.target.value.length;
});
</script>
Line-break preservation (critical)
Customer types with newlines; you must preserve them across cart, email, and print output.
Cart display (Liquid)
{% for property in item.properties %}
{% unless property.first[0] == '_' %}
<div class="line-item-property">
<strong>{{ property.first }}:</strong>
<div class="multi-line">{{ property.last | newline_to_br }}</div>
</div>
{% endunless %}
{% endfor %}
The newline_to_br filter converts \n to <br> for HTML display. Cart shows message with line breaks intact.
Order confirmation email
Same newline_to_br filter in Notifications → Order confirmation email template.
Print file generation
Personalizer app should preserve line breaks when rendering text onto print file. Print It My Way handles this natively — customer's line breaks appear in the printed output.
Character limit strategy
Match limit to physical surface + font size:
- Small greeting card (3×4 inches): 200-300 chars, 3-5 lines at 12pt font
- Standard invitation (5×7 inches): 400-600 chars, 5-8 lines at 12pt
- Large plaque (8×10 inches): 800-1200 chars, 10-15 lines at 12pt
- Doormat: 100-200 chars total, 2-3 lines large font
Show live character counter — customer self-manages.
Row count (visible height)
Textarea rows attribute sets visible height. Match to expected message length:
- rows="3" — short delivery instructions
- rows="4-6" — gift messages (default)
- rows="8-10" — long poems, memorial verses
Textarea grows or scrolls if content exceeds visible rows.
Formatting options (advanced)
Basic textarea captures plain text. For rich formatting (bold, italic, alignment):
- WYSIWYG editor (TinyMCE, Quill) — customer selects text to format
- Markdown parsing (customer uses
*bold*and_italic_) - Font per line (advanced personalizer)
Print It My Way Pro supports basic rich formatting on plaque/invitation products.
Common issues + fixes
| Issue | Cause | Fix |
|---|---|---|
| Line breaks lost in cart display | Template not using newline_to_br filter | Add filter: {{ property.last | newline_to_br }} |
| Line breaks lost in email | Same — email template missing filter | Add filter in Notifications → Order confirmation template |
| Line breaks lost in print output | Personalizer app strips newlines | Verify with Print It My Way support; toggle "preserve line breaks" if setting exists |
| Text overflows physical surface | Char limit too generous | Reduce max chars; enforce hard cap |
| Very long paste crashes textarea | Paste exceeds limit dramatically | JS event handler to truncate on paste + warn |
Frequently asked questions
How to add multi-line text field to Shopify?
Personalizer app (Print It My Way, Bold) with Multi-Line Text field. Or theme code with <textarea name="properties[Message]">.
Character limit for gift messages?
200-300 chars typical (fits 3-5 lines on standard greeting card).
How to preserve line breaks in cart?
Liquid filter {{ property.last | newline_to_br }} converts newlines to HTML break tags.
Line breaks in order confirmation email?
Same filter in Notifications → Order confirmation email template.
Line breaks in print output?
Personalizer app should preserve. Print It My Way handles natively.
Multi-line vs single-line text?
Multi-line (textarea) for long content with line breaks (messages, poems). Single-line (input) for short input (names, dates).
Best character limit for wedding invitation body?
400-800 chars — formal invitation copy with names, date, venue, RSVP.
Row count for textarea?
3 rows for short instructions, 4-6 for gift messages (default), 8-10 for long poems.
Rich formatting (bold, italic)?
Basic textarea is plain text. WYSIWYG editor or markdown parsing for rich formatting. Print It My Way Pro supports basic formatting.
Best app for multi-line text?
Print It My Way Free plan supports. Bold Product Options. Both preserve line breaks natively.
Related setup guides
Multi-line text on Shopify
Print It My Way Free plan includes multi-line text field with line-break preservation.
Install Print It My Way