---
schema_version: "1"
id: ecae62e993eb957f92706ae1efbec06772f71ae8e00808953887700ce99923ed
title: ExperienceBundle
collection: legacydeveloper
version: current
locale: en-us
portal_url: https://docs.salesforce.com/legacydeveloper/current/en-us/api_meta/meta_experiencebundle.md
canonical_url: https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_experiencebundle.htm
source_site: developer.salesforce.com
content_type: documentation
content_hash: 1afee61b31256950a8449ef5b8b6e9c8bf13bf34b1dcefbe617a546ea8379892
description: Represents a text-based code structure of the settings and site components, such as pages, branding sets, and themes that make up an Experience Builder site. Developers can quickly update and deploy Experience Builder sites programmatically using their preferred development tools. This type extends the Metadata metadata type and inherits its fullName field.
---
# ExperienceBundle

Represents a text-based code structure of the settings and site components, such as pages, branding sets, and themes that make up an Experience Builder site. Developers can quickly update and deploy Experience Builder sites _programmatically_ using their preferred development tools. This type extends the Metadata metadata type and inherits its fullName field.

## File Suffix and Directory Location

ExperienceBundle components have the suffix .json and are stored in the experiences folder when retrieved. Each Experience Builder site in your org has its own folder. Each of these folders contains [other folders for the supported properties](#experience_bundle_folders_section).

The ExperienceBundle can contain one or more site definitions under the experiences folder. Each site definition has resource folders for [brandingSets](#brandingSets_folder), [config](#config_folder), [routes](#routes_folder), [themes](#themes_folder), [variations](#variations_folder), and [views](#views_folder), each with additional, related configuration information in JSON files. Here’s an example site definition, showing the resource folders.

![Three-level folder structure](https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/dev_guides/communities_dev/images/migrate_experiencebundle_structure.png)

## Version

ExperienceBundle components are available in API version 46.0 and later.

## Special Access Rules

To use the ExperienceBundle metadata type for Aura-based Experience Builder sites, from Setup, enter Digital Experiences in the Quick Find box, and then select **Settings**. Select **Enable ExperienceBundle Metadata API**, and save your changes. LWR sites use ExperienceBundle by default.

## Fields

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



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

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

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

            </tr>

          </thead>

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

              <td class="entry" headers="d444970e149" data-title="Field Type">
                <a class="xref" href="#ExperienceResources">ExperienceResources</a>[]
              </td>

              <td class="entry" headers="d444970e152" data-title="Description">The list of resources in this ExperienceBundle. Each resource represents an
                artifact of a site such as <a class="xref" href="#brandingSets_folder">brandingSets</a>, <a class="xref" href="#config_folder">config</a>,
                <a class="xref" href="#routes_folder">routes</a>, <a class="xref" href="#themes_folder">themes</a>, <a class="xref" href="#variations_folder">variations</a>, and <a class="xref" href="#views_folder">views</a>.
              </td>

            </tr>

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

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

              <td class="entry" headers="d444970e152" data-title="Description">Required. Represents the name of the ExperienceBundle.</td>

            </tr>

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

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

              <td class="entry" headers="d444970e152" data-title="Description">Required. <span class="ph" id="site_type_field_desc"><a name="site_type_field_desc"><!-- --></a>Identifies the kind of site. Only
                  Experience Builder sites are supported, using the value <samp class="codeph javascript">ChatterNetworkPicasso</samp>.</span>
              </td>

            </tr>

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

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

              <td class="entry" headers="d444970e152" data-title="Description">Specify a URL prefix for an Experience Builder site. For example, in the site
                URL SitesSubdomainName.force.com/customers, customers is the UrlPathPrefix.<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>
                            For authenticated LWR sites created before Winter ’23 and Aura sites, the URL path
                            prefix ends in /s, and the part of the path without the /s must match the Network
                            metadata type’s URL. For unauthenticated LWR sites and authenticated LWR sites
                            created after Winter ’23 through Experience Builder or Connect API, this path
                            doesn’t contain /s, and the path can be anything as long as there’s no
                            conflict.</p>
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
                <strong class="ph b">Sample meta.xml
                  file</strong>
                <div class="codeSection">
                  <pre class="codeblock ">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;ExperienceBundle xmlns="http://soap.sforce.com/2006/04/metadata"&gt;
    &lt;label&gt;SampleStarterSite2&lt;/label&gt;
    &lt;type&gt;ChatterNetworkPicasso&lt;/type&gt;
    &lt;urlPathPrefix&gt;SampleStarterSite2/s&lt;/urlPathPrefix&gt;
&lt;/ExperienceBundle&gt;</pre>
                </div>
              </td>

            </tr>

          </tbody>

        </table>

## ExperienceResources

Represents a list of sites in the bundle.

| Field Name | Field Type | Description |
| --- | --- | --- |
| experienceResource | [ExperienceResource\[\]](#ExperienceResource) | The list of resources in this ExperienceBundle. Each resource represents a property for the site, such as [brandingSets](#brandingSets_folder), [config](#config_folder), [routes](#routes_folder), [themes](#themes_folder), and [views](#views_folder). |

## ExperienceResource

Represents specific site information included in the ExperienceBundle.

Each type has a folder in the structure. Each folder contains one or more files providing information about that type and the site. Each corresponds to a specific folder and file in the ExperienceBundle.

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



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

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

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

            </tr>

          </thead>

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

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

              <td class="entry" headers="d444970e361" data-title="Description">Required. Name of resource file.</td>

            </tr>

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

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

              <td class="entry" headers="d444970e361" data-title="Description">Required. Only <samp class="codeph javascript">JSON</samp> is
                allowed.</td>

            </tr>

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

              <td class="entry" headers="d444970e358" data-title="Field Type">base64</td>

              <td class="entry" headers="d444970e361" data-title="Description">The <samp class="codeph javascript">JSON</samp> content of each file.</td>

            </tr>

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

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

              <td class="entry" headers="d444970e361" data-title="Description">Required. The type of the resource. Valid values are:<ul class="ul bulletList">
                  <li class="li"><samp class="codeph nolang">brandingSets</samp></li>

                  <li class="li"><samp class="codeph javascript">config</samp></li>

                  <li class="li"><samp class="codeph javascript">routes</samp></li>

                  <li class="li"><samp class="codeph javascript">themes</samp></li>

                  <li class="li"><samp class="codeph javascript">views</samp></li>

                </ul>
              </td>

            </tr>

          </tbody>

        </table>

## Folders and Bundled Definitions

Each ExperienceBundle includes folders and associated data that is contained in JSON files.

## brandingSets Folder

This folder contains one JSON file per branding set, named brandingSets\_name.json. Each file has the same structure and properties.

**<brandingSets\_name>.json**

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



          <thead class="thead sorted" align="left">
            <tr>
              <th class="featureTableHeader  " id="d444970e495">Property</th>

              <th class="featureTableHeader  " id="d444970e498">Type</th>

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

            </tr>

          </thead>

          <tbody class="tbody">
            <tr>
              <td class="entry" headers="d444970e495" data-title="Property"><span class="keyword parmname">brandingSetType</span></td>

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

              <td class="entry" headers="d444970e501" data-title="Description">Required in LWR sites. Not applicable for Aura sites. Represents whether the
                color palette stored in the branding set is for the entire site or a specific
                section. You can’t change one branding set type to another. Available in API Version
                52.0 and later.<div class="p">Valid values are:<ul class="ul bulletList">
                    <li class="li">
                      <samp class="codeph nolang">APP</samp>: The branding set applies to the
                      entire site. There can be only one branding set of this type.
                    </li>

                    <li class="li">
                      <samp class="codeph nolang">SCOPED</samp>: The branding set applies to a
                      specific section.
                    </li>

                  </ul>
                </div>
              </td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e495" data-title="Property"><span class="keyword parmname">definitionName</span></td>

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

              <td class="entry" headers="d444970e501" data-title="Description">Required. Represents the name for the branding set that is used in grouping
                branding sets under a theme. Defined as
                <var class="keyword varname">theme</var>:branding-<var class="keyword varname">theme</var>. <p class="p">For example, if the
                  site theme is Stella, the <span class="keyword parmname">definitionName</span> would be <samp class="codeph javascript">stella:branding-stella</samp>.</p>
                <div class="p">In addition,
                  there are several standard templates that have unique naming:<ul class="ul bulletList">
                    <li class="li">Customer Account Portal uses <samp class="codeph javascript">cpt:branding-cpt</samp>
                    </li>

                    <li class="li">Customer Service uses <samp class="codeph javascript">service:branding-service</samp>
                    </li>

                    <li class="li">Help Center uses <samp class="codeph javascript">helpCenter:branding-helpCenter</samp>
                    </li>

                    <li class="li">Partner Central uses <samp class="codeph javascript">prm:branding-prm</samp>
                    </li>

                    <li class="li">Build Your Own uses <samp class="codeph javascript">starter:branding-starter</samp>
                    </li>

                  </ul>
                </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>The combination of <span class="keyword parmname">definitionName</span> +
                            <span class="keyword parmname">label</span> must be unique in your org.
                          </p>
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
              </td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e495" data-title="Property"><span class="keyword parmname">id</span></td>

              <td class="entry" headers="d444970e498" data-title="Type">UUID</td>

              <td class="entry" headers="d444970e501" data-title="Description">Represents the component’s GUID.</td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e495" data-title="Property"><span class="keyword parmname">label</span></td>

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

              <td class="entry" headers="d444970e501" data-title="Description">Represents the name of the branding set.<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>The combination of
                            <span class="keyword parmname">definitionName</span> + <span class="keyword parmname">label</span> must be unique
                            in your org.
                          </p>
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
              </td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e495" data-title="Property"><span class="keyword parmname">type</span></td>

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

              <td class="entry" headers="d444970e501" data-title="Description">Represents the component type. The only supported value is <samp class="codeph nolang">brandingSet</samp>.</td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e495" data-title="Property"><span class="keyword parmname">values</span></td>

              <td class="entry" headers="d444970e498" data-title="Type">map</td>

              <td class="entry" headers="d444970e501" data-title="Description">Required. Represents a map of branding values that can be applied to a
                site.</td>

            </tr>

          </tbody>

        </table>

{
  "values" : {
    "HeaderBackgroundColor" : "#FFFFFF",
    "TextTransformStyle" : "none",
    "BorderColor" : "#D4D4D4",
    "DetailTextColor" : "#5A5A5A",
    "HeaderFonts" : "Ek Mukta",
    "CardBackgroundColor" : "rgba(255, 255, 255, 0)",
    "LoginBackgroundColor" : "#F4F4F4",
    "\_ActionColorTrans" : "rgba(25, 124, 190, 0.9)",
    "LoginBackgroundImage" : "../../../../sfsites/picasso/core/external/salesforceIdentity/images/background.jpg?v=1",
    "PageBackgroundColor" : "#F5F7FA",
    "\_HeaderTextColor" : "rgba(34,34,34,.8)",
    "\_NavigationMenuHoverColor" : "rgba(255,255,255,.2)",
    "\_HeaderInputBackgroundColor" : "rgba(255,255,255,.4)",
    "TextColor" : "#222222",
    "NavigationMenuTextColor" : "#222222",
    "\_HeaderPlaceholderTextColor" : "rgba(85,85,85,.8)",
    "\_OverlayTextColorShadow" : "#000000",
    "ActionColor" : "#0099DE",
    "CompanyLogo" : "",
    "\_LinkColorDarker" : "#135F90",
    "\_ActionColorDarker" : "#135F90",
    "\_HoverColor" : "rgba(25, 124, 190, 0.05)",
    "ErrorFontColor" : "#ff9e9e",
    "OverlayTextColor" : "#FFFFFF",
    "PrimaryFont" : "Ek Mukta",
    "LinkColor" : "#3558D6"
    },
  "definitionName" : "cpt:branding-cpt",
  "label" : "Customer Account Portal",
  "id" : "283407c3-5938-4a6b-b97f-621cda6968c8",
  "type" : "brandingSet"
 }

## config Folder

The config folder contains several JSON files.

- sitename.json
- languages.json
- nativeConfig.json
- page\_name.json
    
    ![Note](https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/images/icon_note.png)
    
    #### Note
    
    One for each single-page application in the site: loginAppPage.json and mainAppPage.json

**sitename.json File Properties**

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



          <thead class="thead sorted" align="left">
            <tr>
              <th class="featureTableHeader  " id="d444970e732">Property</th>

              <th class="featureTableHeader  " id="d444970e735">Type</th>

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

            </tr>

          </thead>

          <tbody class="tbody">
            <tr>
              <td class="entry" headers="d444970e732" data-title="Property"><span class="keyword parmname">authenticationType</span></td>

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

              <td class="entry" headers="d444970e738" data-title="Description">For LWR sites, indicates whether guest users have access to the site.<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>For
                            Aura sites, use <span class="keyword parmname">isAvailableToGuests</span> instead.</p>
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
                <div class="p">Valid
                  values are:<ul class="ul bulletList">
                    <li class="li">
                      <samp class="codeph nolang">AUTHENTICATED</samp>: The site isn’t public.
                      Only authenticated users can access the site after logging in.
                    </li>

                    <li class="li">
                      <samp class="codeph nolang">AUTHENTICATED_WITH_PUBLIC_ACCESS_ENABLED</samp>: The site is an
                      authenticated site, but the <strong class="ph uicontrol">Public can access the site</strong>
                      checkbox is enabled in Experience Builder in <span class="ph menucascade"><strong class="ph uicontrol">Settings</strong> | <strong class="ph uicontrol">General</strong></span>. Guest users can access the site.
                    </li>

                    <li class="li">
                      <samp class="codeph nolang">UNAUTHENTICATED</samp>: The unauthenticated
                      site is publicly available to anyone on the web, and doesn’t support login or
                      authentication. Guest users can access the site. <samp class="codeph nolang">UNAUTHENTICATED</samp> isn’t supported for LWR sites created after Winter
                      ’23 through Experience Builder or Connect API. To allow guest user access, we
                      recommend using <samp class="codeph nolang">AUTHENTICATED_WITH_PUBLIC_ACCESS_ENABLED</samp>.
                    </li>

                  </ul>
                </div>
                <p class="p">Available in API version 51.0 and later.</p>
              </td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e732" data-title="Property"><span class="keyword parmname">forgotPasswordRouteId</span></td>

              <td class="entry" headers="d444970e735" data-title="Type">UUID</td>

              <td class="entry" headers="d444970e738" data-title="Description">Represents the ID of the route to use when a user forgets their password.<div class="box message info" id="nonlogin_template_note">
                  <a name="nonlogin_template_note"><!-- --></a>
                  <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>Unsupported if the active Experience Builder template
                            for the site doesn't support login (such as Help Center).</p>
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
              </td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e732" data-title="Property"><span class="keyword parmname">isAvailableToGuests</span></td>

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

              <td class="entry" headers="d444970e738" data-title="Description">For Aura sites, indicates whether public users have access to the site (<samp class="codeph nolang">true</samp>) or not (<samp class="codeph nolang">false</samp>). The default value is <samp class="codeph javascript">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> For LWR sites, use <span class="keyword parmname">authenticationType</span>
                            instead.</p>
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
              </td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e732" data-title="Property"><span class="keyword parmname">isFilteredComponentsView</span></td>

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

              <td class="entry" headers="d444970e738" data-title="Description">Indicates whether the list of components is filtered based on the current page
                type (<samp class="codeph nolang">true</samp>) or not (<samp class="codeph nolang">false</samp>). Some components require specific parameters from the page and
                don't work unless you manually configure them. The default value is <samp class="codeph javascript">false</samp>.</td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e732" data-title="Property"><span class="keyword parmname">isLockerServiceEnabled</span></td>

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

              <td class="entry" headers="d444970e738" data-title="Description">Indicates whether Lightning Locker is enabled (<samp class="codeph nolang">true</samp>) or disabled (<samp class="codeph nolang">false</samp>). The
                default value is <samp class="codeph javascript">true</samp>.<p class="p"> Available in API
                  version 55.0 and later.</p>
              </td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e732" data-title="Property"><span class="keyword parmname">isProgressiveRenderingEnabled</span></td>

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

              <td class="entry" headers="d444970e738" data-title="Description">Indicates whether the display order of page components is prioritized (<samp class="codeph nolang">true</samp>) or not (<samp class="codeph nolang">false</samp>). The default value is <samp class="codeph javascript">false</samp>.</td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e732" data-title="Property"><span class="keyword parmname">loginAppPageId</span></td>

              <td class="entry" headers="d444970e735" data-title="Type">UUID</td>

              <td class="entry" headers="d444970e738" data-title="Description">Represents the ID of the login page. Unsupported if the active Experience
                Builder template for the site doesn't support login (such as Help Center).</td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e732" data-title="Property"><span class="keyword parmname">mainAppPageId</span></td>

              <td class="entry" headers="d444970e735" data-title="Type">UUID</td>

              <td class="entry" headers="d444970e738" data-title="Description">Required. Represents the ID of the main page.</td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e732" data-title="Property"><span class="keyword parmname">preferredDomain</span></td>

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

              <td class="entry" headers="d444970e738" data-title="Description">Represents the name of the domain to use for indexing a site’s pages. Improves
                search engine results.<p class="p">Available in API version 48.0 and later.</p>
              </td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e732" data-title="Property"><span class="keyword parmname">preferredDomainId</span></td>

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

              <td class="entry" headers="d444970e738" data-title="Description">Represents the domain to use for indexing a site’s pages. Improves search
                engine results.<p class="p">Removed in API version 48.0. Use
                  <span class="keyword parmname">preferredDomain</span> instead.
                </p>
              </td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e732" data-title="Property"><span class="keyword parmname">selfRegistrationRouteId</span></td>

              <td class="entry" headers="d444970e735" data-title="Type">UUID</td>

              <td class="entry" headers="d444970e738" data-title="Description">Represents the ID of the login route to use for self-registration. Unsupported
                if the active Experience Builder template for the site doesn't support login (such
                as Help Center).</td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e732" data-title="Property"><span class="keyword parmname">type</span></td>

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

              <td class="entry" headers="d444970e738" data-title="Description">Represents the component type. The only supported value is <samp class="codeph javascript">site</samp>.</td>

            </tr>

          </tbody>

        </table>

**trustedSitesForScript container**

When implemented, there’s one trustedSitesForScript container in sitename.json.

| Property | Type | Description |
| --- | --- | --- |
| id | UUID | Represents the component's GUID. |
| isActive | boolean | Indicates if allowlisted item is active (true) and must be respected or inactive (false) and must not be treated as an allowlisted source. Default is false. |
| trustedSiteName | string | Name of the allowlisted source as it appears in the UI. |
| trustedSiteUrl | string | The fully qualified URL of the allowlisted source. |
| type | string | Represents the component type. The only supported value is trustedSitesForScripts. |

{
   "isAvailableToGuests" : false,
   "isFilteredComponentsView" : false,
   "mainAppPageId" : "df9907cb-6e68-4ca1-8bb2-51173ca5374e",
   "loginAppPageId" : "58e9939a-84b2-498d-bbc5-7a89d89087fa",
   "selfRegistrationRouteId" : "ad5c8bf1-297f-4ad3-b47c-0e35d85f10ef",
   "forgotPasswordRouteId" : "e3139f6f-44d8-4eec-be9d-3609ce063039",
   "isProgressiveRenderingEnabled" : false,
   "preferredDomain" : "none",
   "selfRegistrationRouteId" : "b8fe8ab1-f266-41e1-a63b-4791165f3c1d",
   "trustedSitesForScript" : \[ {
     "id" : "92c489e2-0b7b-4a48-9c88-bef7e8fe6f1b",
     "isActive" : true,
     "trustedSiteName" : "test",
     "trustedSiteUrl" : "https://123.com",
     "type" : "trustedSitesForScripts"
   }, {
     "id" : "92c489e2-0b7b-4a48-9c88-bef7e8fe6f1c",
     "isActive" : true,
     "trustedSiteName" : "test1",
     "trustedSiteUrl" : "https://1234.com",
     "type" : "trustedSitesForScripts"
  } \],
    "type" : "site"
}

**languages.json File Properties**

| Property | Type | Description |
| --- | --- | --- |
| defaultCode | string | Required. Represents the base language code plus the country code where used. |
| defaultLabel | string | Required. Defines the display label for the language. |
| id | UUID | Represents the component's GUID. |
| type | string | Represents the component type. The only supported value is languageContainer. |

There’s one section per supported language as a container in languages.json

**language container**

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



          <thead class="thead sorted" align="left">
            <tr>
              <th class="featureTableHeader  " id="d444970e1245">Property</th>

              <th class="featureTableHeader  " id="d444970e1248">Type</th>

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

            </tr>

          </thead>

          <tbody class="tbody">
            <tr>
              <td class="entry" headers="d444970e1245" data-title="Property"><span class="keyword parmname">countryCode</span></td>

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

              <td class="entry" headers="d444970e1251" data-title="Description">Represents the country code of the selected language. This string can be empty.
                It applies only when the selected language has variations depending on the country,
                like Arabic (Algeria) and Arabic (Bahrain). In this case, use <samp class="codeph javascript">countryCode</samp> to distinguish between them. <p class="p">For
                  example:<samp class="codeph javascript">{ languageCode<span class="string">" : "</span>ar<span class="string">", "</span>CountryCode<span class="string">" :
                    </span> <span class="string">"DZ"</span>, <span class="string">"Label"</span> : <span class="string">"Arabic (Algeria) (DZ)"</span>,}, { <span class="string">"Code"</span> : <span class="string">"ar"</span>, <span class="string">"CountryCode"</span> :
                    <span class="string">"BH"</span>, <span class="string">"Label"</span> : <span class="string">"Arabic (Bahrain) (BH)"</span>,}</samp></p>
              </td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e1245" data-title="Property"><span class="keyword parmname">fallbackLanguageId</span></td>

              <td class="entry" headers="d444970e1248" data-title="Type">UUID</td>

              <td class="entry" headers="d444970e1251" data-title="Description">Represents the language to use when no content is available for the selected
                language. For example, if a site visitor chooses <strong class="ph uicontrol">Japanese</strong>
                from the language selector, but there’s no content for that page in Japanese, then
                content is displayed in the fallback language. <p class="p">Only one level of fallback is
                  allowed for LWR sites. Here are examples for an LWR site where English is the
                  default language, and Spanish, French, and Finnish are available site
                  languages.</p>
                <ul class="ul bulletList">
                  <li class="li">Not allowed: Spanish falls back to French, and French falls back to Finnish.
                    This configuration includes two levels of fallback.</li>

                  <li class="li">Allowed: Spanish falls back to French, and French falls back to English. This
                    configuration is allowed because English is the site’s default language.</li>

                  <li class="li">Allowed: Spanish falls back to French, and French has no fallback. This
                    configuration includes only one level of fallback.</li>

                </ul>
              </td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e1245" data-title="Property"><span class="keyword parmname">id</span></td>

              <td class="entry" headers="d444970e1248" data-title="Type">UUID</td>

              <td class="entry" headers="d444970e1251" data-title="Description">Represents the component's GUID.</td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e1245" data-title="Property"><span class="keyword parmname">isActive</span></td>

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

              <td class="entry" headers="d444970e1251" data-title="Description">Indicates whether a language is available to site visitors in the language
                selector (<samp class="codeph nolang">true</samp>) or not (<samp class="codeph nolang">false</samp>). The default value is <samp class="codeph javascript">true</samp>.</td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e1245" data-title="Property"><span class="keyword parmname">label</span></td>

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

              <td class="entry" headers="d444970e1251" data-title="Description">Defines the display label for a language. The display label appears in any
                language selector components that you add to your site and in the language selector
                in Experience Builder.</td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e1245" data-title="Property"><span class="keyword parmname">languageCode</span></td>

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

              <td class="entry" headers="d444970e1251" data-title="Description">Represents the language code for the selected language.</td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e1245" data-title="Property"><span class="keyword parmname">type</span></td>

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

              <td class="entry" headers="d444970e1251" data-title="Description">Represents the component type. The only supported value is <samp class="codeph javascript">language</samp>.</td>

            </tr>

          </tbody>

        </table>

{
    "defaultCode" : "en\_US",
    "defaultLabel" : "English (US)",
    "id" : "04597c83-0b9d-4f16-9f4d-4ec28bd553b4",
    "type" : "languageContainer",
    "languages" : \[ {
        "languageCode" : "af",
        "countryCode" : "",
        "isActive" : true,
        "label" : "Afrikaans",
        "fallbackLanguageId" : "c6e7fe67-55e0-47b3-ad58-bf49539249f0",
        "id" : "22036d6f-11ce-4f7b-b7f0-f2c409f817ea",
        "type" : "language"
        }
     \]
 }

The page file represents single-page applications in the site. One file per page, named page\_name.json.

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

#### Note

Each Experience Builder site is actually a single-page application, which is a web app that loads a single HTML page. Single-page applications use multiple [views](#views_folder) to update the page dynamically as the user interacts with it.

**nativeConfig.json File Properties**

| Property | Type | Description |
| --- | --- | --- |
| showHamburgerMenu | boolean | Required. Controls whether the hamburger menu is shown. |
| mobilePublisherAppUpdateConfig | boolean | Required. Controls whether and which App Version Update message is shown. To avoid service disruptions, users must be on the app version that supports enhanced domains. |
| id | UUID | Represents the component's GUID. |
| type | string | Represents the component type. The only supported value is nativeConfig. |

{
 "id": "a70a0e5e-0400-4531-94dc-8f587daa5946",
 "nativeMobileNavConfig": {
   "showBackButton": true,
   "showHamburgerMenuWithBackButton": false
 },

 "mobilePublisherAppUpdateConfig": {
   "enableAppUpdate" : true,
   "forceAppUpdate" : true,
   "minVersion" : {
       "ios" : {
           "version" : "10.0"
 },
       "android" : {
               "version" : "10.1"
 }
 }
 },
 "nativeTabMenu": {
   "branding": {
     "iconTintColorUnselected": "#C9C5C5",
     "barTintColor": "#FF00FF",
     "iconTintColor": "#555321"
   },
   "menuItems": \[
     {
       "iconAsset": "icon\_homepng",
       "targetUrl": "/"
     },
     {
       "name": "Test",
       "iconAsset": "icon\_filespng",
       "targetUrl": "/files"
     }
   \]
 },
 "showNavMenu": true,
 "type": "nativeConfig"
}

**nativeMobileNavConfig container**

A required container for the configuration for the Native Navigation Bar component.

| Property | Type | Description |
| --- | --- | --- |
| showBackButton | boolean | Controls whether the Back button is shown on iOS devices. |
| showHamburgerMenuWithBackButton | boolean | Controls whether the hamburger menu is shown, in addition to the Back button, on iOS devices. |

**mobilePublisherAppUpdateConfig container**

A required container for the configuration of the App Version Update message.

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



          <thead class="thead sorted" align="left">
            <tr>
              <th class="featureTableHeader  " id="d444970e1588">Property</th>

              <th class="featureTableHeader  " id="d444970e1591">Type</th>

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

            </tr>

          </thead>

          <tbody class="tbody">
            <tr>
              <td class="entry" headers="d444970e1588" data-title="Property"><span class="keyword parmname">enableAppUpdate</span></td>

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

              <td class="entry" headers="d444970e1594" data-title="Description">Controls whether the App Version Update message is shown, to encourage users to
                update by giving them a choice of whether to do so.<p class="p">Set the properties to <samp class="codeph javascript"><span class="string">"enableAppUpdate"</span> : true</samp>, and <samp class="codeph javascript"><span class="string">"forceAppUpdate"</span> : false</samp> to show the message
                  that encourages your users to update.</p>
                <p class="p">If you don’t want to show an update
                  message, for example if all your users are on the correct version or your site
                  uses a custom domain, set the property to <samp class="codeph javascript"><span class="string">"enableAppUpdate"</span> : false</samp>, and don’t use the <samp class="codeph javascript">forceAppUpdate</samp> property.</p>
              </td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e1588" data-title="Property"><span class="keyword parmname">forceAppUpdate</span></td>

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

              <td class="entry" headers="d444970e1594" data-title="Description">Controls whether the App Version Update message to require users to update is
                shown.<p class="p">Set the properties to <samp class="codeph javascript"><span class="string">"enableAppUpdate"</span> :
                    true</samp>, and <samp class="codeph javascript"><span class="string">"forceAppUpdate"</span> :
                    true</samp> to show the message that requires your users to
                  update.</p>
              </td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e1588" data-title="Property"><span class="keyword parmname">minVersion</span></td>

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

              <td class="entry" headers="d444970e1594" data-title="Description">
                <p class="p">Controls the iOS and Android Minimum App Versions. These property values are
                  currently hard coded to ensure that the app versions supporting enhanced domains
                  are used. </p>

              </td>

            </tr>

          </tbody>

        </table>

**nativeTabMenu container**

A required container for the configuration of the hamburger menu and Back button behavior.

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



          <thead class="thead sorted" align="left">
            <tr>
              <th class="featureTableHeader  " id="d444970e1691">Property</th>

              <th class="featureTableHeader  " id="d444970e1694">Type</th>

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

            </tr>

          </thead>

          <tbody class="tbody">
            <tr>
              <td class="entry" headers="d444970e1691" data-title="Property"><span class="keyword parmname">branding</span></td>

              <td class="entry" headers="d444970e1694" data-title="Type">map</td>

              <td class="entry" headers="d444970e1697" data-title="Description">Settings for the Native Navigation Bar component branding. Valid keys are:<ul class="ul bulletList">
                  <li class="li">iconTintColorUnselected</li>

                  <li class="li">iconTintColor</li>

                  <li class="li">barTintColor</li>

                </ul>
                <p class="p">Supply a valid 6 digit hexadecimal as the value for all
                  properties.</p>
              </td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e1691" data-title="Property"><span class="keyword parmname">menuItems</span></td>

              <td class="entry" headers="d444970e1694" data-title="Type">list</td>

              <td class="entry" headers="d444970e1697" data-title="Description">Items which must be displayed in the Native Navigation Bar component.</td>

            </tr>

          </tbody>

        </table>

**menuItems container**

A container within the nativeTabMenu container that specifies the items displayed in the tab bar of the Native Navigation Bar component.

| Property | Type | Description |
| --- | --- | --- |
| name | string | Optional. The label of the tab bar menu item. |
| targetUrl | string | Required. The relative URL to which the tab bar menu item points. |
| iconAsset | string | Required. Name of the ContentAsset to use for the tab bar menu item. |

**page\_name.json File Properties**

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



          <thead class="thead sorted" align="left">
            <tr>
              <th class="featureTableHeader  " id="d444970e1845">Property</th>

              <th class="featureTableHeader  " id="d444970e1848">Type</th>

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

            </tr>

          </thead>

          <tbody class="tbody">
            <tr>
              <td class="entry" headers="d444970e1845" data-title="Property"><span class="keyword parmname">cmsSettings</span></td>

              <td class="entry" headers="d444970e1848" data-title="Type">map</td>

              <td class="entry" headers="d444970e1851" data-title="Description">Settings for the CMS Connect header and footer. Valid values are:<ul class="ul bulletList">
                  <li class="li"><samp class="codeph nolang">headerName</samp></li>

                  <li class="li"><samp class="codeph nolang">headerUrl</samp></li>

                  <li class="li"><samp class="codeph nolang">headerPersonalization</samp></li>

                  <li class="li"><samp class="codeph nolang">footerName</samp></li>

                  <li class="li">
                    <samp class="codeph nolang">footerUrl</samp>
                  </li>

                  <li class="li"><samp class="codeph nolang">footerPersonalization</samp></li>

                </ul>
                Both source and target org must have the CMSConnect and CMSPersonalization org
                perms enabled for settings to be retrieved.</td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e1845" data-title="Property"><span class="keyword parmname">currentThemeId</span></td>

              <td class="entry" headers="d444970e1848" data-title="Type">UUID</td>

              <td class="entry" headers="d444970e1851" data-title="Description">Required. Represents the UUID of the site's current theme. This field is
                available for <span class="ph filepath">mainAppPage.json</span> and
                <span class="ph filepath">loginAppPage.json</span> (where applicable).
              </td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e1845" data-title="Property"><span class="keyword parmname">headMarkup</span></td>

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

              <td class="entry" headers="d444970e1851" data-title="Description">Required. Allows the addition of custom markup to the site's main page <samp class="codeph html"><span class="tag">&lt;head</span>&gt;</samp> tag. Similar to using <span class="ph menucascade"><strong class="ph uicontrol">Experience Builder</strong> | <strong class="ph uicontrol">Setting</strong> | <strong class="ph uicontrol">Advanced</strong> | <strong class="ph uicontrol">Head Markup</strong></span> See <a class="xref" href="https://help.salesforce.com/articleView?id=community_builder_page_head.htm&amp;type=5&amp;language=en_US" target="_blank">Salesforce Help for markup guidance</a>.</td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e1845" data-title="Property"><span class="keyword parmname">id</span></td>

              <td class="entry" headers="d444970e1848" data-title="Type">UUID</td>

              <td class="entry" headers="d444970e1851" data-title="Description">Required. Represents the component's GUID.</td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e1845" data-title="Property"><span class="keyword parmname">isRelaxedCSPLevel</span></td>

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

              <td class="entry" headers="d444970e1851" data-title="Description">Controls the ability to run scripts and script access to third-party hosts. The
                default is <samp class="codeph javascript">false</samp>. This field is available
                for <span class="ph filepath">mainAppPage.json</span> and <span class="ph filepath">loginAppPage.json</span>
                (where applicable).</td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e1845" data-title="Property"><span class="keyword parmname">label</span></td>

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

              <td class="entry" headers="d444970e1851" data-title="Description">Required. Represents the name of the page.</td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e1845" data-title="Property"><span class="keyword parmname">templateName</span></td>

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

              <td class="entry" headers="d444970e1851" data-title="Description">Required. The unique developer name of the template. Allowed values include:<ul class="ul bulletList">
                  <li class="li">CPT Community Template (which represents the Customer Account Portal
                    template)</li>

                  <li class="li">Help Center Template (which represents the Help Center template)</li>

                  <li class="li">microsite-template-marketing (which represents the Microsite (LWR)
                    template</li>

                  <li class="li">PRM Community Template (which represents the Partner Central template)</li>

                  <li class="li">Service Community Template (which represents the Customer Service
                    template)</li>

                  <li class="li">Starter Template (which represents the Build Your Own (Aura) template)</li>

                  <li class="li">talon-template-byo (which represents the Build Your Own (LWR) template)</li>

                  <li class="li">
                    <var class="keyword varname">Custom_template_name</var> (which is the name of a customized
                    template that was exported as a Bolt Solution)
                  </li>

                </ul>
                <p class="p">Alternatively, you can retrieve a list of allowed template name values using
                  Connect REST API. See <a class="xref" href="https://developer.salesforce.com/docs/atlas.en-us.264.0.chatterapi.meta/chatterapi/connect_resources_communities_templates.htm" target="_blank" title="HTML (New Window)">Experience Builder Templates</a> in the <cite class="cite">Connect REST API Developer
                    Guide</cite>.</p>
              </td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e1845" data-title="Property"><span class="keyword parmname">type</span></td>

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

              <td class="entry" headers="d444970e1851" data-title="Description">Required. Represents the component type. The only supported value is <samp class="codeph javascript">appPage</samp>.</td>

            </tr>

          </tbody>

        </table>

{
    "headMarkup" : null,
    "isRelaxedCSPLevel" : false,
    "templateName" : "Starter Template",
    "cmsSettings" : { },
    "currentThemeId" : "ff52089c-6ad9-4dd9-b5b5-251d4a117ce3",
    "label" : "main",
    "id" : "df9907cb-6e68-4ca1-8bb2-51173ca5374e",
    "type" : "appPage"
}

## routes Folder

The routes folder contains one JSON file per page, named <page\_name>.json.

**<page\_name>.json**

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



          <thead class="thead sorted" align="left">
            <tr>
              <th class="featureTableHeader  " id="d444970e2109">Property</th>

              <th class="featureTableHeader  " id="d444970e2112">Type</th>

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

            </tr>

          </thead>

          <tbody class="tbody">
            <tr>
              <td class="entry" headers="d444970e2109" data-title="Property"><span class="keyword parmname">activeViewId</span></td>

              <td class="entry" headers="d444970e2112" data-title="Type">UUID</td>

              <td class="entry" headers="d444970e2115" data-title="Description">Required. Represents the default view of the route. Used when there are no
                defined audiences or the user doesn’t match any audience.<p class="p">Available in API version
                  48.0 and later.</p>
              </td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e2109" data-title="Property"><span class="keyword parmname">appPageId</span></td>

              <td class="entry" headers="d444970e2112" data-title="Type">UUID</td>

              <td class="entry" headers="d444970e2115" data-title="Description">Required. Represents the single page application (SPA) page for the route. It
                points to either <span class="ph filepath">main.json</span> or
                <span class="ph filepath">login.json</span>.
              </td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e2109" data-title="Property"><span class="keyword parmname">configurationTags</span></td>

              <td class="entry" headers="d444970e2112" data-title="Type">string[]</td>

              <td class="entry" headers="d444970e2115" data-title="Description">Required. Represents the configuration tags for the route. The only supported
                value is <samp class="codeph javascript">allow-<span class="keyword">in</span>-<span class="keyword">static</span>-site</samp>. Available in
                API Version 51.0 and later.<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>This is an internal property and must not be
                            edited.</p>
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
              </td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e2109" data-title="Property"><span class="keyword parmname">devName</span></td>

              <td class="entry" headers="d444970e2112" data-title="Type">string[]</td>

              <td class="entry" headers="d444970e2115" data-title="Description">Required. Represents the unique API name that’s defined when creating a new
                route. Available in API version 59.0 and later.</td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e2109" data-title="Property"><span class="keyword parmname">id</span></td>

              <td class="entry" headers="d444970e2112" data-title="Type">UUID</td>

              <td class="entry" headers="d444970e2115" data-title="Description">Required. Represents the component GUID. Inherited from the component.</td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e2109" data-title="Property"><span class="keyword parmname">label</span></td>

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

              <td class="entry" headers="d444970e2115" data-title="Description">Required. Represents the name of the route. Inherited from the
                component.</td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e2109" data-title="Property"><span class="keyword parmname">objectApiName</span></td>

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

              <td class="entry" headers="d444970e2115" data-title="Description">Required. The name of the custom object API. (Not available for standard
                objects.)</td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e2109" data-title="Property"><span class="keyword parmname">pageAccess</span></td>

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

              <td class="entry" headers="d444970e2115" data-title="Description">Required. Identifies the status of a route as public or private. When set to
                the default value <samp class="codeph javascript">UseParent</samp>, the status of
                the site determines the status of the route. Not editable from the user interface
                for routes that are always private. Valid values are <samp class="codeph javascript">UseParent</samp>, <samp class="codeph javascript">Public</samp>, and <samp class="codeph javascript">RequiresLogin</samp>.</td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e2109" data-title="Property"><span class="keyword parmname">routeType</span></td>

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

              <td class="entry" headers="d444970e2115" data-title="Description">Required. Identifies the type of route. Value is unique among all routes that
                share the same SPA page. The value in <span class="keyword parmname"><a class="xref" href="#views_folder">viewType</a></span> must match.</td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e2109" data-title="Property"><span class="keyword parmname">type</span></td>

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

              <td class="entry" headers="d444970e2115" data-title="Description">Required. Represents the component type. The only supported value is <samp class="codeph javascript">route</samp>.</td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e2109" data-title="Property"><span class="keyword parmname">urlPrefix</span></td>

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

              <td class="entry" headers="d444970e2115" data-title="Description">Required. Represents the base URL for the route.</td>

            </tr>

          </tbody>

        </table>

{
    "urlPrefix" : "",
    "appPageId" : "b5fe94e2-071f-47b2-b76d-427a624cb407",
    “configurationTags” : “allow-in\-static\-site”
    "routeType" : "home",
    "pageAccess" : "UseParent",
    "label" : "Home",
    "id" : "c7263124-7bc4-4147-a39a-25fe7e305b98",
    "type" : "route"
}

## themes Folder

The themes folder contains one JSON file per theme named theme\_name.json.

**theme\_name.json**

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



          <thead class="thead sorted" align="left">
            <tr>
              <th class="featureTableHeader  " id="d444970e2343">Property</th>

              <th class="featureTableHeader  " id="d444970e2346">Type</th>

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

            </tr>

          </thead>

          <tbody class="tbody">
            <tr>
              <td class="entry" headers="d444970e2343" data-title="Property"><span class="keyword parmname">activeBrandingSetId</span></td>

              <td class="entry" headers="d444970e2346" data-title="Type">UUID</td>

              <td class="entry" headers="d444970e2349" data-title="Description">The id of the branding set currently in use. The branding set's <samp class="codeph javascript">definitionName</samp> must match the theme's <samp class="codeph javascript">brandingSetReference</samp>.</td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e2343" data-title="Property"><span class="keyword parmname">customCSS</span></td>

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

              <td class="entry" headers="d444970e2349" data-title="Description">Custom CSS for pages created in the Experience Builder template.</td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e2343" data-title="Property"><span class="keyword parmname">developerName</span></td>

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

              <td class="entry" headers="d444970e2349" data-title="Description">Required. The unique developer name of the theme. Most themes derive their
                names directly, for example Jepson uses <samp class="codeph javascript">jespon</samp> for its <span class="keyword parmname">developerName</span>. <p class="p">Standard templates
                  have unique values:</p>
                <ul class="ul bulletList">
                  <li class="li">
                    <samp class="codeph javascript">cpt</samp> for Customer Account Portal
                  </li>

                  <li class="li">
                    <samp class="codeph javascript">service</samp> for Customer Service
                  </li>

                  <li class="li">
                    <samp class="codeph javascript">helpCenter</samp> for Help Center
                  </li>

                  <li class="li">
                    <samp class="codeph javascript">prm</samp> for Partner Central
                  </li>

                  <li class="li">
                    <samp class="codeph javascript">starter</samp> for Build Your Own
                  </li>

                </ul>
              </td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e2343" data-title="Property"><span class="keyword parmname">id</span></td>

              <td class="entry" headers="d444970e2346" data-title="Type">UUID</td>

              <td class="entry" headers="d444970e2349" data-title="Description">Required. Represents the component's GUID.</td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e2343" data-title="Property"><span class="keyword parmname">label</span></td>

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

              <td class="entry" headers="d444970e2349" data-title="Description">Represents the name of the theme.</td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e2343" data-title="Property"><span class="keyword parmname">layouts</span></td>

              <td class="entry" headers="d444970e2346" data-title="Type">map</td>

              <td class="entry" headers="d444970e2349" data-title="Description">Required. Maps <samp class="codeph javascript">ThemeLayoutType</samp> to
                UUID, and contains the definition of the ThemeLayout. Login and Inner theme layouts
                are always required.</td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e2343" data-title="Property"><span class="keyword parmname">type</span></td>

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

              <td class="entry" headers="d444970e2349" data-title="Description">Required. Represents the component type. The only supported value is <samp class="codeph javascript">theme</samp>.</td>

            </tr>

          </tbody>

        </table>

{
    "developerName" : "cpt",
    "layouts" : {
        "Login" : "12162c3e-06ac-43a9-adc7-db36ae5140b0",
        "Inner" : "c09d58be-0622-4fc4-806a-ed34174929f9"
    },
    "customCSS" : "",
    "activeBrandingSetId" : "283407c3-5938-4a6b-b97f-621cda6968c8",
    "label" : "Customer Account Portal",
    "id" : "ff52089c-6ad9-4dd9-b5b5-251d4a117ce3",
    "type" : "theme",
    "views" : \[ {
        "componentName" : "salesforceIdentity:loginBody2",
        "label" : "Login",
        "id" : "12162c3e-06ac-43a9-adc7-db36ae5140b0",
        "type" : "view",
        "regions" : \[ {
            "regionName" : "header",
            "id" : "f8354922-11f2-495d-9d89-0a51943af2b0",
            "type" : "region",
            "components" : \[ \]
        } \]
    } \]
}

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

#### Note

Views can be children of a theme. These children are structured the same as [views](#views_folder) in the views folder.

## variations Folder

Experience variations let you change the default behavior of the Experience Builder site based on the audience. The variations folder contains one JSON file per experience variation. The file is named experienceVariation\_name.json.

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

#### Note

- Experience variations are available in API version 47.0 and later.
- The name of your JSON file must match the developerName of your variation to avoid issues when deploying a site more than one time.

Four distinct types of variations are supported: branding sets, page variations, component visibility, and component attributes. The different variations are indicated through the componentVariant container.

For example, you want the site to show a page variation for the home page when a user meets certain audience criteria. To achieve this, create an audience and then target that audience to your experience variation using targetId in the componentVariant container of the experience variation definition file.

**experienceVariation\_name.json**

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



          <thead class="thead sorted" align="left">
            <tr>
              <th class="featureTableHeader  " id="d444970e2579">Property</th>

              <th class="featureTableHeader  " id="d444970e2582">Type</th>

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

            </tr>

          </thead>

          <tbody class="tbody">
            <tr>
              <td class="entry" headers="d444970e2579" data-title="Property"><span class="keyword parmname">componentVariants</span></td>

              <td class="entry" headers="d444970e2582" data-title="Type">list</td>

              <td class="entry" headers="d444970e2585" data-title="Description">Required. A list of component variants that belong to this experience
                variation. <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>Only one component variant per experience variation is
                            allowed.</p>
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
              </td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e2579" data-title="Property"><span class="keyword parmname">developerName</span></td>

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

              <td class="entry" headers="d444970e2585" data-title="Description">Required. The unique developer name of the experience variation. This name is
                used in the <samp class="codeph javascript">targetValue</samp> field of a
                Personalization API target and can’t be updated after it’s set.<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>For more
                            information, see <a class="xref" href="https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_audience.htm" title="Represents the audience in an Experience Builder site. An audience consists of different types of criteria, where the audience can be assigned and used for targeting in a site. This type extends the Metadata metadata type and inherits its fullName field.">Audience</a>.</p>
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
              </td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e2579" data-title="Property"><span class="keyword parmname">id</span></td>

              <td class="entry" headers="d444970e2582" data-title="Type">UUID</td>

              <td class="entry" headers="d444970e2585" data-title="Description">Required. Represents the GUID of the component.</td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e2579" data-title="Property"><span class="keyword parmname">type</span></td>

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

              <td class="entry" headers="d444970e2585" data-title="Description">Required. Represents the type of the component. The only supported value is
                <samp class="codeph javascript">experienceVariation</samp>.
              </td>

            </tr>

          </tbody>

        </table>

When implemented, there’s one container in each experienceVariation\_name.json file describing the variation.

**componentVariant container**

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



          <thead class="thead sorted" align="left">
            <tr>
              <th class="featureTableHeader  " id="d444970e2695">Property</th>

              <th class="featureTableHeader  " id="d444970e2698">Type</th>

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

            </tr>

          </thead>

          <tbody class="tbody">
            <tr>
              <td class="entry" headers="d444970e2695" data-title="Property"><span class="keyword parmname">id</span></td>

              <td class="entry" headers="d444970e2698" data-title="Type">UUID</td>

              <td class="entry" headers="d444970e2701" data-title="Description">Required. Represents the GUID of the component.</td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e2695" data-title="Property"><span class="keyword parmname">propertyOverrides</span></td>

              <td class="entry" headers="d444970e2698" data-title="Type">map</td>

              <td class="entry" headers="d444970e2701" data-title="Description">Required. Defines the property overrides for the given theme, route, or
                component <span class="keyword parmname">targetId</span>.<p class="p">For example, if
                  the <span class="keyword parmname">targetId</span> is pointing to a theme, you can override the
                  <span class="keyword parmname">defaultBrandingSet</span> property of the theme to use a different
                  branding set for this experience variation.
                </p>
                <div class="p">Supported property overrides:<dl class="dl detailList">

                    <dt class="dt dlterm"><samp class="codeph javascript">activeBrandingSetId</samp></dt>

                    <dd class="dd">Defines which branding set to use when <span class="keyword parmname">targetId</span> is a
                      theme. Uses the
                      format:<div class="codeSection javascript">
                        <pre class="codeblock javascript"><span class="string">"activeBrandingSetId"</span> : <span class="string">"</span><var class="keyword varname">ID_of_brandingset</var><span class="string">"</span></pre>
                      </div>
                    </dd>



                    <dt class="dt dlterm"><samp class="codeph javascript">activeViewId</samp></dt>

                    <dd class="dd">Defines which page variation to use when <span class="keyword parmname">targetId</span> is a route. Uses the
                      format:<div class="codeSection javascript">
                        <pre class="codeblock javascript"><span class="string">"activeViewId"</span> : <span class="string">"</span><var class="keyword varname">ID_of_view</var><span class="string">"</span></pre>
                      </div>
                    </dd>



                    <dt class="dt dlterm"><samp class="codeph javascript">componentAttributes</samp></dt>

                    <dd class="dd">Supported only for CMS Collection components and navigation components,
                      such as Navigation Menu or Tile Menu. Components can be placed in header and
                      footer regions, and also in the view body.</dd>

                    <dd class="dd">
                      <ul class="ul bulletList">
                        <li class="li">Defines which navigation linkset to display when
                          <span class="keyword parmname">targetId</span> is a navigation component.<p class="p">The value
                            of the property is a JSON container with a single key-value pair
                            denoting the attribute and the value of the attribute.</p>
                          <div class="p">
                            <samp class="codeph javascript">NavigationMenuEditorRefresh</samp> is the
                            only supported attribute. Uses the
                            format:<div class="codeSection javascript">
                              <pre class="codeblock javascript"><span class="string">"componentAttributes"</span> : {
   <span class="string">"NavigationMenuEditorRefresh"</span> : <span class="string">"</span><var class="keyword varname">linkset_name</var><span class="string">"
</span>}</pre>
                            </div>
                          </div>
                        </li>

                        <li class="li">Defines which content collection to display when
                          <span class="keyword parmname">targetId</span> is a CMS Collection component.<div class="p">The
                            value of the property is a JSON container with a single key-value pair
                            denoting the path to the attribute and the value of the attribute.
                            <samp class="codeph javascript">config/dataProviderDefinition/attributes/dataProviderInfo/apiName</samp>
                            is the only supported attribute. Uses the
                            format:<div class="codeSection javascript">
                              <pre class="codeblock javascript"><span class="string">"componentAttributes"</span> : {
   <span class="string">"config/dataProviderDefinition/attributes
</span>/dataProviderInfo/apiName<span class="string">":"</span><var class="keyword varname">collection_name</var><span class="string">"
</span>}</pre>
                            </div>
                          </div>
                        </li>

                      </ul>

                    </dd>



                    <dt class="dt dlterm"><samp class="codeph javascript">isVisible</samp></dt>

                    <dd class="dd">Defines whether a component is visible for the audience when <span class="keyword parmname">targetId</span> is a component. Unsupported
                      for components in header or footer regions. Uses the
                      format:<div class="codeSection javascript">
                        <pre class="codeblock javascript"><span class="string">"isVisible"</span>: <var class="keyword varname">boolean</var></pre>
                      </div>
                    </dd>


                  </dl>
                </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>
                          </p><ul class="ul bulletList">
                            <li class="li">Only one entry in the map is allowed.</li>

                            <li class="li">For a component, you can vary either its visibility or attributes but not
                              both together.</li>

                          </ul>

                          <p></p>
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
              </td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e2695" data-title="Property"><span class="keyword parmname">targetId</span></td>

              <td class="entry" headers="d444970e2698" data-title="Type">UUID</td>

              <td class="entry" headers="d444970e2701" data-title="Description">Required. The UUID of the item whose properties you’re overriding. Must be the
                ID of a theme, route, or component.</td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e2695" data-title="Property"><span class="keyword parmname">type</span></td>

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

              <td class="entry" headers="d444970e2701" data-title="Description">Required. Represents the type of the component. The only supported value is
                <samp class="codeph javascript">experienceVariation</samp>.
              </td>

            </tr>

          </tbody>

        </table>

**Example of an experience variation for a branding set**

{
   "id": "64e93604-78fa-11e9-8f9e-2a86e4085a59",
   "developerName": "BrandingVariation",
   "type": "experienceVariation",
   "componentVariants": \[{
      "id": "4bf0af78-8d73-11e9-bc42-526af7764f64",
      "type": "componentVariant",
      // Theme UUID
      "targetId": "c810858e-78fa-11e9-8f9e-2a86e4085a59",
      "propertyOverrides": {
         // Brandingset UUID
         "activeBrandingSetId": "be9f4760-78fa-11e9-8f9e-2a86e4085a59" 
      }
   }\]
}

**Example of an experience variation for a page variation**

{
   "id": "64e93604-78fa-11e9-8f9e-2a86e4085a59",
   "developerName": "PageVariation",
   "type": "experienceVariation",   
   "componentVariants": \[{
      "id": "4bf0af78-8d73-11e9-bc42-526af7764f64",
      "type": "componentVariant",
      // Route UUID
      "targetId": "c810858e-78fa-11e9-8f9e-2a86e4085a59", 
      "propertyOverrides": {
         // View UUID
         "activeViewId": "be9f4760-78fa-11e9-8f9e-2a86e4085a59"
      }
   }\]
}

**Example of an experience variation for component visibility**

{
   "id": "64e93604-78fa-11e9-8f9e-2a86e4085a59",
   "developerName": "ComponentVisibilityVariation",
   "type": "experienceVariation",
   "componentVariants": \[{
      "id": "4bf0af78-8d73-11e9-bc42-526af7764f64",
      "type": "componentVariant",
      // Component UUID
      "targetId": "c810858e-78fa-11e9-8f9e-2a86e4085a59", 
      "propertyOverrides": {
         "isVisible": true
      }
   }\]
}

**Example of a component variation for a CMS Collection component**

{
   "id" : "6ce1260f-cb01-45a0-8947-f2d85602a3db"
   "developerName": "Home\_CMS\_Collection\_Component\_Properties",
   "type": "experienceVariation",
   "componentVariants": \[{
      "id" : "3gh1260f-cb01-45a0-8947-f2d92037a4db"
      "type": "componentVariant",
      "targetId": "d77369e6-7230-43e7-9b59-6e91c47b3273",
      "propertyOverrides": {
         "componentAttributes": {
            "config/dataProviderDefinition/attributes/dataProviderInfo/apiName":"SilverCollection"
         }
      },
   }\],
}

**Example of a component variation for Navigation Menu component**

{
   "id" : "8cf943b8-525d-4c13-a719-6ebc7d61a81e",
   "developerName" : "Default\_Navigation\_Menu\_Component\_Properties", 
   "type" : "experienceVariation",
   "componentVariants" : \[{
      "id" : "5be1260f-cb01-45a0-8947-f2d85602a4db",
      "type" : "componentVariant",
      "targetId" : "fdf9eb51-ddc5-4e79-9ea8-5b94f5ca8db4",
      "propertyOverrides" : {
         "componentAttributes" : {
            "NavigationMenuEditorRefresh" : "NavMenu1"
         }
      },
   }\],
}

## views Folder

The views folder contains several JSON files that each define a view. Each Experience Builder site is built from single-page applications, which are web apps that load a single HTML page. Single-page applications consist of multiple views that update the page dynamically as the user interacts with it.

A view is made up of regions that contain other regions or components in the rendered page for the user. Within the views folder there’s one file per view, named view\_name.json.

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

#### Note

Single-page applications in your site are defined in the [page files](#page_file_configfolder) of the [config folder](#config_folder).

**view\_name.json**

| Property | Type | Description |
| --- | --- | --- |
| appPageId | UUID | Required. Single page application (SPA) page ID of the view. It points to either main.json or login.json. |
| componentName | string | Required. The FQN of the layout component. The component must implement forceCommunity:layout or, for theme layouts, forceCommunity:themeLayout |
| id | UUID | Required. Represents the GUID of the component. |
| label | string | Required. The name that appears in **Experience Builder** | **Settings** | **Theme** | **Configure**. |
| themeLayoutType | string | Theme layout type of the view (exposed only for views). |
| type | string | Required. Represents the type of the component. The only supported value is view. |
| viewType | string | Required. Matches [routeType](#routes_folder) for the route. |

There are one or more regions as a container in each <view\_name>.json

**region container**

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



          <thead class="thead sorted" align="left">
            <tr>
              <th class="featureTableHeader  " id="d444970e3159">Property</th>

              <th class="featureTableHeader  " id="d444970e3162">Type</th>

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

            </tr>

          </thead>

          <tbody class="tbody">
            <tr>
              <td class="entry" headers="d444970e3159" data-title="Property"><span class="keyword parmname">id</span></td>

              <td class="entry" headers="d444970e3162" data-title="Type">UUID</td>

              <td class="entry" headers="d444970e3165" data-title="Description">Required. Represents the component GUID.</td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e3159" data-title="Property"><span class="keyword parmname">regionLabel</span></td>

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

              <td class="entry" headers="d444970e3165" data-title="Description">Specifies region labels for tabs.<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>This property is present only for tab
                            regions that are children of a component.</p>
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
              </td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e3159" data-title="Property"><span class="keyword parmname">regionName</span></td>

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

              <td class="entry" headers="d444970e3165" data-title="Description">Required. Matches the design attribute in the design file of the layout
                component.</td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e3159" data-title="Property"><span class="keyword parmname">type</span></td>

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

              <td class="entry" headers="d444970e3165" data-title="Description">Required. Represents the component type. The only supported value is <samp class="codeph javascript">region</samp>.</td>

            </tr>

          </tbody>

        </table>

Each <view\_name>.json file contains a hidden region called sfdcHiddenRegion. The hidden region contains a component that represents the SEO assistant component. In Aura sites, the component’s definition is forceCommunity:seoAssistant, and in LWR sites, the component’s definition is community\_builder:seoAssistant. This component corresponds to the SEO page properties that you can configure in Experience Builder and isn’t visible on your pages. To improve search engine results, use the SEO assistant component to set the customHeadTags, description, and pageTitle properties for your public and custom site pages. You can’t edit the other properties associated with the SEO assistant component. To learn more about what the title, description, and custom head tags properties represent and which head tags are allowed, see [SEO Page Properties in Experience Builder](https://help.salesforce.com/s/articleView?id=experience.networks_seo_tags.htm&type=5&language=en_US "HTML (New Window)").

There are one or more components as a container in the region section of each <view\_name>.json

**component container**

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



          <thead class="thead sorted" align="left">
            <tr>
              <th class="featureTableHeader  " id="d444970e3290">Property</th>

              <th class="featureTableHeader  " id="d444970e3293">Type</th>

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

            </tr>

          </thead>

          <tbody class="tbody">
            <tr>
              <td class="entry" headers="d444970e3290" data-title="Property"><span class="keyword parmname">componentAttributes</span></td>

              <td class="entry" headers="d444970e3293" data-title="Type">HashMap</td>

              <td class="entry" headers="d444970e3296" data-title="Description">Required. The design attribute values of the component.</td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e3290" data-title="Property"><span class="keyword parmname">componentName</span></td>

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

              <td class="entry" headers="d444970e3296" data-title="Description">Required. The FQN of the component. Only components that can be used in the
                component panel in Experience Builder can be used in this field.</td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e3290" data-title="Property"><span class="keyword parmname">id</span></td>

              <td class="entry" headers="d444970e3293" data-title="Type">UUID</td>

              <td class="entry" headers="d444970e3296" data-title="Description">Required. Represents the component GUID.<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>If you add a component to
                            ExperienceBundle, you can enter any value because the system automatically
                            generates a UUID for the component when deployed.</p>
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
              </td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e3290" data-title="Property"><span class="keyword parmname">renderPriority</span></td>

              <td class="entry" headers="d444970e3293" data-title="Type">enums.priority</td>

              <td class="entry" headers="d444970e3296" data-title="Description">Sets priority value for progressive rendering of the component. Possible
                Values: <samp class="codeph javascript">HIGHEST</samp>, <samp class="codeph javascript">HIGH</samp>, <samp class="codeph javascript">NEUTRAL</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>Only evaluated if the site has progressive rendering turned
                            on in <span class="ph menucascade"><strong class="ph uicontrol">Experience Builder</strong> | <strong class="ph uicontrol">Settings</strong> | <strong class="ph uicontrol">Advanced</strong></span>.</p>
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
              </td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e3290" data-title="Property"><span class="keyword parmname">renditionMap</span></td>

              <td class="entry" headers="d444970e3293" data-title="Type">HashMap</td>

              <td class="entry" headers="d444970e3296" data-title="Description">Map of different rendition keys to UUIDs of RenditionComponents.</td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e3290" data-title="Property"><span class="keyword parmname">scopedBrandingSetID</span></td>

              <td class="entry" headers="d444970e3293" data-title="Type">UUID</td>

              <td class="entry" headers="d444970e3296" data-title="Description">Required for LWR sites. Not applicable for Aura sites. Represents the ID of a
                branding set for a specific <samp class="codeph nolang">community_layout:section</samp> component. Available in API Version 52.0 and
                later.</td>

            </tr>

            <tr>
              <td class="entry" headers="d444970e3290" data-title="Property"><span class="keyword parmname">type</span></td>

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

              <td class="entry" headers="d444970e3296" data-title="Description">Required. Represents the component type. The only supported value is <samp class="codeph javascript">component</samp>.</td>

            </tr>

          </tbody>

        </table>

Each component can have a rendition container in each <view\_name>.json

**rendition container**

| Property | Type | Description |
| --- | --- | --- |
| id | UUID | Required. Represents the component GUID. |
| renditionValue | map | Map of different variations of a component, such as different languages of text. |
| type | string | Required. Represents the component type. The only supported value is renditionComponent. |

{
    "themeLayoutType" : "Inner",
    "viewType" : "account-management",
    "appPageId" : "df9907cb-6e68-4ca1-8bb2-51173ca5374e",
    "componentName" : "siteforce:sldsOneColLayout",
    "label" : "Account Management",
    "id" : "9ca8fa47-8e87-4915-a6f7-c2d8d37f3076",
    "type" : "view",
    "regions" : \[ {
         "regionName" : "content",
         "id" : "969ada98-7d72-4e45-8a10-7db51fae247c",
         "type" : "region",
         "components" : \[ {
            "componentName" : "forceCommunity:tabset",
            "componentAttributes" : {
                "tabsetConfig" : "{"UUID":"4711850e-ffdc-4375-a45e-f716bcdbbb1c","activeTab":"tab1",
                \\"useOverflowMenu":false,"tabs":\[{"UUID":"bc8fb51f-4783-43d4-9376-60c07677a367","tabName":"Members",
                \\"tabKey":"tab1","locked":false,"allowGuestUser":false,"seedComponents":\[{"fqn":"forceCommunity:relatedList",
                \\"attributes":{"parentRecordId":"{!CurrentUser.accountId}","relatedListName":"Users","customTitle":"Members",
                \\"showCustomTitle":"true","showBreadCrumbs":"false","showRowNumbers":"false","showManualRefreshButton":"false"}}\]},
                {\\"UUID":"f2793a99-b757-4be4-846f-dc98a13a8139","tabName":"Branding","tabKey":"tab2","locked":false,
                \\"allowGuestUser":false,"seedComponents":\[{"fqn":"forceCommunity:accountBrandRecord",
                \\"attributes":{"recordId":"{!CurrentUser.accountId}"}}\]}\]}",
                "regions" : ""
            },
            "renderPriority" : "NEUTRAL",
            "renditionMap" : { },
            "id" : "4711850e-ffdc-4375-a45e-f716bcdbbb1c",
            "type" : "component",
            "renditions" : \[ {
               "renditionValue" : {
                  "LumenInstanceAttributes" : {
                  "richTextValue" : "<p>new text</p>"
                  }
               },
              "id" : "9d8878df-f520-4010-861c-57b930a3daab",
              "type" : "renditionComponent"
            } \]
        } \]
    } \]
}

## Declarative Metadata Sample Definition

Here’s an example of an ExperienceBundle declaration. For individual folder and file examples for the bundled code, see [brandingSets](#brandingSets_folder), [config](#config_folder), [routes](#routes_folder), [themes](#themes_folder), [variations](#variations_folder), and [views](#views_folder).

<xsd:complexType name="ExperienceBundle">
    <xsd:complexContent\>
        <xsd:extension base="tns:Metadata">
            <xsd:sequence\>
                <xsd:element name="experienceResources" minOccurs="0" type="tns:ExperienceResources"/>
                <xsd:element name="label" type="xsd:string"/>
                <xsd:element name="type" type="tns:SiteType"/>
            </xsd:sequence\>
        </xsd:extension\>
    </xsd:complexContent\>
</xsd:complexType\>
    <xsd:complexType name="ExperienceResources">
        <xsd:sequence\>
            <xsd:element name="experienceResource" minOccurs="0" maxOccurs="unbounded" type="tns:ExperienceResource"/>
        </xsd:sequence\>
    </xsd:complexType\>
<xsd:complexType name="ExperienceResource">
    <xsd:sequence\>
        <xsd:element name="fileName" type="xsd:string"/>
        <xsd:element name="format" type="xsd:string"/>
        <xsd:element name="source" minOccurs="0" type="xsd:base64Binary"/>
        <xsd:element name="type" type="xsd:string"/>
    </xsd:sequence\>
</xsd:complexType\>

## Usage

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

#### Tip

Before you update the .json files of an Experience Builder site, we recommend making a copy of the site’s folder as a backup.

When you add a component to ExperienceBundle, you can enter any value for the id, because the system automatically generates a UUID for the component when deployed.

When deploying an Experience Builder site with ExperienceBundle, ensure that the SiteDotCom type isn’t included in the manifest file.

ExperienceBundle doesn’t support retrieving and deploying across different API versions. If you’re trying to upgrade ExperienceBundle metadata from an earlier API version to a later one—for example, from API version 48.0 to 49.0—take the following steps:

1. Set the API version in the package.xml manifest file to 48.0 and deploy the package.
2. Then, set the API version in package.xml to 49.0.
3. To get the latest ExperienceBundle updates, retrieve the package.

## 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).

#### See Also

- [ExperienceBundleSettings](https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_experiencebundlesettings.htm "Represents the org setting that enables the ExperienceBundle metadata type for Aura sites in Experience Cloud. The setting doesn’t affect LWR sites, which use ExperienceBundle by default. This type extends the Metadata metadata type and inherits its fullName field.")
- [_Developer Guide:_ ExperienceBundle for Experience Builder Sites](https://developer.salesforce.com/docs/atlas.en-us.264.0.communities_dev.meta/communities_dev/communities_dev_migrate_expbundle.htm "Developer Guide: ExperienceBundle for Experience
    Builder Sites - HTML (New Window)")