/catalogue/<id> on your coaching domain, and it can hold two things:
- Sub-directories — listed explicitly in the directory’s
tags_sub. - Coaching sessions — not listed explicitly. A session appears because its own
tagsmatch the directory’stags_interview_set_filter.
Coaching-platform feature. Directories only render on a coaching portal; they have no effect on the recruiting/interview portal.
The mental model
How a session gets into a directory
A session is listed when all of these are true:
Two edge cases are worth knowing:
tags_interview_set_filter: [](empty array) matches every tagged session — a useful “everything” directory, and an easy accident.tags_interview_set_filter: nullmatches nothing. A brand-new directory created without the field lists no sessions until you set it.
Walkthrough
1
See what already exists
Start from the root and walk down, rather than guessing ids.
2
Create the directory
The
id is the URL segment and cannot be changed later — other directories reference it in their tags_sub. Use lowercase letters, digits and single -/_ separators, and end it with the language code by convention.parent_tag appends the new id to that directory’s tags_sub, so the page is reachable immediately. Omit it and the directory exists but is only reachable by direct link until you add it to a parent.The response returns catalogue_url — the live page — when your merchant has a coaching domain configured.3
Tag the sessions
A new session takes its tags on create. All three creation endpoints accept An existing session is re-tagged with
tags:update_interview. tags is replaced wholesale, so read the current value first and send the extended list:persona-create defaults to portal: "coaching", which is the variant that belongs in a catalogue. A persona created with portal: "interview" is stored as persona_interview and is never listed in the catalogue — it goes through the recruiting invitation flow instead. See Create an interview.4
Verify the mapping
Do not assume the tags matched. An empty
get_catalogue_directory returns the sessions the directory actually lists, applying exactly the rules the live portal applies:matched_sessions almost always means one of four things: the session is still draft, its visibility is merchant_invite/merchant_unlisted, its type is not coaching/persona, or its tags are missing one of the filter’s tags.5
Author a custom page (optional)
By default a directory renders as a plain grid: sub-directories, then sessions. Set Directives must sit alone on their own line — one on a line with other text renders as ordinary text:
content_md and your Markdown takes over the layout instead.One directory per language
The catalogue groups directories bymojito_language_code, and the portal’s directory switcher only offers directories in the visitor’s language. A bilingual catalogue is therefore two parallel trees — sales-coaching-en and sales-coaching-de — each nested under its own language’s root, each with its own sessions. Tags themselves are language-neutral, so the same tag can serve both trees if the sessions are language-specific.
Coaching plans
coach_plan marks a directory (or a session) as a stage of a guided plan — demo, screening, 2nd, 3rd, closing, job-specific, other. Learners then see their progress through those stages wherever a page carries the [plan-progress] directive. Leave it null for anything that is not part of a plan.
Gotchas
Next steps
Create an interview
Create the coaching sessions and role-play personas the catalogue lists.
Review results
Read transcripts and feedback once learners complete a session.