## Overview

Contracts send the customer two messages: the **signature request** and the **signed confirmation**.
Here you customize each one's **body** **per language**, with no AI involved. Anything left untouched
keeps the shipped Conversa Labs message.

Beyond the body, you also edit the message's **auxiliary labels** and configure, **per message type and
per language**, the **approved WhatsApp template** used when the 24h window is closed.

## Prerequisites

- Contracts enabled on the account and administrator permission.
- To configure sending outside the window: a **WhatsApp Cloud** inbox with templates approved by Meta.

## Step by step

1. Open **Contracts → Settings → Messages**.
2. Pick the **language** in the selector at the top. It opens on the **account language** and lists
   **every language the installation enables** (up to 40), showing how many already carry your copy
   ("N of M languages with content").
3. Write the **signature request** and **confirmation** bodies in **Markdown**. Empty = the language's
   shipped message (**Default** badge).
4. Use **variables** (`{x}`) to insert contact, account and contract data. The picker offers **only the
   variables that actually resolve** in that message.
5. Open the **Auxiliary labels** block to adjust the **3** labels (captions and the button text).
6. The **Outside the 24h window (WhatsApp Cloud)** block shows up **open, right under each message
   type**. Pick the approved template **for that type in that language**, map the `{{1}}`, `{{2}}`…
   parameters and fill in the link button, if there is one. If no template exists yet, use **Create from
   my text** to generate one from the body you wrote.
7. Check the **preview** per channel, use **Send test** to validate it on a real conversation, and click
   **Save messages** — including after creating a template, because **creating the template does not
   store the configuration**. **Restore default** removes the customization **on the server**, not only
   on screen.

## Settings & options

### Languages and fallback

Language is a **selector** with every language the installation enables. At send time, Conversa Labs looks
for the copy in this order: the **contact's** language → the same base language (`pt_BR` ↔ `pt`) → the
**account** language → the **shipped default** message.

### Auxiliary labels

There are **3** labels (captions and the button text), in a collapsible block under the body. They follow
the same language and restore rules.

### Outside the 24h window (WhatsApp Cloud)

The block appears **open and inline right under each message type** — it is not a section you have to
expand. The template is **per message type and per language** — request and confirmation each have their
own, instead of a single template for the whole module. It gives you:

- **Pick the approved template** from the catalog.
- **Sync from Meta** and **Create from my text** are **always visible**. When the action is unavailable,
  the button appears **disabled with the reason written next to it**: the inbox is not WhatsApp Cloud,
  the account does not have the **WhatsApp Inbox Suite**, or your profile does not manage inboxes.
- **Sync from Meta** refreshes the list of approved templates.
- **Create from my text** generates the template **from that type's text in that language**, submitting
  it to Meta as a **UTILITY** template, converting each `{{ variable }}` into `{{1}}`, `{{2}}`… and
  pre-mapping them. With no text to generate from, the button is disabled and the screen asks you to
  **write the text first**.
- After submission the template is **not approved yet**: it appears in the selector marked **awaiting
  approval** and only starts delivering once Meta approves it and you sync. Submitting again with the
  **same name replaces the pending draft** instead of failing.
- **Creating the template does not save the configuration** — click **Save messages** to store the
  mapping.
- The **`{{n}}` parameter mapping** and the **link-button** field — ideal for taking the customer
  straight to the signing link.
- **Native "Sign" button**: the signature request goes out with a **real button** on WhatsApp (Cloud and
  Web). Before, the link went out as a **loose second line of text** — the button the screen promised
  never reached the customer. Turn it off under **Delivery → Native buttons**; the button text and the
  line above it stay editable under **Auxiliary labels**, per language.
- **Delivery**: picks **which WhatsApp inbox's** approved-template catalog is browsed. Everything that
  depends on that inbox — why syncing/creating is unavailable, how many templates were filtered out, the
  link to manage them, and the **Sync from Meta** button — is stated **once** there, not repeated under
  every message. The send still
  leaves through the conversation's own inbox.

Templates whose **header requires media or a variable** are not listed here — this send has no way to
fill that header — and the screen states **how many were left out**. They remain usable from the inbox's
own **Templates** tab, linked directly from this screen.

Notes: **WhatsApp Web (WazMeow) has no 24h window** (the block does not even appear); **360dialog** can
select a template but cannot create one; Meta matches **name + language + approved**, so a template in
the wrong language is flagged on screen and would be rejected on send.

### Preview and test send

The preview is **rendered server-side**, per channel, and shows only the channels the account actually
has. It also displays the **resolved out-of-window template**, with the values each parameter will carry.
**Send test** delivers the message to a chosen conversation honouring the 24h window: with the window
closed and no template configured, the test is **skipped with the reason stated on screen**.

### Contract variables

Beyond **contact**, **account**, **conversation**, **inbox**, **agent**, **CRM** and **organization** —
which now really render — these messages offer the contract's own data:

| Variable | Replaced with |
|---|---|
| `{{ contract.title }}` | Contract title |
| `{{ contract.status }}` | Current status |
| `{{ contract.signature_tier }}` | Required signature tier |
| `{{ contract.expires_at }}` | Deadline to sign |
| `{{ contract.counterparty }}` | Counterparty |
| `{{ contract.sign_url }}` | Signing link |
| `{{ contract.verification_url }}` | Document verification link |

### Relationship with the module settings

These messages are distinct from the **module settings** (default signature, retention, A1 certificate) —
here you only change the customer-facing copy.

## Tips, limits & best practices

- Markdown per channel: attachments drop on LINE/TikTok/X; raw HTML disappears in email/widget; `*bold*`
  on WhatsApp shows as a pair of asterisks.
- Configure the out-of-window template **in the same language** as the body — they are pairs, not a
  single global setting.
- In the signature request, always include `{{ contract.sign_url }}` (or use it in the template's link
  button) and the deadline via `{{ contract.expires_at }}`.
- After "Create from my text", the template sits **awaiting approval** at Meta — use **Sync from Meta**
  to see when it is approved and starts delivering.

## Troubleshooting

- **It went out as the default:** the type was empty (**Default** badge) in that language, or the
  contact's language has no copy and the fallback reached the shipped default.
- **Nothing sent outside the window:** confirm the **approved template** for that type **in that
  language**.
- **The template shows as flagged:** it is in a different language from the message — swap it for an
  approved one in the right language.
- **"Create from my text" is disabled:** the reason is written next to the button — the inbox is not
  WhatsApp Cloud (on 360dialog you pick an already-approved template), the account does not have the
  WhatsApp Inbox Suite, your profile does not manage inboxes, or there is no text in that type and
  language to generate the template from.
- **I created the template but it doesn't show up / isn't used:** right after submission it sits
  **awaiting approval** — it only delivers once Meta approves it and you use **Sync from Meta**. Also
  confirm you clicked **Save messages**: creating the template does not store the configuration.
- **I can't find a template in the list:** templates with a **media header or a header variable** are not
  listed here; use them from the inbox's own **Templates** tab.
- **The test send was skipped:** the conversation was outside the 24h window and the message had no
  template configured — the screen states the reason.

## See also

- Contracts module settings
- [WhatsApp Inbox Suite: Templates, Flows and Calls](/hc/ajuda/articles/inboxes-channels-whatsapp-inbox-suite-en)