diff --git a/java/com/android/dialer/app/calllog/CallLogAdapter.java b/java/com/android/dialer/app/calllog/CallLogAdapter.java
index 4966d7f..b1edd06 100644
--- a/java/com/android/dialer/app/calllog/CallLogAdapter.java
+++ b/java/com/android/dialer/app/calllog/CallLogAdapter.java
@@ -907,6 +907,10 @@
         (VERSION.SDK_INT >= VERSION_CODES.N) ? cursor.getString(CallLogQuery.VIA_NUMBER) : "";
     final int numberPresentation = cursor.getInt(CallLogQuery.NUMBER_PRESENTATION);
     final ContactInfo cachedContactInfo = ContactInfoHelper.getContactInfo(cursor);
+    final int transcriptionState =
+        (VERSION.SDK_INT >= VERSION_CODES.O)
+            ? cursor.getInt(CallLogQuery.TRANSCRIPTION_STATE)
+            : PhoneCallDetailsHelper.TRANSCRIPTION_NOT_STARTED;
     final PhoneCallDetails details =
         new PhoneCallDetails(number, numberPresentation, postDialDigits);
     details.viaNumber = viaNumber;
@@ -916,6 +920,7 @@
     details.features = getCallFeatures(cursor, count);
     details.geocode = cursor.getString(CallLogQuery.GEOCODED_LOCATION);
     details.transcription = cursor.getString(CallLogQuery.TRANSCRIPTION);
+    details.transcriptionState = transcriptionState;
     details.callTypes = getCallTypes(cursor, count);
 
     details.accountComponentName = cursor.getString(CallLogQuery.ACCOUNT_COMPONENT_NAME);
diff --git a/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java b/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java
index 02433f5..5cf33ca 100644
--- a/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java
+++ b/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java
@@ -769,12 +769,20 @@
       return;
     }
 
-    final TextView view = phoneCallDetailsViews.voicemailTranscriptionView;
-    if (!isExpanded || TextUtils.isEmpty(view.getText())) {
-      view.setVisibility(View.GONE);
+    TextView transcriptView = phoneCallDetailsViews.voicemailTranscriptionView;
+    TextView transcriptBrandingView = phoneCallDetailsViews.voicemailTranscriptionBrandingView;
+    if (!isExpanded || TextUtils.isEmpty(transcriptView.getText())) {
+      Assert.checkArgument(TextUtils.isEmpty(transcriptBrandingView.getText()));
+      transcriptView.setVisibility(View.GONE);
+      transcriptBrandingView.setVisibility(View.GONE);
       return;
     }
-    view.setVisibility(View.VISIBLE);
+    transcriptView.setVisibility(View.VISIBLE);
+    if (TextUtils.isEmpty(transcriptBrandingView.getText())) {
+      phoneCallDetailsViews.voicemailTranscriptionBrandingView.setVisibility(View.GONE);
+    } else {
+      phoneCallDetailsViews.voicemailTranscriptionBrandingView.setVisibility(View.VISIBLE);
+    }
   }
 
   public void updatePhoto() {
diff --git a/java/com/android/dialer/app/calllog/PhoneCallDetailsHelper.java b/java/com/android/dialer/app/calllog/PhoneCallDetailsHelper.java
index 0c72077..6ece95c 100644
--- a/java/com/android/dialer/app/calllog/PhoneCallDetailsHelper.java
+++ b/java/com/android/dialer/app/calllog/PhoneCallDetailsHelper.java
@@ -45,6 +45,13 @@
   /** The maximum number of icons will be shown to represent the call types in a group. */
   private static final int MAX_CALL_TYPE_ICONS = 3;
 
+  // TODO(mdooley): remove when these api's become public
+  // Copied from android.provider.VoicemailContract
+  static final int TRANSCRIPTION_NOT_STARTED = 0;
+  static final int TRANSCRIPTION_IN_PROGRESS = 1;
+  static final int TRANSCRIPTION_FAILED = 2;
+  static final int TRANSCRIPTION_AVALIABLE = 3;
+
   private final Context mContext;
   private final Resources mResources;
   private final CallLogCache mCallLogCache;
@@ -145,14 +152,38 @@
     if (isVoicemail) {
       int relevantLinkTypes = Linkify.EMAIL_ADDRESSES | Linkify.PHONE_NUMBERS | Linkify.WEB_URLS;
       views.voicemailTranscriptionView.setAutoLinkMask(relevantLinkTypes);
-      views.voicemailTranscriptionView.setText(
-          TextUtils.isEmpty(details.transcription) ? null : details.transcription);
+      boolean showTranscriptBranding = false;
+      if (!TextUtils.isEmpty(details.transcription)) {
+        views.voicemailTranscriptionView.setText(details.transcription);
+
+        // Set the branding text if the voicemail was transcribed by google
+        // TODO(mdooley): the transcription state is only set by the google transcription code,
+        // but a better solution would be to check the SOURCE_PACKAGE
+        showTranscriptBranding = details.transcriptionState == TRANSCRIPTION_AVALIABLE;
+      } else {
+        if (details.transcriptionState == TRANSCRIPTION_IN_PROGRESS) {
+          views.voicemailTranscriptionView.setText(
+              mResources.getString(R.string.voicemail_transcription_in_progress));
+          showTranscriptBranding = true;
+        } else if (details.transcriptionState == TRANSCRIPTION_FAILED) {
+          views.voicemailTranscriptionView.setText(
+              mResources.getString(R.string.voicemail_transcription_failed));
+        }
+      }
+
+      if (showTranscriptBranding) {
+        views.voicemailTranscriptionBrandingView.setText(
+            mResources.getString(R.string.voicemail_transcription_branding_text));
+      } else {
+        views.voicemailTranscriptionBrandingView.setText("");
+      }
     }
 
     // Bold if not read
     Typeface typeface = details.isRead ? Typeface.SANS_SERIF : Typeface.DEFAULT_BOLD;
     views.nameView.setTypeface(typeface);
     views.voicemailTranscriptionView.setTypeface(typeface);
+    views.voicemailTranscriptionBrandingView.setTypeface(typeface);
     views.callLocationAndDate.setTypeface(typeface);
     views.callLocationAndDate.setTextColor(
         ContextCompat.getColor(
diff --git a/java/com/android/dialer/app/calllog/PhoneCallDetailsViews.java b/java/com/android/dialer/app/calllog/PhoneCallDetailsViews.java
index e2e27a1..2836031 100644
--- a/java/com/android/dialer/app/calllog/PhoneCallDetailsViews.java
+++ b/java/com/android/dialer/app/calllog/PhoneCallDetailsViews.java
@@ -30,6 +30,7 @@
   public final CallTypeIconsView callTypeIcons;
   public final TextView callLocationAndDate;
   public final TextView voicemailTranscriptionView;
+  public final TextView voicemailTranscriptionBrandingView;
   public final TextView callAccountLabel;
 
   private PhoneCallDetailsViews(
@@ -38,12 +39,14 @@
       CallTypeIconsView callTypeIcons,
       TextView callLocationAndDate,
       TextView voicemailTranscriptionView,
+      TextView voicemailTranscriptionBrandingView,
       TextView callAccountLabel) {
     this.nameView = nameView;
     this.callTypeView = callTypeView;
     this.callTypeIcons = callTypeIcons;
     this.callLocationAndDate = callLocationAndDate;
     this.voicemailTranscriptionView = voicemailTranscriptionView;
+    this.voicemailTranscriptionBrandingView = voicemailTranscriptionBrandingView;
     this.callAccountLabel = callAccountLabel;
   }
 
@@ -61,6 +64,7 @@
         (CallTypeIconsView) view.findViewById(R.id.call_type_icons),
         (TextView) view.findViewById(R.id.call_location_and_date),
         (TextView) view.findViewById(R.id.voicemail_transcription),
+        (TextView) view.findViewById(R.id.voicemail_transcription_branding),
         (TextView) view.findViewById(R.id.call_account_label));
   }
 
@@ -71,6 +75,7 @@
         new CallTypeIconsView(context),
         new TextView(context),
         new TextView(context),
+        new TextView(context),
         new TextView(context));
   }
 }
diff --git a/java/com/android/dialer/app/res/layout/call_log_list_item.xml b/java/com/android/dialer/app/res/layout/call_log_list_item.xml
index afb50ff..fd31fc2 100644
--- a/java/com/android/dialer/app/res/layout/call_log_list_item.xml
+++ b/java/com/android/dialer/app/res/layout/call_log_list_item.xml
@@ -148,17 +148,35 @@
             android:visibility="gone"
             android:singleLine="true"/>
 
-          <TextView
-            android:id="@+id/voicemail_transcription"
+          <LinearLayout
+            android:id="@+id/transcription"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_marginTop="@dimen/call_log_icon_margin"
-            android:textColor="@color/call_log_voicemail_transcript_color"
-            android:textSize="@dimen/call_log_voicemail_transcription_text_size"
-            android:ellipsize="marquee"
-            android:visibility="gone"
-            android:singleLine="false"
-            android:maxLines="10"/>
+            android:orientation="vertical">
+
+            <TextView
+              android:id="@+id/voicemail_transcription_branding"
+              android:layout_width="wrap_content"
+              android:layout_height="wrap_content"
+              android:textColor="@color/call_log_voicemail_transcript_branding_color"
+              android:textSize="@dimen/call_log_voicemail_transcription_text_size"
+              android:paddingBottom="2dp"
+              android:visibility="gone"
+              android:singleLine="true"/>
+
+            <TextView
+              android:id="@+id/voicemail_transcription"
+              android:layout_width="wrap_content"
+              android:layout_height="wrap_content"
+              android:textColor="@color/call_log_voicemail_transcript_color"
+              android:textSize="@dimen/call_log_voicemail_transcription_text_size"
+              android:ellipsize="marquee"
+              android:visibility="gone"
+              android:singleLine="false"
+              android:maxLines="10"/>
+
+          </LinearLayout>
 
         </LinearLayout>
 
diff --git a/java/com/android/dialer/app/res/values/colors.xml b/java/com/android/dialer/app/res/values/colors.xml
index 2f6d87b..b13020e 100644
--- a/java/com/android/dialer/app/res/values/colors.xml
+++ b/java/com/android/dialer/app/res/values/colors.xml
@@ -36,6 +36,8 @@
   <color name="call_log_detail_color">#8a000000</color>
   <!-- 87% black -->
   <color name="call_log_voicemail_transcript_color">#de000000</color>
+  <!-- 54% black -->
+  <color name="call_log_voicemail_transcript_branding_color">#8a000000</color>
   <!-- 70% black -->
   <color name="call_log_action_color">#b3000000</color>
   <!-- 54% black -->
diff --git a/java/com/android/dialer/app/res/values/strings.xml b/java/com/android/dialer/app/res/values/strings.xml
index 5549881..e9c1d24 100644
--- a/java/com/android/dialer/app/res/values/strings.xml
+++ b/java/com/android/dialer/app/res/values/strings.xml
@@ -930,6 +930,15 @@
   <!-- Label for setting that shows more information about the Phone app [CHAR LIMIT=30] -->
   <string name="about_phone_label">About</string>
 
+  <!-- Label indicating who provided the voicemail transcription [CHAR LIMIT=30] -->
+  <string name="voicemail_transcription_branding_text">Transcribed by Google</string>
+
+  <!-- Label indicating that a voicemail transcription is in progress [CHAR LIMIT=30] -->
+  <string name="voicemail_transcription_in_progress">Google is transcribing...</string>
+
+  <!-- Label indicating that a voicemail transcription failed [CHAR LIMIT=30] -->
+  <string name="voicemail_transcription_failed">Transcript not available</string>
+
   <!-- Button text to prompt a user to open an sms conversation [CHAR LIMIT=NONE] -->
   <string name="view_conversation">View</string>
 
diff --git a/java/com/android/dialer/calllogutils/PhoneCallDetails.java b/java/com/android/dialer/calllogutils/PhoneCallDetails.java
index 13c528a..869a3d0 100644
--- a/java/com/android/dialer/calllogutils/PhoneCallDetails.java
+++ b/java/com/android/dialer/calllogutils/PhoneCallDetails.java
@@ -99,6 +99,9 @@
   // Voicemail transcription
   public String transcription;
 
+  // Voicemail transcription state, ie. in-progress, failed, etc.
+  public int transcriptionState;
+
   // The display string for the number.
   public String displayNumber;
 
diff --git a/java/com/android/dialer/phonenumbercache/CallLogQuery.java b/java/com/android/dialer/phonenumbercache/CallLogQuery.java
index 6d47569..2ebc302 100644
--- a/java/com/android/dialer/phonenumbercache/CallLogQuery.java
+++ b/java/com/android/dialer/phonenumbercache/CallLogQuery.java
@@ -60,6 +60,9 @@
   @RequiresApi(VERSION_CODES.N)
   public static final int VIA_NUMBER = 25;
 
+  @RequiresApi(VERSION_CODES.O)
+  public static final int TRANSCRIPTION_STATE = 26;
+
   private static final String[] PROJECTION_M =
       new String[] {
         Calls._ID, // 0
@@ -97,8 +100,23 @@
     PROJECTION_N = projectionList.toArray(new String[projectionList.size()]);
   }
 
+  private static final String[] PROJECTION_O;
+
+  // TODO(mdooley): remove when this becomes a public api
+  // Copied from android.provider.CallLog.Calls
+  private static final String TRANSCRIPTION_STATE_COLUMN = "transcription_state";
+
+  static {
+    List<String> projectionList = new ArrayList<>(Arrays.asList(PROJECTION_N));
+    projectionList.add(TRANSCRIPTION_STATE_COLUMN);
+    PROJECTION_O = projectionList.toArray(new String[projectionList.size()]);
+  }
+
   @NonNull
   public static String[] getProjection() {
+    if (VERSION.SDK_INT >= VERSION_CODES.O) {
+      return PROJECTION_O;
+    }
     if (VERSION.SDK_INT >= VERSION_CODES.N) {
       return PROJECTION_N;
     }
