API calls returns 200 status for messages outside the Conversation Windows

Raquel Updated by Raquel

When working with APIs for messaging platforms like WhatsApp, understanding response behaviors is crucial for effective implementation.

When sending a message to a recipient outside the active conversation window, the API may return a 200 status code with an id for the message. However, this does not guarantee message delivery. Instead, it represents a silent failure — the message will not be delivered, and the sender may not immediately realize this.

This behavior can create confusion and lead to assumptions that the message has been successfully processed, when in fact it has not.

The current implementation reflects Meta's decision to handle this scenario asynchronously. Please read more here: https://developers.facebook.com/docs/whatsapp/cloud-api/support/error-codes/

Here’s how it works:

  1. Initial Response: When the API is called to send a message, it immediately returns a 200 status code, acknowledging receipt of the request.
  2. Message Status Update: The actual delivery success or failure is determined later and communicated via the message status webhook. This asynchronous mechanism allows for additional processing and validation after the initial API call.

This design choice means the API mirrors the behavior of the Meta Graph API and does not provide synchronous feedback about whether the message will be delivered successfully.

What Should Implementers Do?

Since the API does not synchronously indicate message delivery issues, implementers must take proactive steps to manage conversation window statuses:

  1. Handle Webhook Notifications: Ensure that your system processes message status webhook deliveries to capture and handle delivery errors effectively.
  2. Pre-validate Message Sends: Before sending a message, check your own tracking system to determine if the conversation window is still active. Avoid sending messages if the window has closed.

Our Position on This Behavior

As a platform, we proxy the behavior of the Meta Graph API. This means we will not alter the 200 status response for messages sent outside a conversation window. Instead, we rely on Meta's webhook mechanism to deliver final status updates for messages. While we understand the concerns about silent failures, this behavior aligns with Meta's API design.

Was this article helpful?

Getting Suggested Replies with ChatGPT

Upload media to Turn in order to use in code-based journeys

Contact