diff --git a/entityform.module b/entityform.module
index 76bc6d6c..6ad63321 100644
--- a/entityform.module
+++ b/entityform.module
@@ -1790,6 +1790,9 @@ function entityform_entityform_insert($entityform) {
     if (module_exists('entity_rules')) {
       _entity_rules_invoke_rules($entityform, 'entityform', 'entityform_submission');
     }
+    if (module_exists('rules')) {
+      rules_invoke_event('entityform_completion', $entityform);
+    }
   }
 }
 /**
@@ -1802,4 +1805,12 @@ function entityform_entityform_update($entityform) {
       _entity_rules_invoke_rules($entityform, 'entityform', 'entityform_submission');
     }
   }
+  if (module_exists('rules')) {
+    if (empty($entityform->draft)) {
+      $entityform_original = $entityform->original;
+      if (!empty($entityform_original->draft)) {
+        rules_invoke_event('entityform_completion', $entityform);
+      }
+    }
+  }
 }
diff --git a/entityform.rules.inc b/entityform.rules.inc
new file mode 100644
index 00000000..f8b184b8
--- /dev/null
+++ b/entityform.rules.inc
@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * Implements hook_rules_event_info().
+ */
+function entityform_rules_event_info() {
+  $items = array(
+    'entityform_completion' => array(
+      'label' => t('After an entityform submission leaves draft status'),
+      'group' => t('Entityform Submission'),
+      'variables' => array(
+        'entityform' => array(
+          'type' => 'entityform',
+          'label' => t('Submitted entityform'),
+        ),
+      ),
+    ),
+  );
+  return $items;
+}
