diff --git a/addons/nodequeue_rules/nodequeue_rules.rules.inc b/addons/nodequeue_rules/nodequeue_rules.rules.inc
index c3dd3a2..a570a54 100644
--- a/addons/nodequeue_rules/nodequeue_rules.rules.inc
+++ b/addons/nodequeue_rules/nodequeue_rules.rules.inc
@@ -130,8 +130,21 @@ function nodequeue_rules_rules_action_info() {
  */
 function nodequeue_rules_action_add_node($node, $queue_name) {
   $queue = nodequeue_load_queue_by_name($queue_name);
-  $subqueue = array_shift(nodequeue_load_subqueues_by_queue($queue->qid));
-  nodequeue_subqueue_add($queue, $subqueue, $node->nid);
+  $smartqueue_enabled = function_exists('smartqueue_taxonomy_nodequeue_subqueues') ? TRUE : FALSE;
+  if ($smartqueue_enabled) {
+    $references = smartqueue_taxonomy_nodequeue_subqueues($queue, $node);
+  }
+  $subqueues = nodequeue_load_subqueues_by_queue($queue->qid);
+  foreach($subqueues as $subqueue) {
+    if ($smartqueue_enabled) {
+      if (in_array($subqueue->reference, $references)) {
+        nodequeue_subqueue_add($queue, $subqueue, $node->nid);
+      }
+    }
+    else {
+      nodequeue_subqueue_add($queue, $subqueue, $node->nid);
+    }
+  }
 }
 
 /**
