SalesOS

Page layouts

Arrange Lead, Contact, Account, Deal and custom object pages for your organization or for one profile — tab order, the field rail and where installed apps appear.

A page layout arranges a record page; it never changes what someone may see. Org owners, admins and managers edit them under Settings → Page layouts (part of app_platform, Professional). Without a layout, record pages are exactly as SalesOS ships them.

Each layout belongs to one object (LEAD, CONTACT, ACCOUNT, OPPORTUNITY, or a custom object as custom:<apiName>) and either the whole organization or one profile. A page uses the layout of the first of the viewer's profiles that has one, then the organization default, then the built-in page.

What a layout controls

  • Tabs — order, and which are shown. Built-in tabs and installed apps' record.tab extensions can be mixed. At least one built-in tab stays visible; tabs the layout doesn't mention (a tab added in a later release, a newly installed app) appear after the listed ones.
  • Field rail — either the page's built-in field panels (with inline editing), or your own named sections listing fields in your order (read-only). Custom fields are referenced as cf:<apiName>.
  • App side panels — order, visibility and whether they sit above or below the fields.

The editor is fully keyboard-operable: every list has Move up / Move down buttons (and Show / Remove), and each move is announced.

Field-level security

A layout can't reveal a field. When a page resolves its layout, fields the viewer's profile can't read are removed from it on the server, and the record itself still arrives with those fields stripped — the rail only renders values present in the record.

API

Reads are org-wide; writes need org OWNER/ADMIN/MANAGER (or system ADMIN/MANAGER). Session or an API key with *.

GET    /v1/page-layouts?objectType=LEAD
GET    /v1/page-layouts/resolve/LEAD          the layout this user's pages use
GET    /v1/page-layouts/meta/LEAD             tabs, fields, app slots and profiles the editor offers
PUT    /v1/page-layouts                       { objectType, profileId?, name, config }  (create or replace)
PATCH  /v1/page-layouts/{id}                  { name?, config? }
DELETE /v1/page-layouts/{id}                  back to the org default or built-in page
{
  "objectType": "LEAD",
  "name": "Sales team",
  "config": {
    "version": 1,
    "tabs": [
      { "id": "activity" },
      { "id": "app:cminst0123abcd:lead_insights" },
      { "id": "scoring", "hidden": true }
    ],
    "rail": {
      "mode": "sections",
      "sections": [
        { "id": "who", "label": "Who", "fields": ["firstName", "lastName", "email", "title"] },
        { "id": "fit", "label": "Fit", "fields": ["company", "leadScore", "cf:acme_score"] }
      ]
    },
    "sidePanels": [{ "id": "app:cminst0123abcd:signals" }],
    "sidePanelPosition": "bottom"
  }
}

App slots are app:<installationId>:<extensionKey> (from GET /page-layouts/meta/{object}). Limits: 40 tabs, 12 sections, 40 fields per section, 8 side panels; a field may be placed once. An invalid layout is 400 PAGE_LAYOUT_INVALID with every problem in errors.

On this page