Every customized line item carries _pw_* properties — the data your order emails, fulfilment tools, and staff read to know what the customer designed. This page lists all of them and how to control which ones appear.
Shopify hides properties that start with an underscore from the storefront, so none of these show to customers unless your theme explicitly renders them.
Choosing a preset#
In Settings → Line Item Properties, pick how much data rides on each order line:
- Minimal — only the essential identifiers the render pipeline needs.
- Standard (default) — identifiers, preview images, text and image content, element counts, surcharge total. Right for most stores.
- Detailed — everything: adds template and variant names, text summaries, total element count, surcharge details, and side names.
- Custom — tick exactly the properties you want.
A live preview in Settings shows what an order line will carry under your chosen preset.
Always included#
These ship on every customized line regardless of preset — the render pipeline needs them:
| Property | Description |
|---|
_pw_template_id | The template the design was made on |
_pw_session_id | The design session id |
_pw_snapshot_id | The immutable design snapshot the artwork renders from |
_pw_session_created | When the customer started designing (ISO 8601) |
Identifiers#
| Property | Description |
|---|
_pw_product_id | Shopify product id |
_pw_variant_id | Shopify variant id |
_pw_template_name | Template display name |
_pw_variant_title | Variant options joined, e.g. Medium / Black |
Preview images#
| Property | Description |
|---|
_pw_thumbnail | CDN URL to the design thumbnail (shown in cart and order admin) |
_pw_preview | CDN URL to the larger multi-side preview |
_pw_artwork__* | One property per print file, keyed by output file |
Text content#
| Property | Description |
|---|
_pw_text_1, _pw_text_2, … | Each text field the customer filled in |
_pw_text_1_color, … | The colour name they picked for that text |
_pw_text_1_font, … | The font they picked for that text |
_pw_text_1_icons, … | Icons they added to that text, grouped by position |
_pw_text_all | All text combined, separated by | |
Image content#
| Property | Description |
|---|
_pw_image_1, _pw_image_2, … | CDN URL to each uploaded or AI-generated image |
_pw_image_1_type, … | Where the image came from: upload, ai_image, ai_style_transfer, … |
Element counts#
| Property | Description |
|---|
_pw_image_count | Number of images placed |
_pw_text_count | Number of text fields with content |
_pw_sticker_count | Number of stickers applied |
_pw_background_count | Number of backgrounds applied |
_pw_element_count | Total of all the above |
Surcharges#
Only present when the design triggered a surcharge:
| Property | Description |
|---|
_pw_surcharge_total | Total surcharge in cents |
_pw_surcharge_message | The customer-facing surcharge message |
_pw_surcharge_sides | JSON detail of which sides triggered the charge |
Design details#
| Property | Description |
|---|
_pw_sides | Names of the sides the customer actually customized |
_pw_metadata | The whole design summary as one JSON property (Detailed/Custom only) |
Where you'll use these#
- Order confirmation emails — swap the stock product image for
_pw_thumbnail. Walkthrough in Customizing order confirmation emails.
- Fulfilment tools — most read
_pw_text_* and _pw_image_* for packing slips and manual checks. For the print files themselves, use order tags and metafields or the Artwork Export API.
- Staff, at a glance — the properties appear on every order line in your Shopify admin, no setup needed.