> ## Documentation Index
> Fetch the complete documentation index at: https://docs.custral.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Presentation Templates

> Reusable deck snapshots with typed variables that fill from a record.

## Overview

A presentation template is a saved snapshot of a whole deck plus a typed
**variable schema**. When you instantiate a template against a
[record](/data/records/overview), Custral substitutes `{{key}}` tokens in the
slides with that record's values, so one "Customer QBR" template produces a
branded, pre-filled deck for any customer.

## How it works

Templates are managed at **Settings → Presentations → Templates**. Each row
shows the template name, how many variables it declares, and a description.

A template carries two things:

* **A snapshot**: the deck's slides and their content, captured when you
  save. Editing a deck created from a template never changes the template
  itself (it is a snapshot, not a live link).
* **A variable schema**: a list of variables, each with a key, a label, a
  type, a required flag, and an optional default value. Inside slide text you
  write `{{key}}`, and you add a matching variable here so Custral knows how
  to fill it.

When you create a deck from a template, each variable's key is matched
against the chosen record's matching property. Any explicit values you supply
take precedence over the record's values. Resolution rules:

* **Required** variables that resolve to nothing block creation, and the
  unresolved keys are reported back so you can fix them.
* **Optional** variables fall back to their default value (or an empty
  string).
* **Unknown** tokens (`{{...}}` with no matching variable) are left in
  place as-is.

Variable types are: text, number, date, email, phone, select, status, and
user.

## Using it

<Steps>
  <Step title="Create a template">
    On the Templates screen, click **New template**, give it a name, and
    optionally a description.
  </Step>

  <Step title="Add variables">
    Open the template and click **Add variable**. Set the **Key** (e.g.
    `customer_name`), a **Label**, a **Type**, whether it's **Required**, and
    an optional **Default**. Use the same `{{key}}` in your slide text.
  </Step>

  <Step title="Create a deck from the template">
    When you create a deck from the template against a record, Custral fills
    the `{{variable}}` tokens from the record's matching properties.
  </Step>
</Steps>

<Tip>
  Coming from an older deck? Use **Migrate older presentations** on this
  screen to convert each slide to the current format. The migration is
  non-destructive. The original content stays in place.
</Tip>

## Troubleshooting

| Symptom                                      | Likely cause                                         | What to check                                                                                      |
| -------------------------------------------- | ---------------------------------------------------- | -------------------------------------------------------------------------------------------------- |
| Deck creation fails citing missing variables | A **required** variable resolved to nothing          | The reported keys exist as properties on the record, or give them a default and mark them optional |
| `{{key}}` shows literally in the slide       | No matching variable, or the variable is empty       | A variable with the exact same key exists in the template                                          |
| Variable filled with the wrong value         | The variable key doesn't match the record's property | The variable key matches the target record's property exactly                                      |
| Optional variable came out blank             | No value on the record and no default set            | Add a **Default** value on the variable                                                            |
| Template can't be saved                      | Name is empty                                        | The Name field is filled (required)                                                                |

<Note>
  When reporting an issue, include the request ID shown in the error message.
  It helps our support team trace what happened.
</Note>

## Related

<CardGroup cols={2}>
  <Card title="Presentations Overview" icon="presentation-screen" href="/blocks/presentations/overview" />

  <Card title="Themes" icon="palette" href="/blocks/presentations/themes" />

  <Card title="Layouts" icon="table-layout" href="/blocks/presentations/layouts" />

  <Card title="Records" icon="table-list" href="/data/records/overview" />
</CardGroup>


## Related topics

- [Presentation](/data/properties/communication/presentation.md)
- [Slide Layouts](/blocks/presentations/layouts.md)
- [Presentations](/blocks/presentations/overview.md)
- [Presentation Themes](/blocks/presentations/themes.md)
- [Templates](/comms/email/templates.md)
