On WhatsApp threads, each message the agent sent carries a delivery mark that follows Meta’s status events. Customer messages carry none.

Delivery marks

Kylo records a message as sent when it posts it, then upgrades it as Meta’s status events arrive. A status never moves backwards. Meta can skip the delivered event when read arrives, and a read message counts as delivered. A message that never leaves one tick did not reach the phone, which is how you spot a send that never landed. Meta retries undelivered messages for a limited time and then drops them. Sources: Meta: message status webhooks and Meta: webhooks overview.

Message types

Reading a failed message

A failed message shows Failed with a summary built from Meta’s error. Look the code up in Send errors. Failed outbound template sends also appear in the campaign’s Failed count.

Conversation privacy

How message text is stored and who can read it.