diff --git a/addons/nodequeue_rules/README.txt b/addons/nodequeue_rules/README.txt
new file mode 100644
index 0000000..93594bc
--- /dev/null
+++ b/addons/nodequeue_rules/README.txt
@@ -0,0 +1,14 @@
+-- SUMMARY --
+
+This module provides a basic rules integration for nodequeue.
+
+
+-- REQUIREMENTS --
+
+ - Nodequeue (http://drupal.org/project/nodequeue)
+ - Rules (http://drupal.org/project/rules)
+
+
+-- INSTALLATION --
+
+Install as usual, see http://drupal.org/node/895232 for further information.
diff --git a/addons/nodequeue_rules/nodequeue_rules.info b/addons/nodequeue_rules/nodequeue_rules.info
new file mode 100644
index 0000000..b6e09e8
--- /dev/null
+++ b/addons/nodequeue_rules/nodequeue_rules.info
@@ -0,0 +1,6 @@
+name = Nodequeue Rules
+core = 7.x
+description = "Provides a basic rules integration for nodequeue."
+package = Nodequeue
+dependencies[] = nodequeue
+dependencies[] = rules
diff --git a/addons/nodequeue_rules/nodequeue_rules.module b/addons/nodequeue_rules/nodequeue_rules.module
new file mode 100644
index 0000000..43438f3
--- /dev/null
+++ b/addons/nodequeue_rules/nodequeue_rules.module
@@ -0,0 +1,8 @@
+<?php
+
+/**
+ * @file
+ * Nothing to do here yet.
+ *
+ * @see nodequeue_rules.rules.inc
+ */
diff --git a/addons/nodequeue_rules/nodequeue_rules.rules.inc b/addons/nodequeue_rules/nodequeue_rules.rules.inc
new file mode 100644
index 0000000..c9b7d6e
--- /dev/null
+++ b/addons/nodequeue_rules/nodequeue_rules.rules.inc
@@ -0,0 +1,82 @@
+<?php
+
+/**
+ * @file
+ * Rules integration for the nodequeue module.
+ */
+
+/**
+ * Implements hook_rules_action_info().
+ */
+function nodequeue_rules_rules_action_info() {
+  return array(
+    // Action: Add a given node to the given nodequeue.
+    'nodequeue_rules_action_add_node' => array(
+      'label' => t('Add node to nodequeue'),
+      'group' => t('Nodequeue'),
+      'parameter' => array(
+        'node' => array(
+          'type' => 'node',
+          'label' => t('Node'),
+          'description' => t('The node you want to add.'),
+        ),
+        'queue' => array(
+          'type' => 'text',
+          'label' => t('Queue'),
+          'description' => t('The queue where the node should be added to.'),
+          'options list' => 'nodequeue_rules_get_queue_names',
+        ),
+      ),
+    ),
+    // Action: Remove the given node from the given nodequeue.
+    'nodequeue_rules_action_remove_node' => array(
+      'label' => t('Remove node from nodequeue'),
+      'group' => t('Nodequeue'),
+      'parameter' => array(
+        'node' => array(
+          'type' => 'node',
+          'label' => t('Node'),
+          'description' => t('The node you want to remove.'),
+        ),
+        'queue' => array(
+          'type' => 'text',
+          'label' => t('Queue'),
+          'description' => t('The queue where the node should be removed from.'),
+          'options list' => 'nodequeue_rules_get_queue_names',
+        ),
+      ),
+    ),
+  );
+}
+
+/**
+ * Action: Add the given node to the given nodequeue.
+ */
+function nodequeue_rules_action_add_node($node, $sqid) {
+  $subqueue = nodequeue_load_subqueue($sqid);
+  $queue = nodequeue_load($subqueue->qid);
+  nodequeue_subqueue_add($queue, $subqueue, $node->nid);
+}
+
+/**
+ * Action: Remove the given node from the given nodequeue.
+ */
+function nodequeue_rules_action_remove_node($node, $sqid) {
+  $subqueue = nodequeue_load_subqueue($sqid);
+  $queue = nodequeue_load($subqueue->qid);
+  if (!$queue->i18n || (isset($node->tnid) && empty($node->tnid))) {
+    nodequeue_subqueue_remove_node($subqueue->qid, $node->nid);
+  }
+}
+
+/**
+ * Return a list of nodequeue names.
+ */
+function nodequeue_rules_get_queue_names() {
+  $items = array();
+  $queues = nodequeue_load_queues(nodequeue_get_all_qids(25));
+  foreach ($queues as $queue) {
+    $items[$queue->qid] = $queue->title;
+  }
+  return $items;
+}
