diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationGuts.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationGuts.java
index 5abd1d5..dd6d6f3 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationGuts.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationGuts.java
@@ -35,6 +35,8 @@
 import android.widget.SeekBar;
 import android.widget.TextView;
 
+import com.android.internal.logging.MetricsLogger;
+import com.android.internal.logging.MetricsProto.MetricsEvent;
 import com.android.settingslib.Utils;
 import com.android.systemui.R;
 
@@ -51,6 +53,7 @@
     private SeekBar mSeekBar;
     private Notification.Topic mTopic;
     private INotificationManager mINotificationManager;
+    private int mStartingImportance;
 
     public NotificationGuts(Context context, AttributeSet attrs) {
         super(context, attrs);
@@ -103,6 +106,7 @@
 
     void bindImportance(final StatusBarNotification sbn, final ExpandableNotificationRow row,
             final int importance) {
+        mStartingImportance = importance;
         mINotificationManager = INotificationManager.Stub.asInterface(
                 ServiceManager.getService(Context.NOTIFICATION_SERVICE));
         mTopic = sbn.getNotification().getTopic() == null
@@ -151,6 +155,7 @@
                 }
                 updateTitleAndSummary(progress);
                 if (fromUser) {
+                    MetricsLogger.action(mContext, MetricsEvent.ACTION_MODIFY_IMPORTANCE_SLIDER);
                     if (appUsesTopics) {
                         mApplyToTopic.setVisibility(View.VISIBLE);
                         mApplyToTopic.setText(
@@ -205,6 +210,8 @@
 
     void saveImportance(final StatusBarNotification sbn) {
         int progress = mSeekBar.getProgress();
+        MetricsLogger.action(mContext, MetricsEvent.ACTION_SAVE_IMPORTANCE,
+                progress - mStartingImportance);
         try {
             mINotificationManager.setImportance(sbn.getPackageName(), sbn.getUid(),
                     mApplyToTopic.isChecked() ? mTopic : null, progress);
diff --git a/proto/src/metrics_constants.proto b/proto/src/metrics_constants.proto
index 439be81..3f3f851 100644
--- a/proto/src/metrics_constants.proto
+++ b/proto/src/metrics_constants.proto
@@ -362,5 +362,12 @@
 
     // Logged when a user dismisses a task in overview
     OVERVIEW_DISMISS = 289;
+
+    // Logged when the user modifying the notification importance slider.
+    ACTION_MODIFY_IMPORTANCE_SLIDER = 290;
+
+    // Logged when the user saves a modification to notification importance. Negative numbers
+    // indicate the user lowered the importance; positive means they increased it.
+    ACTION_SAVE_IMPORTANCE = 291;
   }
 }
