---
schema_version: "1"
id: dc0537cc6e3be6203d9d796a4351f985d4c9dc051436bf03503ff3c41e476b2d
title: ManagedContentType
collection: legacydeveloper
version: current
locale: en-us
portal_url: https://docs.salesforce.com/legacydeveloper/current/en-us/api_meta/meta_managedcontenttype.md
canonical_url: https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_managedcontenttype.htm
source_site: developer.salesforce.com
content_type: documentation
content_hash: d58c3c42ee20ce5773c09ab3693459c1bb78b742e6411d511f0a1c4be84ada5a
description: Represents the definition of custom content types for use with Salesforce CMS. Custom content types are displayed as forms with defined fields.
---
# ManagedContentType

Represents the definition of custom content types for use with Salesforce CMS. Custom content types are displayed as forms with defined fields.

This type extends the [Metadata](https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/metadata.htm "The base class for all metadata types. You can’t edit this object. A component is an instance of a metadata type.") metadata type and inherits its fullName field.

![Important](https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/images/icon_note_important.png)

#### Important

Where possible, we changed noninclusive terms to align with our company value of Equality. We maintained certain terms to avoid any effect on customer implementations.

## File Suffix and Directory Location

ManagedContentType components have the suffix managedContentType and are stored in the managedContentTypes folder.

## Version

ManagedContentType components are available in API version 47.0 and later.

## Special Access Rules

ManagedContentType is only available if Salesforce CMS and digital experiences are enabled for your org.

## Fields

| Field Name | Field Type | Description |
| --- | --- | --- |
| description | string | Describes the custom content type defined in this ManagedContentType declaration. |
| developerName | string | Required. Unique name for the custom content type. For example: OurSpecialContent\_c |
| isMetadataContent | boolean | When true, any content created from this content type is converted to metadata. Default value is false. Availabe in API version 63.0 and later. |
| managedContentNodeTypes | [ManagedContentNodeType](#managedContentNodeType)\[\] | Nodes included as part of this custom content type. When rendered as a form in the Digital Experiences app, each node is represented as an individual field. |
| masterLabel | string | Required. Declares the name of the content type as it appears in the UI. |

## ManagedContentNodeType

Represents the structure of individual nodes within the custom content type.

<table class="featureTable sort_table" summary="">



          <thead class="thead sorted" align="left">
            <tr>
              <th class="featureTableHeader  " id="d649737e227">Field Name</th>

              <th class="featureTableHeader  " id="d649737e230">Field Type</th>

              <th class="featureTableHeader  " id="d649737e233">Description</th>

            </tr>

          </thead>

          <tbody class="tbody">
            <tr>
              <td class="entry" headers="d649737e227" data-title="Field Name"><span class="keyword parmname">helpText</span></td>

              <td class="entry" headers="d649737e230" data-title="Field Type">string</td>

              <td class="entry" headers="d649737e233" data-title="Description">Provides assistive text in the UI, displayed as an info bubble for the field.
                If this field is empty, no info bubble icon or text is displayed. <p class="p">For example:
                  &lt;IMG?&gt;</p>
              </td>

            </tr>

            <tr>
              <td class="entry" headers="d649737e227" data-title="Field Name"><span class="keyword parmname">isLocalizable</span></td>

              <td class="entry" headers="d649737e230" data-title="Field Type">boolean</td>

              <td class="entry" headers="d649737e233" data-title="Description">Declares a field as localizable and consumable by &lt;loc MDAPI reference&gt;
                (<samp class="codeph nolang">true</samp>) or not (<samp class="codeph nolang">false</samp>). Default is <samp class="codeph nolang">false</samp>.<div class="box message info">
                  <div class="inner">
                    <div class="bd">
                      <div class="media">
                        <img class="img mtm" src="https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/images/icon_note.png" alt="Note">
                        <div class="mediaBd">
                          <h4 class="mbs">Note</h4>
                          <p>NodeTypes <samp class="codeph nolang">IMG</samp>, <samp class="codeph nolang">URL</samp>, <samp class="codeph nolang">DATE</samp>, and
                            <samp class="codeph nolang">DATETIME</samp> can’t be localized.
                          </p>
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
              </td>

            </tr>

            <tr>
              <td class="entry" headers="d649737e227" data-title="Field Name"><span class="keyword parmname" id="isrequired"><a name="isrequired"><!-- --></a>isRequired</span></td>

              <td class="entry" headers="d649737e230" data-title="Field Type">boolean</td>

              <td class="entry" headers="d649737e233" data-title="Description">Declares a field as required (<samp class="codeph nolang">true</samp>) or not
                (<samp class="codeph nolang">false</samp>). Fields declared as required are
                indicated by a red asterisk. If a value isn’t added to the field in the custom
                content type, the form can’t be saved and a standard error is displayed. Default is
                <samp class="codeph nolang">false</samp>.<div class="box message info">
                  <div class="inner">
                    <div class="bd">
                      <div class="media">
                        <img class="img mtm" src="https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/images/icon_note.png" alt="Note">
                        <div class="mediaBd">
                          <h4 class="mbs">Note</h4>
                          <p>When <span class="keyword parmname"><a class="xref" href="#nodetype">nodeType</a></span> is set to
                            <samp class="codeph nolang">NAMEFIELD</samp> on a field,
                            <span class="keyword parmname">isRequired</span> must also be set to <samp class="codeph nolang">True</samp> for that field.
                          </p>
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
              </td>

            </tr>

            <tr>
              <td class="entry" headers="d649737e227" data-title="Field Name"><span class="keyword parmname">nodeLabel</span></td>

              <td class="entry" headers="d649737e230" data-title="Field Type">string</td>

              <td class="entry" headers="d649737e233" data-title="Description">Required. Declares the label for the field as it appears in the UI. <p class="p">In
                  enhanced workspaces, the system generates a Title field by default. To prevent
                  having multiple Title fields on the UI when you create a custom content type for
                  use in an enhanced workspace, don't use Title as the label for
                  <span class="keyword parmname">nodeLabel</span>.
                </p>
              </td>

            </tr>

            <tr>
              <td class="entry" headers="d649737e227" data-title="Field Name"><span class="keyword parmname">nodeName</span></td>

              <td class="entry" headers="d649737e230" data-title="Field Type">string</td>

              <td class="entry" headers="d649737e233" data-title="Description">Required. Unique name of the <span class="keyword parmname">nodeType</span> within the content
                type. <span class="keyword parmname">nodeName</span> is a simple text field that allows up to 100
                alphanumeric characters and underscores. The name must begin with a letter, not
                include spaces, can’t have two consecutive underscores, and can’t end with an
                underscore. <p class="p">In enhanced workspaces, the system generates a Title field by
                  default. To prevent having multiple Title fields on the UI when you create a
                  custom content type for use in an enhanced workspace, don't use Title as the label
                  for <span class="keyword parmname">nodeName</span>.</p>
              </td>

            </tr>

            <tr>
              <td class="entry" headers="d649737e227" data-title="Field Name"><span class="keyword parmname" id="nodetype"><a name="nodetype"><!-- --></a>nodeType</span></td>

              <td class="entry" headers="d649737e230" data-title="Field Type">MCNodeType (enumeration of type string)</td>

              <td class="entry" headers="d649737e233" data-title="Description">Required. Identifies the supported type of content in the node. Passed as a
                string. There’s a maximum of 15 node types per content type. Values are case
                insensitive but are returned in all capital letters as shown. Valid values are:<ul class="ul bulletList">
                  <li class="li">
                    <samp class="codeph nolang">TEXT</samp>
                    <p class="p">Simple text node (max length=255
                      characters)</p>
                  </li>

                  <li class="li">
                    <samp class="codeph nolang">MTEXT</samp>
                    <p class="p">Multi-line text node (max
                      length=2000 characters)</p>
                  </li>

                  <li class="li">
                    <samp class="codeph nolang">RTE</samp>
                    <p class="p">Rich text node (max length=65536
                      characters)</p>
                  </li>

                  <li class="li">
                    <samp class="codeph nolang">IMG</samp>
                    <p class="p">Image node</p>
                    <div class="box message info">
                      <div class="inner">
                        <div class="bd">
                          <div class="media">
                            <img class="img mtm" src="https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/images/icon_note.png" alt="Note">
                            <div class="mediaBd">
                              <h4 class="mbs">Note</h4>
                              <p><samp class="codeph nolang">IMG</samp> node types can’t be localized. Set
                                <span class="keyword parmname">isLocalizable</span> to false for images.
                              </p>
                            </div>
                          </div>
                        </div>
                      </div>
                    </div>
                  </li>

                  <li class="li">
                    <samp class="codeph nolang">URL</samp>
                    <div class="p">URL node (max length=255
                      characters)<div class="box message info">
                        <div class="inner">
                          <div class="bd">
                            <div class="media">
                              <img class="img mtm" src="https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/images/icon_note.png" alt="Note">
                              <div class="mediaBd">
                                <h4 class="mbs">Note</h4>
                                <p><samp class="codeph nolang">URL</samp> accepts protocol
                                  string values starting with http://, https://, mailto:, tel:, and
                                  /.</p>
                              </div>
                            </div>
                          </div>
                        </div>
                      </div>
                      <div class="box message info">
                        <div class="inner">
                          <div class="bd">
                            <div class="media">
                              <img class="img mtm" src="https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/images/icon_note.png" alt="Note">
                              <div class="mediaBd">
                                <h4 class="mbs">Note</h4>
                                <p><samp class="codeph nolang">URL</samp> node types can’t
                                  be localized. Set <span class="keyword parmname">isLocalizable</span> to false for
                                  URLs.</p>
                              </div>
                            </div>
                          </div>
                        </div>
                      </div>
                    </div>
                  </li>

                  <li class="li">
                    <samp class="codeph nolang">DATE</samp>
                    <p class="p">Date node </p>
                    <div class="p">
                      <div class="box message info">
                        <div class="inner">
                          <div class="bd">
                            <div class="media">
                              <img class="img mtm" src="https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/images/icon_note.png" alt="Note">
                              <div class="mediaBd">
                                <h4 class="mbs">Note</h4>
                                <p><samp class="codeph nolang">DATE</samp> accepts dates only in the
                                  format yyyy-MM-dd.</p>
                              </div>
                            </div>
                          </div>
                        </div>
                      </div>

                      <div class="box message info">
                        <div class="inner">
                          <div class="bd">
                            <div class="media">
                              <img class="img mtm" src="https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/images/icon_note.png" alt="Note">
                              <div class="mediaBd">
                                <h4 class="mbs">Note</h4>
                                <p><samp class="codeph nolang">DATE</samp> node types can’t be localized.
                                  Set <span class="keyword parmname">isLocalizable</span> to false for dates.</p>
                              </div>
                            </div>
                          </div>
                        </div>
                      </div>

                    </div>
                  </li>

                  <li class="li">
                    <samp class="codeph nolang">DATETIME</samp>
                    <p class="p">Datetime node
                    </p>
                    <div class="box message info">
                      <div class="inner">
                        <div class="bd">
                          <div class="media">
                            <img class="img mtm" src="https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/images/icon_note.png" alt="Note">
                            <div class="mediaBd">
                              <h4 class="mbs">Note</h4>
                              <p><samp class="codeph nolang">DATETIME</samp> accepts date and
                                time in the format: yyyy-MM-dd'T'HH:mm:ss.SSS'Z' (UTC datetime in ISO 8601
                                format).</p>
                            </div>
                          </div>
                        </div>
                      </div>
                    </div>
                    <div class="box message info">
                      <div class="inner">
                        <div class="bd">
                          <div class="media">
                            <img class="img mtm" src="https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/images/icon_note.png" alt="Note">
                            <div class="mediaBd">
                              <h4 class="mbs">Note</h4>
                              <p><samp class="codeph nolang">DATETIME</samp> node types
                                can’t be localized. Set <span class="keyword parmname">isLocalizable</span> to false for
                                datetime notes.</p>
                            </div>
                          </div>
                        </div>
                      </div>
                    </div>
                  </li>

                  <li class="li">
                    <samp class="codeph nolang">NAMEFIELD</samp>
                    <div class="box message info">
                      <div class="inner">
                        <div class="bd">
                          <div class="media">
                            <img class="img mtm" src="https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/images/icon_note.png" alt="Note">
                            <div class="mediaBd">
                              <h4 class="mbs">Note</h4>
                              <p><samp class="codeph nolang">NAMEFIELD</samp> declares the field as the name that
                                represents the content when referenced in the UI. For example, text entered in
                                this field displays as a list of available content in the Digital Experiences
                                app or as a piece of content available for inclusion in a collection in an
                                Experience Cloud site.
                              </p><p class="p">One, and only one, <span class="keyword parmname">nodeType</span> in
                                your managed content type must be declared as <samp class="codeph nolang">NAMEFIELD</samp>. <samp class="codeph nolang">NAMEFIELD</samp> is a
                                string of 200 characters or fewer.</p>
                              <p class="p">In enhanced workspaces, the system
                                generates a Title field by default. To prevent having multiple Title fields
                                on the UI when you create a custom content type for use in an enhanced
                                workspace, don't use Title as the label for <span class="keyword parmname">nodeName</span> or
                                <span class="keyword parmname">nodeLabel</span> for the <samp class="codeph nolang">NAMEFIELD</samp> node. If you've already named
                                <span class="keyword parmname">nodeName</span> Title, choose a different label for
                                <span class="keyword parmname">nodeLabel</span> to prevent confusion on the content
                                creation page.
                              </p>
                              <p class="p">When <samp class="codeph nolang">NAMEFIELD</samp> is
                                used, <span class="keyword parmname"><a class="xref" href="#isrequired">isRequired</a></span> must also be set to
                                <samp class="codeph nolang">true</samp> for the field.
                              </p>
                              <p></p>
                            </div>
                          </div>
                        </div>
                      </div>
                    </div>
                  </li>

                </ul>
              </td>

            </tr>

            <tr>
              <td class="entry" headers="d649737e227" data-title="Field Name"><span class="keyword parmname">placeholderText</span></td>

              <td class="entry" headers="d649737e230" data-title="Field Type">string</td>

              <td class="entry" headers="d649737e233" data-title="Description">Provides assistive text in the UI, displayed as placeholder, or ghost text, in
                a field before any entry is made. For example, <samp class="codeph nolang">Enter a
                  title for your article...</samp>
              </td>

            </tr>

          </tbody>

        </table>

## Declarative Metadata Sample Definition

The following is an example of a ManagedContentType component.

<?xml version="1.0" encoding="UTF-8"?>
<ManagedContentType xmlns="http://soap.sforce.com/2006/04/metadata">
  <developerName\>myContentType</developerName\>
	<masterLabel\>My Content Type</masterLabel\>
	<description\>This is the description for my content type</description\>
	<managedContentNodeTypes\>
		<nodeName\>title</nodeName\>
		<nodeLabel\>Content Title</nodeLabel\>
		<nodeType\>NAMEFIELD</nodeType\>
		<placeholderText\>Placeholder Text for title</placeholderText\>
		<helpText\>Help Text for title</helpText\>
		<isLocalizable\>true</isLocalizable\>
		<isRequired\>true</isRequired\>
	</managedContentNodeTypes\>
	<managedContentNodeTypes\>
		<nodeName\>textnode</nodeName\>
		<nodeLabel\>Content Text</nodeLabel\>
		<nodeType\>TEXT</nodeType\>
		<placeholderText\>Placeholder Text for Content Text</placeholderText\>
		<helpText\>Help Text for Content Text</helpText\>
		<isLocalizable\>true</isLocalizable\>
		<isRequired\>false</isRequired\>
	</managedContentNodeTypes\>
	<managedContentNodeTypes\>
		<nodeName\>richtextnode</nodeName\>
		<nodeLabel\>Content RichText</nodeLabel\>
		<nodeType\>RTE</nodeType\>

	</managedContentNodeTypes\>
	<managedContentNodeTypes\>
		<nodeName\>multilinetextnode</nodeName\>
		<nodeLabel\>Content MultilineText</nodeLabel\>
		<nodeType\>MTEXT</nodeType\>
	</managedContentNodeTypes\>
	<managedContentNodeTypes\>
		<nodeName\>imagenode</nodeName\>
		<nodeLabel\>Content Image</nodeLabel\>
		<nodeType\>IMG</nodeType\>

	</managedContentNodeTypes\>
</ManagedContentType\>

## Usage

For each custom content type you create, there must also be a CMS Content page created in any Experience Cloud site that displays the content. Each Content page serves as the detail page for all content of a single content type. See [Create Custom Pages with Experience Builder](https://help.salesforce.com/articleView?id=community_builder_create_page.htm&type=0&language=en_US).

## Wildcard Support in the Manifest File

This metadata type supports the wildcard character \* (asterisk) in the package.xml manifest file. For information about using the manifest file, see [Deploying and Retrieving Metadata with the Zip File](https://developer.salesforce.com/docs/atlas.en-us.264.0.api_meta.meta/api_meta/file_based_zip_file.htm).