diff --git a/src/Plugin/EntityUsage/Track/EntityEmbed.php b/src/Plugin/EntityUsage/Track/EntityEmbed.php
index 61247e8..a0c38d1 100644
--- a/src/Plugin/EntityUsage/Track/EntityEmbed.php
+++ b/src/Plugin/EntityUsage/Track/EntityEmbed.php
@@ -10,6 +10,7 @@ use Drupal\entity_usage\EntityUsageTrackInterface;
 use Drupal\Core\Entity\EntityInterface;
 use Drupal\Component\Utility\Html;
 use Symfony\Component\DependencyInjection\ContainerInterface;
+use Drupal\Core\Entity\EntityTypeManagerInterface;
 
 /**
  * Tracks usage of entities related in entity_reference fields.
@@ -37,6 +38,13 @@ class EntityEmbed extends EntityUsageTrackBase implements EntityUsageTrackInterf
   protected $entityRepository;
 
   /**
+   * The Entity Type Manager.
+   *
+   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
+   */
+  private $entityTypeManager;
+
+  /**
    * Constructs display plugin.
    *
    * @param array $configuration
@@ -51,6 +59,8 @@ class EntityEmbed extends EntityUsageTrackBase implements EntityUsageTrackInterf
    *   The ModuleHandler service.
    * @param \Drupal\Core\Entity\EntityRepositoryInterface $entity_repository
    *   The EntityRepositoryInterface service.
+   * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_manager
+   *   The entity type manager.
    */
   public function __construct(
     array $configuration,
@@ -58,11 +68,13 @@ class EntityEmbed extends EntityUsageTrackBase implements EntityUsageTrackInterf
     $plugin_definition,
     EntityUsage $usage_service,
     ModuleHandlerInterface $module_handler,
-    EntityRepositoryInterface $entity_repository
+    EntityRepositoryInterface $entity_repository,
+    EntityTypeManagerInterface $entity_manager
   ) {
     parent::__construct($configuration, $plugin_id, $plugin_definition, $usage_service);
     $this->moduleHandler = $module_handler;
     $this->entityRepository = $entity_repository;
+    $this->entityTypeManager = $entity_manager;
   }
 
   /**
@@ -75,7 +87,8 @@ class EntityEmbed extends EntityUsageTrackBase implements EntityUsageTrackInterf
       $plugin_definition,
       $container->get('entity_usage.usage'),
       $container->get('module_handler'),
-      $container->get('entity.repository')
+      $container->get('entity.repository'),
+      $container->get('entity_type.manager')
     );
   }
 
@@ -96,17 +109,66 @@ class EntityEmbed extends EntityUsageTrackBase implements EntityUsageTrackInterf
    * {@inheritdoc}
    */
   public function trackOnEntityUpdate(EntityInterface $entity) {
+
+    // In case of revisions, Define the previous revision embeds.
+    $entity_previous_revision = ($entity->getRevisionId() > 1) ? $this->entityTypeManager->getStorage($entity->getEntityTypeId())->loadRevision($entity->getRevisionId() - 1) : NULL;
+    if (isset($entity_previous_revision)) {
+      $referenced_entities_previous = $this->getEmbeddedEntitiesByField($entity_previous_revision, TRUE);
+    }
+
     // Track entities embedded in text fields.
     $referenced_entities_new = $this->getEmbeddedEntitiesByField($entity, TRUE);
     $referenced_entities_original = $this->getEmbeddedEntitiesByField($entity->original, TRUE);
-    foreach (array_diff_key($referenced_entities_new, $referenced_entities_original) as $uuid => $type) {
-      // These entities were added.
-      $this->incrementEmbeddedUsage($entity, $type, $uuid);
+
+    // Checks and counts the entities that where added,
+    // In case of revisions.
+    if (isset($referenced_entities_previous)) {
+      // Embeds added from the original / default revision.
+      $new_embeds_from_original = array_diff_key($referenced_entities_new, $referenced_entities_original);
+      // Embeds added from the previous revision.
+      $new_embeds_from_previous_revision = array_diff_key($referenced_entities_new, $referenced_entities_previous);
+      foreach (array_diff_key($new_embeds_from_previous_revision, $referenced_entities_original) as $uuid => $type) {
+        // These entities were added.
+        $this->incrementEmbeddedUsage($entity, $type, $uuid);
+      }
     }
-    foreach (array_diff_key($referenced_entities_original, $referenced_entities_new) as $uuid => $type) {
-      // These entities were removed.
-      $this->decrementEmbeddedUsage($entity, $type, $uuid);
+    // Or without revisions.
+    else {
+      foreach (array_diff_key($referenced_entities_new, $referenced_entities_original) as $uuid => $type) {
+        // These entities were added.
+        $this->incrementEmbeddedUsage($entity, $type, $uuid);
+      }
+    }
+
+    // In case of revisions.
+    if (isset($referenced_entities_previous)) {
+      switch ($entity->isDefaultRevision()) {
+        // Case of intermediate revision (not published and not default).
+        case FALSE:
+          // Embeds removed from the previous revision.
+          $embeds_removed_from_previous_revision = array_diff_key($referenced_entities_previous, $referenced_entities_new);
+          foreach (array_diff_key($embeds_removed_from_previous_revision, $referenced_entities_original) as $uuid => $type) {
+            // These entities were removed.
+            $this->decrementEmbeddedUsage($entity, $type, $uuid);
+          };
+          break;
+
+        // Case of Original Default (published) revision.
+        default:
+          foreach (array_diff_key($referenced_entities_original, $referenced_entities_new) as $uuid => $type) {
+            // These entities were removed.
+            $this->decrementEmbeddedUsage($entity, $type, $uuid);
+          };
+      }
     }
+    // And without revisions.
+    else {
+      foreach (array_diff_key($referenced_entities_original, $referenced_entities_new) as $uuid => $type) {
+        // These entities were removed.
+        $this->decrementEmbeddedUsage($entity, $type, $uuid);
+      }
+    }
+
   }
 
   /**
diff --git a/src/Plugin/EntityUsage/Track/EntityReference.php b/src/Plugin/EntityUsage/Track/EntityReference.php
index 2eb89dd..7ff20fb 100644
--- a/src/Plugin/EntityUsage/Track/EntityReference.php
+++ b/src/Plugin/EntityUsage/Track/EntityReference.php
@@ -9,6 +9,7 @@ use Drupal\entity_usage\EntityUsageTrackBase;
 use Drupal\entity_usage\EntityUsageTrackInterface;
 use Drupal\Core\Entity\EntityInterface;
 use Symfony\Component\DependencyInjection\ContainerInterface;
+use Drupal\Core\Entity\EntityTypeManagerInterface;
 
 /**
  * Tracks usage of entities related in entity_reference fields.
@@ -29,6 +30,13 @@ class EntityReference extends EntityUsageTrackBase implements EntityUsageTrackIn
   protected $entityFieldManager;
 
   /**
+   * The Entity Type Manager.
+   *
+   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
+   */
+  private $entityTypeManager;
+
+  /**
    * Constructs display plugin.
    *
    * @param array $configuration
@@ -41,16 +49,20 @@ class EntityReference extends EntityUsageTrackBase implements EntityUsageTrackIn
    *   The usage tracking service.
    * @param \Drupal\Core\Entity\EntityFieldManagerInterface $entity_field_manager
    *   The EntityFieldManager service.
+   * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_manager
+   *   The entity type manager.
    */
   public function __construct(
     array $configuration,
     $plugin_id,
     $plugin_definition,
     EntityUsage $usage_service,
-    EntityFieldManagerInterface $entity_field_manager
+    EntityFieldManagerInterface $entity_field_manager,
+    EntityTypeManagerInterface $entity_manager
   ) {
     parent::__construct($configuration, $plugin_id, $plugin_definition, $usage_service);
     $this->entityFieldManager = $entity_field_manager;
+    $this->entityTypeManager = $entity_manager;
   }
 
   /**
@@ -62,7 +74,8 @@ class EntityReference extends EntityUsageTrackBase implements EntityUsageTrackIn
       $plugin_id,
       $plugin_definition,
       $container->get('entity_usage.usage'),
-      $container->get('entity_field.manager')
+      $container->get('entity_field.manager'),
+      $container->get('entity_type.manager')
     );
   }
 
@@ -86,25 +99,61 @@ class EntityReference extends EntityUsageTrackBase implements EntityUsageTrackIn
    */
   public function trackOnEntityUpdate(EntityInterface $entity) {
     foreach ($this->entityReferenceFieldsAvailable($entity) as $field_name) {
+
+      // Get the previous revision.
+      $entity_previous_revision = ($entity->getRevisionId() > 1) ? $this->entityTypeManager->getStorage($entity->getEntityTypeId())->loadRevision($entity->getRevisionId() - 1) : NULL;
+
       // Original entity had some values on the field.
       if (!$entity->original->$field_name->isEmpty()) {
         /** @var \Drupal\Core\Field\Plugin\Field\FieldType\EntityReferenceItem $field_item */
         foreach ($entity->original->$field_name as $field_item) {
           // Check if this item is still present on the updated entity.
-          if (!$this->targetIdIsReferencedInEntity($entity, $field_item->target_id, $field_name)) {
+          if (!$this->targetIdIsReferencedInEntity($entity, $field_item->target_id, $field_name)
+            && $entity->isDefaultRevision()) {
             // This item got removed. Track the usage down.
             $this->decrementEntityReferenceUsage($entity, $field_name, $field_item);
           }
         }
       }
+
+      // If revisions are active and the item wasn't present in the previous,
+      // and the actual is an intermediate revision
+      // (not original / default revision)
+      if (isset($entity_previous_revision->$field_name) && !$entity_previous_revision->$field_name->isEmpty() && !$entity->isDefaultRevision()) {
+        /** @var \Drupal\Core\Field\Plugin\Field\FieldType\EntityReferenceItem $field_item */
+        foreach ($entity_previous_revision->$field_name as $field_item) {
+          // Check if this item has been removed
+          // and was present in the previous revision,
+          // but isn't present in the default (published) revision entity.
+          if (!$this->targetIdIsReferencedInEntity($entity, $field_item->target_id, $field_name)
+            && $this->targetIdIsReferencedInEntity($entity_previous_revision, $field_item->target_id, $field_name)
+            && !$this->targetIdIsReferencedInEntity($entity->original, $field_item->target_id, $field_name)) {
+            // This item got removed. Track the usage down.
+            $this->decrementEntityReferenceUsage($entity, $field_name, $field_item);
+          }
+        }
+      }
+
       // Current entity has some values on the field.
       if (!$entity->$field_name->isEmpty()) {
         /** @var \Drupal\Core\Field\Plugin\Field\FieldType\EntityReferenceItem $field_item */
         foreach ($entity->$field_name as $field_item) {
-          // Check if this item was present on the original entity.
-          if (!$this->targetIdIsReferencedInEntity($entity->original, $field_item->target_id, $field_name)) {
-            // This item got added. Track the usage up.
-            $this->incrementEntityReferenceUsage($entity, $field_name, $field_item);
+          // Check if this item was present
+          // in the previous revision, in case of revisions.
+          if (isset($entity_previous_revision)) {
+            if (!$this->targetIdIsReferencedInEntity($entity->original, $field_item->target_id, $field_name)
+              && !$this->targetIdIsReferencedInEntity($entity_previous_revision, $field_item->target_id, $field_name)
+            ) {
+              // This item got added. Track the usage up.
+              $this->incrementEntityReferenceUsage($entity, $field_name, $field_item);
+            }
+          }
+          // Or in the Original entity, without revisions.
+          else {
+            if (!$this->targetIdIsReferencedInEntity($entity->original, $field_item->target_id, $field_name)) {
+              // This item got added. Track the usage up.
+              $this->incrementEntityReferenceUsage($entity, $field_name, $field_item);
+            }
           }
         }
       }
@@ -166,7 +215,7 @@ class EntityReference extends EntityUsageTrackBase implements EntityUsageTrackIn
    *   value in any delta of the $field_name, FALSE otherwise.
    */
   private function targetIdIsReferencedInEntity(EntityInterface $host_entity, $referenced_entity_id, $field_name) {
-    if (!$host_entity->$field_name->isEmpty()) {
+    if (isset($host_entity->$field_name) && !$host_entity->$field_name->isEmpty()) {
       foreach ($host_entity->get($field_name) as $field_delta) {
         if ($field_delta->target_id == $referenced_entity_id) {
           return TRUE;
