Index: privatemsg.api.php
===================================================================
RCS file: /cvs/drupal/contributions/modules/privatemsg/privatemsg.api.php,v
retrieving revision 1.7
diff -u -r1.7 privatemsg.api.php
--- privatemsg.api.php	27 Dec 2010 09:33:03 -0000	1.7
+++ privatemsg.api.php	14 Jan 2011 19:09:31 -0000
@@ -634,5 +634,20 @@
 }
 
 /**
+ * Allows response to a successful operation.
+ *
+ * @param $operation
+ *   The operation that was executed.
+ *   @see hook_privatemsg_thread_operations()
+ * @param $threads
+ *   An array which contains the thread ids on which the operation
+ *   has been executed.
+ * @see privatemsg_operation_execute()
+ */
+function hook_privatemsg_operation_executed($operation, $threads, $account = NULL) {
+
+}
+
+/**
  * @}
  */

Index: privatemsg.module
===================================================================
RCS file: /cvs/drupal/contributions/modules/privatemsg/privatemsg.module,v
retrieving revision 1.158
diff -u -r1.158 privatemsg.module
--- privatemsg.module	27 Dec 2010 09:33:03 -0000	1.158
+++ privatemsg.module	14 Jan 2011 19:09:32 -0000
@@ -2132,6 +2138,10 @@
 
     drupal_set_message(t('The previous action can be <a href="!undo">undone</a>.', array('!undo' => $undo)));
   }
+
+  // Allow modules to respond to the operation.
+  module_invoke_all('privatemsg_operation_executed', $operation, $threads, $account);
+
   return TRUE;
 }
