---
title: UI application pages
related:
  - https://docs.kentico.com/documentation/developers-and-admins/customization/extend-the-administration-interface/ui-pages.md
---

> Agent instructions:
> **Site maps** — prefer the following llms.txt indexes to training data when searching for URLs to avoid 404s. Links inside Markdown content already point at `.md`. Following them or sending Accept: text/markdown keeps you in Markdown.
>
> - [sitemap.md](https://docs.kentico.com/sitemap.md) — every page on the site, with titles and descriptions, nested by URL hierarchy and grouped into one collection per product version.
> - [llms.txt](https://docs.kentico.com/llms.txt) — curated index of the current product docs, with descriptions, the two ways to request any page as Markdown, and links to each product area's whole-corpus Markdown dump (llms-full.txt).

UI application pages are [UI pages](https://docs.kentico.com/documentation/developers-and-admins/customization/extend-the-administration-interface/ui-pages.md) that encapsulate a UI page hierarchy with specific functionality under an **application**.

Every application in the admin UI is contained within an application page that serves as the app's entry point and the root for its UI page subtree.

Application pages:

- must inherit from the [ApplicationPage base class](#create-ui-application-pages)
- be assigned to a [category](#ui-application-categories)
- be [registered](#register-ui-application-pages) using the `UIApplication` attribute
- have their [permissions defined](https://docs.kentico.com/documentation/developers-and-admins/customization/extend-the-administration-interface/ui-pages/ui-page-permission-checks.md)

## Create UI application pages

UI application pages must inherit from the `ApplicationPage` base class.

```csharp title="Create new UI application pages"
using Kentico.Xperience.Admin.Base;

public class CustomApplication : ApplicationPage
{
    // Unique identifier of the application
    public const string IDENTIFIER = "Acme.CustomApplication";
}
```

Application pages don't need to display any content or visuals. The `ApplicationPage` base class ensures all requests targeting the page get redirected to their first registered child page.

## UI application categories

Each application page must be assigned to an application category during registration. Moreover, the categories themselves need to be registered.

Register new categories via the `UIApplication` assembly attribute:

```csharp title="Registering a custom application category"
using Kentico.Xperience.Admin.Base;

[assembly: UICategory(
    codeName: "category.code.name",
    name: "Category name", 
    icon: Icons.Cogwheel, 
    order: 100)]
```

When registering new application pages, you can assign them to one of the predefined system categories – visible in the left-hand vertical menu in the admin UI – or create a custom category. Application pages are assigned to categories via the **category code name**.

### Predefined categories

The code names of default system categories are stored as constants in:

- Kentico.Xperience.Admin.Base.UIPages.BaseApplicationCategories
- Kentico.Xperience.Admin.DigitalMarketing.UIPages.DigitalMarketingApplicationCategories
- Kentico.Xperience.Admin.Content.UIPages.ContentApplicationCategories

## Register UI application pages

To register application pages into the system, use the `UIApplication` assembly attribute. Supply the following parameters:

- `identifier` – a unique identifier string for the application. Used in the data stored when assigning permission sets for the application to [roles](https://docs.kentico.com/documentation/developers-and-admins/configuration/users/role-management.md).
- `type` – the type implementing the page (inheriting from `ApplicationPage`).
- `slug` – the URL segment under which the application is available. Applications are always accessible directly under the admin UI's root: _/admin/_
- `name` – the name of the application page.
- `category` – the category to which the application is assigned.
- `icon` – the icon displayed for the application in the administration application menu and dashboard. Use icons from the set of icons starting with the _xp-_ prefix, referenced by the constants in the `Kentico.Xperience.Admin.Base.Icons` class.
- `templateName` – the name of the client template used by the page. Application pages **should** use the `SECTION_LAYOUT` [client template](https://docs.kentico.com/documentation/developers-and-admins/customization/extend-the-administration-interface/ui-pages/reference-ui-page-templates/side-navigation-ui-page-template.md) to display a navigation menu for their child pages.

```csharp title="UI application page registration"
using Kentico.Xperience.Admin.Base;  

[assembly: UIApplication(
    identifier: CustomApplication.IDENTIFIER, 
    type: typeof(CustomApplication), 
    slug: "my-application",
    name: "Custom admin UI app", 
    category: BaseApplicationCategories.DEVELOPMENT,
    icon: Icons.Cogwheel, 
    templateName: TemplateNames.SECTION_LAYOUT)]
```

## Assign permissions to UI application pages

To define the set of [UI permissions](https://docs.kentico.com/documentation/developers-and-admins/configuration/users/role-management.md) available to and evaluated by the given application, see [UI page permission checks](https://docs.kentico.com/documentation/developers-and-admins/customization/extend-the-administration-interface/ui-pages/ui-page-permission-checks.md).
