Implement sections in Umbraco backoffice using official docs
Sections are top-level navigation items in the Umbraco backoffice that appear alongside default options like Content, Media, and Settings. They serve as a home for custom content and functionality, providing a blank canvas that can be extended with dashboards, sidebars, and section views. Sections require permission configuration for user groups to access them.
Always fetch the latest docs before implementing:
The Umbraco source includes a working example:
Location: /Umbraco-CMS/src/Umbraco.Web.UI.Client/examples/section-sidebar-menu-expansion/
This example demonstrates section sidebar menu expansion patterns. Study this for sidebar customization.
If you need to explain these foundational concepts when implementing sections, reference these skills:
Context API: When implementing section contexts or explaining how section extensions communicate
umbraco-context-apiConditions: When implementing permissions, user group access, visibility controls, or section restrictions
umbraco-conditionsRouting: When implementing pathnames, navigation patterns, URLs, or section routing
umbraco-routing{
"type": "section",
"alias": "My.Section",
"name": "My Section",
"meta": {
"label": "My Section",
"pathname": "my-section"
}
}
export const manifests = [
{
type: "section",
alias: "My.CustomSection",
name: "Custom Section",
meta: {
label: "Custom",
pathname: "custom-section"
},
conditions: [
{
alias: "Umb.Condition.SectionUserPermission",
match: "My.CustomSection"
}
]
}
];
export const manifests = [
{
type: "section",
alias: "My.Section",
name: "My Section",
meta: {
label: "My Section",
pathname: "my-section"
}
},
{
type: "dashboard",
alias: "My.Section.Dashboard",
name: "My Section Dashboard",
element: () => import('./dashboard.element.js'),
meta: {
label: "Welcome",
pathname: "welcome"
},
conditions: [
{
alias: "Umb.Condition.SectionAlias",
match: "My.Section"
}
]
}
];
export const manifests = [
{
type: "section",
alias: "My.Section",
name: "My Section",
meta: {
label: "My Section",
pathname: "my-section"
}
},
{
type: "sectionSidebarApp",
alias: "My.Section.Sidebar",
name: "My Section Sidebar",
element: () => import('./sidebar.element.js'),
conditions: [
{
alias: "Umb.Condition.SectionAlias",
match: "My.Section"
}
]
}
];
"section"To enable a custom section for users:
That's it! Always fetch fresh docs, keep examples minimal, generate complete working code.