Think of a Liquid variable as a blank on a form letter. A form letter might say “Dear ____, your order ____ has shipped.” Shopify's version of that blank looks like {{ this }} — two curly braces with a word inside. When the email actually gets sent, Shopify fills every blank in with the real, live details of that one order. This guide lists the blanks you'll use most, in plain English, pulled from Shopify's own official variable list.
The one rule that trips everyone up
{{ shipping_method.title }}, not {{ order.shipping_method.title }}. (Text message templates are the opposite — there you do add order. in front.) {{ order.name }} is a documented exception and works either way.1. Basic order information
These work in almost any order-related notification — confirmations, edits, cancellations, refunds.
| Variable | What it shows |
|---|---|
| {{ order.name }} | The order number as customers see it, like #1023. |
| {{ order_number }} | The same order number, without the # symbol. |
| {{ email }} | The customer's email address. |
| {{ created_at }} | The date and time the order was placed. |
| {{ financial_status }} | Payment status: pending, paid, refunded, and so on. |
| {{ fulfillment_status }} | Whether the order is unfulfilled, partially fulfilled, or fulfilled. |
| {{ note }} | Any note left on the order by you or the customer. |
| {{ order_status_url }} | A link to the customer's order status page. |
| {{ total_price }} | The full amount the customer paid. |
| {{ subtotal_price }} | The price of everything before shipping and tax. |
| {{ tax_price }} | Total tax charged. |
| {{ shipping_price }} | What the customer paid for shipping. |
| {{ item_count }} | How many items are in the order, total. |
2. Customer and address information
| Variable | What it shows |
|---|---|
| {{ customer.first_name }} | The customer's first name. |
| {{ customer.last_name }} | The customer's last name. |
| {{ shipping_address.first_name }} | First name on the shipping address. |
| {{ shipping_address.address1 }} | Street address, line 1. |
| {{ shipping_address.address2 }} | Street address, line 2 (apartment, suite, etc). |
| {{ shipping_address.city }} | Shipping city. |
| {{ shipping_address.province }} | Shipping state or province. |
| {{ shipping_address.zip }} | Postal or ZIP code. |
| {{ shipping_address.country }} | Shipping country. |
| {{ shipping_address.phone }} | Phone number left with the shipping address. |
| {{ billing_address }} | Same fields as above, for the billing address. |
3. Your shop's own information
| Variable | What it shows |
|---|---|
| {{ shop.name }} | Your store's name. |
| {{ shop.email }} | Your store's sender/support email. |
| {{ shop.phone }} | Your store's phone number. |
| {{ shop.url }} | Your storefront's web address. |
| {{ shop.email_logo_url }} | The logo you uploaded under Customize email templates. |
| {{ shop.email_accent_color }} | The accent color you picked under Customize email templates. |
4. Everything the customer bought (line items)
An order usually has more than one product in it, so Shopify can't just hand you “the product name” as a single blank — it hands you a list called line_items, one entry per product. To show every item, you wrap your row of HTML in a loop that repeats once for each thing in the list:
{% for line in line_items %}
{{ line.title }} × {{ line.quantity }} — {{ line.price }}
{% endfor %}Everything between {% for %} and {% endfor %} prints once per product. Inside that loop, these are the fields you'll reach for:
| Variable | What it shows |
|---|---|
| {{ line.title }} | Product name (and variant, like “T-Shirt - Medium / Blue”). |
| {{ line.quantity }} | How many of this item were bought. |
| {{ line.price }} | Price for a single unit. |
| {{ line.line_price }} | Price × quantity for this line. |
| {{ line.image }} | A link to the product's image. |
| {{ line.variant.title }} | The variant only, like “Medium / Blue”. |
| {{ line.variant.sku }} | The product's SKU code. |
| {{ line.product.vendor }} | The brand or vendor name on the product. |
5. Shipping and tracking
Available on shipping confirmation and shipping update notifications, once a fulfillment exists:
| Variable | What it shows |
|---|---|
| {{ fulfillment.tracking_company }} | The carrier's name, like UPS or USPS. |
| {{ fulfillment.tracking_numbers }} | The tracking number(s) for this shipment. |
| {{ fulfillment.tracking_urls }} | Direct link(s) to track the package. |
| {{ fulfillment.estimated_delivery_at }} | The estimated delivery date, when the carrier provides one. |
6. Discounts and refunds
| Variable | What it shows |
|---|---|
| {{ discounts_amount }} | Total amount saved from all discounts. |
| {{ discount_application.title }} | The discount's name, as the customer sees it. |
| {{ amount }} | On a refund notification, the amount refunded. |
| {{ refund_line_items }} | The list of items included in a refund — loop over it just like line_items. |
Where to find the rest
This guide deliberately leaves out the variables only a small number of stores need — draft orders, B2B company accounts, subscriptions, gift cards, and point-of-sale. Shopify documents every one of those on the same page: the official Notification variables reference. Bookmark it once you're customizing more than a couple of templates.
Variables in place? The last step is making sure everything actually renders the way you expect — covered in Test your Shopify notification emails before going live.
