Why Choose Webiots for AI Solutions?

Company

our story

Building digital solutions that move businesses forward.

Web, AI  and technology solutions built for modern businesses
web solutions
Ai & automation
global clients

People, Purpose & Technology

Discover our journey, values & the talented people building meaningful digital solutions at Webiots.

Ultimate Product Options

Shopify limits products to just 3 native options. 

LUX

LUX enhances Shopify customization.

INDUSTRIES WE SERVE

Technology built for every ambition.

FLEXIBLE ENGAGEMENT

Choose the right business model

FLEXIBLE ENGAGEMENT

Choose the right business model

Case Studies

Real challenges. Proven results.

Featured Projects

Selected digital experiences.

All Projects

Explore our complete portfolio.

Why Choose Webiots for AI Solutions?

How to Show Product Options on Shopify Order Emails & Packing Slips

AI Summarize

Choose an assistant to instantly summarize this article.

In This Article
    Progress 0%
    1 Min Read

    Share this Article

    Shopify packing slip showing engraving text and gift message under the product
    Last updated: October 24, 2026. Shopify details and app plan details are linked to their sources. Disclosure: Webiots develops Ultimate Product Options, the app used in the setup steps.

    Quick answer: Product options are saved on each order line as line item properties, but Shopify’s default email and packing slip templates don’t always print them. Add a short Liquid loop to the Order confirmation template (Settings > Notifications) and to the packing slip template (Settings > Shipping and delivery). The code below skips hidden properties that start with an underscore.

    Key takeaways:

    • Place a test order first to see what’s missing.
    • Copy each template before you edit it.
    • Update staff and shipping emails, not just the customer one.

    In this guide

    Why Don’t Product Options Show on Shopify Emails and Packing Slips?

    Because each template has to print line item properties itself, and Shopify’s defaults don’t always do it. When a customer picks a gift message, engraving text or a file upload, it’s saved on the order line as a line item property. Shopify’s notification variables include these as line.properties (Shopify Help Center). The data is on the order, but a template only shows it if it loops through those properties. In May 2026, a Shopify community representative confirmed that the default notification and receipt templates “don’t consistently surface them” (Shopify developer community). So the fix is to add the loop yourself. If options are missing from the cart or the order admin too, the problem is earlier in the journey. See how to fix product options not showing in the cart first.

    Which Shopify Documents Need to Show Product Options?

    Any document a customer or your team reads to check or pack the order.
    Document Who reads it Where to edit it
    Order confirmation email Customer Settings > Notifications
    Shipping confirmation email Customer Settings > Notifications
    New order email Your team Settings > Notifications (staff notifications)
    Packing slip Packing team Settings > Shipping and delivery > Packing slip template
    Invoices and slips from Shopify Order Printer Team or customer The Shopify Order Printer app’s templates
    The order page in Shopify admin always shows line item properties under each item, so use it to check what each document should match.

    How Do You Add Product Options to the Order Confirmation Email?

    Paste a properties loop under the product title in the Order confirmation template, then send yourself a test.
    1. In Shopify admin, go to Settings > Notifications, open Customer notifications and click Order confirmation.
    2. Click Edit code. Select all the code and copy it into a text file as a backup.
    3. Search the code (Ctrl + F) for the product title inside the line items loop. In most templates this is line_title or line.title.
    4. Paste the code below on the next line after the title’s closing tag. It must stay inside the line items loop, before that loop’s {% endfor %}, or it won’t know which item to read.
    5. Click Save, then Preview or place a test order with product options.
    {% for property in line.properties %}
      {% assign property_first_char = property.first | slice: 0 %}
      {% if property.last != blank and property_first_char != '_' %}
        {% assign value = property.last | strip %}
        {% assign value_start = value | slice: 0, 4 %}
        <p style="margin:4px 0 0; font-size:14px; color:#555555;">
          {{ property.first | escape }}:
          {% if value_start == 'http' %}
            <a href="{{ value | escape }}">{{ value | split: '/' | last | split: '?' | first | escape }}</a>
          {% else %}
            {{ value | escape }}
          {% endif %}
        </p>
      {% endif %}
    {% endfor %}
    Repeat this for the Shipping confirmation email and the staff New order email, so your team sees the same details. If a template uses a different name for the item, such as line_item, change line.properties to match.

    What the code does: it lists every option as “Name: value”, skips empty values, hides internal properties whose names start with an underscore, and turns any value starting with “http” (such as an uploaded file) into a link showing just the file name. The escape filter stops symbols like < or & in a customer’s text from breaking the email layout.

    How Do You Add Product Options to the Packing Slip?

    Edit the packing slip template under Shipping and delivery and add the same loop below the product title.
    1. Go to Settings > Shipping and delivery. In the Documents section, click Packing slip template (Shopify Help Center).
    2. Copy all the code into a text file as a backup.
    3. Search for {{ line_item.title }} and find the closing </span> after it.
    4. Paste the code below right after that closing tag (still inside the line items loop), then click Save.
    5. Open a test order and print its packing slip to check.
    {%- for property in line_item.properties -%}
      {%- assign property_first_char = property.first | slice: 0 -%}
      {%- if property.last != blank and property_first_char != '_' -%}
        {%- assign value = property.last | strip -%}
        {%- assign value_start = value | slice: 0, 4 -%}
        <span class="line-item-description-line">
          {{ property.first | escape }}:
          {%- if value_start == 'http' -%}
            {{ value | split: '/' | last | split: '?' | first | escape }}
          {%- else -%}
            {{ value | escape }}
          {%- endif -%}
        </span>
      {%- endif -%}
    {%- endfor -%}
    Emails show uploaded files as a clickable link. The printed packing slip shows only the file name, because nobody can click a link on paper; your team opens the file from the order in Shopify admin.

    Using Ultimate Product Options? You don’t need to write this code yourself. Open Packing Slip in the app’s menu (available on all plans, including Free), copy the ready-made snippet, and paste it into Shopify’s packing slip template or the Order Printer app’s template (app guide).

    If something breaks, click Revert to default on the packing slip template to restore Shopify’s original. If you print with the Shopify Order Printer app instead, go to Apps > Order Printer > Manage Templates > Packing slip and add the same kind of code there. To make sure the options reach the order in the first place, collect them with an options app that saves them as line item properties. Webiots develops Ultimate Product Options, which saves every choice to the order line. It also has an Email Templates section for its own branded order emails, with a test-send button (app guide). Shopify’s own notifications still need the code above.

    Product options that reach every order

    Text fields, file uploads, swatches and add-on prices, saved to each order line. Free plan available.

    Install Ultimate Product Options free

    How Do You Test That Product Options Show Everywhere?

    Place one test order with options and check every document against the order page.
    1. Order 3 products: A with a text option (for example engraving), B with a file upload, and C with no options.
    2. Open the order confirmation email: A should show its text, B a link with the file name, and C nothing extra.
    3. Click B’s file link and check it opens the right file.
    4. Check the staff New order email.
    5. Print the packing slip and check the options are readable.
    6. Fulfil the order and check the shipping confirmation email.
    7. Confirm nothing starting with an underscore appears anywhere.

    What Are Common Problems When Showing Product Options?

    • Options still missing: the code was pasted outside the line items loop. Move it directly under the product title.
    • Odd codes appear, like “_id”: these are internal properties. Keep the underscore check in the code.
    • A long file link: the code shows only the file name. For more on uploads, see customer file uploads on Shopify.
    • Your warehouse app doesn’t show options: each tool maps them differently. See structuring line item properties for 3PL and ERP sync.

    The Bottom Line

    If product options are on the order but not in your emails or packing slips, the templates just aren’t printing them. Back up each template, add the properties loop under the product title, and test with a real order. It takes about 15 minutes and stops your team from packing orders without the customer’s details. Need product options that save cleanly to every order? Install Ultimate Product Options free or learn more about the app.

    Frequently Asked Questions

    Why are product options missing from my Shopify order confirmation email?

    Because the template doesn’t print line item properties. The options are saved on the order, but the email template needs a loop through line.properties to display them.

    Can I show product options on Shopify packing slips?

    Yes. Edit the packing slip template under Settings > Shipping and delivery and add a loop through line_item.properties below the product title.

    Will editing the template break my emails?

    Not if you keep a backup. Copy the full code before editing, and preview or send a test after saving. The packing slip template also has a Revert to default button.

    How do I hide some properties from customers?

    Start the property name with an underscore, such as _internal_id. Shopify hides these at checkout, and the code in this guide skips them in emails and packing slips too.

    Do I need to edit every notification?

    Only the ones people use to check orders. Most stores update the order confirmation, shipping confirmation, staff New order email and packing slip.

    Related Reading

    Update Log

    October 24, 2026: First published. Shopify details and app plan details checked against the sources below.

    Sources

    Add Webiots as a preferred source on Google

    Keep Reading