# Page Designer page types, components and aspects

*B2C Commerce Developer Study Guide · Application Development · Last updated November 3, 2026 · https://www.certifyforce.com/study-guide/b2c-commerce-developer/application-development/page-designer-page-types-components-and-aspects*

How to build Page Designer page and component types from meta definition JSON and render scripts, choose attribute types, render pages and regions with PageMgr, add dynamic pages with aspect types, and stay within caching and size limits.

- Certification: Salesforce B2C Commerce Developer
- Exam section: Application Development
- Study guide: https://www.certifyforce.com/study-guide/b2c-commerce-developer

**Official exam objective:**

> Given a business requirement and design for a new marketing page, develop page types and components to allow a marketer to build a page with the Page Designer tool.

## What the exam expects

- Create a page type or component type as a meta definition JSON file plus a same-named script with a `render` function, in the right `experience` folder and with valid names.
- Choose attribute types for a marketer's editing need, and predict how `required` and `default_value` behave.
- Render pages with `PageMgr.renderPage` and regions with `PageMgr.renderRegion`, and print region markup without HTML-encoding it.
- Build dynamic pages with aspect types, `dynamic_lookup` and `getPageByCategory`/`getPageByProduct`, and prepopulate regions with `default_component_constructors`.
- Apply the rules for custom attribute editors, incompatible meta definition changes, page caching and the 3 MB page limit.

Key terms: **page type** (a page template whose meta definition describes regions); **component type** (a reusable building block whose meta definition describes merchant-configurable attributes and optional regions); **meta definition file** (the JSON file that defines a type); **region** (an area that holds components); **aspect type** (a meta definition that makes a page dynamic, with attributes passed at render time and an optional category or product binding).

## Key facts

| Fact | Detail | Source |
|---|---|---|
| Type files | JSON meta definition + same-named `.js` in the same folder | [Page Designer](https://developer.salesforce.com/docs/commerce/b2c-commerce/guide/b2c-dev-for-page-designer.html) |
| File and folder names | Alphanumeric or underscore only | [Page Designer](https://developer.salesforce.com/docs/commerce/b2c-commerce/guide/b2c-dev-for-page-designer.html) |
| Type ID | Subfolder path and file name joined by periods | [Page Designer](https://developer.salesforce.com/docs/commerce/b2c-commerce/guide/b2c-dev-for-page-designer.html) |
| `default_value` | Renders and previews; never preselected | [Page Designer](https://developer.salesforce.com/docs/commerce/b2c-commerce/guide/b2c-dev-for-page-designer.html) |
| `markup` attribute | Rich text editor | [Page Designer](https://developer.salesforce.com/docs/commerce/b2c-commerce/guide/b2c-dev-for-page-designer.html) |
| Custom editor cartridge | On the Business Manager site's cartridge path | [Page Designer](https://developer.salesforce.com/docs/commerce/b2c-commerce/guide/b2c-dev-for-page-designer.html) |
| `renderPage` | Two layers of remote includes; nested pages unsupported | [Class PageMgr](https://developer.salesforce.com/docs/commerce/b2c-commerce/references/b2c-script-api/dw.experience.PageMgr.html) |
| `getPageByProduct` | No category tree traversal | [Class PageMgr](https://developer.salesforce.com/docs/commerce/b2c-commerce/references/b2c-script-api/dw.experience.PageMgr.html) |
| Several pagecache settings | Shortest wins | [Page Designer](https://developer.salesforce.com/docs/commerce/b2c-commerce/guide/b2c-dev-for-page-designer.html) |
| Page Designer output | 3 MB, below the 10 MB ISML limit | [Development Best Practices](https://developer.salesforce.com/docs/commerce/b2c-commerce/guide/b2c-dev-best-practices.html) |

## Check yourself

- When do page type and component type IDs cause errors because of length?
- Why add the `renderPage` call to the `Page-Show` controller?
- What does `pageMustBeVisible` do in `getPageByCategory`?
- Why does each custom attribute editor run in an iframe?

## Sources

- [Page Designer](https://developer.salesforce.com/docs/commerce/b2c-commerce/guide/b2c-dev-for-page-designer.html)
- [Class PageMgr](https://developer.salesforce.com/docs/commerce/b2c-commerce/references/b2c-script-api/dw.experience.PageMgr.html)
- [Page Designer: Controllers, JSON Types, and Scripts (Trailhead)](https://trailhead.salesforce.com/content/learn/modules/salesforce-b2c-commerce-page-designer-for-sfra-developers/discover-page-and-component-type-controllers-json-and-scripts)
- [Render Pages and Components with ISML, HTML, and CSS (Trailhead)](https://trailhead.salesforce.com/content/learn/modules/salesforce-b2c-commerce-page-designer-for-sfra-developers/render-pages-and-components-with-isml-html-and-css)
- [Development Best Practices](https://developer.salesforce.com/docs/commerce/b2c-commerce/guide/b2c-dev-best-practices.html)
- [isprint Element](https://developer.salesforce.com/docs/commerce/b2c-commerce/guide/b2c-isprint.html)

## About the full unit

The "Core concepts", "Exam traps" and "Worked scenario" sections of this unit, its 14 linked practice questions, and unlimited timed mock exams are included with the B2C Commerce Developer pack (USD $19): https://www.certifyforce.com/practice-exams
