
You've added collections, arranged your products, and opened the storefront preview, but your header still shows a flat row of links. Or the drop down looks right on your laptop, then refuses to open properly on your phone. The missing piece might be simple admin nesting, but it might also be how your theme handles clicks, focus, and touch.
Building a drop down menu in Shopify involves separate jobs: defining the links in the admin and making the theme display them properly. Start with the built-in tools, then test the interaction before adding code or another app. A panel that opens on hover isn't finished if keyboard users can't reach its contents.
Drop down methods compared
| Method | Nesting levels | Code needed | Best for |
|---|---|---|---|
| Shopify admin nesting | Two drop-down levels beneath the top-level item in the standard setup | No | Stores with a standard category tree |
| Theme header settings | Limited to the levels supported by the header component | No | Changing how the menu looks and opens |
| Custom Liquid code | Up to three levels total in theme rendering | Yes | Layouts the theme cannot produce |
| Mega-menu app | Limited to the selected app's supported hierarchy | Usually no | Panels with images or promotions |
Check theme compatibility before changing your navigation. Older sectioned themes may need an update to display deeper nesting correctly. Don't install an app to work around an outdated header until you've checked whether the theme already supports the layout you need.
A drop down is a familiar ecommerce pattern. Baymard's drop-down navigation benchmark reports that hover-based drop downs are used as main navigation on 88% of the top US ecommerce sites, while warning about accidental closure, unclear grouping, and difficult pointer movement. Familiarity doesn't make a poorly implemented panel usable.
Sketch your category tree before selecting a method. If shoppers can reach the right collection through straightforward parent and child links, admin nesting is the cheapest starting point. Theme settings should handle presentation without requiring someone to maintain custom files.
Use these criteria to narrow the choice:
If you're replacing the theme anyway, use our guide to choosing a Shopify theme to assess navigation alongside the rest of the storefront. For a broader view of setup and ongoing expenses, the Shopify budgeting insights from Zee Palm provide useful context before you commit to another recurring tool.
Practical rule: Start with admin nesting. Use theme settings or code for a defined layout requirement, and choose an app only when the theme can't render the content your panel needs.
Build the structure in Content > Menus, not in the theme's visual editor. The menu stores the labels, destinations, and parent-child relationships; the header decides how those relationships appear.
The visual guide highlights the admin actions that create the structure.

Shopify's drop-down menu guide permits two nested drop-down levels beneath a top-level item, equivalent to three levels total, and allows # as the destination for a non-clickable heading. Custom code does not create an additional hierarchy beyond that supported structure.
Use # only when the parent is intentionally a heading or disclosure control. Entering that value doesn't, by itself, create an accessible button or reliable opening behaviour. The theme still needs to implement that interaction.
For a clothing store, Women can remain a useful collection destination rather than becoming a dead end. A separate disclosure button beside the label can open its children while the category link remains available.
A child directly below its parent isn't necessarily nested. If Dresses has the same indentation as Women, it's another top-level link, even though the ordering looks logical in the admin.
Open every destination after saving. A neatly arranged menu won't help if a collection is unavailable on the storefront or a product has been removed.
If external systems manage your catalogue, keep navigation validation separate from integration work. Magnitude Marketing's Shopify integration roadmap is useful context for that wider project, but your immediate check is simple: every actionable menu item should open the intended live page.
You should finish with a saved parent-and-child menu whose storefront preview matches your category plan.
Open Online Store > Themes, launch the theme editor, and select the Header section. Setting names differ between themes, and some headers won't expose every control described below. Don't assume a missing option exists elsewhere in the admin.
Use the header controls to connect your menu and adjust its presentation.

Start with the menu selector and choose Main menu, or the menu you created. Confirm the preview changes before adjusting styling, otherwise you could spend time editing the wrong navigation.
Next, inspect the opening trigger. Hover can suit desktop pointer use, but touch users need a tap-operated control. If the theme offers hover behaviour, verify that it also provides a deliberate click or keyboard route rather than making hover the only way in.
Then adjust panel width, text size, and spacing. In a hypothetical furniture store, a Living Room category with eight children might benefit from a wider, two-column panel; a category with four short links probably doesn't. Make the panel only as wide as the content requires, and allow longer labels to wrap without overlapping adjacent links.
Finally, select the mobile presentation if your theme offers a choice. An accordion keeps the parent visible while expanding children underneath; a drawer with nested views can work too, provided shoppers have a clear route back.
This video provides an additional visual walkthrough of the setup.
Open the menu after scrolling, not just at the top of the homepage. A fixed header, announcement bar, or clipped container can cover the panel and make its bottom links unreachable.
A panel isn't usable just because it's visible. Shoppers must be able to reach its final link without losing the open menu.
Tick off these settings in desktop and mobile previews:
Use custom code when the theme's controls can't produce a specific layout, not because the menu needs different labels. Duplicate the theme before editing, and keep the published version available while you develop.
Shopify separates navigation content from presentation. Shopify's navigation documentation describes the admin-managed menu structure that a custom header should render, rather than replacing those links with hard-coded destinations.
In Liquid, menus are available as linklist objects, and a link's links attribute contains its children. Think of this as reading a category tree: render a parent, inspect its children, then render the relevant nested list.
link_list setting to the header section schema so the merchant can select the menu through the theme editor.link.links collection. Use nested lists to preserve the relationships.aria-expanded and an aria-controls value matching the panel's unique ID. Keep the expanded state synchronized whenever the panel opens or closes.The implementation checklist keeps the content structure separate from the custom layout.

Liquid outputs the initial HTML. It doesn't manage open state, respond to Escape, or return focus after a shopper closes a panel. Those behaviours need appropriate theme JavaScript and CSS.
When the parent is also a destination, keep the anchor and disclosure button separate. Give the button an accessible name that identifies the category it expands, rather than an unlabeled chevron. Avoid attaching competing navigation and opening actions to the same tap.
Keep ordinary storefront navigation semantic: links go to destinations, buttons disclose, and lists group related destinations. Don't add application-style menu roles merely because the component is called a menu.
The result should remain editable in Shopify admin, with presentation and interaction controlled by the theme. That's more maintainable than duplicating the catalogue structure inside Liquid.
A mega-menu app makes sense when you need promotional images, featured content, or panel arrangements your theme can't produce. It's an unnecessary dependency for a straightforward list of collection links.
Check the ongoing cost before installing. Review the pricing plan, theme compatibility, permissions, and storefront scripts. Additional JavaScript can increase loading and execution work, so compare the storefront before and after activation rather than relying on the builder preview.
Assign someone to update promotional content and remove expired offers. Test what happens when an image is missing, a linked product is unavailable, or the app is deactivated.
Keep the app only if its extra content justifies the recurring fee and maintenance. A plain nested menu shouldn't require a rich-panel builder.
Where supported, keep links managed in Shopify admin and layouts managed in the app. That arrangement reduces duplicate editing and makes a later switch less disruptive.
If child links are missing, inspect indentation and saved changes first. Then confirm that the header renders the menu you edited. Don't change Liquid to repair an unsaved admin structure.
Drop down symptoms, causes and fixes
| Symptom | Likely cause | Fix |
|---|---|---|
| Child links missing from the drop down | Links not dragged beneath the header, or menu not saved | Drag each link under its header, save, and reload the storefront |
| Panel closes before the pointer reaches it | Hover area too narrow or no close delay | Add a short close delay and extend the panel's hover area |
| Third level does not show | Theme component doesn't render the supported deeper links | Flatten the hierarchy or update theme code to render the nested children |
| Menu cannot be opened by keyboard | Trigger lacks appropriate semantics or keyboard handling | Use a disclosure button with aria-expanded and aria-controls, plus opening and closing keyboard handlers |
| Parent link leads nowhere | Parent set to # without a disclosure role | Link it to a collection, or implement it only as a disclosure control |
| Taps miss items on phones | Touch targets are too small | Enlarge the clickable areas and consider an accordion on small screens |
Shopify's accessibility guidance specifies keyboard-operable dropdown controls, communicated expanded state, and touch targets of at least 44 × 44 pixels. Small clickable areas make adjacent links easy to hit accidentally, even when the text itself looks readable.
Unplug the mouse and use the keyboard. Enter and Space should open the disclosure, Tab should reach the first child, and Escape should close the panel and return focus to its trigger. Confirm that focus remains visible throughout.
Repeat the route with a screen reader such as VoiceOver or NVDA. Listen for the control's name and expanded or collapsed state, including inside the mobile accordion. A panel can visibly expand while announcing nothing useful.
Run the final checks in this order:
For broader category and labeling decisions, use our site navigation best practices. If a check fails, verify the admin structure first; when that's correct, isolate the theme or app behaviour instead of repeatedly rearranging valid links.
If the fix requires custom Liquid, bring the failing steps, device details, and screenshots to a developer. We're an official Shopify Partner Agency, and a reproducible test gives us a clear starting point.
We offer Shopify theme adjustments and custom development to turn admin-managed navigation into a usable desktop and mobile header. Visit ECORN, select Shopify Development in the contact form, and share your menu structure alongside the keyboard or touch checks that failed.