Adding Custom META fields to Packing Slip

Topic summary

The discussion centers on displaying custom product metafields (specifically warehouse bin locations) on Shopify packing slips. The original poster attempted to access product metafields directly in the packing slip template but found they weren’t rendering.

Core Challenge:
Product and variant metafields are not directly accessible in Shopify’s default packing slip templates, which limits straightforward implementation.

Working Solutions Identified:

  • Order Metafields Approach: Use order-level metafields instead of product metafields. One detailed solution involves:

    1. Creating variant metafields for bin locations
    2. Setting up corresponding order metafields
    3. Using Shopify Flow to automatically copy variant metafield data to order metafields when orders are created
    4. Modifying the packing slip template to display the order metafield data
  • Third-Party App: The Freshly app was recommended for lot/batch tracking, which can repurpose batch names as bin locations and sync them to order metafields.

  • Direct Product Reference: Some users reported success accessing metafields via line_item.product.metafields.namespace.key syntax, though results varied.

Current Status:
Multiple working implementations have been shared with code examples and step-by-step instructions. The consensus is that order metafields combined with Shopify Flow provide the most reliable solution for this use case.

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

Hi,

Trying to custom META fields to the packing slip (bin location of product in warehouse).

Currently, I’m adding is next to SKU:


                {{ line_item.sku }} | Bin Location: {{ product.metafields.my_fields.bin }}
              

Here’s how I setup the meta field:

Here’s the current result (I’m expecting a bin location to show where the red underlining is):

Am I warm or way off with getting to the result I need?

4 Likes

I am waiting the answer ,I have done the same ,but no result!

1 Like

@MamounZater let me know if you find a way in the meantime. I feel like I’ve tried everything, but probably missing something incredibly obvious.

still searching for solutions !

I will let you know once I knew

If bin locations on a packing/picking slip are what you need, you could see if this solution works for you on Sheet Master https://apps.shopify.com/sheet-master (currently free).

You can set up custom warehouse bin locations, and generate pick lists in custom formats - happy to help with a free custom setup in case you need it. Video demo: https://www.youtube.com/watch?v=O12azLZcmjo

Hi,

I would need the answer to this as well. Anyone ? :slightly_smiling_face:

Thanks !

Are you available to hire for some packing slip customization? I have 2 checkout questions and if possible shipping method id like to add. If they wont let us is there another form with more variables I could change to a packing slip? Pondmegastore@yahoo.com thank you

I have used the same logic… no result. What’s the solution?

I’m trying to figure this out now! Desperately need this to work!

1 Like

Same, can’t find a solution. I googled like crazy, nothing works. I want to add a “location” product metafield I created so that I can add it to the Packing slip to each product making it easier to pull the product from my bins and racks.

1 Like

We are trying to do the same exact thing. We ran into a roadblock after finding that the product object (which should contain the metafields) is not available from within the line_item field within the custom packing slip Liquid.

https://help.shopify.com/en/manual/shipping/setting-up-and-managing-your-shipping/packing-slips-variable-list#order-variables

Have the same problem, just seems impossible :disappointed_face:

2 Likes

Hi @cotty ,

Your code looks good, but since product or variant metafields aren’t accessible in the Shopify packing slips, I would recommend using Order metafields. The Freshly app, which is mostly used for lot/batch tracking, can also be used for adding bin locations for each product in the order.

Here’s a quick demo I made to show how to add the bin locations for each product on the Shopify packing slip: :movie_camera: https://www.loom.com/share/a949c18c1b544f579cd8cc2a3de1c442

To summarize:

  1. Add bin locations as the batch name in product batches with a high quantity and no expiry date in Freshly.
  2. Enable order metafields in Freshly preferences.
  3. Modify the template for the Shopify packing slip. I have included the template here: https://gist.github.com/basilkhan05/a94ee86cf6fe3ae7887da0348c79dd1d

And you should be all set! You can also use Freshly packing slips to do the same where you wouldn’t need to rely on Shopify metafields being up-to-date with the recently updated bin locations. Let me know if you have any other questions or reach out to our team at hello@getfreshly.io. :slightly_smiling_face:

2 Likes

Try {{ line_item.product.metafields.my_fields.bin }}

Here is what I use that works:

{% assign barcode = nil %}
{% for item in order.line_items %}
{% if item.sku == line_item.sku %}
{% assign barcode = item.variant.barcode %}
{% assign notes = item.product.metafields.descriptors.subtitle %}
{% endif %}
{% endfor %}
{% if barcode != blank %}
OTHER: {{ barcode }}

{% endif %}
{% if notes != blank %}
NOTES: {{ notes }}
{% endif %}

2 Likes

any chance you can expand on this solution, I tried your code and was unable to get any of it to work

Certainly.

I use that code in the packing slip template which can be found and edited in the Shipping and delivery settings. If a product on the packing slip has information in its barcode section or in the subtitle section (This is a meta field that we use), it will be displayed on the packing slip. If there is no information in one or either of those sections, it will not be displayed.

Thanks, after fooling around this morning I got it to work, had to make a few changes but got the meta field data to show after getting the correct metafield call working

{% for item in order.line_items %} {% if item.sku == line_item.sku %} {% assign bin_location = item.variant.metafields.my_fields.bin_location %} {% endif %} {% endfor %} {% if bin_location != blank %} BIN/LOCATION: {{ bin_location }} {% endif %}
3 Likes

On a 2.0 store, the following works for me:

BIN: {{ line_item.variant.metafields.bin.value }}

Hi,

Do you know why this is not working :

Thank you for your help!

Line item metafield is not available in the packing slip order template. You need to save the line item metafield as an order metafield then use it like this.