diff --git a/quickstep/protos_overrides/launcher_atom_extension.proto b/quickstep/protos_overrides/launcher_atom_extension.proto
index d2dc0cb..1195669 100644
--- a/quickstep/protos_overrides/launcher_atom_extension.proto
+++ b/quickstep/protos_overrides/launcher_atom_extension.proto
@@ -23,20 +23,21 @@
 // Message name should match with launcher_atom_extension.proto message at
 // the AOSP level.
 message ExtendedContainers {
+  reserved 2; // Deleted fields
 
   oneof Container{
     DeviceSearchResultContainer device_search_result_container = 1;
-    CorrectedDeviceSearchResultContainer corrected_device_search_result_container = 2;
   }
 }
 
 // Represents on-device search result container.
 message DeviceSearchResultContainer{
   optional int32 query_length = 1;
-}
+  optional SearchAttributes search_attributes = 2;
 
-// Represents on-device search result container with results from spell-corrected query.
-message CorrectedDeviceSearchResultContainer{
-  optional int32 query_length = 1;
-}
+  message SearchAttributes{
 
+    // True if results are based on spell corrected query
+    optional bool corrected_query = 1;
+  }
+}
diff --git a/quickstep/src/com/android/launcher3/model/AppEventProducer.java b/quickstep/src/com/android/launcher3/model/AppEventProducer.java
index 7c29c5b..d4bbfa2 100644
--- a/quickstep/src/com/android/launcher3/model/AppEventProducer.java
+++ b/quickstep/src/com/android/launcher3/model/AppEventProducer.java
@@ -23,6 +23,7 @@
 import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_HOTSEAT_PREDICTION;
 import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_PREDICTION;
 import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_WIDGETS_PREDICTION;
+import static com.android.launcher3.logger.LauncherAtomExtensions.ExtendedContainers.ContainerCase.DEVICE_SEARCH_RESULT_CONTAINER;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_APP_LAUNCH_TAP;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_FOLDER_CONVERTED_TO_ICON;
 import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_HOTSEAT_PREDICTION_PINNED;
@@ -293,10 +294,9 @@
             case SEARCH_RESULT_CONTAINER:
                 return "search-results";
             case EXTENDED_CONTAINERS: {
-                switch(ci.getExtendedContainers().getContainerCase()) {
-                    case DEVICE_SEARCH_RESULT_CONTAINER:
-                    case CORRECTED_DEVICE_SEARCH_RESULT_CONTAINER:
-                        return "search-results";
+                if (ci.getExtendedContainers().getContainerCase()
+                        == DEVICE_SEARCH_RESULT_CONTAINER) {
+                    return "search-results";
                 }
             }
             default: // fall out
diff --git a/quickstep/src/com/android/quickstep/logging/StatsLogCompatManager.java b/quickstep/src/com/android/quickstep/logging/StatsLogCompatManager.java
index 676161e..09f7888 100644
--- a/quickstep/src/com/android/quickstep/logging/StatsLogCompatManager.java
+++ b/quickstep/src/com/android/quickstep/logging/StatsLogCompatManager.java
@@ -48,6 +48,7 @@
 import com.android.launcher3.logger.LauncherAtom.FromState;
 import com.android.launcher3.logger.LauncherAtom.ToState;
 import com.android.launcher3.logger.LauncherAtomExtensions.DeviceSearchResultContainer;
+import com.android.launcher3.logger.LauncherAtomExtensions.DeviceSearchResultContainer.SearchAttributes;
 import com.android.launcher3.logger.LauncherAtomExtensions.ExtendedContainers;
 import com.android.launcher3.logging.InstanceId;
 import com.android.launcher3.logging.StatsLogManager;
@@ -89,6 +90,11 @@
     private static final int EXTENDED_CONTAINERS_HIERARCHY_OFFSET = 300;
     private static final int ATTRIBUTE_MULTIPLIER = 100;
 
+    /**
+     * Flags for converting SearchAttribute to integer value.
+     */
+    private static final int SEARCH_ATTRIBUTES_CORRECTED_QUERY = 1;
+
     public static final CopyOnWriteArrayList<StatsLogConsumer> LOGS_CONSUMER =
             new CopyOnWriteArrayList<>();
 
@@ -405,7 +411,10 @@
                     atomInfo.getFolderIcon().getToLabelState().getNumber() /* toState */,
                     atomInfo.getFolderIcon().getLabelInfo() /* edittext */,
                     getCardinality(atomInfo) /* cardinality */,
-                    getFeatures(atomInfo) /* features */);
+                    getFeatures(atomInfo) /* features */
+                    // TODO(b/217753033) : Add SearchAttributes field after necessary approval
+                    // getSearchAttributes(atomInfo) /* searchAttributes */
+            );
         }
     }
 
@@ -561,6 +570,22 @@
         return 0;
     }
 
+    private static int getSearchAttributes(LauncherAtom.ItemInfo info) {
+        if (info.getContainerInfo().getExtendedContainers().getDeviceSearchResultContainer()
+                .hasSearchAttributes()) {
+            return searchAttributesToInt(info.getContainerInfo().getExtendedContainers()
+                    .getDeviceSearchResultContainer().getSearchAttributes());
+        }
+        return 0;
+    }
+
+    private static int searchAttributesToInt(SearchAttributes searchAttributes) {
+        int response = 0;
+        if (searchAttributes.getCorrectedQuery()) {
+            response = response | SEARCH_ATTRIBUTES_CORRECTED_QUERY;
+        }
+        return response;
+    }
 
     /**
      * Interface to get stats log while it is dispatched to the system
