diff --git a/includes/datasource.inc b/includes/datasource.inc
index bdab029..58c531a 100644
--- a/includes/datasource.inc
+++ b/includes/datasource.inc
@@ -158,6 +158,10 @@ interface SearchApiDataSourceControllerInterface {
    * @param SearchApiIndex[] $indexes
    *   The indexes for which items should be tracked.
    *
+   * @return SearchApiIndex[]|null
+   *   All indexes for which any items were added; or NULL if items were added
+   *   for all of them.
+   *
    * @throws SearchApiDataSourceException
    *   If any error state was encountered.
    */
diff --git a/includes/datasource_entity.inc b/includes/datasource_entity.inc
index 5f3d489..f654191 100644
--- a/includes/datasource_entity.inc
+++ b/includes/datasource_entity.inc
@@ -192,7 +192,9 @@ class SearchApiEntityDataSourceController extends SearchApiAbstractDataSourceCon
    * {@inheritdoc}
    */
   public function trackItemInsert(array $item_ids, array $indexes) {
-    foreach ($indexes as $index) {
+    $ret = array();
+
+    foreach ($indexes as $index_id => $index) {
       $ids = $item_ids;
       if ($bundles = $this->getIndexBundles($index)) {
         $ids = drupal_map_assoc($ids);
@@ -204,8 +206,11 @@ class SearchApiEntityDataSourceController extends SearchApiAbstractDataSourceCon
       }
       if ($ids) {
         parent::trackItemInsert($ids, array($index));
+        $ret[$index_id] = $index;
       }
     }
+
+    return $ret;
   }
 
   /**
diff --git a/search_api.module b/search_api.module
index 7204764..aa949fc 100644
--- a/search_api.module
+++ b/search_api.module
@@ -1131,7 +1131,10 @@ function search_api_track_item_insert($type, array $item_ids) {
   }
 
   try {
-    search_api_get_datasource_controller($type)->trackItemInsert($item_ids, $indexes);
+    $returned_indexes = search_api_get_datasource_controller($type)->trackItemInsert($item_ids, $indexes);
+    if (isset($returned_indexes)) {
+      $indexes = $returned_indexes;
+    }
   }
   catch (SearchApiException $e) {
     $vars['%item_type'] = $type;
