Configure the contract messages

Conversa Labs

Conversa Labs

Last updated on Jul 22, 2026

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