Why aren't my Shopify line item properties showing in the cart?
Five common causes: (1) the property name starts with an underscore (hides it), (2) the cart template doesn't render properties (missing Liquid loop), (3) the input syntax is wrong (must be properties[Field Name]), (4) the property was added after the cart line — properties on existing cart lines don't retroactively appear, (5) a cart-drawer JavaScript replaces the server-rendered cart with a version that skips properties.
Step-by-step setup
- Check the property name for underscore prefix. '_hidden_field' won't display in cart. Rename or remove the underscore.
- Verify cart-item.liquid or cart-drawer.liquid renders properties. Look for {% for property in item.properties %} — if missing, add it.
- Test in a fresh incognito window. Rules out cached theme JavaScript.
- Check the checkout summary. Properties may show in cart but hide in checkout — check both.
- Verify the input name syntax. Must be exactly properties[Field Name] with brackets.
Cause 1 — Underscore prefix
A line-item property whose name starts with an underscore is intentionally hidden from customer-facing displays. If you wrote:
<input name="properties[_engraving]" value="Sarah">The customer won't see it in the cart. Remove the underscore or move to a non-hidden key.
Cause 2 — Cart template missing properties loop
Open sections/cart-drawer.liquid or sections/main-cart-items.liquid. Look for a loop over properties:
{% for property in item.properties %}
{% assign property_first_char = property.first | slice: 0, 1 %}
{% if property.last != blank and property_first_char != '_' %}
<dt>{{ property.first }}:</dt>
<dd>{{ property.last }}</dd>
{% endif %}
{% endfor %}If missing, add it inside the cart item block.
Cause 3 — Wrong input name syntax
Must be exactly properties[Field Name] with square brackets, no space between properties and [. Common wrong versions:
property[Field Name]— missing sproperties.FieldName— dot notation, wrongprops[Field Name]— abbreviation, wrong
Cause 4 — Cart-drawer JavaScript overriding
Some themes use JavaScript to render the cart drawer separately from the server-rendered cart. If the JavaScript template doesn't include properties, they'll show on /cart but not in the drawer. Check the JavaScript template in assets/global.js or cart-drawer.js.
Cause 5 — Added after add-to-cart
Line-item properties are set at add-to-cart time. You can't retroactively add them to an existing cart line — you'd need to remove the item and re-add it with the new properties.
The quick fix — use an app
All five causes go away when you use a product options app. Print It My Way handles the input, the cart display, the checkout display, and the order attribution — no Liquid editing required.
Skip the Liquid debugging
Print It My Way handles cart + checkout property display automatically. Free plan.
Install Print It My Way — Free Complete line-item properties guide →Frequently asked questions
Why is my line item property hidden in the cart?
Most likely: the property name starts with an underscore (which intentionally hides it) or your cart-drawer template doesn't render properties.
How do I show a hidden line-item property?
Remove the underscore prefix from the property name. Underscore-prefixed properties are hidden by design.
Do line-item properties show in the checkout summary?
Yes, unless hidden by underscore. If they show in cart but not checkout, check your checkout.liquid template.
Do line-item properties appear on the customer's order confirmation email?
Yes, unless hidden. The order confirmation email template must include the properties loop — most themes have it by default.
Can I retroactively add a property to a cart line?
No. Line-item properties are set at add-to-cart. Remove the item and re-add with the new properties instead.