Handle a failed whatsapp send and resend the message
When the Cloud API rejects a send or reports a `failed` delivery status, the Operator sees exactly what failed and can resend it, without the message silently disappearing.
When this happens: A send fails synchronously, or a failed status webhook arrives.
Step by step
- 1
Sees the message marked with a failure icon and reason in the conversation, with a Resend action.
ChannelSendJob's call to the Cloud API is rejected (e.g. The recipient blocked the business). SetsMessage.DeliveryStatus = Failedwith the normalized error and Meta's raw message, and reports the failure as a passive health signal. - 2
Click Resend.
Re-validates the current window/template rules (they may have changed since the original attempt), then creates a new
MessagewithRetryOfMessageIdset to the failed one, and sends it.
Other paths
Failure reported asynchronously
The initial send was accepted, but a later statuses[] webhook reports failed (e.g. Undeliverable). Same handling as the synchronous case from step 2.
If something goes wrong
Window expired since the original attempt
If the window has since closed. The resend is blocked with EasyCrm:Channel:WindowExpired, and the Operator is routed to Send Template instead.
Good to know
- A failed send is never counted as a valid response in reporting. (FR-16-010, UC-8.12)
- Resend always re-validates current rules — it does not blindly replay the original request.