← All playbooks · Raw API
people
# People — OM1
Playbook for **Person** entries — team profiles, leadership, and article authors.
## Routing
| Concept | Value |
|---------|-------|
| People index | **Disabled** (`enablePeopleIndex: false`) — no `/team/` listing page |
| Profile URL | `/team/{slug}/` |
| People base (constants) | `/team` |
Read `cms-edit://customer/routing` for live flags (`enablePerson`, `enablePeopleIndex`).
## When to use
- Create or update a **person** entry (leadership, author, speaker)
- Link `authors` on resource articles
- Edit bios shown in **Team grid** or **Leadership** collections on marketing pages
- Batch import via `task-authors-import`
Person **profile pages** render from Person entries — they are not marketing **page** entries.
## Required fields
| Field | Notes |
|-------|-------|
| `name` | Display name |
| `slug` | URL segment — lowercase, hyphenated (`firstname-lastname`) |
| `jobTitle` | Required in CMS |
## Recommended fields
| Field | Notes |
|-------|-------|
| `bio` | Rich text — full profile page body (**Person bio** component reads this) |
| `media` / `featuredImage` | Portrait photo — profile hero and team cards |
| `indexed` | `false` for author-only stubs without a public profile |
## Profile page structure
Public `/team/{slug}/` uses:
| Region | Type | Role |
|--------|------|------|
| Hero | **Person hero** | Name, title, portrait from person fields |
| Body | **Person bio** | Bio RTF from person entry |
Preview attrs map to `name`, `jobTitle`, `bio`, `featuredImage` / `media` on the person entry.
## Update portrait
Read `cms-edit://customer/task-media-reuse-and-upload` for hosted upload rules.
```bash
cms-edit open --id <person-entry-id>
cms-edit asset set @root media <new-asset-id>
cms-edit diff && cms-edit save
cms-edit preview urls /team/{slug}/
```
## Team grid on marketing pages
Solution and about-style pages embed Person entries in **Team grid** collections — not separate page entries.
```bash
cms-edit open /our-solutions
cms-edit snapshot
cms-edit open <personEntryId> --id
cms-edit set @root name "Full Name"
cms-edit set @root jobTitle "Title"
printf 'Bio paragraph.\n' | cms-edit rtf @root bio --markdown -
cms-edit diff && cms-edit save
```
## Linking authors to articles
```bash
cms-edit open --article-slug <slug>
cms-edit set @root authors <personId1>,<personId2> --links
cms-edit diff
cms-edit save
```
Link person entries even when `indexed: false` if they appear in bylines.
## Batch import
```bash
cms-edit create person-from-json --file authors.json --dry-run
cms-edit create person-from-json --file authors.json --if-not-exists
```
See `cms-edit help person-from-json` and `task-authors-import`.
## Reference people
| Slug | Notes |
|------|-------|
| `/team/richard-gliklich/` | Founder / leadership |
| `/team/joseph-zabinski/` | Author / speaker (webinars) |
Clone slug patterns from existing indexed profiles before creating new entries.
## Out of scope
- **Marketing page** content stacks for a people directory — `enablePeopleIndex` is off; there is no `/team/` index page to edit as a page entry
- Creating duplicate **Person hero** / **Person bio** components in article `content` — those read from the person entry on profile routes
## Publish handoff
`save` creates drafts only — publish in Contentful UI when ready.