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 01:56:17 -0000
@@ -634,5 +634,19 @@
 }
 
 /**
+ * Allows response to a successful operation.
+ *
+ * @param $operation
+ *   The operation that was executed.
+ *   @see hook_privatemsg_thread_operations()
+ * @param $threads
+ *   An array of thread ids. The array is filtered to include only
+ *   checked threads.
+ */
+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 01:56:18 -0000
@@ -2132,6 +2138,13 @@
 
     drupal_set_message(t('The previous action can be <a href="!undo">undone</a>.', array('!undo' => $undo)));
   }
+
+  // Allow modules to respond to the operation.
+  foreach (module_implements('privatemsg_operation_executed') as $module) {
+    $function = $module . '_privatemsg_operation_executed';
+    $function($operation, $threads, $account);
+  }
+
   return TRUE;
 }
 
