diff --git a/java/com/android/dialer/logging/dialer_impression.proto b/java/com/android/dialer/logging/dialer_impression.proto
index a17d365..705420c 100644
--- a/java/com/android/dialer/logging/dialer_impression.proto
+++ b/java/com/android/dialer/logging/dialer_impression.proto
@@ -12,7 +12,7 @@
   // Event enums to be used for Impression Logging in Dialer.
   // It's perfectly acceptable for this enum to be large
   // Values should be from 1000 to 100000.
-  // Next Tag: 1322
+  // Next Tag: 1323
   enum Type {
     UNKNOWN_AOSP_EVENT_TYPE = 1000;
 
@@ -648,5 +648,7 @@
     BUBBLE_V2_BOTTOM_ACTION_DISMISS = 1320;
     // Drag bubble to bottom and end call
     BUBBLE_V2_BOTTOM_ACTION_END_CALL = 1321;
+
+    DUAL_SIM_SELECTION_SUGGESTION_AUTO_SELECTED = 1322;
   }
 }
diff --git a/java/com/android/dialer/precall/impl/CallingAccountSelector.java b/java/com/android/dialer/precall/impl/CallingAccountSelector.java
index d407296..9397d18 100644
--- a/java/com/android/dialer/precall/impl/CallingAccountSelector.java
+++ b/java/com/android/dialer/precall/impl/CallingAccountSelector.java
@@ -175,6 +175,16 @@
                 LogUtil.i(
                     "CallingAccountSelector.processPreferredAccount",
                     "SIM suggested: " + result.suggestion.get().reason);
+                if (result.suggestion.get().shouldAutoSelect) {
+                  Logger.get(coordinator.getActivity())
+                      .logImpression(
+                          DialerImpression.Type.DUAL_SIM_SELECTION_SUGGESTION_AUTO_SELECTED);
+                  LogUtil.i(
+                      "CallingAccountSelector.processPreferredAccount", "Auto selected suggestion");
+                  builder.setPhoneAccountHandle(result.suggestion.get().phoneAccountHandle);
+                  pendingAction.finish();
+                  return;
+                }
               }
               showDialog(
                   coordinator,
diff --git a/java/com/android/dialer/preferredsim/suggestion/SuggestionProvider.java b/java/com/android/dialer/preferredsim/suggestion/SuggestionProvider.java
index 61a831b..c1114b3 100644
--- a/java/com/android/dialer/preferredsim/suggestion/SuggestionProvider.java
+++ b/java/com/android/dialer/preferredsim/suggestion/SuggestionProvider.java
@@ -32,17 +32,25 @@
     // The SIM has the same carrier as the callee.
     INTRA_CARRIER,
     // The user has selected the SIM for the callee multiple times.
-    FREQUENT
+    FREQUENT,
+    // The user has select the SIM for this category of calls (contacts from certain accounts,
+    // etc.).
+    USER_SET,
   }
 
   /** The suggestion. */
   class Suggestion {
     @NonNull public final PhoneAccountHandle phoneAccountHandle;
     @NonNull public final Reason reason;
+    public final boolean shouldAutoSelect;
 
-    public Suggestion(@NonNull PhoneAccountHandle phoneAccountHandle, @NonNull Reason reason) {
+    public Suggestion(
+        @NonNull PhoneAccountHandle phoneAccountHandle,
+        @NonNull Reason reason,
+        boolean shouldAutoSelect) {
       this.phoneAccountHandle = Assert.isNotNull(phoneAccountHandle);
       this.reason = Assert.isNotNull(reason);
+      this.shouldAutoSelect = shouldAutoSelect;
     }
   }
 
@@ -55,4 +63,7 @@
       @NonNull Context context,
       @NonNull String number,
       @NonNull PhoneAccountHandle phoneAccountHandle);
+
+  @WorkerThread
+  void reportIncorrectSuggestion(@NonNull Context context, @NonNull String number);
 }
diff --git a/java/com/android/dialer/preferredsim/suggestion/stub/StubSuggestionProvider.java b/java/com/android/dialer/preferredsim/suggestion/stub/StubSuggestionProvider.java
index e324044..6fb73ac 100644
--- a/java/com/android/dialer/preferredsim/suggestion/stub/StubSuggestionProvider.java
+++ b/java/com/android/dialer/preferredsim/suggestion/stub/StubSuggestionProvider.java
@@ -41,4 +41,7 @@
       @NonNull Context context,
       @NonNull String number,
       @NonNull PhoneAccountHandle phoneAccountHandle) {}
+
+  @Override
+  public void reportIncorrectSuggestion(@NonNull Context context, @NonNull String number) {}
 }
diff --git a/java/com/android/incallui/multisim/SwapSimWorker.java b/java/com/android/incallui/multisim/SwapSimWorker.java
index 73c18c4..28cf293 100644
--- a/java/com/android/incallui/multisim/SwapSimWorker.java
+++ b/java/com/android/incallui/multisim/SwapSimWorker.java
@@ -31,6 +31,7 @@
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.DialerExecutor.Worker;
 import com.android.dialer.common.concurrent.ThreadUtil;
+import com.android.dialer.preferredsim.suggestion.SimSuggestionComponent;
 import com.android.dialer.util.PermissionsUtil;
 import com.android.incallui.call.CallList;
 import com.android.incallui.call.DialerCall;
@@ -99,6 +100,10 @@
   @SuppressWarnings("MissingPermission")
   public Void doInBackground(Void unused) {
     try {
+      SimSuggestionComponent.get(context)
+          .getSuggestionProvider()
+          .reportIncorrectSuggestion(context, number);
+
       if (!PermissionsUtil.hasPhonePermissions(context)) {
         LogUtil.e("SwapSimWorker.doInBackground", "missing phone permission");
         return null;
