diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index d82d53e..fb3895d 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -27,7 +27,7 @@
     <string name="toast_message_sent_success" msgid="1159956191974273064">"Mensagem enviada."</string>
     <string name="notification_service_label" msgid="7512186049723777468">"Serviço de escuta de notificações do carro"</string>
     <string name="notifications" msgid="2865534625906329283">"Central de notificações"</string>
-    <string name="clear_all" msgid="1845314281571237722">"Limpar tudo"</string>
+    <string name="clear_all" msgid="1845314281571237722">"Excluir tudo"</string>
     <string name="ellipsized_string" msgid="6993649229498857557">"…"</string>
     <string name="show_more" msgid="7291378544926443344">"Mostrar mais"</string>
     <string name="notification_header" msgid="324550431063568049">"Notificações"</string>
diff --git a/src/com/android/car/notification/CarNotificationListener.java b/src/com/android/car/notification/CarNotificationListener.java
index 59020c8..e35b9d6 100644
--- a/src/com/android/car/notification/CarNotificationListener.java
+++ b/src/com/android/car/notification/CarNotificationListener.java
@@ -17,6 +17,7 @@
 
 import android.annotation.Nullable;
 import android.app.ActivityManager;
+import android.app.NotificationManager;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
@@ -198,7 +199,12 @@
     }
 
     private void notifyNotificationPosted(StatusBarNotification sbn) {
-        mNotificationDataManager.addNewMessageNotification(sbn);
+        if (shouldTrackUnseen(sbn)) {
+            mNotificationDataManager.addNewMessageNotification(sbn);
+        } else {
+            mNotificationDataManager.untrackUnseenNotification(sbn);
+        }
+
         mHeadsUpManager.maybeShowHeadsUp(sbn, getCurrentRanking(), mActiveNotifications);
         if (mHandler == null) {
             return;
@@ -214,4 +220,12 @@
             return CarNotificationListener.this;
         }
     }
+
+    // We do not want to show unseen markers for <= LOW importance notifications to be consistent
+    // with how these notifications are handled on phones
+    boolean shouldTrackUnseen(StatusBarNotification sbn) {
+        Ranking ranking = new NotificationListenerService.Ranking();
+        mRankingMap.getRanking(sbn.getKey(), ranking);
+        return ranking.getImportance() > NotificationManager.IMPORTANCE_LOW;
+    }
 }
diff --git a/src/com/android/car/notification/NotificationDataManager.java b/src/com/android/car/notification/NotificationDataManager.java
index 96fabbf..59d019f 100644
--- a/src/com/android/car/notification/NotificationDataManager.java
+++ b/src/com/android/car/notification/NotificationDataManager.java
@@ -91,6 +91,15 @@
         }
     }
 
+    void untrackUnseenNotification(StatusBarNotification notification) {
+        if (mUnseenNotificationMap.containsKey(notification.getKey())) {
+            mUnseenNotificationMap.remove(notification.getKey());
+            if (mOnUnseenCountUpdateListener != null) {
+                mOnUnseenCountUpdateListener.onUnseenCountUpdate();
+            }
+        }
+    }
+
     void updateUnseenNotification(List<NotificationGroup> notificationGroups) {
         Set<String> currentNotificationKeys = new HashSet<>();
 
diff --git a/src/com/android/car/notification/NotificationViewController.java b/src/com/android/car/notification/NotificationViewController.java
index dfdfeaa..b4c347d 100644
--- a/src/com/android/car/notification/NotificationViewController.java
+++ b/src/com/android/car/notification/NotificationViewController.java
@@ -11,6 +11,7 @@
 import android.widget.Toast;
 
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * This class is a bridge to collect signals from the notification and ux restriction services and
@@ -105,7 +106,12 @@
                 mCarNotificationListener.getNotifications(),
                 mCarNotificationListener.getCurrentRanking());
 
-        mNotificationDataManager.updateUnseenNotification(notificationGroups);
+        List<NotificationGroup> unseenNotifications = notificationGroups.stream()
+                .filter(g -> g.getChildNotifications().stream()
+                        .anyMatch(mCarNotificationListener::shouldTrackUnseen))
+                .collect(Collectors.toList());
+
+        mNotificationDataManager.updateUnseenNotification(unseenNotifications);
         mCarNotificationView.setNotifications(notificationGroups);
     }
 
