diff --git a/clone.module b/clone.module
index 7b84031..f8e36a8 100644
--- a/clone.module
+++ b/clone.module
@@ -277,8 +277,12 @@ function clone_action_clone($original_node, $context) {
     // Let other modules do special fixing up.
     $context = array('method' => 'action', 'original_node' => $original_node);
     drupal_alter('clone_node', $node, $context);
+    $rules_module_exists = module_exists('rules');
+    if ($rules_module_exists) {
+      rules_invoke_event('clone_node_prepare', $node, $original_node);
+    }
     node_save($node);
-    if (module_exists('rules')) {
+    if ($rules_module_exists) {
       rules_invoke_event('clone_node', $node, $original_node);
     }
   }
diff --git a/clone.pages.inc b/clone.pages.inc
index dbc4381..45d0c10 100644
--- a/clone.pages.inc
+++ b/clone.pages.inc
@@ -162,6 +162,10 @@ function clone_node_prepopulate($original_node) {
       // Let other modules do special fixing up.
       $context = array('method' => 'prepopulate', 'original_node' => $original_node);
       drupal_alter('clone_node', $node, $context);
+
+      if (module_exists('rules')) {
+        rules_invoke_event('clone_node_prepare', $node, $original_node);
+      }
       // Make sure the file defining the node form is loaded.
       $form_state = array();
       $form_state['build_info']['args'] = array($node);
@@ -184,8 +188,12 @@ function clone_node_save($nid, $account = NULL) {
       $context = array('method' => 'save-edit', 'original_node' => $original_node);
       drupal_alter('clone_node', $node, $context);
 
+      $rules_module_exists = module_exists('rules');
+      if ($rules_module_exists) {
+        rules_invoke_event('clone_node_prepare', $node, $original_node);
+      }
       node_save($node);
-      if (module_exists('rules')) {
+      if ($rules_module_exists) {
         rules_invoke_event('clone_node', $node, $original_node);
       }
       return $node->nid;
diff --git a/clone.rules.inc b/clone.rules.inc
index d2497a4..212cfb9 100644
--- a/clone.rules.inc
+++ b/clone.rules.inc
@@ -18,6 +18,14 @@ function clone_rules_event_info() {
         'original_node' => array('type' => 'node', 'label' => t('The original node')),
       ),
     ),
+    'clone_node_prepare' => array(
+      'label' => t('Peparing a cloned node'),
+      'group' => t('Node'),
+      'variables' => array(
+        'cloned_node' => array('type' => 'node', 'label' => t('The cloned node')),
+        'original_node' => array('type' => 'node', 'label' => t('The original node')),
+      ),
+    ),
   );
   return $items;
 }
