diff --git a/java/com/android/dialer/backup/DialerPersistentBackupAgent.java b/java/com/android/dialer/backup/DialerPersistentBackupAgent.java
index dfe4ea3..085c343 100644
--- a/java/com/android/dialer/backup/DialerPersistentBackupAgent.java
+++ b/java/com/android/dialer/backup/DialerPersistentBackupAgent.java
@@ -23,6 +23,8 @@
 import android.util.ArrayMap;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.logging.DialerImpression;
+import com.android.dialer.logging.Logger;
 import com.google.android.libraries.backup.BackupKeyPredicate;
 import com.google.android.libraries.backup.BackupKeyPredicates;
 import com.google.android.libraries.backup.PersistentBackupAgentHelper;
@@ -39,6 +41,7 @@
   @VisibleForTesting(otherwise = VisibleForTesting.NONE)
   DialerPersistentBackupAgent(@NonNull String sharedPreferenceName) {
     this.sharedPrefsName = Assert.isNotNull(sharedPreferenceName);
+    Logger.get(this).logImpression(DialerImpression.Type.BACKUP_KEY_VALUE_BACKUP_AGENT_CONSTRUCTOR);
   }
 
   public DialerPersistentBackupAgent() {
@@ -48,6 +51,7 @@
   @Override
   public void onRestore(BackupDataInput data, int appVersionCode, ParcelFileDescriptor stateFile)
       throws IOException {
+    Logger.get(this).logImpression(DialerImpression.Type.BACKUP_KEY_VALUE_ON_RESTORE);
     LogUtil.i("DialerPersistentBackupAgent.onRestore", "restore from version: " + appVersionCode);
     super.onRestore(data, appVersionCode, stateFile);
   }
@@ -56,12 +60,14 @@
   public void onBackup(
       ParcelFileDescriptor oldState, BackupDataOutput data, ParcelFileDescriptor newState)
       throws IOException {
+    Logger.get(this).logImpression(DialerImpression.Type.BACKUP_KEY_VALUE_ON_BACKUP);
     LogUtil.i("DialerPersistentBackupAgent.onBackup", "onBackup being performed");
     super.onBackup(oldState, data, newState);
   }
 
   @Override
   public Map<String, BackupKeyPredicate> getBackupSpecification() {
+    Logger.get(this).logImpression(DialerImpression.Type.BACKUP_KEY_VALUE_GET_BACKUP_SPECIFICATION);
     LogUtil.i(
         "DialerPersistentBackupAgent.getBackupSpecification",
         "file being backed up: " + sharedPrefsName);
@@ -69,4 +75,10 @@
     backupSpecification.put(sharedPrefsName, BackupKeyPredicates.alwaysTrue());
     return backupSpecification;
   }
+
+  @Override
+  public void onRestoreFinished() {
+    Logger.get(this).logImpression(DialerImpression.Type.BACKUP_KEY_VALUE_ON_RESTORE_FINISHED);
+    super.onRestoreFinished();
+  }
 }
diff --git a/java/com/android/dialer/logging/dialer_impression.proto b/java/com/android/dialer/logging/dialer_impression.proto
index 1b6f3c2..69be3e1 100644
--- a/java/com/android/dialer/logging/dialer_impression.proto
+++ b/java/com/android/dialer/logging/dialer_impression.proto
@@ -483,5 +483,12 @@
     BUBBLE_PRIMARY_BUTTON_EXPAND = 1237;
     // Bubble prinary button second click to return to call
     BUBBLE_PRIMARY_BUTTON_RETURN_TO_CALL = 1238;
+
+    // Dialer Key/Value Backup and Restore
+    BACKUP_KEY_VALUE_ON_BACKUP = 1239;
+    BACKUP_KEY_VALUE_ON_RESTORE = 1240;
+    BACKUP_KEY_VALUE_ON_RESTORE_FINISHED = 1241;
+    BACKUP_KEY_VALUE_GET_BACKUP_SPECIFICATION = 1242;
+    BACKUP_KEY_VALUE_BACKUP_AGENT_CONSTRUCTOR = 1243;
   }
 }
