What is a hidden line item property in Shopify?
A line-item property whose key starts with an underscore (_). Shopify's default cart, checkout, and email templates skip properties with underscore keys via a Liquid check — {% if first_char != '_' %}. The property is still stored on the order and visible to the admin, POD partner, and API — just hidden from the customer.
Step-by-step setup
- Prefix the property key with an underscore. properties[_batch_code] instead of properties[Batch code].
- Verify cart + checkout skip the property. Test in incognito — it should not display.
- Verify it still appears in Shopify admin. Order > Line item detail should show hidden properties.
- Verify POD / fulfillment can read it. API pulls include hidden properties.
Common use cases
- Batch codes —
_batch_idtags orders to a production run - Print file URLs —
_print_fileholds a link to the generated print-ready file - Internal fulfillment tags —
_ship_from,_priority,_source_app - Setup fees you don't want customers to see —
_setup_feefor internal accounting - Analytics metadata —
_ab_test_variant,_referrer_id
How to set a hidden property
Product form input:
<input type="hidden" name="properties[_batch_code]" value="BATCH-2026-01">Or via JavaScript on add-to-cart:
fetch('/cart/add.js', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
id: variantId,
quantity: 1,
properties: {
'_batch_code': 'BATCH-2026-01',
'Engraving': 'Sarah'
}
})
});
Where hidden properties show
| Display | Hidden property visible? |
|---|---|
| Cart page (default template) | No |
| Cart drawer (default) | No |
| Checkout summary | No |
| Order confirmation email (default) | No |
| Shopify admin order detail | Yes |
| REST / GraphQL Admin API | Yes |
| POD partner integrations | Yes |
| POS receipt (default) | No |
How to force-show a hidden property
Remove the property_first_char != '_' check from your cart template. Rarely useful — if you want it visible, just drop the underscore prefix on the source input.
Use hidden properties for internal metadata
Print It My Way supports both visible and hidden line-item properties. Free plan.
Install Print It My Way — Free Complete line-item properties guide →Frequently asked questions
Why does Shopify hide underscore-prefixed properties?
To let developers and apps store internal metadata (batch codes, file URLs, fulfillment tags) without cluttering the customer's cart display.
Can I see hidden properties as a merchant?
Yes. They appear in the Shopify admin order detail and in API responses. Only customer-facing displays hide them.
Do POD partners see hidden properties?
Yes. Printful, Printify, and Gelato read all properties from the order, hidden or not.
Can I make a property hidden after the fact?
No. Properties are set at add-to-cart. Rename by cancelling the order and re-creating it (usually not worth it).
How is a hidden property different from a metafield?
Metafields are product-level or customer-level metadata. Hidden line-item properties are per-order metadata attached to a specific cart line.