diff --git sites/all/modules/contact/contact.api.php sites/all/modules/contact/contact.api.php
new file mode 100644
index 0000000..51d2e32
--- /dev/null
+++ sites/all/modules/contact/contact.api.php
@@ -0,0 +1,35 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Hooks provided by the Contact module.
+ */
+
+/**
+ * @addtogroup hooks
+ * @{
+ */
+
+/**
+ * Contact form was completed and mail sent.
+ *
+ * @param $type
+ *   The type of contact form "site" or "user".
+ * @param $values
+ *   The array of form values submitted by the user with additional keys:
+ *   - category: An array with the contact category's data for $type = site.
+ *   - account: The user object of recipient for $type = user.
+ *   - user: The user object of sender for $type = user.
+ *
+ */
+function hook_contact($op, &$values) {
+  if ($op == 'site') {
+    // Redirect user to thank-you page.
+    drupal_goto('thank-you');
+  }
+}
+
+/**
+ * @} End of "addtogroup hooks".
+ */
diff --git sites/all/modules/contact/contact.module sites/all/modules/contact/contact.module
index cb8fbc3..dbe94ba 100644
--- sites/all/modules/contact/contact.module
+++ sites/all/modules/contact/contact.module
@@ -277,3 +277,35 @@ function contact_mollom_form_info_alter(&$form_info) {
 function _contact_user_tab_access(stdClass $account) {
   return _contact_personal_tab_access($account);
 }
+
+/**
+ * Implementation of hook_hook_info().
+ */
+function contact_hook_info() {
+  return array(
+    'contact' => array(
+      'contact' => array(
+        'site' => array(
+          'runs when' => t('After completing the site contact form'),
+        ),
+        'user' => array(
+          'runs when' => t("After completing a user's contact form"),
+        ),
+      ),
+    ),
+  );
+}
+
+/**
+ * Implementation of hook_contact().
+ */
+function contact_contact($op, &$values) {
+  $hook = 'contact';
+  $aids = _trigger_get_hook_aids($hook,$op);
+  $context = array(
+    'group' => 'contact',
+    'hook' => $hook,
+    'op'=> $op,
+  );
+  actions_do(array_keys($aids), $values, $context);
+}
\ No newline at end of file
diff --git sites/all/modules/contact/contact.pages.inc sites/all/modules/contact/contact.pages.inc
index 5330d78..7739816 100644
--- sites/all/modules/contact/contact.pages.inc
+++ sites/all/modules/contact/contact.pages.inc
@@ -162,6 +162,11 @@ function contact_mail_page_submit($form, &$form_state) {
   }
 
   flood_register_event('contact'/*, variable_get('contact_threshold_window', 3600)*/);
+  
+  // Fire the contact form trigger.
+  $values['user'] = $user;
+  module_invoke_all('contact', 'site', $values);
+  
   watchdog('mail', '%sender-name (@sender-from) sent an e-mail regarding %category.', array('%sender-name' => $values['name'], '@sender-from' => $from, '%category' => $values['category']['category']));
 
   // Jump to home page rather than back to contact page to avoid
@@ -291,6 +296,10 @@ function contact_mail_user_submit($form, &$form_state) {
   }
 
   flood_register_event('contact'/*, variable_get('contact_threshold_window', 3600)*/);
+  
+  // Fire the contact form trigger.
+  module_invoke_all('contact', 'user', $values);
+
   watchdog('mail', '%sender-name (@sender-from) sent %recipient-name an e-mail.', array('%sender-name' => $values['name'], '@sender-from' => $from, '%recipient-name' => $values['recipient']->name));
 
   // Jump to the contacted user's profile page.
