Welcome back to the Mastering Sitecore CMP series! 👋
In Part 2, we built a custom content type called Generic Site Block, containing fields like:
- Title
- Subtitle
- Description
- CTA Text
- CTA URL
- Image Asset
Now it’s time to put that definition to use and actually create content based on it and then take it a step further by localizing that content.
Let’s walk through it step by step.
Creating Content from Your Custom Content Type
Once your content type is ready, the natural next step is to build reusable content blocks using CMP.
Step 1: Log in to Sitecore Content Hub
Open your instance and sign in with your credentials.
Step 2: Navigate to the Content Page
From the top navigation, go to Content → Work.
This is where all CMP content items live.
Step 3: Create a New Content Item
On the right-side panel, you’ll see the + Content button.
- Click + Content
- A creation popup appears
- Enter a Content Name (example: Test Content)
- From the Type dropdown, select the custom content type you created earlier: Generic Site Block
- Leave other sections blank for now (not required)
Click Save.
The moment you save, CMP automatically opens the new content item.
Filling In the Content Fields
Your content item will open with:
- Title at the top
- All configured fields (Title, Subtitle, Description, CTA Text, CTA URL, Image Asset) listed below
Now let's fill it in:
| Field | Example Value |
|---|---|
| Title | This is a test title |
| Subtitle | This is a test subtitle |
| Description | This is a test description |
| CTA Text | Learn More |
| CTA URL | https://www.sitecore.com/ |
| Image Asset | Select an asset from DAM |
🔎 Note:
The Description field is Rich Text. We'll explore formatting, inline assets, and usage in downstream apps later.
You can create as many content items as you need using the same content type—each representing a reusable content block for your site.
Adding Localization Support
CMP allows you to localize content so different markets and regions can consume variants of the same item.
Before creating variant content, you need to ensure the language exists in the system.
Step 1: Add the Language in Taxonomy
Go to: Manage → Taxonomy → M.Localization
Now create the language entry:
- Click +
- Value Name: fr-Fr
- Display Name: fr-Fr
- Identifier: auto-filled
- Save
This makes French (fr-FR) available for content localization.
Localizing Your Content
Now return to your content item the English version you created.
Step 1: Assign Locale to the Original Content
CMP requires that the original item has a locale before creating variants.
On the right-side panel:
- Go to Details tab
- Find the Locale field
- Click Edit
- Choose English (en-US)
- Save
Step 2: Create the Localized Variant
Now click the ⋯ (More options) menu on the top right of the content item.
Choose Localize.
In the popup:
- Name: Test Content fr
- Locale: fr-Fr (the one you just added)
- Click Create
⚠️ Expected Validation Error
You will see an error:
Make sure that the required fields are filled in for both the original and the variant entity.
Along with a message on fields:
Field must be filled in for the original entity.
This happens because CMP requires mandatory fields to be filled for both versions.
You already filled the English version, so now CMP will open the French content item.
Fill the French fields similarly:
- Title (French)
- Subtitle (French)
- Description (French)
- CTA Text (French)
- CTA URL
- Image Asset
Save the content.
Now you have:
- One content item for en-US (Original)
- One variant for fr-FR (Localized)
Viewing Variants of a Content Item
To check the variants for any content:
- Open the English content item
- Click the Variants button on the top panel
A modal appears listing:
- All language variants
For example: fr-FR (variant)
CMP also visually marks the content type in the header:
- Original items show Original
- Variants show Variant
This helps instantly identify what version you're viewing.
Conclusion
Creating and localizing content in Sitecore CMP becomes much more intuitive once you understand how content types, locales, and variants work together. In this part, we built a real content item from our custom definition, assigned the correct locale, handled validation requirements, and created a fully localized French version. This is the exact flow teams follow in real projects when preparing content for multi-regional websites.
With this foundation in place, we’re ready to move into the next stage—how these CMP items are consumed by downstream applications. In the upcoming part, I’ll show how to fetch both original and localized content through REST APIs and Experience Edge GraphQL, and how relations play a key role in assembling structured data for websites.
See you in Part 5! 🚀