diff --git a/libempathy/empathy-message.c b/libempathy/empathy-message.c
index 705bd22..0fe4578 100644
--- a/libempathy/empathy-message.c
+++ b/libempathy/empathy-message.c
@@ -42,6 +42,7 @@ typedef struct {
 	gboolean                  is_backlog;
 	guint                     id;
 	gboolean                  incoming;
+	TpChannelTextMessageFlags flags;
 } EmpathyMessagePriv;
 
 static void empathy_message_finalize   (GObject            *object);
@@ -65,6 +66,7 @@ enum {
 	PROP_TIMESTAMP,
 	PROP_IS_BACKLOG,
 	PROP_INCOMING,
+	PROP_FLAGS,
 };
 
 static void
@@ -133,6 +135,14 @@ empathy_message_class_init (EmpathyMessageClass *class)
 							       FALSE,
 							       G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
 
+	g_object_class_install_property (object_class,
+					 PROP_FLAGS,
+					 g_param_spec_uint ("flags",
+							       "Flags",
+							       "The TpChannelTextMessageFlags of this message",
+							       0, G_MAXUINT, 0,
+							       G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
 	g_type_class_add_private (object_class, sizeof (EmpathyMessagePriv));
 
 }
@@ -435,6 +445,7 @@ empathy_message_should_highlight (EmpathyMessage *message)
 	gchar         *cf_msg, *cf_to;
 	gchar         *ch;
 	gboolean       ret_val;
+	TpChannelTextMessageFlags flags;
 
 	g_return_val_if_fail (EMPATHY_IS_MESSAGE (message), FALSE);
 
@@ -455,6 +466,13 @@ empathy_message_should_highlight (EmpathyMessage *message)
 		return FALSE;
 	}
 
+	flags = empathy_message_get_flags (message);
+	if (flags & TP_CHANNEL_TEXT_MESSAGE_FLAG_SCROLLBACK) {
+		/* FIXME: Ideally we shouldn't highlight scrollback messages only if they
+		 * have already been received by the user before (and so are in the logs) */
+		return FALSE;
+	}
+
 	cf_msg = g_utf8_casefold (msg, -1);
 	cf_to = g_utf8_casefold (to, -1);
 
@@ -581,3 +599,28 @@ empathy_message_equal (EmpathyMessage *message1, EmpathyMessage *message2)
 
 	return FALSE;
 }
+
+TpChannelTextMessageFlags
+empathy_message_get_flags (EmpathyMessage *self)
+{
+	EmpathyMessagePriv *priv = GET_PRIV (self);
+
+	g_return_val_if_fail (EMPATHY_IS_MESSAGE (self), 0);
+
+	return priv->flags;
+}
+
+void
+empathy_message_set_flags        (EmpathyMessage           *self,
+				TpChannelTextMessageFlags flags)
+{
+	EmpathyMessagePriv *priv;
+
+	g_return_if_fail (EMPATHY_IS_MESSAGE (self));
+
+	priv = GET_PRIV (self);
+
+	priv->flags = flags;
+
+	g_object_notify (G_OBJECT (self), "flags");
+}
diff --git a/libempathy/empathy-message.h b/libempathy/empathy-message.h
index 09175e6..5128693 100644
--- a/libempathy/empathy-message.h
+++ b/libempathy/empathy-message.h
@@ -84,6 +84,10 @@ void                     empathy_message_set_id (EmpathyMessage *message, guint
 
 gboolean                 empathy_message_equal (EmpathyMessage *message1, EmpathyMessage *message2);
 
+TpChannelTextMessageFlags empathy_message_get_flags        (EmpathyMessage           *message);
+void                      empathy_message_set_flags        (EmpathyMessage           *message,
+							    TpChannelTextMessageFlags flags);
+
 G_END_DECLS
 
 #endif /* __EMPATHY_MESSAGE_H__ */
diff --git a/libempathy/empathy-tp-chat.c b/libempathy/empathy-tp-chat.c
index f1c455e..e53caef 100644
--- a/libempathy/empathy-tp-chat.c
+++ b/libempathy/empathy-tp-chat.c
@@ -231,7 +231,8 @@ tp_chat_build_message (EmpathyTpChat *chat,
 		       guint          type,
 		       guint          timestamp,
 		       guint          from_handle,
-		       const gchar   *message_body)
+		       const gchar   *message_body,
+		       TpChannelTextMessageFlags flags)
 {
 	EmpathyTpChatPriv *priv;
 	EmpathyMessage    *message;
@@ -244,6 +245,7 @@ tp_chat_build_message (EmpathyTpChat *chat,
 	empathy_message_set_timestamp (message, timestamp);
 	empathy_message_set_id (message, id);
 	empathy_message_set_incoming (message, incoming);
+	empathy_message_set_flags (message, flags);
 
 	g_queue_push_tail (priv->messages_queue, message);
 
@@ -301,7 +303,8 @@ tp_chat_received_cb (TpChannel   *channel,
 			       message_type,
 			       timestamp,
 			       from_handle,
-			       message_body);
+			       message_body,
+			       message_flags);
 }
 
 static void
@@ -326,7 +329,8 @@ tp_chat_sent_cb (TpChannel   *channel,
 			       message_type,
 			       timestamp,
 			       0,
-			       message_body);
+			       message_body,
+			       0);
 }
 
 static void
@@ -465,7 +469,8 @@ tp_chat_list_pending_messages_cb (TpChannel       *channel,
 				       message_type,
 				       timestamp,
 				       from_handle,
-				       message_body);
+				       message_body,
+				       message_flags);
 	}
 
 	if (empty_non_text_content_ids != NULL) {
