---
title: Creating page types
related:
  - https://docs.kentico.com/13/developing-websites/defining-website-content-structure/managing-page-types/creating-page-types-without-fields.md
  - https://docs.kentico.com/13/developing-websites/defining-website-content-structure/managing-page-types/limiting-the-pages-users-can-create.md
  - https://docs.kentico.com/13/developing-websites/retrieving-content/adding-preview-mode-support.md
  - https://docs.kentico.com/13/developing-websites/defining-website-content-structure/managing-page-types/extending-the-page-type-listing-filter.md
  - https://docs.kentico.com/13/custom-development/best-practices-for-customization.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).

This page describes how to create page types in the **Page types** application.

## Creating page types

1. Open the **Page types** application.
2. Click **New page type**.

The **New page type** wizard opens. Your choices throughout the wizard determine the functionality and purpose of the given pages. The resulting pages may represent actual pages available on the live site, only serve as data containers used by other pages, or simply provide folders for organizing and categorizing the website content tree.

### Step 1 – Names

1. Fill in the following values:
   - **Page type display name** – the system displays this name to users in the administration interface
   - **Namespace** – the namespace is a prefix that distinguishes between page types. For example, it can be used to separate page types created for different sites, identify page types imported as part of third-party modules, etc.
   - **Name** – a unique page type identifier, which is appended to the namespace.

     > **Note:** **Important**
     >
     > When creating page types, always use a  _**unique namespace**_.
     >
     > Never use the **cms**, **com**, **om** or **content** prefixes. A recommended option is to use your company name or an abbreviation as the prefix, for example: _ACME\_MyPageType_.
2. Click **Next**.

![Filling in the page type names](https://docs.kentico.com/docsassets/13/creating-page-types/Page_type_wizard_Step1.png "Filling in the page type names")

### Step 2 – Features

Select the features that you want to enable for the page type, depending on the intended purpose of the given pages:

- **Page builder** – allows editors to manage page content through a user-friendly interface. This page type feature is required to work with [configurable widgets](https://docs.kentico.com/13/managing-website-content/adding-page-content-using-widgets.md), and adjust the layout of pages by selecting [page templates](https://docs.kentico.com/13/managing-website-content/using-page-templates.md). The page builder feature must also be enabled in the code of the live site application (see [Page builder development](https://docs.kentico.com/13/developing-websites/page-builder-development.md)). Enabling this feature also enables the _URL_ feature – it is not possible to edit page builder pages without the page being accessible in some form.
- **URL** – allows pages to have URLs configurable depending on the selected [routing mode](https://docs.kentico.com/13/developing-websites/implementing-routing.md). This feature also controls the visibility of the [Alternative URLs](https://docs.kentico.com/13/developing-websites/implementing-routing/enabling-alternative-urls-for-pages.md) editing interface, if [enabled](https://docs.kentico.com/13/configuring-xperience/managing-sites/configuring-settings-for-sites/settings-urls-and-seo.md) for the site.
- **Metadata** – allows editors to enter metadata for pages. Metadata present details about the content of your pages, which can be used directly as part of your website (e.g. title) or when implementing search engine optimizations. The metadata include page title, description, and keywords. For more information, see [Editing metadata of pages](https://docs.kentico.com/13/managing-website-content/working-with-pages/editing-metadata-of-pages.md) and [Displaying page content](https://docs.kentico.com/13/developing-websites/retrieving-content/displaying-page-content.md).
- **Navigation item** – allows content editors to control which pages appear in the website's navigation menus. For more information, see [Building website navigation](https://docs.kentico.com/13/developing-websites/building-website-navigation.md).

All pages based on this page type will have the selected features.

**Note**: some features may not be available for editing if pages of the particular page type were already created in the content tree.

Click **Next**.

![Selecting features for a new page type](https://docs.kentico.com/docsassets/13/creating-page-types/Page_type_wizard_Step2.png "Selecting features for a new page type")

### Step 3 – Database information

1. Choose whether the page type will contain custom fields and have a dedicated database table.

   > **Info:** The remainder of this page describes page types with custom fields.
   >
   > To create a page type without custom fields, click the **Skip this step and continue without custom fields** link in the wizard footer. To learn more about such page types, switch to the [Creating page types without fields](https://docs.kentico.com/13/developing-websites/defining-website-content-structure/managing-page-types/creating-page-types-without-fields.md) page.
2. Enter a **Table name** for the database table that stores the data of the page type's fields.
3. Enter a **Primary key name** for the table.
4. (Optional) Select if you want the page to **Inherit fields from**  **page type** (reuse the field structure of an existing page type).
5. Click **Next**.

The system creates the database table.

![Filling in the database information for a page type](https://docs.kentico.com/docsassets/13/creating-page-types/Page_type_wizard_Step3.png "Filling in the database information for a page type")

### Step 4 – Fields

Now, you need to define the page type's data fields (columns of the table):

1. Click **New field**.
2. Define the custom field using the [field editor](https://docs.kentico.com/13/custom-development/extending-the-administration-interface/developing-form-controls/reference-field-editor.md).

   - You can use the field editor to create new page type fields, or to group the fields into [categories](https://docs.kentico.com/13/custom-development/extending-the-administration-interface/developing-form-controls/reference-field-editor.md#creating-new-categories).
3. Click **Save**.
4. Repeat the steps above for all required fields.
5. Click **Next** after you have prepared all necessary fields for the page type.

> **Note:** You can also make system page fields editable on the **Content** tab of the **Pages** application for pages of the given type. To do this, create a new field and select _**Page field**_ in the **Field type** drop-down list. You can then choose from the following two groups of system fields:
>
> - **Page fields** – general page fields that have separate values for each language version of the page.
> - **Node fields** – general page fields that are shared by the entire content tree node (all language versions of the page).
>
> Page or node system fields are then offered in the **Field name** drop-down list.

![Creating fields for the page type](https://docs.kentico.com/docsassets/13/creating-page-types/Page_type_wizard_Step4.png "Creating fields for the page type")

### Step 5 – Parent types

Select the parent page types under which pages of the new type will be allowed in the website content tree (when managing pages in the _Pages_ application).

1. Click **Add page types** and select specific  page types.
2. Click **OK**.
3. Click **Next**.

![Adding parent page types](https://docs.kentico.com/docsassets/13/creating-page-types/Page_type_wizard_Step5.png "Adding parent page types")

### Step 6

The wizard has finished the configuration of the new page type.

Click **Finish**. You have created a new page type.

> **Info:** **How content in page types is stored**
>
> The new page type  has its own database table for its specific fields. The overall data of pages is stored in three tables:
>
> - _CMS\_Tree_  (content tree structure)
> - _CMS\_Document_  (general page properties, metadata and page builder content defined on the _Page_ tab)
> - The dedicated page type table, e.g. _custom\_Article_ (the page type fields)
>
> For detailed information, see: [Page database structure](https://docs.kentico.com/13/custom-development/working-with-pages-in-the-api/page-database-structure.md)

### Step 7 - Generating page type wrapper classes

To simplify working with the page type when developing your website, [generate and include wrapper classes](https://docs.kentico.com/13/developing-websites/generating-classes-for-xperience-objects.md) for your page type into your live site project.

Since each page type can contain a different set of custom fields, the system cannot provide strongly-typed access to individual fields via a shared general class. For this reason, accessing custom fields can be unwieldy, often needing additional code to be written. The process requires developers to:

- specify database column names to manipulate data from particular fields, and
- manually perform value type conversion and validation on the data as it gets retrieved from and stored to the database.

To alleviate this issue, the system allows you to generate page type-specific classes. The class inherits from the **TreeNode** base class (representing page objects across the system) and extends it with properties that correspond to custom fields defined for the page type.

### Further configuration

After creating a new page type, you may want to continue with the following optional configuration:

- Configure the [properties](https://docs.kentico.com/13/developing-websites/defining-website-content-structure/managing-page-types/reference-page-type-properties.md) of the page type.
- Set a field as the source for the names of pages – pages can use the value of a specific field as their primary name (e.g. in the content tree):
  1. Edit the page type in the **Page types** application.
  2. Open the **Fields** tab.
  3. Select a field in the **Page name source field** selector below the list of fields. Only fields with the _Text_ **Data type** that are **Required** are available.
- [Limit the pages users can create](https://docs.kentico.com/13/developing-websites/defining-website-content-structure/managing-page-types/limiting-the-pages-users-can-create.md) – control where in the site's content tree users are allowed to create new pages.
- [Create alternative forms for the page type](https://docs.kentico.com/13/developing-websites/defining-website-content-structure/managing-page-types/creating-alternative-forms-for-page-types.md) – adjust the editing interface for pages of the given type.
- [Extend the page type's listing filter](https://docs.kentico.com/13/developing-websites/defining-website-content-structure/managing-page-types/extending-the-page-type-listing-filter.md) – editors use page listing to [perform multiple page (batch) operations](https://docs.kentico.com/13/managing-website-content/working-with-pages/multiple-page-operations.md) in the **Pages** application.
