diff --git privatemsg.api.php privatemsg.api.php
index 04a57d9..89b9858 100644
--- privatemsg.api.php
+++ privatemsg.api.php
@@ -524,6 +524,22 @@ function hook_privatemsg_operation_executed($operation, $threads, $account = NUL
 }
 
 /**
+ * Allows response to a status change.
+ *
+ * @param $pmid
+ *   Message id.
+ * @param $status
+ *   Either PRIVATEMSG_READ or PRIVATEMSG_UNREAD.
+ * @param $account
+ *   User object, defaults to the current user.
+ *
+ * @see privatemsg_message_change_status()
+ */
+function hook_privatemsg_status_changed($pmid, $status, $account) {
+
+}
+
+/**
  * @}
  */
 
diff --git privatemsg.module privatemsg.module
index fbff9e5..c7c1b74 100644
--- privatemsg.module
+++ privatemsg.module
@@ -778,6 +778,9 @@ function privatemsg_message_change_status($pmid, $status, $account = NULL) {
   }
   $query = "UPDATE {pm_index} SET is_new = %d WHERE mid = %d AND recipient = %d AND type IN ('user', 'hidden')";
   db_query($query, $status, $pmid, $account->uid);
+
+  // Allows modules to respond to the status change.
+  module_invoke_all('privatemsg_status_changed', $pmid, $status, $account);
 }
 
 /**
