Shopify Order Confirmation Email: Logo by Location

A merchant wanted a different brand logo on the order email for each POS location. The location logic came back blank in the Order confirmation email. Here is why, and the template that actually works, with screenshots.

By AjayCodeWiz · August 18, 2026 · 9 min read

Answered on the Shopify Community

A merchant ran into this and asked about it on the forum. I worked through it on a test store and posted the fix there on August 18, 2026. You can read the original thread, including the follow-up questions, over on the Shopify Community.

View the original thread

The problem

A merchant asked about this on the Shopify Community, and it is a common one for anyone running more than one brand from a single Shopify store.

They sell in person with Shopify POS across several locations. Two of those locations are different brands. One is BAGGU, one is CORKCICLE. They wanted the logo at the top of the customer's order email to match the brand of the store where the purchase happened.

So a customer who buys at the BAGGU counter should get an email with the BAGGU logo. A customer at a CORKCICLE store should get the CORKCICLE logo. One store, one email template, but a logo that changes based on the physical location.

That is a reasonable thing to want, and Shopify Support told them it was possible with a bit of Liquid. Liquid is the small template language Shopify uses inside email notifications and themes. You can add simple "if this, show that" logic to it.

So the merchant edited their Order confirmation email and added this:

{% if location.name == "Baggu Ashta District 8" %}
  <img src="BAGGU_LOGO_URL" alt="BAGGU" width="{{ shop.email_logo_width }}">
{% else %}
  <img src="CORKCICLE_LOGO_URL" alt="CORKCICLE" width="{{ shop.email_logo_width }}">
{% endif %}

The template saved fine. But when they placed a real test order at the BAGGU counter, the email still showed the CORKCICLE logo. The condition never matched.

They then tested the values directly. They printed location.name, location.id, and order.location.name into the email. All three came back blank on a real POS order. Every path they tried returned nothing.

If you have hit this, you have almost certainly reached the same dead end. You are not guessing the wrong variable name. The variable is empty in that email, and here is why.

Why the location is always blank

There are two separate things going on, and both point to the same fix.

First, a POS sale does not send the Order confirmation email.

When a customer buys something in person and asks for a receipt, Shopify does not send them the standard online Order confirmation. It sends a different notification called POS and mobile receipt. That is a separate template with its own code. So any change you make to the Order confirmation email never runs for an in-person sale.

The Order confirmation notification is for online orders only, so POS edits to it never runThe Order confirmation notification is for online orders only, so POS edits to it never run

Second, location is a POS-only variable.

Shopify only fills in the location object on POS notifications, like the POS receipt. On the online Order confirmation email there is no physical location, because online orders do not have one. So location.name and location.id have nothing to read, and they render blank.

Put those two facts together and the whole picture makes sense. The merchant was editing the online email, where the location is always empty, for a sale type that does not even use that email. Both problems have the same answer: use the POS receipt template instead.

Which email does your POS customer actually get?

Before you change any code, it helps to know the templates involved. Open Settings > Notifications > Customer notifications in your Shopify admin.

You will see the emails grouped into sections. Two of them matter here.

  • Order confirmation, under Order processing. This says "Sent when a customer places an order." This is the online checkout email. This is the one the merchant was editing.
  • POS and mobile receipt, under Point of Sale. This says "Sent when a customer places an in-person order and requests a receipt." This is the email your in-person customers actually get.

The POS and mobile receipt notification is the email in-person customers getThe POS and mobile receipt notification is the email in-person customers get

That description is the key. If the sale happened at the register and the customer chose an email receipt, the email came from POS and mobile receipt, not Order confirmation.

The fix: move the code to the POS receipt template

The logic the merchant wrote is correct. It just needs to live in the right template, where the location is actually filled in.

Here are the steps.

1. Open the POS receipt template.

Go to Settings > Notifications > Customer notifications. Scroll to Point of Sale and open POS and mobile receipt. Do not open Order confirmation.

2. Find the logo block.

In the Email body, look near the top for the logo. The quickest way is to search the code for shop.email_logo_url. You will find a block that looks like this:

{%- if shop.email_logo_url %}
  <img src="{{ shop.email_logo_url }}" alt="{{ shop.name }}" width="{{ shop.email_logo_width }}">
{%- else %}
  <h1 class="shop-name__text">{{ shop.name }}</h1>
{%- endif %}

This is the default logo. It shows your one store logo on every receipt.

Find the logo block in the POS receipt template and replace itFind the logo block in the POS receipt template and replace it

3. Replace that whole block with your own condition.

{% if location.id == 123456789 %}
  <img src="YOUR_BAGGU_LOGO_URL" alt="BAGGU" width="{{ shop.email_logo_width }}">
{% else %}
  <img src="YOUR_CORKCICLE_LOGO_URL" alt="CORKCICLE" width="{{ shop.email_logo_width }}">
{% endif %}

Keep your own logo image URLs in the two src slots. Then click Save.

4. Get your location ID.

Go to Settings > Locations and open the location you want to match, for example Baggu Ashta District 8. Look at the address bar. The number at the end of the URL, after /locations/, is that location's ID. Copy it and use it in place of 123456789.

Open a location and the number at the end of its URL is the location IDOpen a location and the number at the end of its URL is the location ID

That is the whole change. On my test store, the POS receipt renders from the POS and mobile receipt template, and the location object is filled in there. That is exactly why the same code was blank when it sat in the Order confirmation email.

Match by ID, not by name

The merchant's original code matched on the location name. Once the code is in the POS receipt template, that will actually work, because location.name is filled in there too:

{% if location.name == "Baggu Ashta District 8" %}

But matching on the ID is safer. A location name can be renamed later, in one click, by anyone with admin access. The moment someone edits "Baggu Ashta District 8" to "BAGGU Ashta", every name match silently breaks and the logo flips back to the else branch. The ID never changes. So prefer the ID and use the name only if you cannot find the ID quickly.

More than two locations

The same pattern extends to any number of brands. Chain the conditions with elsif:

{% if location.id == 111111111 %}
  <img src="BAGGU_LOGO_URL" alt="BAGGU" width="{{ shop.email_logo_width }}">
{% elsif location.id == 222222222 %}
  <img src="CORKCICLE_LOGO_URL" alt="CORKCICLE" width="{{ shop.email_logo_width }}">
{% else %}
  <img src="{{ shop.email_logo_url }}" alt="{{ shop.name }}" width="{{ shop.email_logo_width }}">
{% endif %}

The final else is your safety net. If a sale comes from a location you have not listed, the customer still gets your default store logo rather than a broken image.

Why is the location blank in my Shopify order confirmation email?

Because the Order confirmation email is the online checkout email, and online orders do not have a physical location. The location object is only filled in on POS notifications. If you print location.name in the Order confirmation email you will always get a blank, even on a POS order, because a POS order does not use that email in the first place. This is not a bug and it is not the wrong variable name. It is the wrong template.

Does a Shopify POS order send an order confirmation email?

No. When a customer buys in person and asks for a receipt, Shopify sends the POS and mobile receipt, not the standard Order confirmation. That is why editing the Order confirmation email has no effect on your in-person sales. If you want to change what your POS customers receive, you edit POS and mobile receipt under the Point of Sale section of your customer notifications.

How do I add a logo to my Shopify order confirmation email?

For a single logo across all emails, you do not touch the code at all. Go to Settings > Notifications, open Customize email templates, and set your logo there. Every notification, including the order confirmation, then shows shop.email_logo_url automatically. You only need Liquid, like the code above, when you want the logo to change based on something, such as the POS location.

Can I have different email logos for different Shopify locations?

Yes, for POS sales, using the method in this article. You put an if condition on location.id inside the POS and mobile receipt template. You cannot do it for online orders this way, because an online order has no single physical location tied to it. If your brands are truly separate businesses, at some point running them as separate Shopify stores becomes cleaner than branching one template. But for a shared catalog with multiple in-person counters, the per-location POS receipt is the simplest working answer.

What if it still shows the wrong logo?

A few things to check.

  • You are editing the right template. Confirm the code is in POS and mobile receipt, not Order confirmation. This is the most common miss.
  • The location ID is correct. Open the location and re-copy the number from the end of the URL. A single wrong digit sends every receipt to the else branch.
  • The image URLs load. Paste each logo URL into a browser tab. If it does not open there, it will not show in the email either. Use the full public URL of the image, including https://.
  • You tested with a real POS receipt. The email or text receipt the customer requests at checkout is the one that uses this template. The admin preview uses sample data and may not carry a location.

The three receipts, and which is which

It is easy to mix these up, so here is the plain version.

  • Order confirmation is the email for online store orders. It has no POS location.
  • POS and mobile receipt is the email or text a customer requests after an in-person sale. This is where the location object works, and where the logo code belongs.
  • The printed receipt is the paper slip from the receipt printer. That is set separately, inside your POS settings, and is not affected by any of the code above.

Change the email, and only the emailed and texted receipt updates. The printed slip and the online order confirmation are left alone, which is usually exactly what you want.

This came from a real question on the Shopify Community. The merchant had good code and had even confirmed the values were blank. The only thing wrong was the template it lived in. Move it to the POS and mobile receipt, match on the location ID, and the right brand logo shows up on the right receipt.

Spending too long on manual Shopify busywork?

PinFlow turns your Shopify catalog into Pinterest pins and posts them on a schedule, automatically. Same idea as the section above, let the system handle the repetitive part.

Get PinFlow on the Shopify App Store