---
title: Building blocks of content modeling
slug: cms-13/docs/building-blocks-of-content-modeling
docTags: 
createdAt: 2026-07-30T20:22:02.255Z
---

Content modeling defines how content is structured and reused across an application. Understanding the building blocks of content modeling helps create flexible, maintainable content types in Optimizely CMS.

Optimizely Content Management System (CMS) properties are the building blocks of CMS content types that make up an application's UI content.

When modeling content, consider the level of control you want to give the user, the freedom to adjust the layout and structure of the content, and the reusability of the content. Take the following approaches to model content.

- **Top-down** – Identify the main types of content first, such as blogs, product pages, forms, search, and galleries. Instead of specific pages on the application, think about the *types* of pages, then work down to the details one level at a time.
- **Bottom-up** – Start with the finer details, then group individual elements to form a larger content item. For example, think about the text in a call to action (CTA), the CTA object itself, the title text, and the body text. Then group the elements as a promotion box or a card.
- **Hybrid** – Balance high-level thinking and granular detail design, providing flexibility to ensure complete coverage.

:::hint{type="info"}
**Note**
See [an interactive demo](https://optimizely.navattic.com/cms-content-modeling) on how to approach content modeling in CMS and Visual Builder.
:::

CMS uses the following types of properties:

- **Built-in properties** – Set by the system and are available for pages and blocks regardless of type. See the following topics for property details:
  - Basic data types
    - [Block property](docId\:XPvIHpx0Cq1M_C-pYzO14)
    - [Choice property](docId\:OgvaAIbvaC6ggDwObgule)
    - [Content property](docId\:I1euZn_eJx1_36N71t-Mg)
    - [DateTime property](docId:89aHdpHtRCwsjfp7d_mNT)
    - [Link property](docId:_7L7eHhdjJhIin7wHYLAN)
    - [Number property](docId\:iij4ppaMYaaIJJ_jDnjT6)
    - [Text property](docId:_BpOP9J3VbIv7npnWKSVr)
  - Utility
    - [Blob property](docId:2LkY6gfoEERidJWj6fwZS)
    - [Guid property](docId\:sUKIKT8G-Qs05xHSQq2Oo)
    - [JsonString property](docId:-qiKAMSiqsnl9s_kacyYk)
    - [OptiAlloy property](docId\:Efk5asCjLBkn6VtkuryS0)
- **User-defined properties** – Added to the page, block, and experience type definitions (in code or from the admin view). See:
  - [Create pages and blocks](docId\:mCe5BRXNDt6oaLHw5x7KX)
  - [Create Visual Builder content from scratch](docId\:M1WuWpTYrtfmM7nWe-hW2)
  - [Create Visual builder content from a blueprint](docId\:N2mIVb3NiqhcVROXZvo6C).

## Property types

The following diagram shows the properties with their property types.

![properties with their property types](https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/MfdBbm2SbyBF_YN3z2LTI-20260722-195705.png)

Each property group has several property types to build named pieces of content for content types.

For example, the **Number** property has two types:

![Number property has two types](https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/ulvxYcDyLwZXR-oRljJ0k-20260722-195705.png)

- **Integer** – Create an *Age* or *Street number* field.

![](https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/uxBVpL3n6OCf1GzMKpans_33308a9cfdd98da13c62c5aee2b49bda2b83347b0a8f8cfee17cc6b6119df203-image.png)

- **Floating point number** – Create a *Dollar amount* or *Interest rate* field.

![](https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/JGocOzesQZBzuMhNgvYAp_5050074fb6d2b35ddd9e949013ef5fcec769404aec43488750a60f426e108e9f-image.png)

Define the property type building blocks that suit your organization and application. Different content types reuse a field, such as *Age* or *Dollar amount*; you do not need to define it repeatedly.

## Content types

A content type is a collection of properties for a specific use, such as a **Call to action** content type that has two named properties.

### Build an editorial content type

The following diagram shows the **Call To Action** content type, which contains a **Home URL** field and a **Button Name** field. The **Home URL** field is a link of the **URL to page/external address** type. The **Button Name** field is a **Simple text box** field with a **String** less than or equal to 255 characters.

![Call To Action element content type](https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/JLEXhlxaeXLvrfMemLIH4-20260722-195705.png)

The following image shows the **Call To Action** content type added to an experience in Visual Builder. For the content type to appear in the Visual Builder composition, set the correct composition behavior.

![](https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/bhl37643XAMC7wpDssIte_331c95e351c02393ff8780c44430d947499e79e3c278de185628227b24e44a1f-image.png)

### Build a block content type

Content types support many properties. For example, an **Office Location** content type with eight simple text box strings with different names.

![Build a block content type](https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/hugEEzNTnLUgn_Y2j-oF_-20260722-195705.png)

The following block, called **Global HQ**, uses the **Office Location** content type. Red asterisks (\*) indicate that the field is required.

![](https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/uq4RaIlXtbU2OmS39ctuT_d6f519687527e80e2edebb2b33288b250f2c20149415d20a79e1183e36a2f6e8-image.png)

The following image shows **Global HQ** on a page.

![](https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/vKAI4C3i19wagq70LFFDC_530d658d9742903923d2e8bf4cb2a985cb6ab4a0b53da28bec69acc2ee2cc22d-image.png)

### Configure composition behavior

Set the composition behavior for a block content type to make it available when designing Experience content in the Visual Builder. Find the composition behavior under **Settings** for the block type.

![Composition behavior settings](https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/yz7of_nMiRjtmlnsbBaTR-20260722-195705.png)

The available composition behaviors are:

- **Section** – The block type is available to use in the Experience outline
- **Element** – The block type is available to use in the Section grid

### Build a page content type

The following image combines a simple **Text** property (called *Office Name*), a **Content Area** (called *Office Image*), a **Block** with eight properties (called *Office Location*), and a **Text** property with extended rich-text editing features (called *Description*) to create a page content type (called *Corporate Office*).

![Corporate Office page content type diagram](https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/tTpb0W8hgD3KxtAyKbs6o-20260722-195705.png)

These content types are combined to create a page content type called *Corporate Office*.

![](https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/ktVH6h7BYRCyosNRP3vXD_0ad441ada70c1bc1cc5f0611969f760ba5d98920235d4e0fc96a360b311c896d-image.png)

After you create it, *Corporate Office* shows in the **Content Types** list as a **Page** content type.

![](https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/OVpJhWYukvP9wFdYaCXnb_2824dbdce16dbcf2f81920b78eb0a215258c5226ddd91efb0617a20f0e69d01e-image.png)

When you create a new page, *Corporate Office* displays in the **Page Types** list.

![](https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/S1wGsTDP93uO5KJj8KsZw_8cf1c0f388a20625e1da4b2ede3032a28205df65a5e69e31d41a4c1b7cdc2e88-image.png)

Select it and fill in the required fields.

![](https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/P_XHI5rrMeJV4XT3tM8vn_69e2b184e943dedd79d2bd7eafb963ef9a5a3fe394d63ff7ec28e12ff5ed56b6-image.png)

## Configure blank experience

An experience type is an extension of the page type, enhanced for use with Visual Builder.

Go to **Settings** > **Content Types** and select **Create New** > **Experience type**.

![](https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/wae8g5HZ6RsUU0AHNpytR_7899f37b2ef786f8173249e579566a90d0f08103f951abc50c295d3ecc7d6f2c-image.png)

### Build an experience content type

An experience is a built-in definition of **Experience** content type managed from code, so you cannot adjust the **Settings**, but you can modify **Permissions** and add properties to the **All Properties** view of the experience.

The following images illustrate a **Blank experience** experience content type with added **SEO settings** content type to the **All Properties** view, made from a **Block** property of the **Page SEO Settings** property type.

![Build an experience content type](https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/0CvUVX5X_3-DUNrz6xA4Z-20260722-195706.png)

![](https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/oMafY_DmNUhvDZ8kN9bt__d7e28f1e1c9694cf1f77c9924144202649417073faf714422eecd7d4fdf4ed38-image.png)

The **SEO Settings** tab displays in the **All Properties** view with the **Block** type.

![](https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/Pqt-eFE7PJIs5tJKgQpn7_2da06ccbedca21e227cb3fa5b1367700252257e635e7fd7f7f0635275693b93a-image.png)

### Build a media content type

Media can have the following types:

- **Image** – jpg, png, webp, svg
- **Video** – mp4, avi, mov, wmv, webm
- **Other media** – pdf, doc, mp3, zip, iso

Go to **Settings** > **Content Types** and select **Create New** > **Media type**.

![](https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/KPeU16324K_YT1tF1F2Js_c3053c69d77f11e0ff116c855ee25bcd9dabbaee114d9c81740b63ad76f31f92-image.png)

The following images illustrate a **Media** content type, with a **Hero image** named media content type, made of a **Text** property for *Alt* text and a **DateTime** property for *Copyright*.

![media content type with hero image illustration](https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/1wAvGNb7Xq9-DU-QqTOmf-20260722-195705.png)

![](https://api.archbee.com/api/optimize/BrbvVORKJ5iIeSMZye5kI/44YhMdYKIJXOisMOJBYkU_466552fb3dd7eac3371d169c0a9402a46ba859803caa24657a5591930e9a0867-image.png)
