diff --git a/includes/nodequeue.admin.inc b/includes/nodequeue.admin.inc
index a275165..93a2654 100644
--- a/includes/nodequeue.admin.inc
+++ b/includes/nodequeue.admin.inc
@@ -46,6 +46,10 @@ function nodequeue_admin_add_node($queue, $subqueue, $node) {
   $id = nodequeue_get_content_id($queue, $node);
   nodequeue_subqueue_add($queue, $subqueue, $id);
 
+  if (module_exists('rules')) {
+    rules_invoke_event('nodequeue_added_' . $queue->qid, array('node' => $node));
+  }
+
   // Provide a response if this is javascript.
   if (!empty($_POST['js'])) {
     if (isset($_GET['tab'])) {
@@ -74,6 +78,10 @@ function nodequeue_admin_remove_node($queue, $subqueue, $node) {
   $id = nodequeue_get_content_id($queue, $node);
   nodequeue_subqueue_remove_node($subqueue->sqid, $id);
 
+  if (module_exists('rules')) {
+    rules_invoke_event('nodequeue_removed_' . $queue->qid, array('node' => $node));
+  }
+
   // Provide a response if this is javascript.
   if (!empty($_POST['js'])) {
     if (isset($_GET['tab'])) {
diff --git a/includes/nodequeue.rules.inc b/includes/nodequeue.rules.inc
new file mode 100644
index 0000000..0b22380
--- /dev/null
+++ b/includes/nodequeue.rules.inc
@@ -0,0 +1,41 @@
+<?php
+
+/**
+ * @file nodequeue.rules.inc
+ * Rules integration for the Nodequeue module.
+ */
+
+/**
+ * Implementation of hook_rules_event_info().
+ */
+function nodequeue_rules_event_info() {
+  $items = array();
+  $queues = nodequeue_load_queues(array_keys(nodequeue_get_all_qids()));
+  foreach ($queues as $queue) {
+    $args = array(
+      'node' => array(
+        'type' => 'node',
+        'label' => t('Queued node'),
+      ),
+    );
+    // For each nodequeue we define two events
+    $items['nodequeue_added_' . $queue->qid] = array(
+      'label' => t('Node added to the nodequeue "@queue-title"', array('@queue-title' => $queue->title)),
+      'module' => 'Nodequeue',
+      'arguments' => $args,
+    );
+
+    $items['nodequeue_removed_' . $queue->qid] = array(
+      'label' => t('Node removed from nodequeue "@queue-title"', array('@queue-title' => $queue->title)),
+      'module' => 'Nodequeue',
+      'arguments' => $args,
+    );
+
+    $items['nodequeue_saved_' . $queue->qid] = array(
+      'label' => t('Nodequeue "@queue-title" is saved', array('@queue-title' => $queue->title)),
+      'module' => 'Nodequeue',
+      'arguments' => array(),
+    );
+  }
+  return $items;
+}
\ No newline at end of file
diff --git a/nodequeue.module b/nodequeue.module
index 24e186f..8fea7ee 100644
--- a/nodequeue.module
+++ b/nodequeue.module
@@ -921,6 +921,11 @@ function nodequeue_save(&$queue) {
       nodequeue_add_subqueue($queue, $title, $reference);
     }
   }
+
+  if (module_exists('rules')) {
+    rules_invoke_event('nodequeue_saved_' . $queue->qid, NULL);
+  }
+
   return $queue->qid;
 }
 
