Object handles

Handles are used to access the attributes of Liquid objects. Most objects in Shopify (products, collections, blogs, articles, menus) have handles. For example, a page with the title "About Us" can be accessed in Liquid using its handle about-us.

By default, a handle is the object's title in lowercase with any spaces and special characters replaced by hyphens (-).

A product with the title "Shirt" is automatically given the handle shirt. If there is already a product with the handle shirt, the handle will auto-increment. In other words, all "Shirt" products created after the first one will receive handles like shirt-1, shirt-2, and so on.

If you want to get the handle of a product use product.handle.

How handles are created

Whitespace in titles is replaced by hyphens in handles. For example, the title My Shiny New Title will result in the handle my-shiny-new-title.

If a title contains multiple consecutive spaces or special characters, then they're replaced by a single hyphen. Spaces and special characters are trimmed off of the beginning and end of the handle. For example, 70% cocoa sweet & salty bites!!! becomes 70-cocoa-sweet-salty-bites.

The handle also determines the URL of the object. For example, a page with the handle about-us would have the url http://yourshop.myshopify.com/pages/about-us.

Shop designs often rely on static handles for pages, products, and menus. In order to preserve design elements and avoid broken links, if you modify the title of an object, Shopify does not automatically update the handle.

For example, if you were to change your page title from About Us to About Shopify, the handle would still be about-us:

You can change an object's handle manually by changing the value for the URL & Handle box.

Accessing handle attributes

In many cases you may know the handle of a object whose attributes you want to access. You can access its attributes by pluralizing the name of the object, then using either the square bracket ( [ ] ) or dot ( . ) notation.

Notice that the example uses pages instead of page.

You can also pass in theme editor objects using this notation. This is handy for theme designers who want to give the users of their themes the ability to select which content to display in their theme.