diff --git a/libpurple/purpleconversation.h b/libpurple/purpleconversation.h
--- a/libpurple/purpleconversation.h
+++ b/libpurple/purpleconversation.h
@@ -947,6 +947,31 @@
 PURPLE_AVAILABLE_IN_3_0
 void purple_conversation_set_alias(PurpleConversation *conversation, const char *alias);
 
+/**
+ * purple_conversation_get_needs_attention:
+ * @conversation: The instance.
+ *
+ * Gets whether or not @conversation needs attention.
+ *
+ * Returns: %TRUE if @conversation needs attention, otherwise %FALSE.
+ *
+ * Since: 3.0
+ */
+PURPLE_AVAILABLE_IN_3_0
+gboolean purple_conversation_get_needs_attention(PurpleConversation *conversation);
+
+/**
+ * purple_conversation_set_needs_attention:
+ * @conversation: The instance.
+ * @needs_attention: %TRUE to mark @conversation as needing attention.
+ *
+ * Marks @conversation as needing attention or not.
+ *
+ * Since: 3.0
+ */
+PURPLE_AVAILABLE_IN_3_0
+void purple_conversation_set_needs_attention(PurpleConversation *conversation, gboolean needs_attention);
+
 G_END_DECLS
 
 #endif /* PURPLE_CONVERSATION_H */
# HG changeset patch
# Node ID 97564cedbdbb856936d7170e804db1ff3d262c63
# Parent  010bd75895d953f13f77308227bc26c3b3632ecb
diff --git a/libpurple/purpleconversation.c b/libpurple/purpleconversation.c
--- a/libpurple/purpleconversation.c
+++ b/libpurple/purpleconversation.c
@@ -66,6 +66,7 @@
 	GListStore *members;
 
 	GListStore *messages;
+	gboolean needs_attention;
 };
 
 enum {
@@ -95,6 +96,7 @@
 	PROP_TAGS,
 	PROP_MEMBERS,
 	PROP_MESSAGES,
+	PROP_NEEDS_ATTENTION,
 	N_PROPERTIES,
 };
 static GParamSpec *properties[N_PROPERTIES] = {NULL, };
@@ -411,6 +413,10 @@
 		purple_conversation_set_federated(conversation,
 		                                  g_value_get_boolean(value));
 		break;
+	case PROP_NEEDS_ATTENTION:
+		purple_conversation_set_needs_attention(conversation,
+		                                        g_value_get_boolean(value));
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
 		break;
@@ -518,6 +524,10 @@
 		g_value_set_object(value,
 		                   purple_conversation_get_messages(conversation));
 		break;
+	case PROP_NEEDS_ATTENTION:
+		g_value_set_boolean(value,
+		                    purple_conversation_get_needs_attention(conversation));
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
 		break;
@@ -995,6 +1005,21 @@
 		G_TYPE_LIST_MODEL,
 		G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
 
+	/**
+	 * PurpleConversation:needs-attention:
+	 *
+	 * Whether or not the conversation needs attention.
+	 *
+	 * This could be because there are new message or the user has been kicked
+	 * from the room, or something else.
+	 *
+	 * Since: 3.0
+	 */
+	properties[PROP_NEEDS_ATTENTION] = g_param_spec_boolean(
+		"needs-attention", NULL, NULL,
+		FALSE,
+		G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+
 	g_object_class_install_properties(obj_class, N_PROPERTIES, properties);
 
 	/**
@@ -1857,3 +1882,24 @@
 		g_object_thaw_notify(obj);
 	}
 }
+
+gboolean
+purple_conversation_get_needs_attention(PurpleConversation *conversation) {
+	g_return_val_if_fail(PURPLE_IS_CONVERSATION(conversation), FALSE);
+
+	return conversation->needs_attention;
+}
+
+void
+purple_conversation_set_needs_attention(PurpleConversation *conversation,
+                                        gboolean needs_attention)
+{
+	g_return_if_fail(PURPLE_IS_CONVERSATION(conversation));
+
+	if(conversation->needs_attention != needs_attention) {
+		conversation->needs_attention = needs_attention;
+
+		g_object_notify_by_pspec(G_OBJECT(conversation),
+		                         properties[PROP_NEEDS_ATTENTION]);
+	}
+}
diff --git a/libpurple/tests/test_conversation.c b/libpurple/tests/test_conversation.c
--- a/libpurple/tests/test_conversation.c
+++ b/libpurple/tests/test_conversation.c
@@ -70,6 +70,7 @@
 	char *user_nickname = NULL;
 	gboolean age_restricted = FALSE;
 	gboolean favorite = FALSE;
+	gboolean needs_attention = FALSE;
 
 	account = g_object_new(
 		PURPLE_TYPE_ACCOUNT,
@@ -100,6 +101,7 @@
 		"features", PURPLE_CONNECTION_FLAG_HTML,
 		"id", "id1",
 		"name", "name1",
+		"needs-attention", TRUE,
 		"title", "test conversation",
 		"topic", "the topic...",
 		"topic-author", topic_author,
@@ -123,6 +125,7 @@
 		"id", &id,
 		"members", &members,
 		"name", &name,
+		"needs-attention", &needs_attention,
 		"tags", &tags,
 		"title", &title,
 		"title-for-display", &title_for_display,
@@ -171,6 +174,8 @@
 	g_assert_cmpstr(name, ==, "name1");
 	g_clear_pointer(&name, g_free);
 
+	g_assert_true(needs_attention);
+
 	g_assert_true(PURPLE_IS_TAGS(tags));
 	g_clear_object(&tags);
 
