---
title: Channel window and WhatsApp templates
summary: A channel lets the business answer for a day after the client's last message. After that Instagram and Messenger take no reply from Talemo, and WhatsApp takes only a template approved by Meta, which Talemo uses for visit confirmations, reminders and cancellations.
tools: [talemo_get_channel, talemo_list_channel_templates, talemo_set_channel_template, talemo_send_message]
related: [channels-and-connections, who-answers, conversation-and-person, handoff-to-people, draft-replies]
search: [24 hour window, message templates, WhatsApp Business API rules]
---

# Channel window and WhatsApp templates

## The window

The business answers a client in the channel the client wrote from, and only inside
the channel window: a day after the client's last message. A new message from the
client opens the window for another day.

- **Instagram and Messenger.** After a day the window is closed: "You can't answer
  from here — open the chat in the Instagram app" (or in Messenger of the page).
  Talemo does not ask Meta for the right to answer later.
- **WhatsApp.** After a day WhatsApp takes only a template, and a free-text reply
  cannot be sent from Talemo. A reply from the WhatsApp Business app on the business
  phone still reaches the conversation.
- **A client who has not written since the channel was connected.** Talemo cannot
  start a chat with such a client.

The conversation says when the window is closed. A reply that cannot go out stays in
the conversation as "Not sent: {reason}", and **Send again** is offered when the
reason may pass and the window is still open. If the client wrote, nobody answered
and the window closed, the case "The {channel} window with {name} closed" waits in
[Waiting for you](../work/item-kinds.md) until the client gets an answer.

WhatsApp messages from Talemo need a payment method at Meta, otherwise they do not go
out. Meta charges for messages outside the day by its own rates. That is Meta's bill to
the salon's account, and it is not taken from the Talemo balance.

## Templates

Outside the window WhatsApp lets the business write first only with a template that
Meta has approved. Talemo has three, **Booking confirmation**, **Visit reminder**
and **Booking cancellation**; each has a Talemo text in Russian and English, and Talemo
submits them itself.

**Phone and messengers → Message templates** lists each template, the clients it is
for and its status at Meta: approved, under review, rejected, paused, turned off,
waiting to be sent or not accepted. A text that Meta counts as advertising is not sent.

The assistant writes the words of a template, not a person: the page has no field for the
text. **Write with the assistant** (a button in the row of a template that has no text or
was rejected, a menu item on a template with a text) sends the assistant a request. It
reads the sample, the Talemo text in Russian and English, and writes the template in the
language of the business as a plain service message about the visit, with no discount,
promotion or link: Meta takes such a text for advertising and does not approve it. The
rules of Meta for the text:

- the confirmation and the reminder have five fields: **Name**, **Service**, the
  specialist (**Master**, **Trainer** or another word of the industry), **Date and time**
  and **Where**; the cancellation has three: **Name**, **Service** and **Date and time**,
  because the cancelled visit has let the master and the place go;
- each field stands in the text once, the text cannot start or end with a field, two
  fields cannot stand side by side, and the whole text is at most 1024 characters;
- with the text the assistant sends an example: a value for each field, one line, in the
  language of the template. Meta shows it in its review.

Before anything goes out the assistant shows a card: the text read with the example, as
the client will see it, and the line "It will go to Meta for review. Until Meta approves it,
the previous text keeps working." **Allow** (in the app **Send to Meta**) sends the text to Meta, and
until the person allows it nothing is sent. The card appears in every way of working of
the assistant: the text goes to Meta and to clients.

A new text works after Meta approves it, and the previous one works meanwhile. Meta
reviews each language separately. **Return the Talemo text** goes back to the standard
words, and the assistant is not needed for it. Talemo has its own text only in Russian
and English; for another language the page says above the list that Talemo has no text
there, and the assistant writes the template.

If Meta does not approve a text, the case "Meta didn't approve the booking
confirmation in {language}" appears. **Fix with the assistant** sends the assistant a
request to read the reason and propose a fixed text; in the app it opens the chat with a
card of that template. Until a text is approved, clients with that
language on their card get no confirmation, reminder or cancellation once a day has passed since
their last message. Clients in other languages still get theirs.

## Confirmations, reminders and cancellations from Talemo

Talemo sends them to the card's main contact (see
[Contacts of a card](../clients/contact-points.md)). Inside the window the message
is plain text. Outside it WhatsApp gets the approved template in the language of the
card, and Instagram gets nothing. Messenger never gets them: it gives no address that can
be the main contact. The visit shows the reason, for example
"the chat window has closed: the client wrote more than a day ago". A cancellation of a
visit goes the same way, with the template **Booking cancellation**; whether it is
written at all depends on who cancelled the visit (see
[Visit notices](../booking/visit-notices.md)).

## Who can do it

Asking the assistant to write a template and returning the Talemo text need the right to
change channels. For a channel of the whole business the role must cover every branch.
The text of a template is written only by the assistant built into Talemo for the staff: a
text sent by a person, a business key or a program connected from outside is refused with
status 403 and code `channel.template_by_assistant`, and so is a `dry_run`.
`talemo_list_channel_templates` reads the templates and cannot change them.

## Tools and refusals

- `talemo_send_message` writes to a client in their conversation (`conversation_id`, `text`), in the channel they wrote from. The answer says whether the message is queued, and its outcome lands in the conversation. A reply by a person pauses the online admin in that conversation until someone returns it, and makes the person responsible for the conversation. Before a reply goes to a client, show the person the exact text and ask once.
- A message goes only inside the channel window: more than a day after the client's last message, or before they ever wrote, Instagram and Messenger are refused with status 409, code `channel.window_closed`, and WhatsApp with `channel.template_required`, because only a message template goes there. These are answers, not failures: tell the person the window is closed and that the answer can go from the channel's own app, or, for WhatsApp, with a template.
- A channel that has to be connected again is refused with `channel.revoked`, a client the channel cannot reach with `channel.recipient_unreachable`, and WhatsApp without a payment method at Meta with `channel.payment_missing`.
- With `step` and `options` the options of the step's field go with the text as buttons: quick replies in Instagram and Messenger, buttons or a list in WhatsApp, numbered lines where buttons do not fit. `talemo_get_conversation` shows under the message which options went and which one was picked.
- In a conversation in drafts mode the online admin sends nothing itself: with `dry_run` it is shown what would go, and the message waits as a draft for a person to send, change or drop.
- `talemo_get_channel` shows whether the channel is connected, the assistant and its mode, and for WhatsApp the payment method and the free windows of the month.
- `talemo_list_channel_templates` shows the message templates of a WhatsApp channel by language: the confirmation, the reminder and the cancellation of a visit, the text that works now, the edit waiting for Meta, and what Meta said — the status, the category and the reason. For each kind it has a sample: the Talemo text in Russian and English with the fields numbered and what stands under each. This connection only reads the templates: the assistant of the staff writes the text.
- `talemo_set_channel_template` writes the text of a template (`connection_id`, `kind`, `language`, `text`, `example`) and sends it to Meta; only the assistant of the staff has it, and it is not listed to a business key, to Claude or to ChatGPT. Call it with `dry_run` first: `latest.preview` of the answer is the text as the client will read it. The person always approves a card with that text, whatever way of working they chose, so do not ask them to type yes, and until they allow it nothing is sent. `example` is one value for each field, one line, without `{{`. Without `text` the text of Talemo comes back: only Russian and English have one, and another language is refused with `channel.template_invalid` and the rule `kit_missing`. A text against the rules is refused with `channel.template_invalid`, `rule` (`length`, `variables`, `edge` or `adjacent`) and `kind`: fix the text and call again. An example that does not fit is `request.body_invalid` with `field` `example`. The same text with the same example makes no new version, unless Meta rejected, paused or turned off the last one or it did not go out: then it goes again. A person without the right to change channels gets `role.forbidden`.
