Migrating Order Printer templates: the Liquid variable renames, and the one mapping you should not trust blindly
If you maintain invoice, packing slip or label templates for a Shopify store, you may be moving them from the legacy Order Printer app to the newer Shopify Order Printer. Shopify's import updates your variables in most cases, so the work is usually verification, not rewriting. But when a template does not import cleanly, you will be replacing variables by hand, and one entry in Shopify's own migration table points you at a name that Shopify's variable reference marks deprecated.
This post walks through what changed, using only Shopify's Help Center pages, read October 10, 2026. Where Shopify's wording is conditional, it stays conditional here.
Rule one: most order variables need the order. prefix
In the new app, most order variables take the order. prefix. billing_address becomes order.billing_address.
Shopify's migration troubleshooting page lists seven commonly used variables that work without the prefix:
line_itemstax_linesfulfillmentstransactionsrefundsshipping_methodscustomer
The Shopify Order Printer variable reference adds an eighth, discounts, which it marks deprecated. So if you are grepping a template for variables to fix, the prefix rule covers most of the order-level names, and the list above is your set of exceptions.
Rule two: renames and removals
If a template does not migrate correctly, you might need to replace variables from Shopify's list by hand. The table below shows the direct replacements only, not Shopify's whole list. Order variables in it follow the prefix rule above, as in order.created_at.
| Legacy Order Printer | Shopify Order Printer |
|---|---|
date |
created_at, with the date filter |
total_tax |
tax_price |
total_paid |
net_payment |
shipping_lines |
shipping_methods |
name (line item) |
title |
product_title, variant_title
|
product.title, variant.title
|
weight (line item) |
grams |
grams (variant) |
weight |
current_price (shipping line) |
price - check it against the reference first |
price (shipping line) |
original_price |
Source: Shopify's migration troubleshooting page, read October 10, 2026.
Two rows deserve a second look before you run a find-and-replace. Shopify lists weight (line item) -> grams and grams (variant) -> weight, so the mapping runs in opposite directions depending on whether you are on a line item or a variant. A global replace in either direction would be wrong for one of them. And the last two rows both touch a shipping line's price, which is where the trap is.
Three transaction variables, authorization, message and test, were removed and cannot be replaced. If a template printed any of them, that output has to go or come from somewhere else. Other names, such as payment_transactions, need a filter or a calculation instead; Shopify's full mapping tables list them.
One difference is easy to miss because it is not a rename: in the new app, line_items does not include refunded or tip line items. Shopify points to refunds.<each>.refund_line_items for refunded lines and tip_line_items for tips, and shows how to join them to line_items. If a template needs those lines in the same loop, check it in Preview.
The trap: a table that points to a deprecated name
The migration table says what replaces an old name. The reference says whether the new name is current. Those are two different documents and, on October 10, 2026, they disagreed.
The table replaces a shipping line's current_price with price. The app's Liquid variables and filters reference marks shipping_line.price as deprecated because it did not include order-level discounts, and names shipping_line.price_with_discounts instead. The same reference also marks line_item.price and order.discounts deprecated.
So the working rule is: if the reference marks a replacement deprecated, use the name it gives. Then click Preview and confirm the template displays correctly.
If you are the person who owns these templates, a practical sequence is:
- Let the import run, and open Preview on every template.
- Fix only what Preview shows wrong.
- For each name you touch, look it up in the variable reference before you commit to it, rather than trusting the migration table alone.
- Search your templates for the three removed transaction variables and for loops over
line_itemsthat are meant to include refunded or tip lines.
Shopify also names custom CSS and metafields among the most common reasons templates might not import correctly, so those templates are the ones to open first. For the wider Order Printer documentation, see Shopify's Order Printer help section.
What this post does not claim
This is a summary of what Shopify's pages said on the day they were read, not a full variable inventory. The mapping tables on Shopify's side are longer than the table above, and Shopify can update either page. If your template uses a name that is not covered here, the reference page is the place to settle it.
The original FAQ, with each claim tied to its Shopify source, is at Which Liquid variables changed when templates moved to Shopify Order Printer?
Our content is AI-generated and fact-checked against official Shopify sources.
Top comments (0)