--- title: Menu - GraphQL Admin description: >- Navigation menus that organize links into logical structures to guide customers through a store. Menus serve as the backbone of store navigation, making it easy for customers to find products, pages, and other content through organized hierarchical links. For example, a merchant might create a main navigation menu with top-level categories like "Products," "About Us," and "Contact," where each category can contain nested menu items linking to specific collections, pages, or external resources. Use the `Menu` object to: - Build and customize store navigation structures - Organize hierarchical menu systems with nested items - Work with default menus that can't be deleted - Access menu items for building navigation Menus can be designated as default navigation elements (like main menu or footer), which can't be deleted and have restricted handle updates. The handle provides a unique identifier that themes can reference, while the items collection enables nested navigation structures. Each menu contains menu items that can link to various resource types. This flexibility lets merchants create navigation experiences that guide customers through their store. api_version: unstable api_name: admin source_url: html: 'https://shopify.dev/docs/api/admin-graphql/unstable/objects/Menu' md: 'https://shopify.dev/docs/api/admin-graphql/unstable/objects/Menu.md' --- # Menu object Requires `read_online_store_navigation` access scope. Navigation menus that organize links into logical structures to guide customers through a store. Menus serve as the backbone of store navigation, making it easy for customers to find products, pages, and other content through organized hierarchical links. For example, a merchant might create a main navigation menu with top-level categories like "Products," "About Us," and "Contact," where each category can contain nested menu items linking to specific collections, pages, or external resources. Use the `Menu` object to: * Build and customize store navigation structures * Organize hierarchical menu systems with nested items * Work with default menus that can't be deleted * Access menu items for building navigation Menus can be designated as default navigation elements (like main menu or footer), which can't be deleted and have restricted handle updates. The handle provides a unique identifier that themes can reference, while the items collection enables nested navigation structures. Each menu contains menu items that can link to various resource types. This flexibility lets merchants create navigation experiences that guide customers through their store. ## Fields * handle [String!](https://shopify.dev/docs/api/admin-graphql/unstable/scalars/String) non-null The menu's handle. * id [ID!](https://shopify.dev/docs/api/admin-graphql/unstable/scalars/ID) non-null A globally-unique ID. * is​Default [Boolean!](https://shopify.dev/docs/api/admin-graphql/unstable/scalars/Boolean) non-null Whether the menu is a default. The handle for default menus can't be updated and default menus can't be deleted. * items [\[Menu​Item!\]!](https://shopify.dev/docs/api/admin-graphql/unstable/objects/MenuItem) non-null A list of items on the menu sorted by position. * title [String!](https://shopify.dev/docs/api/admin-graphql/unstable/scalars/String) non-null The menu's title. * translations [\[Translation!\]!](https://shopify.dev/docs/api/admin-graphql/unstable/objects/Translation) non-null The published translations associated with the resource. *** ## Map ### Fields and connections with this object * <->[MenuConnection.nodes](https://shopify.dev/docs/api/admin-graphql/unstable/connections/MenuConnection#returns-nodes) * {}[MenuEdge.node](https://shopify.dev/docs/api/admin-graphql/unstable/objects/MenuEdge#field-MenuEdge.fields.node) *** ## Queries * [menu](https://shopify.dev/docs/api/admin-graphql/unstable/queries/menu) query Returns a `Menu` resource by ID. * [menus](https://shopify.dev/docs/api/admin-graphql/unstable/queries/menus) query The shop's menus. *** ## \Menu Queries ### Queried by * \[menu](https://shopify.dev/docs/api/admin-graphql/unstable/queries/menu) * \[menus](https://shopify.dev/docs/api/admin-graphql/unstable/queries/menus) *** ## Mutations * [menu​Create](https://shopify.dev/docs/api/admin-graphql/unstable/mutations/menuCreate) mutation Creates a navigation [`Menu`](https://shopify.dev/docs/api/admin-graphql/latest/objects/Menu) for the online store. Menus organize links that help customers navigate to [collections](https://shopify.dev/docs/api/admin-graphql/latest/objects/Collection), [products](https://shopify.dev/docs/api/admin-graphql/latest/objects/Product), [pages](https://shopify.dev/docs/api/admin-graphql/latest/objects/Page), [blogs](https://shopify.dev/docs/api/admin-graphql/latest/objects/Blog), and custom URLs. Each menu requires a unique handle for identification and can contain multiple [`MenuItem`](https://shopify.dev/docs/api/admin-graphql/latest/objects/MenuItem) objects with nested sub-items up to three levels deep. * [menu​Update](https://shopify.dev/docs/api/admin-graphql/unstable/mutations/menuUpdate) mutation Updates a [`Menu`](https://shopify.dev/docs/api/admin-graphql/latest/objects/Menu) for display on the storefront. Modifies the menu's title and navigation structure, including nested [`MenuItem`](https://shopify.dev/docs/api/admin-graphql/latest/objects/MenuItem) objects. You can update the handle for non-default menus. The items argument accepts a list of menu items with their nested structure. Each item can include nested items to create multi-level navigation hierarchies. Default menus have restricted updates—you can't change their handles. *** ## <\~> Menu Mutations ### Mutated by * <\~>[menu​Create](https://shopify.dev/docs/api/admin-graphql/unstable/mutations/menuCreate) * <\~>[menu​Update](https://shopify.dev/docs/api/admin-graphql/unstable/mutations/menuUpdate) *** ## Interfaces * * [Has​Published​Translations](https://shopify.dev/docs/api/admin-graphql/unstable/interfaces/HasPublishedTranslations) interface * [Node](https://shopify.dev/docs/api/admin-graphql/unstable/interfaces/Node) interface *** ## ||-Menu Implements ### Implements * ||-[Has​Published​Translations](https://shopify.dev/docs/api/admin-graphql/unstable/interfaces/HasPublishedTranslations) * ||-[Node](https://shopify.dev/docs/api/admin-graphql/unstable/interfaces/Node)