diff --git a/core/lib/Drupal/Core/Queue/DatabaseQueue.php b/core/lib/Drupal/Core/Queue/DatabaseQueue.php
index 7048591..3adaa62 100644
--- a/core/lib/Drupal/Core/Queue/DatabaseQueue.php
+++ b/core/lib/Drupal/Core/Queue/DatabaseQueue.php
@@ -53,7 +53,8 @@ public function createItem($data) {
         // by a single request which takes longer than 1 second.
         'created' => time(),
       ));
-    return (bool) $query->execute();
+    // Return the new serial ID, or FALSE on failure.
+    return $query->execute();
   }
 
   /**
diff --git a/core/lib/Drupal/Core/Queue/Memory.php b/core/lib/Drupal/Core/Queue/Memory.php
index 95abddd..1c59d8c 100644
--- a/core/lib/Drupal/Core/Queue/Memory.php
+++ b/core/lib/Drupal/Core/Queue/Memory.php
@@ -52,6 +52,7 @@ public function createItem($data) {
     $item->created = time();
     $item->expire = 0;
     $this->queue[$item->item_id] = $item;
+    return $item->item_id;
   }
 
   /**
diff --git a/core/lib/Drupal/Core/Queue/QueueInterface.php b/core/lib/Drupal/Core/Queue/QueueInterface.php
index 8e7e22c..0b7b4cf 100644
--- a/core/lib/Drupal/Core/Queue/QueueInterface.php
+++ b/core/lib/Drupal/Core/Queue/QueueInterface.php
@@ -22,8 +22,8 @@
    *   Arbitrary data to be associated with the new task in the queue.
    *
    * @return
-   *   TRUE if the item was successfully created and was (best effort) added
-   *   to the queue, otherwise FALSE. We don't guarantee the item was
+   *   A unique ID if the item was successfully created and was (best effort)
+   *   added to the queue, otherwise FALSE. We don't guarantee the item was
    *   committed to disk etc, but as far as we know, the item is now in the
    *   queue.
    */
@@ -63,6 +63,11 @@ public function numberOfItems();
    *   item it returns false. This implies a best effort to retrieve an item
    *   and either the queue is empty or there is some other non-recoverable
    *   problem.
+   *
+   *   If returned, the object will have at least the following properties:
+   *   - data: the same as what what passed into createItem().
+   *   - item_id: the unique ID returned from createItem().
+   *   - created: timestamp when the item was put into the queue.
    */
   public function claimItem($lease_time = 3600);
 
