Chat Message Lifecycle: a note about statuses

Posted on by Igor Khomenko

It’s a standard feature now to manage message’s statuses in every chat application.

All popular messaging applications like WhatsApp, Telegram messenger, Viber provide the exact status of your messages, from the moment you send them until they are read by the recipient.

However each messenger has it’s own explanation of how a messaging app should deal with statuses.
Let’s review the most popular apps:

WhatsApp

The WhatsApp team provides the following help page: 
“What are those check marks next to my messages?” – http://www.whatsapp.com/faq/en/general/20951546

Check marks will appear next to each message you send. Here is what each one indicates:

  • message successfully sent.
  • message successfully delivered to the recipient’s phone.
  • the recipient has read your message.

In a group chat, the second check marks will appear when all participants in the group have received your message. The two blue check marks will appear when all participants in the group have read your message.

This is more or less what the end user expects.

 

Telegram messenger

The Telegram messenger provides a bit different policy regarding ‘delivered’ status:

“What do the green checks mean?” – https://telegram.org/faq#q-what-do-the-green-checks-mean

One check — message delivered to the Telegram cloud and your friend has been notified, if he allows notifications.
Two checks — message read (your friend opened Telegram and opened the conversation with the message).

We don‘t have a ’delivered to device’ status for messages, because Telegram can run on as many devices as you want. So which particular one would that check mean?

 

Viber 

The Viber team provides the same UX as WhatsApp:

“Message delivery status” – https://support.viber.com/customer/en/portal/articles/1534869-message-delivery-status

Sent
When your message has been sent, the text bubble and text will have filled in (the text becomes black and the dialog background becomes blue).  This is an indication that your message has been sent to the server. In other words, it has successfully been sent on its way to the recipient.

Delivered
When you see the status “Delivered” underneath your message, this means that your message has been received by the recipient. The “Delivered” status does not indicate that the message has been opened.

Seen
The “Seen” delivery status indicates that the recipient has opened the conversation to which you have sent the message. The “Seen” status will disappear once the recipient replies to your message. Note that the “Seen” delivery status does not guarantee that your message has been read, nor does it appear in group chats.

 

The whole Chat Message Lifecycle

With a really big experience in chat messaging we developed  the following Chat Message Lifecycle schema:

chat_message_statuses_infoLet’s review each status:

  1. Sent – this is an indication that your message has been sent to the server. The end user can also get ‘Not sent’ status in a case he doesn’t have an active Internet connection.
  2. Delivered to the backend – this is an indication that your message has been delivered to the server. It’s also possible that your message has not reached the server, for example by timeout of 30-60 seconds. This is ‘Not delivered’ status. This is how we call it in the classic messengers – Sent.
  3. Not acknowledged on the backend – The backend can return an error to the sender in a case when he is in the recipient’s black list.
  4. Delivered – this means that a message has been received by the recipient (delivered to the recipient’s phone). This is how we call it in the classic messengers – Delivered.
  5. Read – the status indicates that the recipient has opened the conversation to which you have sent the message and read the message.  This is how we call it in the classic messengers – Read.

As we highlighted above, it’s enough and common to support only 3 statuses (Sent, Delivered, Read), but as you can see there are more statuses under the hood.
Feel free to provide your feedback, how you manage the chat message statuses in your application
Cheers!