The WhatsApp 24-Hour Session Window
Summary
Section titled “Summary”Meta’s WhatsApp Business API enforces a 24-hour session window on every conversation. Once a customer messages your garage, you have 24 hours to reply with any free-form message. After the window closes, you can only send pre-approved template messages. This is a Meta policy, not a Torqueflow rule, and it applies to every WhatsApp Business account worldwide. This article explains how the window works, what you can and can’t send, and how Torqueflow’s bridge SMS keeps conversations alive when the window closes.
Prerequisites
Section titled “Prerequisites”- WhatsApp is connected to your garage (see
settings/whatsapp-settings). - You understand the basic messaging inbox layout (see
communications/messaging-inbox).
Understand what the 24-hour window is
Section titled “Understand what the 24-hour window is”- Meta calls this the customer service window. It opens the moment a customer sends any WhatsApp message to your business number and closes exactly 24 hours later (unless the customer sends another message, which resets it).
- Inside the window, you can send free-form messages: text, images, documents, location, audio, anything. No pre-approval required.
- Outside the window, you can only send template messages - messages that Meta has pre-approved for specific use cases (appointment reminders, order updates, etc).
- The window is per conversation, not per customer. Different customers have different windows running independently.
Check if the window is open
Section titled “Check if the window is open”- Open a conversation in Messages.
- The thread header shows a WhatsApp channel badge. For WhatsApp conversations, a window status indicator appears next to it:
- Open (green) - inside the 24-hour window. Free-form messages allowed.
- Expired (orange or red) - outside the window. Template messages only.
- The reply composer at the bottom of the thread reflects the window state:
- Window open: normal text input. Type and send.
- Window expired: the text input is disabled and a template picker appears instead. Pick a template to send.
Send a free-form reply (window open)
Section titled “Send a free-form reply (window open)”- Type your message in the composer and press Send.
- The message is delivered to WhatsApp as a session (free-form) message.
- Delivery status shows as pending → delivered → read in the thread.
Send a template message (window expired)
Section titled “Send a template message (window expired)”- The composer shows a Template picker instead of a text input.
- Choose from your list of pre-approved templates. Templates are configured per organisation and submitted to Meta for approval before they become usable.
- Some templates have placeholders (for example,
{customer_name}or{appointment_time}) that you fill in before sending. - Click Send. Meta delivers the template as an outgoing notification.
- Important: sending a template does not open a new 24-hour window. Only a customer message opens the window.
Understand what happens when the AI hits a closed window
Section titled “Understand what happens when the AI hits a closed window”When the AI or a staff member tries to send a free-form reply to a conversation with an expired window, Torqueflow does not silently fail. It does one of two things:
- Bridge SMS (most cases) - Torqueflow sends a single SMS to the customer’s phone with a re-engagement link:
- Example:
AcmeMotors: Update for you. WhatsApp: wa.me/447700900123 Portal: tflow.link/abc12345 - The SMS fits inside 160 characters (one SMS segment) to keep costs low.
- The
wa.melink reopens WhatsApp on the customer’s phone. Any message they send through that link opens a fresh 24-hour window, and the AI picks up with full context from the entire conversation history. - The
tflow.linkportal magic link is a fallback. If the customer doesn’t have WhatsApp, they can still tap this link, authenticate automatically, and continue the conversation from the customer portal.
- Example:
- Silent inbox routing (credit-exhausted orgs) - if the AI is in credit-exhaustion degradation and the window has closed, Torqueflow does not even send the canned reply (Meta would reject it). The inbound message is routed silently to the inbox and staff can respond with a template.
See troubleshooting/portal-messaging-fallback for the full bridge SMS flow and dedup rules.
Know the bridge SMS dedup rule
Section titled “Know the bridge SMS dedup rule”- Only one bridge SMS per conversation per 24 hours. If the AI or staff try to message an expired window multiple times in quick succession, only the first attempt sends a bridge SMS. The rest route silently.
- After 24 hours (and no customer response), a new bridge SMS is allowed.
Reset the window by asking the customer to message you
Section titled “Reset the window by asking the customer to message you”- If you urgently need to contact a customer outside the window and don’t have a suitable template, the simplest workaround is a bridge SMS (which sends automatically on any attempted AI/staff message).
- Alternatively, ask the customer to send any message on WhatsApp - the moment they do, a new window opens and you can reply free-form again.
Expected Outcome
Section titled “Expected Outcome”- You can tell at a glance whether a WhatsApp conversation is in-window or expired.
- You know which replies require a template and which can be free-form.
- You understand why the reply composer sometimes shows a template picker instead of a text input.
- You know that Torqueflow never drops a message on the floor when the window closes - it bridges via SMS.
Troubleshooting
Section titled “Troubleshooting”Problem: Reply composer shows “Window expired” but the customer messaged me this morning. Cause: The window tracks the customer’s last inbound message to your business. If it was more than 24 hours ago, the window has closed even if you still see recent messages in the thread from your side. Fix: Check the timestamp of the customer’s last message, not the last staff/AI message. Use a template or wait for the customer to reply.
Problem: Template picker is empty.
Cause: Your organisation has no Meta-approved templates yet, or your role does not have the messages.tier.manage capability.
Fix: Go to Settings > Communication > Quick Messages (requires messages.tier.manage) and configure templates. Templates must be submitted to Meta for approval before they become usable - approval usually takes a few hours to a few days.
Problem: Customer clicked the bridge SMS link but WhatsApp didn’t reopen.
Cause: The customer does not have WhatsApp installed on their device.
Fix: The same bridge SMS also contains a tflow.link portal link. The customer can tap that instead to continue the conversation in the customer portal.
Problem: Bridge SMS not being sent to a customer with an expired window. Cause: Usually one of: the customer has no phone number on file, they are opted out of SMS, or a bridge SMS was already sent in the last 24 hours (dedup). Fix: Check the customer record for a phone number. Check their consent preferences for SMS. Check the conversation history for a recent bridge SMS.
Problem: Customer replied to the bridge SMS via SMS instead of clicking the link. Cause: Expected - some customers just reply to the number the SMS came from. Fix: No action needed. The SMS reply is linked to the same conversation and the AI responds with full cross-channel context. Everything works.
Problem: Staff reply shows “failed” with reason window_expired_bridge_sent.
Cause: The original WhatsApp free-form message failed to send because the window was closed, but the bridge SMS was sent in its place.
Fix: Expected behaviour. Check the conversation thread - the bridge SMS should be visible as a system-generated SMS message linked to the same conversation.
- The 24-hour window is a Meta policy applied globally to WhatsApp Business API. Torqueflow cannot override it.
- Templates are paid per-notification separately from session messages. Session messages are generally cheaper. This is why the AI tries to stay inside the window where possible.
- The bridge SMS is tracked as a system-generated message in the conversation record (
notification_type: 'bridge',ai_generated: false,user_id: null). Its cost appears in your communications spend reports. - When the customer responds via the bridge’s
wa.melink, the AI’s context builder includes recent messages from all channels (WhatsApp + SMS + portal) so conversations feel seamless regardless of how the customer replies. - The portal
tflow.linkmagic link authenticates automatically - customers do not need to enter a password.
Permissions
Section titled “Permissions”messages.view- required to see WhatsApp conversations and window status.messages.send- required to send free-form replies within the window.messages.tier.manage- required to create or edit templates.