New Order Printer to Show Product line item Meta Fields

Topic summary

Users are migrating templates from the legacy Order Printer app to the new version and encountering issues with product metafield display.

Initial Problem & Solution:

  • The original code {{ line_item.product.metafields.bin_location.value }} stopped working in the new app
  • The fix required updating to proper namespace syntax: {{ line_item.product.metafields.custom.bin_location }}
  • This resolved the bin location display for packing slips

Root Cause:
The legacy app didn’t handle metafield namespaces correctly, allowing a workaround without specifying namespaces. The new app follows proper Liquid syntax: line_item.product.metafields.*namespace*.*key*

Additional Issue - Money Type Metafields:

  • Money metafields display values divided by 100 (e.g., $200 shows as $2.00)
  • Order Printer uses a limited Liquid subset where money metafields store formatted strings differently than theme Liquid
  • Workarounds: Either prepend a dollar sign without the money filter (${{ ...amount }}), or multiply by 100 before applying the filter ({{ ...amount | times: 100 | money }})

One user shared a working packing slip template screenshot demonstrating the implementation.

Summarized with AI on October 26. AI used: claude-sonnet-4-5-20250929.

Hello,

We Installed the New Order Printer App (Because the legacy App with be discontinued soon). But when we migrate our templates, it won’t show the product meta fields anymore.

We created a packing slip template to show Bin Locations so we can easily find products when picking.

We use the code: {{ line_item.product.metafields.bin_location.value }}

Please Help.

Thanks

1 Like

Wait, usually you use line_item.product.metafields.namespace.key to fetch the metafield and line_item.product.metafields.namespace.key**.value** to retrieve its value. Or bin_location is a namespace and value is a key?

Or you’ve simply forgotten either namespace or key?

If value is not a key, but metafield property, after looking at https://help.shopify.com/en/manual/orders/printing-orders/shopify-order-printer/liquid-variables-and-filters-reference#metafield i think maybe you should remove it from your code.

2 Likes

Hello, That is the exact code we use on the old Order printer and it works. Thanks for the link you send it helps me compose the correct code. So I use:

{{ line_item.product.metafields.custom.bin_location }}

and it works in the new Order Printer.

Would it be possible to see what that section of your template looks like for the product and the metafield information? I would love to be able to do the same for our picking lists, I thought it was not possible with the Shopify Order Printer app.

Thanks

Hello @RichardEP ,

Here’s the sample of our Packing Slip:

Hope this helps

In the legacy Order Printer app, product metafields and their namespaces were not handled correctly, so the workaround line_item.product.metafields.key.value was used (note the lack of a namespace). In the new Order Printer app, this appears to be fixed, so line_item.product.metafields.namespace.key works as documented.

1 Like

Hi Tim,

I am running into a similar issue with a variant metafield of type money. I am able to display it, but the value seems to be divided by 100… seems like a bug to me!

This is the code I am using:

{{ line_item.variant.metafields.custom.msrp.amount | money }}

(I tried .value, but only .amount seem to work)

expected output: $200.00

actual output: $2.00

Any ideas why this might be happening???

I tried reaching out to Shopify support, but they say this is outside of their support policy :disappointed_face:

Thanks in advance for your help,

Marianna

Order printer has a limited subset of Liquid and metafields operations are not quite the same as in theme Liquid.

Money type metafields store formatted string rather than money decimal as their value.

In your case, the easiest would be to remove the money filter and prepend a dollar sign.

Here is my test – code (with … for brevity):

MF:         {{ ...metafields.custom.money_test }}
MF.value:   {{ ...metafields.custom.money_test.value }}
MF.amount:  {{ ...metafields.custom.money_test.amount }}
MF| money   {{ ...metafields.custom.money_test.amount | money }}

$+amount:   ${{ ...metafields.custom.money_test.amount }}

reuslt

MF:        {"amount"=>"12.21", "currency_code"=>"AUD"}
MF.value:
MF.amount: 12.21
MF| money: $0.12

$+amount:  $12.21

The MF value was 12.21 as typed in on product page in admin.

1 Like

Thank you so much Tim for the detailed response and testing!

It’s quite frustrating that metafields’ behavior in the app is not quite the same as in theme Liquid.

I ended up multiplying the value by 100, but your solution is more straightforward.

{{ line_item.variant.metafields.custom.msrp.amount | times: 100 | money }}
1 Like