Skip to Content
DestinationStorefront navigation

Storefront navigation

Most platforms organise categories in a tree. Shopify keeps collections in a flat list and treats the storefront menu as a separate thing you build by hand — which, on a store with a couple of thousand categories, is a very long afternoon.

Generate menus does it for you. After a load finishes, Graftport reads the category tree it just migrated and builds a Shopify menu named Graftport catalog that mirrors it.

Your theme’s current menu is never touched. The new menu is created alongside it, so you can look it over — and keep trading — before switching. When you’re happy with it, point your theme at it from Online Store → Navigation in Shopify.

Before you start

  • The categories have to be loaded already. Only categories that exist on the Shopify store end up in the menu.
  • Your category mapping needs to fill in parent_id. Every built-in mapping already does; if you wrote your own, see the category mapping reference.
  • The store must let Graftport edit navigation. Stores connected before this feature existed have not granted that yet — see Reconnecting the store below.

Generate the menu

Open the migration’s Settings tab

Find the Storefront navigation card.

Choose a depth

How many levels the menu nests: 1, 2 or 3. Two is the default and what most themes actually render. Shopify’s navigation stops at three levels.

Categories that sit deeper than the level you pick aren’t dropped — they move up and appear alongside their nearest parent that fits. The summary tells you how many moved.

Select Generate menus

A banner tracks it at the top of the page. It is one operation, so it finishes quickly even on a large catalogue. Stop cancels it; if you stop before it finishes, nothing on the store has changed.

Switch your theme over

In Shopify, go to Online Store → Navigation, open your theme’s main menu and point it at Graftport catalog — or copy across the parts you want.

Running it again

Re-running replaces the Graftport catalog menu with a fresh one built from the current state of your categories. It never creates a second copy, and it never touches any other menu on the store. Run it again after you load more categories, or after fixing a category name.

What ends up in the menu

  • Only categories. Pages, products and policies aren’t added — add those yourself in Shopify’s navigation editor.
  • Alphabetical order. Subcategories are sorted by name. The source store’s own ordering isn’t carried across yet.
  • Categories you excluded stay out. If your mapping marks a category as hidden from the menu, it’s skipped — and its subcategories move up to the nearest visible one, so nothing disappears.

If it doesn’t work

Reconnecting the store

This Shopify store hasn’t granted Graftport permission to edit navigation.

Editing navigation is a permission Shopify asks about separately, and stores connected before this feature existed were never asked. Nothing on your store was changed.

  • Connected through Graftport: reconnect the store from Settings → Stores and approve the permission when Shopify asks.
  • Connected with your own custom app: add the write_online_store_navigation scope to that app in your Shopify admin, reinstall it, then paste the new access token into Graftport.

The catalogue is too large

This catalogue has N categories and a Shopify menu holds at most 10,000.

A Shopify menu has a ceiling of 10,000 entries. Choosing a shallower depth won’t help — deeper categories move up rather than disappear, so the total stays the same. To get under the ceiling the tree itself has to be smaller: exclude the categories you don’t want in the navigation from your category mapping, or split the catalogue across more than one migration, and generate again.

A category is its own parent

The source category tree contains a loop.

Two or more categories point at each other as parents, so there’s no top to start from. The message names the categories involved. Fix the parent category on the source store, re-run the migration for categories, then generate the menu again.

Nothing to build

This migration has no loaded categories to build a menu from.

Run a load that includes categories first. If the load did include them but they all sit outside the menu, the message says that instead.

Last updated on