diff --git a/src/com/android/telecomm/CallActivity.java b/src/com/android/telecomm/CallActivity.java
index 0e231b0..a84f3e9 100644
--- a/src/com/android/telecomm/CallActivity.java
+++ b/src/com/android/telecomm/CallActivity.java
@@ -25,7 +25,6 @@
 import android.os.Bundle;
 import android.telecomm.PhoneAccountHandle;
 import android.telecomm.TelecommManager;
-import android.telecomm.TelecommManager;
 import android.telephony.PhoneNumberUtils;
 import android.text.TextUtils;
 
@@ -113,8 +112,16 @@
         PhoneAccountHandle phoneAccountHandle = intent.getParcelableExtra(
                 TelecommManager.EXTRA_PHONE_ACCOUNT_HANDLE);
 
+        Bundle clientExtras = null;
+        if (intent.hasExtra(TelecommManager.EXTRA_OUTGOING_CALL_EXTRAS)) {
+            clientExtras = intent.getBundleExtra(TelecommManager.EXTRA_OUTGOING_CALL_EXTRAS);
+        }
+        if (clientExtras == null) {
+            clientExtras = Bundle.EMPTY;
+        }
+
         // Send to CallsManager to ensure the InCallUI gets kicked off before the broadcast returns
-        Call call = mCallsManager.startOutgoingCall(handle, phoneAccountHandle);
+        Call call = mCallsManager.startOutgoingCall(handle, phoneAccountHandle, clientExtras);
 
         NewOutgoingCallIntentBroadcaster broadcaster = new NewOutgoingCallIntentBroadcaster(
                 mCallsManager, call, intent, isDefaultDialer());
diff --git a/src/com/android/telecomm/CallsManager.java b/src/com/android/telecomm/CallsManager.java
index b7cc233..87d5f4e 100644
--- a/src/com/android/telecomm/CallsManager.java
+++ b/src/com/android/telecomm/CallsManager.java
@@ -288,8 +288,13 @@
      * NOTE: emergency calls will never pass through this because they call
      * placeOutgoingCall directly.
      *
+     * @param handle Handle to connect the call with.
+     * @param phoneAccountHandle The phone account which contains the component name of the connection
+     *                     service to use for this call.
+     * @param extras The optional extras Bundle passed with the intent used for the outgoing call.
+     *
      */
-    Call startOutgoingCall(Uri handle, PhoneAccountHandle phoneAccountHandle) {
+    Call startOutgoingCall(Uri handle, PhoneAccountHandle phoneAccountHandle, Bundle extras) {
         // We only allow a single outgoing call at any given time. Before placing a call, make sure
         // there doesn't already exist another outgoing call.
         Call call = getFirstCallWithState(CallState.NEW, CallState.DIALING);
@@ -309,6 +314,7 @@
                 phoneAccountHandle,
                 false /* isIncoming */,
                 false /* isConference */);
+        call.setExtras(extras);
         call.setState(CallState.CONNECTING);
 
         // TODO: Move this to be a part of addCall()
diff --git a/src/com/android/telecomm/InCallController.java b/src/com/android/telecomm/InCallController.java
index c94b656..5c36ca4 100644
--- a/src/com/android/telecomm/InCallController.java
+++ b/src/com/android/telecomm/InCallController.java
@@ -369,6 +369,7 @@
                 childCallIds,
                 call.getStatusHints(),
                 call.getVideoState(),
-                conferenceableCallIds);
+                conferenceableCallIds,
+                call.getExtras());
     }
 }
