You are viewing beta documentation for Navigation 4.x.
Migrations
Migrating from tka navigation
If your Craft site runs tka navigation (opens new window) (thekitchen-agency/craft-tka-navigation), Navigation can copy menus and node structure without modifying tka data.
Prerequisites
- Install both tka navigation and Navigation on the same Craft site.
- Run tka navigation's own migrations so its tables exist.
- Back up your database and project config.
- Run the migration on staging first.
Control panel
- Go to Navigation → Settings.
- Under Migrations, choose tka navigation.
- 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 tka navigation menus
php craft navigation/migrate/tka-navigation
# Specific handle(s)
php craft navigation/migrate/tka-navigation --handle=mainMenu,footerMenu
# Skip menus whose handles already exist in Navigation
php craft navigation/migrate/tka-navigation --skip-existingWhat is migrated
| tka navigation | Navigation |
|---|---|
| Navigations and handles | Menu name, handle, site settings |
| Entry, category, asset, product nodes | Matching element-backed node types |
| Custom URL nodes | Custom node type |
| Passive nodes | Passive node type |
| Nested JSON tree | Parent/child tree preserved |
| CSS classes, new window | classes, newWindow, customAttributes |
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
| tka navigation feature | Notes |
|---|---|
| Per-site trees | Only the first site tree is migrated — review other sites manually |
| Bulk paste / anchor UX | Not migrated — re-add in the Navigation builder if needed |
| Template output | Replace tka 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