Create Page Designer pages and components in B2C Commerce. Use when building visual merchandising tools, content slots, or experience API integrations. Covers page types, component types, regions, and attribute definitions.
View on GitHubSalesforceCommerceCloud/b2c-developer-tooling
b2c
February 1, 2026
Select agents to install to:
npx add-skill https://github.com/SalesforceCommerceCloud/b2c-developer-tooling/blob/main/skills/b2c/skills/b2c-page-designer/SKILL.md -a claude-code --skill b2c-page-designerInstallation paths:
.claude/skills/b2c-page-designer/# Page Designer Skill
This skill guides you through creating custom Page Designer page types and component types for Salesforce B2C Commerce.
## Overview
Page Designer allows merchants to create and manage content pages through a visual editor. Developers create:
1. **Page Types** - Define page structures with regions
2. **Component Types** - Reusable content blocks with configurable attributes
## File Structure
Page Designer files are in the cartridge's `experience` directory:
```
/my-cartridge
/cartridge
/experience
/pages
homepage.json # Page type meta definition
homepage.js # Page type script
/components
banner.json # Component type meta definition
banner.js # Component type script
/templates
/default
/experience
/pages
homepage.isml # Page template
/components
banner.isml # Component template
```
**Naming:** The `.json` and `.js` files must have matching names.
## Page Types
### Meta Definition (pages/homepage.json)
```json
{
"name": "Home Page",
"description": "Landing page with hero and content regions",
"region_definitions": [
{
"id": "hero",
"name": "Hero Section",
"max_components": 1
},
{
"id": "content",
"name": "Main Content"
},
{
"id": "footer",
"name": "Footer Section",
"component_type_exclusions": [
{ "type_id": "video" }
]
}
]
}
```
### Page Script (pages/homepage.js)
```javascript
'use strict';
var Template = require('dw/util/Template');
var HashMap = require('dw/util/HashMap');
module.exports.render = function (context) {
var model = new HashMap();
var page = context.p