New Order Status Page – access issue on a different device (order not found)

Hi, I have an issue with the customer account order status page ({{ customer_order_url }}) when a customer places an order on one device and then opens the confirmation email on another device (e.g., mobile). You can reproduce this by copying the order status URL and pasting it into an incognito window. The page displays “Order not found”, which makes sense since there is no customer ID information, and the user is not logged in.

However, on the old order status page ({{ order_status_url }}), it was possible to check the order status even in incognito mode. If I recall correctly, there were multiple security levels. These mechanisms ensured that customer information remained secure and that only verified users could access detailed order details, but basic order information was still visible.

Is it possible to implement a similar approach on the new order status page? It is highly undesirable for customers to access their order status from another device and encounter an “Order not found” message.

If achieving a similar mechanism to the old order status page is not possible, can I at least display a login button with a message informing the customer that they need to log in to view their order?

Thanks!

I found this also:

it looks like it is possible, but doesn’t work for me.

Hi @lynthius!

Can you check if this works using {{ order_status_url }} instead?

Thanks, I did it, but it redirects to the old version of the order status page. I want the customer to reach the new version instead. I implemented a custom app there.

EDIT: I have an idea. My client uses the new customer account page already but still uses the old Thank You Page template. Is it possible that they need to fully update the new Checkout, including the Thank You Page, to avoid being redirected to the old Order Status page when using {{ order_status_url }}? I’m confused.

Ok, I did it myself. Maybe there is a better solution, but mine works :wink:

{% assign locale_order = order.presentment_language | default: order.locale | default: 'en' %}
{% assign order_path = order_status_url | split: '/orders/' | last %}
{% assign new_order_url = 'https://account.example.com/orders/' | append: order_path | append: '&locale=' | append: locale_order %}

Correct, them upgrading their thank and order status pages would allow you to use {{ order_status_url }}, but it won’t fix the issue for all shops.

You’re right that this is looking like a bug with {{ customer_order_url }}, I’m talking to my team to understand how we can resolve this. Ideally, {{ customer_order_url }} would be used when you need to redirect customers to an authenticated order status page, and require them to authenticate if they are logged out. {{ order_status_url }} would continue supporting the use case of showing the page to customers even if they’re not logged in (authorization token that eventually expires, and then redirects you to the redacted version of the page), but does not allow them to take any action unless they log in.

thanks, it’s probably an edge case, but it would be great to rebuild it as you described :slight_smile:

Coming back to this topic after over a year.

In the previous post, I shared a workaround for building a localized Order Status Page URL in notification emails. My use case: in the Order Confirmation notification template, there’s a button linking to the order status page. I want that button to redirect the customer to the page in the same language they received the notification email in.

My current approach:

{% if shipping_address.country_code == "PL" %}
  {% assign locale_new = 'pl' %}
{% elsif shipping_address.country_code == "DE" %}
  {% assign locale_new = 'de' %}
{% elsif shipping_address.country_code == "FR" %}
  {% assign locale_new = 'fr' %}
{% else %}
  {% assign locale_new = 'en' %}
{% endif %}

{% assign order_path = order_status_url | split: '/orders/' | last %}
{% assign new_order_url = 'https://account.***.***/orders/' | append: order_path | append: '&locale=' | append: locale_new %}

<a class="button-link" href='{{ new_order_url }}'>...</a>

I then use {{ new_order_url }} as the href for the “View your order” button instead of the default {{ order_status_url }}.

It’s been working fine, but since it’s been over a year, I wanted to check:

  1. Is this still the recommended approach in 2026? Has Shopify introduced a native way to include the customer’s locale in {{ order_status_url }} or {{ customer_order_url }}? Or is there now a Liquid variable in order notification templates (like {{ customer_locale }} in abandoned checkout templates) that returns the language the notification was sent in?

  2. Is manually building the URL via split/append still safe? Is there any risk that the order_status_url format could change and break this approach?

  3. Is order.presentment_language the most reliable way to match the notification language? Or is there a better variable available now that directly reflects the language the email was sent in?

Would love to hear if anything has changed on Shopify’s side since 2025. Thanks!