Dentolize · Send Template in Expired Conversation Walkthrough
On this pageWhat users will askWhat support can't fix

For Support

What users will ask

"I don't see a Send Template button on this expired conversation." Check, in order:

  1. Does the conversation actually show "Conversation Expired"? The button only renders when expired is true

(packages/clinic-mobile/src/components/dashboard/WhatsApp/conversationMessages/WhatsAppChatHeader.js:38-53; packages/clinic-web/src/components/dashboard/officialWhatsapp/conversations/Chats.js:142-148).

  1. Does the user have the SEND_WA permission? On web the button is rendered but disabled without

user.permissions.sendWhatsApp (packages/clinic-web/src/components/dashboard/officialWhatsapp/conversations/SendTemplateButton.js:84) — on mobile, check the user's permission group for WhatsApp sending.

"The message I want isn't in the picker." The picker only shows messages with an approved WhatsApp template attached (packages/server/src/resolvers/queries/appointmentQueries.js:674-676). If a message doesn't show up:

  • Confirm it has a WhatsApp template attached at all (Settings → Messages → the message → its WhatsApp template

section).

  • Confirm that template's status is APPROVED, not PENDING or REJECTED — template approval is a Meta review

step and can take time or get rejected; that status isn't something Dentolize support can override.

"I picked a message but Send is greyed out, and there's a red line under the preview." That means the message contains a variable besides the patient's name (e.g. @DATE, @DOCTOR_NAME, @AMOUNT) — the red text lists exactly which ones. This is by design: there's no data source for those variables outside an automated reminder's context, so the message can't be sent this way at all. The fix is to pick or create a message that only uses @PATIENT_NAME / @FIRST_NAME, not to try to force the current one through.

"I got an error when I hit Send." The server re-validates everything the picker already checked, plus connection state, and returns one of these (all defined in packages/server/src/resolvers/mutations/actions/officialWhatsApp/sendWhatsappTemplate.js):

  • WhatsApp Not Connected — the clinic's Official WhatsApp isn't linked to a Meta phone number (Settings → WhatsApp →

Login with Facebook). Nothing can be sent, template or otherwise, until this is done.

  • Message Not Found — the message was deleted or belongs to a different company between selecting it and sending

(rare, a race condition rather than a routine error).

  • Template Not Approved — the template's status changed (or was never approved) since the picker loaded it.
  • Template Needs Variables — same rule as the greyed-out Send button, re-enforced server-side; if this fires

without the button being greyed out, that's a bug worth escalating.

  • Not Authorised — the conversation itself wasn't found or belongs to a different company; like `Message Not

Found`, this points at a race condition (e.g. the conversation was deleted) rather than routine usage.

  • Any other message is WhatsApp's own Graph API error, passed through — e.g. the template was deleted on Meta's side,

or the recipient's number is invalid. These need to be investigated on the WhatsApp Business Manager side, not in Dentolize.

All of these are shown to the user directly (they're tagged [Client Error] in the code, which both apps' error handlers strip before displaying) — so what the user reports seeing on screen should match one of the messages above, with the [Client Error] tag already removed.

"Did the message actually send?" Even if WhatsApp itself rejects it, Dentolize still logs the attempt to the Communication table with the failure reason (packages/server/src/resolvers/mutations/actions/officialWhatsApp/sendWhatsappTemplate.js:113-141) — so "did we try to send this" is always answerable from the communications log, separately from "did WhatsApp accept it."

What support can't fix

  • Template approval status — that's between the clinic and Meta.
  • Whether a specific patient's number can receive WhatsApp messages at all — that's WhatsApp/Meta's delivery layer.
  • Adding new fillable variables to this flow — by design, only the name is fillable outside the automated reminder

context; this isn't a bug to report, it's the intended restriction (see Which Templates Qualify).