diff --git a/notifications.info b/notifications.info
index 55652ee..9b9b09b 100644
--- a/notifications.info
+++ b/notifications.info
@@ -3,5 +3,6 @@ description = The basic notifications framework
 package = "Notifications"
 dependencies[] = messaging
 dependencies[] = token
+dependencies[] = drupal_queue
 core = 6.x
 php = 5.0
diff --git a/notifications.module b/notifications.module
index 64b83af..98d34a3 100644
--- a/notifications.module
+++ b/notifications.module
@@ -431,6 +431,34 @@ function notifications_event_enabled($type, $action) {
 }
 
 /**
+ * Implements hook_cron_queue_info().
+ */
+function notifications_cron_queue_info() {
+  $queues['notifications_event'] = array(
+    'worker callback' => '_notifications_queue',
+    'time' => 60,
+  );
+  return $queues;
+}
+
+
+/**
+ * Queue notifications events for DrupalQueue.
+ */
+function notifications_queue($event) {
+  if (variable_get('notifications_send_immediate', 0)) {
+    _notifications_queue($event);
+  }
+  else {
+    $queue = drupal_queue_get('notifications_event', TRUE);
+    // Log to watchdog should queue item creation fail.
+    if (!$queue->createItem($event)) {
+      watchdog('notifications', t('Failed to create queue item for notifications.'), WATCHDOG_ERROR);
+    }
+  }
+}
+
+/**
  * Queue events for notifications adding query conditions from plug-ins
  * 
  * This is an example of the resulting query
@@ -446,7 +474,7 @@ function notifications_event_enabled($type, $action) {
  * @param $event
  *   Event array.
  */
-function notifications_queue($event) {
+function _notifications_queue($event) {
   $query = array();
   // Build big insert query using the query builder. The fields for this event type will be added by the plug-ins. 
   // If no arguments retrieved, skip this step
@@ -1933,4 +1961,4 @@ function notifications_locale_refresh() {
     }
   }
   return TRUE;
-}
\ No newline at end of file
+}
