HomeDev GuideRecipesAPI Reference
Dev GuideAPI ReferenceUser GuideGitHubNuGetDev CommunityOptimizely AcademySubmit a ticketLog In
Dev Guide

Edit tabs

Administrators manage tabs in Optimizely CMS. Create, edit, and delete tabs, define their display order, and apply access levels to control property visibility for editors.

📘

Note

This topic is for CMS administrators and developers with administrative access rights.

The Edit Tabs function lets administrators and developers manage how properties are organized within the CMS interface. By customizing tabs, you can group related properties together to improve the editing experience. Tabs group related content type properties into sections in the All Properties editing view, which helps editors find and fill in related fields.

From Settings > Edit Tabs, do the following:

  • Add, edit, and delete tabs.
  • Define the display order of tabs.
  • Apply access levels to control tab visibility.
  • Sort the list by clicking a column header. Available headers: Name, Display Name, Sort Index, Requires Access Level, or From Code (whether the tab was created in code or the UI).

Create a tab

Create a tab to group related properties into a labeled section in the All Properties view. Editors locate fields faster, and administrators control which roles see each section.

  1. Go to Settings > Edit Tabs

  2. Click Create Tab. (You can select More (…) > Edit to edit an existing tab.)

    • Name – Enter the name of the tab.
    • Display Name – Enter how the tab name is displayed.
    • Sort Index – Specify the index amount for the tab. The lower the value, the further the tab is placed to the left.
    • Requires Access Level – You can select which access level applies for an editor to see the tab. It is linked to the editor's access level for the page.
  3. Click Create. The new tab displays in the tabs list.

The new tab displays as a selection in the Property Group setting of a Content Type.

The new tab displays in the All Properties view. If the Sort Index is set to 0, the tab appears to the left of the other tabs.

Tab name validation in CMS 13

Tab name validation prevents invalid identifiers from breaking startup in CMS 13. Review this rule before defining tabs in code or the UI to avoid registration failures.

❗️

Warning

CMS 13 enforces strict validation on tab identifiers. Tab Name values must be alphanumeric only. Spaces, hyphens, underscores, and all other special characters are not permitted. Names that do not conform to this rule will fail validation and prevent the tab from being registered.

Use the Display Name field (or [Display(Name = "...")] attribute in code) to provide a human-readable label for the tab. The Name field is an internal identifier only and is never shown directly to editors.

Example: valid tab definition in code

[TabDefinition]
[Display(Name = "SEO Settings", Order = 100)]
public class SeoSettingsTab : TabDefinition
{
    // Name (identifier): "SeoSettings" (alphanumeric only)
    // Display name: "SEO Settings" (set via [Display(Name = ...)])
}

Example: invalid name with a space

// This will fail CMS 13 validation at startup
[Display(Name = "SEO Settings")]
public class SeoSettings Tab : TabDefinition { }
// ❌ Identifier "SeoSettings Tab" contains a space

Automatic migration and the G_ prefix

Automatic migration renames legacy tab identifiers that contain spaces or special characters during a CMS 13 upgrade. The migration prevents startup failures and signals which tab references in code must be updated.

❗️

Warning

When upgrading an existing implementation to CMS 13, tab records already stored in the database with names containing spaces or special characters will fail CMS 13 name validation. To prevent a hard startup failure, the automatic migration process renames non-conforming tab identifiers by adding a G_ prefix and removing the invalid characters.

For example, a tab previously named "SEO Settings" may be migrated to "G_SEOSettings" in the database. The Display Name is preserved and continues to appear correctly in the UI, but any code that references the old tab name by its identifier (for example, via [PropertyTabAssignment("SEO Settings")] or equivalent) will break after migration and must be updated to use the new prefixed name.

Post-upgrade checklist for tab identifiers:

  1. Review all tab definitions in code and confirm that Name values are alphanumeric only (no spaces, hyphens, underscores, or other special characters).
  2. Check Settings > Edit Tabs after upgrading for any tabs with a G_ prefix. These were auto-migrated and their identifiers have changed.
  3. Update all [PropertyTabAssignment] usages, tab group assignments, and any other references to the old identifier to use the new G_-prefixed name, or rename the tab to a clean alphanumeric identifier and update references accordingly.
  4. Redeploy and verify that all properties appear on the correct tabs in the editing interface.