---
title: Page builder development
related:
  - https://docs.kentico.com/13/managing-website-content/adding-page-content-using-widgets.md
  - https://docs.kentico.com/13/multilingual-websites/setting-up-a-multilingual-user-interface/localizing-builder-components.md
  - https://docs.kentico.com/13/on-line-marketing-features/configuring-and-customizing-your-on-line-marketing-features/content-personalization/developing-personalization-condition-types.md
  - https://docs.kentico.com/13/developing-websites/distributing-custom-builder-components.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).

The page builder provides a user-friendly interface where non-technical users can manage content using configurable widgets prepared by the developers. Users can also work with [page templates](https://docs.kentico.com/13/developing-websites/page-builder-development/developing-page-templates.md) to quickly create new pages based on predefined layouts.

The page builder should be used when you want to allow editors to create visually captivating pages and experiment with the design and layout. To learn more about scenarios suitable for the feature, see [Choosing the format of page content](https://docs.kentico.com/13/developing-websites/defining-website-content-structure/choosing-the-format-of-page-content.md).

![Page builder](https://docs.kentico.com/docsassets/13/page-builder-development/pageBuilder_home.png "Page builder")

To start using the page builder:

1. [Configure preview mode support on your site](https://docs.kentico.com/13/developing-websites/retrieving-content/adding-preview-mode-support.md)
2. [Enable the page builder](#enabling-the-page-builder)
3. [Create pages with editable areas](https://docs.kentico.com/13/developing-websites/page-builder-development/creating-pages-with-editable-areas.md)
4. [Implement and register widgets](https://docs.kentico.com/13/developing-websites/page-builder-development/developing-widgets.md)
5. [Implement and register sections (layouts for widgets)](https://docs.kentico.com/13/developing-websites/page-builder-development/developing-page-builder-sections.md)

## Page builder components

The page builder framework consists of several components, which fit together in the following hierarchy. Additionally, widget zones can contain any number of widgets.

![](https://docs.kentico.com/docsassets/13/page-builder-development/EditableAreas.png)

#### Editable areas

Editable areas are the top-level layout component and contain one or more sections. You can learn how to add editable areas to a view on the [Creating pages with editable areas](https://docs.kentico.com/13/developing-websites/page-builder-development/creating-pages-with-editable-areas.md) page.

#### Sections

Page sections specify the visual layout of widget zones. They represent reusable pieces of markup that can store an arbitrary number of widget zones – areas where content creators place widgets. Sections are fully customizable, and as a developer, you have absolute freedom in the way you set each section's layout. See [Developing page builder sections](https://docs.kentico.com/13/developing-websites/page-builder-development/developing-page-builder-sections.md) to learn how to implement and customize page sections.

#### Widget zones

Widget zones are components that allow content editors to insert widgets using the plus button. Widget zones are defined in the views of sections.

#### Widgets

Widgets are reusable components that can be easily manipulated by content editors and other non-technical users. Widgets give non-technical users more power and flexibility when adjusting page content, in addition to basic editing of text and images. By working with widgets, users can decide which components are placed on pages and where. You can learn more about widget development and customization on the [ Developing widgets ](https://docs.kentico.com/13/developing-websites/page-builder-development/developing-widgets.md)page. The default system widgets are listed on the [Reference - System widgets](https://docs.kentico.com/13/developing-websites/page-builder-development/reference-system-widgets.md) page.

Aside from editable regions, the page builder allows you to use page templates.

#### Page templates

Page templates allow content editors to gain greater control over the layout of pages, without the need to ask a developer to modify the code in the MVC project. With templates, it is easy to switch between page layouts, so they are suitable for creating pages with a predesigned or repeating structure, such as landing pages. You can learn more about page template development and customization on the [Developing page templates](https://docs.kentico.com/13/developing-websites/page-builder-development/developing-page-templates.md) page.

## Enabling the page builder

<!-- dev-model:mvc start -->

**MVC 5 development model.** Applies only when building with ASP.NET MVC 5. If this page also covers ASP.NET Core, that version is in its own block.

To use the page builder, you need to enable it as a feature in your MVC project.

1. Open your MVC project in Visual Studio.
2. Enable the page builder feature by calling the **UsePageBuilder** method of the _ApplicationBuilder_ instance.

   - Enable the feature at the start of your application's life cycle, for example in the **Application\_Start** method of your project's **Global.asax** file.

     > **Info:** MVC projects created by the [installer](https://docs.kentico.com/13/installation/installing-xperience.md) contain the _ApplicationConfig_ class, whose _RegisterFeatures_ method is called in the _Application\_Start_ method by default. You can use this class to encapsulate all of your _ApplicationBuilder_ code (enabling and configuring of Xperience MVC features).

     > **Note:** **Note**: The feature must be enabled **before** you register routes into the application's _RouteTable_. The _Kentico().MapRoutes()_ method adds required routes based on the set of enabled features.

     ```csharp

     using Kentico.Web.Mvc;
     using Kentico.Content.Web.Mvc;
     using Kentico.PageBuilder.Web.Mvc;

     ...

     protected void Application_Start()
     {
         ...

         // Gets the ApplicationBuilder instance
         // Allows you to enable and configure Xperience MVC features
         ApplicationBuilder builder = ApplicationBuilder.Current;

         // Enables the page builder feature
         builder.UsePageBuilder();

         ...
     }

     ```
3. (Optional) Edit the project's **Views\web.config** file and add the **Kentico.PageBuilder.Web.Mvc** namespace.

   - The namespace allows you to easily access page builder extension methods in the code of your views.
   - Alternatively, you can add _using_ statements for the namespace directly in the code of individual views.

     ```xml

     <system.web.webPages.razor>
       ...
       <pages pageBaseType="System.Web.Mvc.WebViewPage">
         <namespaces>
           ...
           <add namespace="Kentico.Web.Mvc"/>
           <add namespace="Kentico.PageBuilder.Web.Mvc"/>
       </namespaces>
       </pages>
     </system.web.webPages.razor>

     ```

The basic page builder feature is now enabled. You can prepare pages with [editable areas](https://docs.kentico.com/13/developing-websites/page-builder-development/creating-pages-with-editable-areas.md) in your MVC project and start developing [widgets](https://docs.kentico.com/13/developing-websites/page-builder-development/developing-widgets.md) and [sections](https://docs.kentico.com/13/developing-websites/page-builder-development/developing-page-builder-sections.md).

<!-- dev-model:mvc end -->

<!-- dev-model:core start -->

**ASP.NET Core development model.** Applies only when building with ASP.NET Core. If this page also covers MVC 5, that version is in its own block.

To use the page builder, you need to enable it as a feature in your Core project.

1. Open your ASP.NET Core project in Visual Studio.
2. Enable the page builder feature by performing the following call in your application's startup class.

   > **Note:** **Note**: The features must be enabled **before** you register routes into the application's routing table. The _Kentico().MapRoutes()_ method called within the _UseEndpoints_ method adds required routes based on the set of enabled features.

   ```csharp title="Application startup class"

   using Kentico.Web.Mvc;
   using Kentico.Content.Web.Mvc;
   using Kentico.PageBuilder.Web.Mvc;

   ...

   public void ConfigureServices(IServiceCollection services)
   {
       services.AddKentico(features => 
           // Enables the page builder feature
           features.UsePageBuilder();
       );
       services.AddControllersWithViews();
       ...
   }

   ```
3. (Optional) Edit the project's **Views\\\_ViewImports.cshtml** file (or a more specific file, depending on your requirements) and add a _using_ statement for the **Kentico.PageBuilder.Web.Mvc** namespace (together with any other frequently used namespaces).

   - The namespace allows you to easily access page builder extension methods in the code of your views.
   - Alternatively, you can add _using_ statements for the namespace directly in the code of individual views.

     ```csharp title="_ViewImports.cshtml"

     @using Kentico.Web.Mvc
     @using Kentico.PageBuilder.Web.Mvc

     ```
   - Some extension methods from the page builder API are also provided as ASP.NET Core Tag Helpers. See [Reference - Xperience Tag Helpers](https://docs.kentico.com/13/developing-websites/developing-xperience-applications-using-asp-net-core/reference-xperience-tag-helpers.md) for details. You can include Tag Helpers in your **\_ViewImports.cshtml** files using the _@addTagHelper_ directive (in the same manner as adding using statements). This makes the included Tag Helpers available within all views that fall under the corresponding _\_ViewImports.cshtml_ file in the hierarchy.

     ```xml title="_ViewImports.cshtml"

     @* Adds all Tag Helpers from the Kentico.Content.Web.Mvc assembly *@
     @addTagHelper *, Kentico.Content.Web.Mvc

     ```

The basic page builder feature is now enabled. You can prepare pages with [editable areas](https://docs.kentico.com/13/developing-websites/page-builder-development/creating-pages-with-editable-areas.md) in your Core project and start developing [widgets](https://docs.kentico.com/13/developing-websites/page-builder-development/developing-widgets.md) and [sections](https://docs.kentico.com/13/developing-websites/page-builder-development/developing-page-builder-sections.md).

<!-- dev-model:core end -->

## Page builder security

For more information about page builder security see [Content Security Policy](https://docs.kentico.com/13/securing-websites/developing-secure-websites/cross-site-scripting-xss.md#content-security-policy).
