Skip to main content

Coaching portal configuration

Generates the document imported by Configuration → Branding & Configuration → Import configuration → Coaching portal. This is the largest of the three documents: it covers the portal’s vertical, its feature toggles, its coaching plan, and the home content for every language. Every field is optional: omitted fields keep their current value, and so do null and empty strings (an import cannot clear a field). Languages are only ever added, never removed, so an import cannot delete existing translated content. Every pages[].language is enabled too, even when languages does not list it. The import dialog checks the document first (a dry run) and lists what will change. Apply then saves everything at once: the portal fields straight to the portal, the built-in page content as drafts. Apply is blocked while Branding & Configuration has unsaved changes of its own. The same document can also be sent through the API or MCP.
Since the Pages editor (Configuration → Consumer portal), the support page and the signed-in home are built-in pages. This import still accepts support_page_markdown and signed_in_home_blocks, but writes them into those pages’ drafts (see Where each field goes). For additional pages, a menu, a site footer or a theme, use the portal pages import.

Document

kind is optional, but when present it must be "coaching-portal"; a document declaring another kind is refused.

Top-level fields

use_case and labels

use_case picks a vocabulary preset; labels overrides individual words on top of it. Prefer the preset and override only where the organisation genuinely uses different terminology. Overrides are portal-wide, not per language, so if the portal runs several languages, either leave labels out and let the preset translate, or accept that the override text appears in every language.

coaching_plan_tags: must be live directories

A directory only reaches learners when it is visibility: public and status: active. A plan step pointing at a draft or archived directory is silently dropped from the plan: the learner sees a shorter plan with no explanation. Only reference directories you have confirmed exist and are active (see Build a coaching catalogue). If you cannot confirm, leave coaching_plan_tags out entirely: with no plan configured the block is hidden rather than shown half-empty.

Where each field goes

Page blocks

public_home_blocks renders the signed-out marketing home page. signed_in_home_blocks renders at the top of /home after sign-in; keep that one short, it sits above the learner’s coaching. Once a home page (slug "") is published in Pages, it replaces public_home_blocks: importing them afterwards changes nothing a visitor sees. For a customised home page, import the page itself with the portal pages import. Each block needs a type and should carry an id, unique within its list and stable between imports (a missing id is generated as <type>-<index>-imported). A block with an unknown type is skipped and reported; the rest of the import still applies. This document accepts the ten home-page block types below; the portal pages import accepts more (cards, tabs, video, …). Every block may also carry enabled (false hides it), tone (default, muted, dark, accent: the section background), anchor (id for /#anchor links) and className (hook for a theme). Markdown fields are rendered with a restricted renderer: headings, bold, italic, lists, links (see Format content with Markdown). In a hero title, wrapping a word in _underscores_ renders it as the italic accent word. Images must be URLs that are already hosted. The importer uploads nothing.

Import through the API or MCP

Send the document in documents of POST /portal-configuration-update with "kind": "coaching-portal", first with "dry_run": true to see what would change, then with false to apply. GET /portal-configuration-get?sections=coaching-portal returns the current document to edit and send back. It leaves out the built-in page texts: read and change _support and _signed_in_home in the coaching-pages document instead, with the portal pages import. The MCP tools are get_portal_configuration and update_portal_configuration. publish does not apply here: the built-in page drafts are never published by an import. The request fields and a curl example are on the Branding page.

Rules

  • Put the primary language first in pages[].
  • Blocks render in array order; that order is the page.
  • A hero ctaHref of /home sends a signed-out visitor into sign-up. Use that unless there is a reason not to.
  • homepage_pricing_enabled shows the Pricing link in the header (and a pricing section on a home page that has no blocks yet). A pricing block always renders the price table, so add one, or switch the link on, only when the portal actually sells credits.
  • Tell the operator that the support page and the signed-in home land as drafts in Pages and need publishing there.