You are viewing beta documentation for Navigation 4.x.
Migrations
Migrating from Navigate
If your Craft site runs Navigate (opens new window) (studioespresso/craft-navigate), Navigation can copy menus and node structure without modifying Navigate data.
Prerequisites
- Install both Navigate and Navigation on the same Craft site.
- Back up your database and project config.
- Run the migration on staging first.
Control panel
- Go to Navigation → Settings.
- Under Migrations, choose Navigate.
- Select the menus to migrate (or choose All).
- Optionally enable Skip existing handles if you do not want to overwrite menus that already exist in Navigation.
- Click Migrate Menus and review the per-menu output log. Click Done when finished.
Console
# All Navigate menus
php craft navigation/migrate/navigate
# Specific handle(s)
php craft navigation/migrate/navigate --handle=mainMenu,footerMenu
# Skip menus whose handles already exist in Navigation
php craft navigation/migrate/navigate --skip-existingWhat is migrated
| Navigate | Navigation |
|---|---|
| Navigations and handles | Menu name, handle, site settings |
| Entry, category, asset nodes | Matching element-backed node types |
| Custom URL nodes | Custom node type |
| Nested structure | Parent/child tree preserved |
| Node CSS classes, new window | classes, newWindow, customAttributes |
| Max levels | Menu maxLevels |
If an element-backed node no longer has a resolvable linked element, it is converted to a Custom URL node and a warning is logged.
Manual follow-up
| Navigate feature | Notes |
|---|---|
| Multi-site trees | Only the primary site tree is migrated — review other sites manually |
| Class preset dropdown | Not migrated — use node custom fields or template logic |
| Template output | Replace Navigate Twig helpers with Navigation render() or custom templates |
Handle collisions
When a Navigation menu with the same handle already exists, the migrator creates a new menu with a numeric suffix (for example mainMenu1).
Related
Last updated: July 3, 2026, 1:22:08 PM