diff --git a/Android.mk b/Android.mk
index b195ad4..9e9a55a 100644
--- a/Android.mk
+++ b/Android.mk
@@ -28,15 +28,16 @@
     --auto-add-overlay \
     --extra-packages com.android.contacts.common \
     --extra-packages com.android.phone.common \
+    --extra-packages com.google.android.libraries.material.featurehighlight \
     --extra-packages android.support.design \
     --extra-packages android.support.v7.appcompat \
     --extra-packages android.support.v7.cardview \
     --extra-packages android.support.v7.recyclerview
 
+LOCAL_STATIC_JAVA_AAR_LIBRARIES := aar_feature_highlight
+
 LOCAL_STATIC_JAVA_LIBRARIES := \
-    com.android.vcard \
     android-common \
-    guava \
     android-support-design \
     android-support-v13 \
     android-support-v7-appcompat \
@@ -44,7 +45,15 @@
     android-support-v7-recyclerview \
     android-support-v7-palette \
     android-support-v4 \
-    libphonenumber
+    com.android.vcard \
+    guava \
+    libphonenumber \
+    lib_animation \
+    lib_math \
+    lib_navigation_finder \
+    lib_path \
+    lib_util_objects \
+    lib_util_preconditions
 
 LOCAL_PACKAGE_NAME := Contacts
 LOCAL_CERTIFICATE := shared
@@ -57,5 +66,21 @@
 
 include $(BUILD_PACKAGE)
 
+#########################################################################################
+
+include $(CLEAR_VARS)
+# Import FeatureHighlight aar and its dependencies.
+LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := aar_feature_highlight:libs/featurehighlight.aar \
+    lib_animation:libs/libanimation.jar \
+    lib_math:libs/libmath.jar \
+    lib_navigation_finder:libs/libappcompat.jar \
+    lib_path:libs/libpath.jar \
+    lib_util_objects:libs/libutil_Objects.jar \
+    lib_util_preconditions:libs/libutil_Preconditions.jar
+
+include $(BUILD_MULTI_PREBUILT)
+
+#########################################################################################
+
 # Use the folloing include to make our test apk.
 include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/libs/README.txt b/libs/README.txt
new file mode 100644
index 0000000..6232d95
--- /dev/null
+++ b/libs/README.txt
@@ -0,0 +1,9 @@
+featurehighlight.aar was generated from google3:
+blaze build java/com/google/android/libraries/material/featurehighlight:featurehighlight.aar
+
+Other libs are dependencies of featurehighlight.aar:
+blaze build java/com/google/android/libraries/material/featurehighlight/appcompat:appcompat for libappcompat.jar
+blaze build java/com/google/android/libraries/material/animation:animation for libanimation.jar
+blaze build java/com/google/android/libraries/stitch/util:util for libutil_Objects.jar and libutil_Preconditions.jar
+blaze build java/com/google/android/libraries/material/math:math for libmath.jar
+blaze build java/com/google/android/libraries/material/path:path for libpath.jar
diff --git a/libs/featurehighlight.aar b/libs/featurehighlight.aar
new file mode 100644
index 0000000..d93f3b1
--- /dev/null
+++ b/libs/featurehighlight.aar
Binary files differ
diff --git a/libs/libanimation.jar b/libs/libanimation.jar
new file mode 100644
index 0000000..868ffff
--- /dev/null
+++ b/libs/libanimation.jar
Binary files differ
diff --git a/libs/libappcompat.jar b/libs/libappcompat.jar
new file mode 100644
index 0000000..1cff196
--- /dev/null
+++ b/libs/libappcompat.jar
Binary files differ
diff --git a/libs/libmath.jar b/libs/libmath.jar
new file mode 100644
index 0000000..cec2e2a
--- /dev/null
+++ b/libs/libmath.jar
Binary files differ
diff --git a/libs/libpath.jar b/libs/libpath.jar
new file mode 100644
index 0000000..cb31ec0
--- /dev/null
+++ b/libs/libpath.jar
Binary files differ
diff --git a/libs/libutil_Objects.jar b/libs/libutil_Objects.jar
new file mode 100644
index 0000000..d55a3e9
--- /dev/null
+++ b/libs/libutil_Objects.jar
Binary files differ
diff --git a/libs/libutil_Preconditions.jar b/libs/libutil_Preconditions.jar
new file mode 100644
index 0000000..0f27ae2
--- /dev/null
+++ b/libs/libutil_Preconditions.jar
Binary files differ
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 0d1b6ea..f5bf4cc 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -81,4 +81,6 @@
     <!-- Color of background of all empty states. -->
     <color name="empty_state_background">#efefef</color>
 
+    <!-- Color of hamburger icon in promo -->
+    <color name="hamburger_feature_highlight_inner_color">#00ffffff</color>
 </resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index ef82a26..9b6fb64 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -953,4 +953,9 @@
     <!-- Content displayed in QuickContact activity after Contacts app receiving
          SMS permission [CHAR LIMIT=40] -->
     <string name="permission_explanation_subheader_SMS">Messages</string>
+
+    <!-- The header text for hamburger promo [CHAR LIMIT=60]-->
+    <string name="hamburger_feature_highlight_header">Organize your list</string>
+    <!-- The body text for hamburger promo [CHAR LIMIT=200]-->
+    <string name="hamburger_feature_highlight_body">Clean up duplicates &amp; group contacts by label</string>
 </resources>
diff --git a/src/com/android/contacts/activities/ActionBarAdapter.java b/src/com/android/contacts/activities/ActionBarAdapter.java
index 9f7d8b0..0ee83df 100644
--- a/src/com/android/contacts/activities/ActionBarAdapter.java
+++ b/src/com/android/contacts/activities/ActionBarAdapter.java
@@ -48,6 +48,8 @@
 import com.android.contacts.activities.ActionBarAdapter.Listener.Action;
 import com.android.contacts.common.compat.CompatUtils;
 import com.android.contacts.list.ContactsRequest;
+import com.google.android.libraries.material.featurehighlight.FeatureHighlight;
+import com.google.android.libraries.material.featurehighlight.appcompat.ToolbarNavigationIconFinder;
 
 import java.util.ArrayList;
 
@@ -83,6 +85,9 @@
 
     private static final String PERSISTENT_LAST_TAB = "actionBarAdapter.lastTab";
 
+    private static final String PREFERENCE_KEY_SHOULD_SHOW_HAMBURGER_FEATURE_HIGHLIGHT =
+            "shouldShowHamburgerFeatureHighlight";
+
     private boolean mSelectionMode;
     private boolean mSearchMode;
     private String mQueryString;
@@ -118,6 +123,8 @@
 
     private int mSearchHintResId;
 
+    private FeatureHighlight mHamburgerFeatureHighlight;
+
     public interface TabState {
         public static int ALL = 0;
 
@@ -232,6 +239,7 @@
             mQueryString = request.getQueryString();
             mCurrentTab = loadLastTabPreference();
             mSelectionMode = false;
+            addHamburgerHighlight();
         } else {
             mSearchMode = savedState.getBoolean(EXTRA_KEY_SEARCH_MODE);
             mSelectionMode = savedState.getBoolean(EXTRA_KEY_SELECTED_MODE);
@@ -426,6 +434,37 @@
         }
     }
 
+    private void addHamburgerHighlight() {
+        if (mHamburgerFeatureHighlight == null) {
+            mHamburgerFeatureHighlight = FeatureHighlight.Builder
+                    .forView(new ToolbarNavigationIconFinder())
+                    .setHeader(mActivity.getResources().getString(
+                            R.string.hamburger_feature_highlight_header))
+                    .setBody(mActivity.getResources().getString(
+                            R.string.hamburger_feature_highlight_body))
+                    .setInnerColor(mActivity.getResources().getColor(
+                            R.color.hamburger_feature_highlight_inner_color))
+                    .build();
+        }
+    }
+
+    public FeatureHighlight getHamburgerFeatureHighlight() {
+        return mHamburgerFeatureHighlight;
+    }
+
+    public boolean shouldShowHamburgerFeatureHighlight(Context context) {
+        final SharedPreferences prefs = context.getSharedPreferences(
+                context.getPackageName(), Context.MODE_PRIVATE);
+        return prefs.getBoolean(PREFERENCE_KEY_SHOULD_SHOW_HAMBURGER_FEATURE_HIGHLIGHT, true);
+    }
+
+    public void setHamburgerFeatureHighlightShown(Context context) {
+        final SharedPreferences prefs = context.getSharedPreferences(
+                context.getPackageName(), Context.MODE_PRIVATE);
+        prefs.edit().putBoolean(PREFERENCE_KEY_SHOULD_SHOW_HAMBURGER_FEATURE_HIGHLIGHT, false)
+                .apply();
+    }
+
     private void update(boolean skipAnimation) {
         updateStatusBarColor();
 
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index 7fd20f0..825ef00 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -87,6 +87,7 @@
 import com.android.contacts.list.OnContactsUnavailableActionListener;
 import com.android.contacts.quickcontact.QuickContactActivity;
 import com.android.contacts.util.DialogManager;
+import com.google.android.libraries.material.featurehighlight.FeatureHighlight;
 
 import java.util.List;
 import java.util.Locale;
@@ -236,6 +237,15 @@
             Log.d(Constants.PERFORMANCE_TAG, "PeopleActivity.onCreate finish");
         }
         getWindow().setBackgroundDrawable(null);
+
+        if (mActionBarAdapter.shouldShowHamburgerFeatureHighlight(this)) {
+            final FeatureHighlight hamburgerFeatureHighlight =
+                    mActionBarAdapter.getHamburgerFeatureHighlight();
+            if (hamburgerFeatureHighlight != null) {
+                hamburgerFeatureHighlight.show(this);
+                mActionBarAdapter.setHamburgerFeatureHighlightShown(this);
+            }
+        }
     }
 
     @Override
