diff --git a/libpurple/purplepresence.h b/libpurple/purplepresence.h
--- a/libpurple/purplepresence.h
+++ b/libpurple/purplepresence.h
@@ -388,6 +388,29 @@
 void purple_presence_set_mobile(PurplePresence *presence, gboolean mobile);
 
 /**
+ * purple_presence_get_notifications_disabled:
+ * @presence: The instance.
+ *
+ * Gets whether or not @presence has notifications disabled.
+ *
+ * Returns: %TRUE if @presence has notifications disabled, otherwise %FALSE.
+ *
+ * Since: 3.0.0
+ */
+gboolean purple_presence_get_notifications_disabled(PurplePresence *presence);
+
+/**
+ * purple_presence_set_notifications_disabled:
+ * @presence: The instance.
+ * @notifications_disabled: Whether notifications are disabled or not.
+ *
+ * Sets whether or not @presence has notifications disabled.
+ *
+ * Since: 3.0.0
+ */
+void purple_presence_set_notifications_disabled(PurplePresence *presence, gboolean notifications_disabled);
+
+/**
  * purple_presence_primitive_to_string:
  * @primitive: The [enum@Purple.PresencePrimitive] value.
  *
# HG changeset patch
# Node ID 337da49608a6
# Parent  2dce52f93848
diff --git a/libpurple/purplepresence.c b/libpurple/purplepresence.c
--- a/libpurple/purplepresence.c
+++ b/libpurple/purplepresence.c
@@ -41,6 +41,7 @@
 	char *message;
 	char *emoji;
 	gboolean mobile;
+	gboolean notifications_disabled;
 } PurplePresencePrivate;
 
 enum {
@@ -53,6 +54,7 @@
 	PROP_MESSAGE,
 	PROP_EMOJI,
 	PROP_MOBILE,
+	PROP_NOTIFICATIONS_DISABLED,
 	N_PROPERTIES
 };
 static GParamSpec *properties[N_PROPERTIES];
@@ -117,6 +119,10 @@
 		case PROP_MOBILE:
 			purple_presence_set_mobile(presence, g_value_get_boolean(value));
 			break;
+		case PROP_NOTIFICATIONS_DISABLED:
+			purple_presence_set_notifications_disabled(presence,
+			                                           g_value_get_boolean(value));
+			break;
 		default:
 			G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
 			break;
@@ -154,6 +160,10 @@
 		case PROP_MOBILE:
 			g_value_set_boolean(value, purple_presence_get_mobile(presence));
 			break;
+		case PROP_NOTIFICATIONS_DISABLED:
+			g_value_set_boolean(value,
+			                    purple_presence_get_notifications_disabled(presence));
+			break;
 		default:
 			G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
 			break;
@@ -290,6 +300,23 @@
 		FALSE,
 		G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
 
+	/**
+	 * PurplePresence:notifications-disabled:
+	 *
+	 * Whether or not the presence has notifications disabled.
+	 *
+	 * Some protocols, like Slack, allow users to set an available schedule. By
+	 * default it displays that the user has notifications turned off outside
+	 * of that schedule.
+	 *
+	 * Since: 3.0.0
+	 */
+	properties[PROP_NOTIFICATIONS_DISABLED] = g_param_spec_boolean(
+		"notifications-disabled", "notifications-disabled",
+		"Whether or not this presence has notifications disabled.",
+		FALSE,
+		G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+
 	g_object_class_install_properties(obj_class, N_PROPERTIES, properties);
 }
 
@@ -734,6 +761,35 @@
 	}
 }
 
+gboolean
+purple_presence_get_notifications_disabled(PurplePresence *presence) {
+	PurplePresencePrivate *priv = NULL;
+
+	g_return_val_if_fail(PURPLE_IS_PRESENCE(presence), FALSE);
+
+	priv = purple_presence_get_instance_private(presence);
+
+	return priv->notifications_disabled;
+}
+
+void
+purple_presence_set_notifications_disabled(PurplePresence *presence,
+                                           gboolean notifications_disabled)
+{
+	PurplePresencePrivate *priv = NULL;
+
+	g_return_if_fail(PURPLE_IS_PRESENCE(presence));
+
+	priv = purple_presence_get_instance_private(presence);
+
+	if(priv->notifications_disabled != notifications_disabled) {
+		priv->notifications_disabled = notifications_disabled;
+
+		g_object_notify_by_pspec(G_OBJECT(presence),
+		                         properties[PROP_NOTIFICATIONS_DISABLED]);
+	}
+}
+
 const char *
 purple_presence_primitive_to_string(PurplePresencePrimitive primitive) {
 	switch(primitive) {
diff --git a/libpurple/tests/test_presence.c b/libpurple/tests/test_presence.c
--- a/libpurple/tests/test_presence.c
+++ b/libpurple/tests/test_presence.c
@@ -46,6 +46,7 @@
 	char *message = NULL;
 	char *emoji = NULL;
 	gboolean mobile = FALSE;
+	gboolean notifications_disabled = FALSE;
 
 	/* Create the login and idle times. */
 	now = g_date_time_new_now_utc();
@@ -64,6 +65,7 @@
 		"login-time", login,
 		"idle-time", idle,
 		"mobile", TRUE,
+		"notifications-disabled", TRUE,
 		NULL);
 
 	/* Grab the values via g_object_get to make sure get_property is wired up
@@ -77,25 +79,33 @@
 		"login-time", &login1,
 		"idle-time", &idle1,
 		"mobile", &mobile,
+		"notifications-disabled", &notifications_disabled,
 		NULL);
 
-	/* Validate! */
+	/* Test the things! */
 	g_assert_cmpint(primitive, ==, PURPLE_PRESENCE_PRIMITIVE_AVAILABLE);
+
 	g_assert_cmpstr(message, ==, "I'll be back!");
+	g_clear_pointer(&message, g_free);
+
 	g_assert_cmpstr(emoji, ==, "🤖");
+	g_clear_pointer(&emoji, g_free);
+
 	g_assert_nonnull(login1);
 	g_assert_true(g_date_time_equal(login, login1));
+	g_clear_pointer(&login1, g_date_time_unref);
+
 	g_assert_nonnull(idle1);
 	g_assert_true(g_date_time_equal(idle, idle1));
+	g_clear_pointer(&idle1, g_date_time_unref);
+
 	g_assert_true(mobile);
 
+	g_assert_true(notifications_disabled);
+
 	/* Cleanup. */
-	g_clear_pointer(&message, g_free);
-	g_clear_pointer(&emoji, g_free);
 	g_clear_pointer(&login, g_date_time_unref);
-	g_clear_pointer(&login1, g_date_time_unref);
 	g_clear_pointer(&idle, g_date_time_unref);
-	g_clear_pointer(&idle1, g_date_time_unref);
 	g_clear_object(&presence);
 }
 
