Shopify merchants received emails requiring them to update their Thank You page scripts that reference the deprecated Liquid order object. The issue arises because order creation is asynchronous—the Thank You page may load before the order exists, causing the order object to be unpopulated and breaking critical tracking scripts (e.g., Google Ads, analytics).
Required Changes:
Replace references like order.order_number, order.name, checkout.order_number, and checkout.order_name with checkout.order_id
Eliminate dependencies on the Liquid order object (e.g., order.email, order.line_items) by using available checkout object references
Update downstream systems that rely on order identification to match the new identifier
Recommended Solutions:
Migrate to app pixels (no coding required, better data quality)
Use custom pixels via Google Tag Manager if no suitable app pixel exists
Update existing Additional Scripts (temporary solution, eventually discontinued)
Open Concerns:
One user questions whether checkout.order_id differs from order.id, potentially creating mismatches in historical analytics data (later self-corrected: they are equal)
Another asks if this change causes Meta Ads accounts to lose tracking data—no response yet
Summarized with AI on November 5.
AI used: claude-sonnet-4-5-20250929.
Received an email from shopify, saying Action required Use “checkout.order_id” on the Thank You page
On the Checkout page I see a blue information box saying:
"Your Thank you and Order status pages must be replaced
Your Thank you and Order status pages are using incompatible apps and additional scripts, which is deprecated. Replace these with pixels in customer events and with app blocks in the editor, then publish your changes."
When I look at the Order status page additional scrips section under checkout, I see the line:
if ({{ order.order_number }}) { var google_conversion_order_id = “{{ order.order_number }}”; }
Am I supposed to only change order.order_number to checkout.order_id?
You have received this email because your additional scripts on the Thank you page reference the Liquid order object. You can verify these references by following these steps:
The input box displays only the first 5 lines of code.
To view the entire code block, highlight all the content within the input box, making sure to scroll down all the way.
Copy the highlighted content and paste it into a text editor of your choice.
This will allow you to easily review and identify all instances of the order object within the code.
Why?
Order creation on Shopify is asynchronous, meaning the Thank you page is likely to load before an order is created. When this happens the Liquid order object isn’t always populated. This means Critical 3rd party systems like Google ads and analytics should not rely on the order object on the Thank you page. By contrast, the Order status page only renders when an order has been created, so it is safe to reference the order object on that page.
Solution
If you have tracking scripts for when an order completes, there are a couple of options available to you to resolve this:
Move your analytics toapp pixels: App pixels are great because they do not require coding. Shopify has a dedicated team to ensure your analytics flow smoothly. Additionally, some apps come with Server Pixels, which deliver higher quality data to partners, helping to reduce the cost of acquiring new customers such as the Google & Youtube channel and Facebook & Instagram.
Move tocustom pixels: If there isn’t yet an app pixel that fulfills your requirements, you could consider a custom pixel. For example, a common use case for custom pixels is Google Tag Manager which you can learn to set up through this guide. Setting up a custom pixel requires some technical knowledge and you might want to consider hiring a Shopify Expert.
Update your existing Additional Scripts: This approach requires some coding. A Shopify Expert can assist you with this. However, be aware that this is not a long-term solution, as the Order Status Page additional scripts are deprecated and will eventually be discontinued. If you have a custom script that cannot be migrated to Pixels, you’ll need to:
Modify it to eliminate dependencies on the Liquid order object (e.g., order.email or order.line_items) with available references from the Liquid checkout object. This is identified in the email as order.{anything} or checkout.order.{anything}.
Replace references used to identify the order such as order.name, order.number, checkout.order_number, and checkout.order_name with checkout.order_id. This is a different number that is consistent across checkout and the order. Please note, downstream systems that use this to reference the order will also need to be updated to match.
Ok, I get it, but what if we use order.id as an identifier since today, then suddenly we’ll start using checkout.order_id. There are two different values. At least in our case, we tested it. It’s not good when you have a few years of analytic data behind you and now your orders id’s are different. Please correct me if I’m wrong. It looks like checkout.order_id == checkout.id
EDIT: Ok, I was wrong. checkout.order_id == order.id