If you want custom field answers to appear on your Shopify packing slips, follow these steps:
- From your Shopify admin, go to Settings > Shipping and delivery.
- In the Shipping and delivery menu, click Packing slip template.
- Find the line that contains #{{ line_item.title }}.
- After the closing tag for around that code, paste the following code:{% unless line_item.properties == empty %} {%- for prop in line_item.properties -%} {% unless prop.first == "_Form Fields" %} #{{ prop.first }}: #{{ prop.last }} {% endunless %} {%- endfor -%} {% endunless %}
- Click Save.
Once saved, your packing slips will show the answers customers provided in your custom fields. If you’d rather see how this works, you can watch the quick video below:
Express checkout bypasses required fields
If you use required product page fields (personalization, terms checkbox, age verification, file upload), consider disabling dynamic checkout buttons (Apple Pay, Shop Pay, Google Pay) on products where those fields are mandatory. Customers using express checkout skip the product page entirely and go straight to checkout — they never see your required fields, so they can complete a purchase without providing the data you need. This is a platform limitation, not an app bug. In Shopify, you can disable dynamic checkout buttons per product or globally in your theme settings to ensure customers always pass through the product page and complete required fields.
Paid fields require published products
Paid fields (embroidery +$X, gift wrapping +$Y, rush fees) create hidden products behind the scenes. These products must be set to "Active" and available on your Online Store sales channel — they can be "Unlisted" so they don't appear in collections or search, but they must be published. If the paid add-on price doesn't show in the cart or the option doesn't work, this is almost always the cause. Check your Shopify admin: Products → find the generated add-on products → ensure Status is Active and the Online Store sales channel is enabled. This is the #1 setup mistake with paid fields.
Originally from our Help Center