How to show the correct warehouse on packing slips for unfulfilled orders? (Free Order Printer app)

Hi everyone,

I’m using the free Shopify Order Printer app and want my packing slips to show the correct warehouse/location for every item – whether the order is already fulfilled or still unfulfilled.

Fulfilled items are easy – the fulfillment location shows up fine.
The problem is unfulfilled items – nothing seems to work. I’ve tried:

  • line_item.variant.inventory_levels → completely blank

  • line_item.fulfillment_location → also blank

  • Loops over shop.locations → always falls back to the primary location

I just want it to show the location that’s selected in the variant under “This variant is fulfilled from…”.

Is there any simple, working way to do this in 2025 with just the free Order Printer app?
Or is this no longer possible without a paid app like Order Printer?

Would love a working code example if anyone has one – I’m sure I’m not the only one stuck on this!

Thanks so much! :blush:

Order printer uses a slightly different flavor of Liquid, so may have no access to some parameters.
However, Liquid generally has no (or very limited) access to inventory or locations.

What you can do is to use Flow to listen for “inventory change” and push inventory location into variant metafield if you fulfil each variant from a single location.

If you have items fulfilled from multiple locations then there is still some “flexibility” from where the item will be fulfilled.

Hey! You’re definitely not the only one running into this. Let’s break down what’s possible (and what’s not) as of 2025.

For unfulfilled items, Shopify does NOT expose the assigned variant location in Order Printer’s Liquid. Shopify simply doesn’t send any per-item location data to the free Order Printer template unless the item is already fulfilled.

Option 1: Use a paid app (the only real fix). Apps like: Order Printer Pro, OrderlyPrint, Printout Designer. These apps use the Admin API, which can read: inventory_item.locations_assigned and inventory_levels.

Option 2: Fulfill the order first. Once items get any fulfillment, Shopify exposes the location automatically. But obviously that defeats the purpose for “packing slip before shipping.”

Working Code Example (only for fulfilled items). This will show the location name only when fulfillment exists:

{% if line_item.fulfillment %}
{{ line_item.fulfillment.location.name }}
{% else %}
Not available for unfulfilled items
{% endif %}

Hope this clears things up! I know it’s frustrating, but it’s really a Shopify data limitation.