diff --git a/features.api.php b/features.api.php
index 1f09ba5..883009f 100644
--- a/features.api.php
+++ b/features.api.php
@@ -379,3 +379,75 @@ function hook_user_default_roles_alter(&$roles) {
 /**
  * @}
  */
+
+
+/**
+ * @defgroup features_module_hooks Feature module hooks
+ * @{
+ * Hooks invoked on Feature modules when that module is enabled, disabled,
+ * rebuilt, or reverted. These are ONLY invoked on the Features module on
+ * which these actions are taken.
+ */
+
+/**
+ * Feature module hook. Invoked on a Feature module before that module is
+ * reverted.
+ */
+function hook_pre_features_revert() {
+}
+
+/**
+ * Feature module hook. Invoked on a Feature module after that module is
+ * reverted.
+ */
+function hook_post_features_revert() {
+}
+
+
+/**
+ * Feature module hook. Invoked on a Feature module before that module is
+ * rebuilt.
+ */
+function hook_pre_features_rebuild() {
+}
+
+/**
+ * Feature module hook. Invoked on a Feature module after that module is
+ * rebuilt.
+ */
+function hook_post_features_rebuild() {
+}
+
+
+/**
+ * Feature module hook. Invoked on a Feature module before that module is
+ * disabled.
+ */
+function hook_pre_features_disable_feature() {
+}
+
+/**
+ * Feature module hook. Invoked on a Feature module after that module is
+ * disabled.
+ */
+function hook_post_features_disable_feature() {
+}
+
+
+/**
+ * Feature module hook. Invoked on a Feature module before that module is
+ * enabled.
+ */
+function hook_pre_features_enable_feature() {
+}
+
+/**
+ * Feature module hook. Invoked on a Feature module after that module is
+ * enabled.
+ */
+function hook_post_features_enable_feature() {
+}
+
+/**
+ * @}
+ */
diff --git a/features.module b/features.module
index 6aeb2d7..87b8557 100644
--- a/features.module
+++ b/features.module
@@ -871,6 +871,10 @@ function _features_restore($op, $items = array()) {
   }
 
   foreach ($items as $module_name => $components) {
+    // Invoke pre hook
+    $pre_hook = 'pre_' . $restore_hook;
+    module_invoke($module_name, $pre_hook);
+
     foreach ($components as $component) {
       if (features_hook($component, $restore_hook)) {
         // Set a semaphore to prevent other instances of the same script from running concurrently.
@@ -884,6 +888,10 @@ function _features_restore($op, $items = array()) {
         watchdog('features', '@action completed for @module_name / @component.', array('@action' => $log_action, '@component' => $component, '@module_name' => $module_name));
       }
     }
+
+    // Invoke post hook
+    $post_hook = 'post_' . $restore_hook;
+    module_invoke($module_name, $post_hook);
   }
 }
 
