diff --git a/briar-gtk/briar_gtk/containers/private_chat.py b/briar-gtk/briar_gtk/containers/private_chat.py
index b91afa853381c5226c3c76c87296b3a3551e79db..dc5109f2dd731aeaec9879c86ddce0eb14679811 100644
--- a/briar-gtk/briar_gtk/containers/private_chat.py
+++ b/briar-gtk/briar_gtk/containers/private_chat.py
@@ -40,6 +40,12 @@ class PrivateChatContainer(Container):
             {
                 "text": message,
                 "local": True,
+                "sent": False,
+                "seen": False,
+
+                # TODO: Remove once web events updating is implemented
+                "no_stored_indicator": True,
+
                 "timestamp": int(round(time.time() * 1000))
             })
         widget.set_text("")
diff --git a/briar-gtk/briar_gtk/widgets/private_message.py b/briar-gtk/briar_gtk/widgets/private_message.py
index b26e5539403def19eef6f62faa2f0d8d35a72703..ce0189c2aeb5a01bcf9984510fff5a2c91f7f658 100644
--- a/briar-gtk/briar_gtk/widgets/private_message.py
+++ b/briar-gtk/briar_gtk/widgets/private_message.py
@@ -33,9 +33,15 @@ class PrivateMessageWidget(Gtk.ListBoxRow):
 
         username_info = PrivateMessageWidget._create_username_info(
             username, username_style_class)
+        delivery_state_info = PrivateMessageWidget._create_delivery_state_info(
+            message)
         date_info = PrivateMessageWidget._create_date_info(
             message["timestamp"] / 1000)
-        info = PrivateMessageWidget._create_info(username_info, date_info)
+        info = PrivateMessageWidget._create_info(
+            username_info,
+            delivery_state_info,
+            date_info
+        )
 
         body_content = PrivateMessageWidget._create_body_content(
             message["text"])
@@ -64,6 +70,22 @@ class PrivateMessageWidget(Gtk.ListBoxRow):
         username_event_box.add(username_label)
         return username_event_box
 
+    @staticmethod
+    def _create_delivery_state_info(message):
+        file_name = "message_stored"
+        if not message.get("local", True):
+            return Gtk.EventBox()
+        # TODO: Remove once web events updating is implemented
+        if message.get("no_stored_indicator", False):
+            return Gtk.EventBox()
+        if message.get("sent", False):
+            file_name = "message_sent"
+        if message.get("seen", False):
+            file_name = "message_delivered"
+        delivery_state = Gtk.Image.new_from_icon_name(file_name,
+                                                      Gtk.IconSize.MENU)
+        return delivery_state
+
     @staticmethod
     def _create_date_info(timestamp):
         time = PrivateMessageWidget._make_timestamp_readable(timestamp)
@@ -83,9 +105,13 @@ class PrivateMessageWidget(Gtk.ListBoxRow):
         return time.strftime("%x %H:%M")
 
     @staticmethod
-    def _create_info(username_info, date_info):
+    def _create_info(username_info, delivery_state_info, date_info):
         info = Gtk.Box.new(Gtk.Orientation.HORIZONTAL, 0)
         info.pack_start(username_info, True, True, 0)
+        if isinstance(delivery_state_info, Gtk.Image):
+            info.pack_end(delivery_state_info, False, False, 3)
+        else:
+            info.pack_end(delivery_state_info, False, False, 11)
         info.pack_end(date_info, False, False, 0)
         return info
 
@@ -123,6 +149,10 @@ class PrivateMessageWidget(Gtk.ListBoxRow):
             return True
         if message["local"] != previous_message["local"]:
             return True
+        if message["sent"] != previous_message["sent"]:
+            return True
+        if message["seen"] != previous_message["seen"]:
+            return True
 
         time = datetime.fromtimestamp(message.get("timestamp", 0) / 1000)
         previous_time = datetime.fromtimestamp(