diff --git a/java/com/android/dialer/binary/aosp/AospDialerRootComponent.java b/java/com/android/dialer/binary/aosp/AospDialerRootComponent.java
index a0fb604..2bba432 100644
--- a/java/com/android/dialer/binary/aosp/AospDialerRootComponent.java
+++ b/java/com/android/dialer/binary/aosp/AospDialerRootComponent.java
@@ -22,6 +22,7 @@
 import com.android.dialer.configprovider.SharedPrefConfigProviderModule;
 import com.android.dialer.duo.stub.StubDuoModule;
 import com.android.dialer.enrichedcall.stub.StubEnrichedCallModule;
+import com.android.dialer.feedback.stub.StubFeedbackModule;
 import com.android.dialer.inject.ContextModule;
 import com.android.dialer.phonelookup.PhoneLookupModule;
 import com.android.dialer.phonenumbergeoutil.impl.PhoneNumberGeoUtilModule;
@@ -55,7 +56,8 @@
     StubEnrichedCallModule.class,
     StubMapsModule.class,
     VoicemailModule.class,
-    StubSimSuggestionModule.class
+    StubSimSuggestionModule.class,
+    StubFeedbackModule.class,
   }
 )
 public interface AospDialerRootComponent extends BaseDialerRootComponent {}
diff --git a/java/com/android/dialer/binary/basecomponent/BaseDialerRootComponent.java b/java/com/android/dialer/binary/basecomponent/BaseDialerRootComponent.java
index d5c91c9..2e13cfb 100644
--- a/java/com/android/dialer/binary/basecomponent/BaseDialerRootComponent.java
+++ b/java/com/android/dialer/binary/basecomponent/BaseDialerRootComponent.java
@@ -22,6 +22,7 @@
 import com.android.dialer.configprovider.ConfigProviderComponent;
 import com.android.dialer.duo.DuoComponent;
 import com.android.dialer.enrichedcall.EnrichedCallComponent;
+import com.android.dialer.feedback.FeedbackComponent;
 import com.android.dialer.main.MainComponent;
 import com.android.dialer.phonelookup.PhoneLookupComponent;
 import com.android.dialer.phonenumbergeoutil.PhoneNumberGeoUtilComponent;
@@ -46,6 +47,7 @@
         DialerExecutorComponent.HasComponent,
         DuoComponent.HasComponent,
         EnrichedCallComponent.HasComponent,
+        FeedbackComponent.HasComponent,
         MainComponent.HasComponent,
         MapsComponent.HasComponent,
         PhoneLookupComponent.HasComponent,
diff --git a/java/com/android/dialer/binary/google/GoogleStubDialerRootComponent.java b/java/com/android/dialer/binary/google/GoogleStubDialerRootComponent.java
index 1ae80f4..2801bde 100644
--- a/java/com/android/dialer/binary/google/GoogleStubDialerRootComponent.java
+++ b/java/com/android/dialer/binary/google/GoogleStubDialerRootComponent.java
@@ -22,6 +22,7 @@
 import com.android.dialer.configprovider.SharedPrefConfigProviderModule;
 import com.android.dialer.duo.stub.StubDuoModule;
 import com.android.dialer.enrichedcall.stub.StubEnrichedCallModule;
+import com.android.dialer.feedback.stub.StubFeedbackModule;
 import com.android.dialer.inject.ContextModule;
 import com.android.dialer.phonelookup.PhoneLookupModule;
 import com.android.dialer.phonenumbergeoutil.impl.PhoneNumberGeoUtilModule;
@@ -58,7 +59,8 @@
     StubEnrichedCallModule.class,
     MapsModule.class,
     VoicemailModule.class,
-    StubDuoModule.class
+    StubDuoModule.class,
+    StubFeedbackModule.class,
   }
 )
 public interface GoogleStubDialerRootComponent extends BaseDialerRootComponent {}
diff --git a/java/com/android/dialer/feedback/FeedbackComponent.java b/java/com/android/dialer/feedback/FeedbackComponent.java
new file mode 100644
index 0000000..e3863d7
--- /dev/null
+++ b/java/com/android/dialer/feedback/FeedbackComponent.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.dialer.feedback;
+
+import android.content.Context;
+import android.support.annotation.NonNull;
+import com.android.dialer.inject.HasRootComponent;
+import com.android.incallui.call.CallList;
+import dagger.Subcomponent;
+
+/** Subcomponent that can be used to access the feedback implementation. */
+@Subcomponent
+public abstract class FeedbackComponent {
+  @NonNull
+  public abstract CallList.Listener getCallFeedbackListener();
+
+  public static FeedbackComponent get(Context context) {
+    return ((HasComponent) ((HasRootComponent) context.getApplicationContext()).component())
+        .feedbackComponent();
+  }
+
+  /** Used to refer to the root application component. */
+  public interface HasComponent {
+    FeedbackComponent feedbackComponent();
+  }
+}
diff --git a/java/com/android/dialer/feedback/stub/CallFeedbackListenerStub.java b/java/com/android/dialer/feedback/stub/CallFeedbackListenerStub.java
new file mode 100644
index 0000000..3eb8590
--- /dev/null
+++ b/java/com/android/dialer/feedback/stub/CallFeedbackListenerStub.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.dialer.feedback.stub;
+
+import android.content.Context;
+import android.support.annotation.NonNull;
+import com.android.dialer.common.Assert;
+import com.android.dialer.inject.ApplicationContext;
+import com.android.incallui.call.CallList;
+import com.android.incallui.call.DialerCall;
+import javax.inject.Inject;
+
+/**
+ * Stub implementation of {@link com.google.android.apps.dialer.feedback.CallFeedbackListenerImpl}
+ */
+public class CallFeedbackListenerStub implements CallList.Listener {
+
+  @NonNull private final Context context;
+
+  @Inject
+  public CallFeedbackListenerStub(@ApplicationContext @NonNull Context context) {
+    this.context = Assert.isNotNull(context);
+  }
+
+  @Override
+  public void onIncomingCall(DialerCall call) {}
+
+  @Override
+  public void onUpgradeToVideo(DialerCall call) {}
+
+  @Override
+  public void onSessionModificationStateChange(DialerCall call) {}
+
+  @Override
+  public void onCallListChange(CallList callList) {}
+
+  @Override
+  public void onDisconnect(DialerCall call) {}
+
+  @Override
+  public void onWiFiToLteHandover(DialerCall call) {}
+
+  @Override
+  public void onHandoverToWifiFailed(DialerCall call) {}
+
+  @Override
+  public void onInternationalCallOnWifi(@NonNull DialerCall call) {}
+}
diff --git a/java/com/android/dialer/feedback/stub/StubFeedbackModule.java b/java/com/android/dialer/feedback/stub/StubFeedbackModule.java
new file mode 100644
index 0000000..61ee413
--- /dev/null
+++ b/java/com/android/dialer/feedback/stub/StubFeedbackModule.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.dialer.feedback.stub;
+
+import android.content.Context;
+import com.android.dialer.common.LogUtil;
+import com.android.dialer.inject.ApplicationContext;
+import com.android.incallui.call.CallList;
+import dagger.Module;
+import dagger.Provides;
+
+/** Module which bind {@link com.android.dialer.feedback.stub.CallFeedbackListenerStub}. */
+@Module
+public class StubFeedbackModule {
+
+  @Provides
+  static CallList.Listener provideCallFeedbackListener(@ApplicationContext Context context) {
+    LogUtil.i("StubFeedbackModule.provideCallFeedbackListener", "returning stub");
+    return new CallFeedbackListenerStub(context);
+  }
+}
diff --git a/java/com/android/incallui/CallCardPresenter.java b/java/com/android/incallui/CallCardPresenter.java
index 0ef0c98..f3c2af6 100644
--- a/java/com/android/incallui/CallCardPresenter.java
+++ b/java/com/android/incallui/CallCardPresenter.java
@@ -48,6 +48,7 @@
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.compat.ActivityCompat;
 import com.android.dialer.configprovider.ConfigProviderBindings;
+import com.android.dialer.feedback.FeedbackComponent;
 import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.Logger;
 import com.android.dialer.multimedia.MultimediaData;
@@ -151,6 +152,11 @@
     return !TextUtils.isEmpty(call.getCallSubject());
   }
 
+  private void addCallFeedbackListener(Context context) {
+    LogUtil.d("CallCardPresenter.addCallFeedbackListener", "Adding call feedback listener");
+    CallList.getInstance().addListener(FeedbackComponent.get(context).getCallFeedbackListener());
+  }
+
   @Override
   public void onInCallScreenDelegateInit(InCallScreen inCallScreen) {
     Assert.isNotNull(inCallScreen);
@@ -165,7 +171,7 @@
         mInCallScreen.showNoteSentToast();
       }
       call.addListener(this);
-
+      addCallFeedbackListener(mContext);
       // start processing lookups right away.
       if (!call.isConferenceCall()) {
         startContactInfoSearch(call, true, call.getState() == DialerCall.State.INCOMING);
