The Template Model
Templates are composed with Liquid's {% include 'name' %} — the layout includes the body, the body includes each response, a response includes the reference cards, and so on. Override any name in that tree and everything that includes it picks up your version.
The Templates You'll Reach For Most
| Template name | Renders |
|---|---|
layout | The outer container (floating button, main panel, search, preview). |
search | The input box, send/stop button, and placeholder. |
body | A single exchange — the user's question plus the assistant's response. |
assistantResponse | One assistant answer: the reply markdown, reactions, and references. |
userQuery | The visitor's question bubble. |
highlighted | A single reference card (the citation shown with an answer). |
hints / hint | The suggested-question cards shown before the first query. |
welcome / description / avatarInfo | The greeting, description, and avatar/name header. |
loading / error / noResults | The skeleton loader, error, and empty states. |
dynamicForm + fields/* | Lead-capture forms and each field type. |
Start from the default, don't start from scratch
In the Advanced editor, open a template to see its current Liquid, copy it, and change only what you need. You keep all the wiring (handlers, classes, data attributes) that the rest of the assistant depends on.
Composition Example
A response template includes the reference card for every source it used:
{% for reference in result.payload.references %}
{% include 'highlighted' %}
{% endfor %}
Override highlighted and every answer's cards change — everywhere, at once.