# Order object

{% hint style="danger" %}
**Important Notice**

\
Shopify has deprecated the REST Admin API that these Mechanic objects depend on. The product and variant endpoints were removed on Feb 1, 2025, and Shopify is phasing out the remaining REST endpoints over time. Read about the deprecation [here](https://shopify.dev/docs/apps/build/graphql/migrate/new-product-model#whats-changing) and [here](https://shopify.dev/docs/apps/build/graphql/migrate).\
\
Use the [GraphQL](https://learn.mechanic.dev/core/actions/shopify#graphql) going forward. The [product](https://learn.mechanic.dev/platform/liquid/objects/shopify/product) and [variant](https://learn.mechanic.dev/platform/liquid/objects/shopify/variant) objects ceased to work on Feb 1, 2025 due to changes made by Shopify. Shopify is phasing out the REST API entirely — read more [here](https://shopify.dev/docs/apps/build/graphql/migrate).

\
All of our [library tasks](https://tasks.mechanic.dev/) will be ported to use GraphQL only, which will provide a model for how you can update your custom tasks. You'll be able to update your non-customized library tasks with a click of a button :relaxed:\
\
Please see these [guides](https://learn.mechanic.dev/resources/converting-tasks-from-shopify-rest-to-graphql) for migrating your custom tasks to GraphQL.
{% endhint %}

## How to access it

* Use `{{ order }}` in tasks responding to shopify/orders events
* Use `{{ refund.order }}` in tasks responding to shopify/refunds events
* Look up specific orders by their ID, using `{{ shop.orders[12345678900] }}`
* Loop through all ***open*** orders: `{% for order in shop.orders %}`

Or, loop through ***all*** orders, not just open orders: `{% for order in shop.orders.any %}`

Or, use these sub-objects to loop through certain subsets of orders:\
`shop.orders.open`\
`shop.orders.closed`\
`shop.orders.cancelled`\
`shop.orders.authorized`\
`shop.orders.pending`\
`shop.orders.paid`\
`shop.orders.partially_paid`\
`shop.orders.refunded`\
`shop.orders.voided`\
`shop.orders.partially_refunded`\
`shop.orders.unpaid`\
`shop.orders.shipped`\
`shop.orders.partial`\
`shop.orders.unshipped`

Or, combine to be even more selective:\
`shop.orders.any.paid.unshipped`\
`shop.orders.refunded.shipped`\
`shop.orders.open.pending.unshipped`

## What it contains

* [Every property from the Order resource in the Shopify REST Admin API](https://shopify.dev/docs/admin-api/rest/reference/orders/order#properties) **(warning: Shopify delivers order.tags as a comma-delimited string,** ***not*** **an array of strings!)**
* The related [customer object](https://learn.mechanic.dev/platform/liquid/objects/shopify/customer-object): `{{ order.customer }}`
* An array of [line item objects](https://learn.mechanic.dev/platform/liquid/objects/shopify/line-item): `{{ order.line_items }}`
* An array of [refund objects](https://learn.mechanic.dev/platform/liquid/objects/shopify/refund): `{{ order.refunds }}`
* An array of [order risk objects](https://learn.mechanic.dev/platform/liquid/objects/shopify/order-risk): `{{ order.risks }}`
* An array of [transaction objects](https://learn.mechanic.dev/platform/liquid/objects/shopify/transaction): `{{ order.transactions }}`
* An array of [fulfillment objects](https://learn.mechanic.dev/platform/liquid/objects/shopify/fulfillment): `{{ order.fulfillments }}`
* An array of [fulfillment orders objects](https://learn.mechanic.dev/platform/liquid/objects/shopify/fulfillment-order): `{{ order.fulfillment_orders }}`
* An array of note attributes, that also supports lookups by attribute name: `{% for attr in order.note_attributes %}{% if attr.name == "color" %}{{ attr.value }}{% endif %}{% endfor %}`, or `{{ order.note_attributes.color }}`

## Notes

Out of the box, only orders from the last 60 days are accessible. To give Mechanic access to your complete order history, [enable "read all orders"](https://learn.mechanic.dev/platform/shopify/read-all-orders).
