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.
Sources & further reading
Primary sources referenced in this article. We link to official platform documentation and standards bodies rather than secondary summaries so you can verify claims directly.