← All playbooks · Raw API
pages
# Pages — OM1
General playbook for **marketing pages** (not resource articles or team profiles). Use specialized playbooks when the page type is known:
| Page type | Playbook |
|-----------|----------|
| Solutions, platform, audience, research programs | `cms-edit://customer/solutions-pages` |
| Resource article (blog, case study, publication, etc.) | `cms-edit://customer/resource-article-pages` |
| Ebook (topicless URL) | `cms-edit://customer/ebook-pages` |
| Events & webinar landing pages | `cms-edit://customer/events-webinars-pages` |
| Team profile (Person entry) | `cms-edit://customer/people` |
| Article routing & tags (shared rules) | `cms-edit://customer/articles` |
| Legal / policy | `cms-edit://customer/legal-policy-pages` |
## When to use
- New or updated pages under `/`, `/our-solutions/`, `/our-platform/`, `/who-we-help/`, `/research-programs/`, `/contact-us/`, `/about/`
- Cloning structure from an existing page before tailoring copy
- Importing a Google Doc brief into CMS components
Read `cms-edit://customer/routing` and `cms-edit://customer/production-site` before editing. Fetch live markdown with `.md` appended to the public path (e.g. `https://www.om1.com/our-solutions.md`).
**Homepage:** CMS slug is **`index`** (public URL `/`). Open with `cms-edit open /` or `--page-slug /index`.
**Legacy URLs:** `/solutions/*` redirects to `/our-solutions/` — do not create new pages under `/solutions/`.
## Templates
```bash
cms-edit list --type template
```
| Template | Use for |
|----------|---------|
| **General page template** | All marketing pages (verify ID with `list --type template`) |
Inspect with `cms-edit peek --page-slug /our-solutions`. Template supplies nav + footer — page body goes in `content` (and `topContent` when used).
## Reference pages (clone sources)
| Public path | Category | Notes |
|-------------|----------|-------|
| `/` | Home | Hero, platform animation, solutions cards, stats, related resources |
| `/our-solutions/` | Solutions hub | Hero, icon cards, feature blocks, CTAs |
| `/our-solutions/clinical-registries/` | Solution L2 | Nested solution detail — clone for new solution pages |
| `/our-platform/` | Platform | Platform positioning, linked visuals, feature blocks |
| `/who-we-help/life-sciences/` | Audience | Audience landing — life sciences |
| `/research-programs/trailblazer-real-us/` | Research program | Program landing page |
| `/contact-us/` | Utility | HubSpot or Pardot form external component |
| `/privacy/` | Legal | Legal rich text — see `legal-policy-pages` |
Use `cms-edit://customer/task-clone-page` when the new page should mirror an existing layout.
```bash
cms-edit peek --page-slug /our-solutions
cms-edit peek --page-slug /our-platform
```
## Document section → component mapping
Map brief sections to **registered** types (see `components-index` / `collections-index`):
| Brief section | Component / collection | Notes |
|---------------|------------------------|-------|
| Hero with visual | **Hero**, **Simple hero**, or **Masked hero** | Home often uses **Hero** |
| Article listing band | **Article listing hero** | Resources hub-style pages |
| Split image + copy | **Feature block: Image left/right** or **Content block: Image left/right** | Narrow variants for tighter layouts |
| Text band | **Basic text** or **Centered block** | |
| Callout / highlight | **Callout** or **Callout: Rounded** | |
| Logo strip | **Logos** or **Logos: Static** | |
| Icon feature grid | **Icon cards**, **Icon pills**, or **Graphic cards** | |
| Stats row | **Stats** collection | |
| Steps / process | **Steps grid** collection | |
| Team / leadership | **Team grid** collection | Person entries as cards |
| Related resources | **Related articles** or **Related articles: 3** | Auto-hydrated — edit heading/links only |
| Research papers | **Research papers** collection | |
| Platform demo | **Platform animation** collection | |
| Primary CTA | **CTA: Large** or **CTA: Small** | |
| Contact / demo form | **HubSpot form** or **Pardot** external | `/contact-us/` |
| Legal body | **Legal rich text** | Policy pages — see `legal-policy-pages` |
| Fallback block | **Generic** | When no specialised type fits |
Prefer **reusing existing component entries** when copy is unchanged. Create new entries when headings, visuals, or links differ.
## Creating pages
1. Read `cms-edit://customer/tasks-index` → `task-create-page` or `task-create-from-document`
2. `cms-edit index sync` if templates or assets may be stale
3. Pick **General page template**; set `slug`, `title`, `description`, `featuredImage`
4. Build content stack with `add` + `set` / `rtf`, or `create from-json --dry-run --strict` first
5. After each `add`, set `heading` then `cmsLabel` (pattern: `{Section} — {Page name}`)
6. `diff` → `save` (draft only)
**Test / agent pages:** `indexed: false`.
## After save — preview
```bash
cms-edit preview urls <slug>
```
Open **staging** (`devBaseUrl` in `project.json`) for drafts. Production shows published content only.
## Out of scope
- **Resource article** detail pages — use `resource-article-pages`, `ebook-pages`, or `events-webinars-pages`
- **Person profile pages** at `/team/{slug}/` — use `people.md` and Person entries
- **Tag listing pages** under `/topics/` or `/resources/{type}/{tag}/` — taxonomy-driven; do not create duplicate page entries
- **Download URLs** (`/download/...`) — asset delivery routes; not CMS pages
## Publish handoff
`save` creates drafts only — publish in Contentful UI when approved. See `cms-edit://customer/task-publish-handoff`.