diff --git a/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java b/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java
index fea3e91..c838737 100644
--- a/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java
+++ b/java/com/android/dialer/calllog/database/AnnotatedCallLogDatabaseHelper.java
@@ -55,7 +55,8 @@
           + (AnnotatedCallLog.TRANSCRIPTION + " integer, ")
           + (AnnotatedCallLog.VOICEMAIL_URI + " text, ")
           + (AnnotatedCallLog.CALL_TYPE + " integer not null, ")
-          + (AnnotatedCallLog.NUMBER_ATTRIBUTES + " blob")
+          + (AnnotatedCallLog.NUMBER_ATTRIBUTES + " blob, ")
+          + (AnnotatedCallLog.TRANSCRIPTION_STATE + " integer")
           + ");";
 
   /**
diff --git a/java/com/android/dialer/calllog/database/contract/AnnotatedCallLogContract.java b/java/com/android/dialer/calllog/database/contract/AnnotatedCallLogContract.java
index 4fee4e5..c181d75 100644
--- a/java/com/android/dialer/calllog/database/contract/AnnotatedCallLogContract.java
+++ b/java/com/android/dialer/calllog/database/contract/AnnotatedCallLogContract.java
@@ -17,7 +17,9 @@
 package com.android.dialer.calllog.database.contract;
 
 import android.net.Uri;
+import android.os.Build;
 import android.provider.BaseColumns;
+import com.android.dialer.compat.android.provider.VoicemailCompat;
 import com.android.dialer.constants.Constants;
 import java.util.Arrays;
 
@@ -200,6 +202,15 @@
     public static final String TRANSCRIPTION = "transcription";
 
     /**
+     * See {@link VoicemailCompat.TRANSCRIPTION_STATE}
+     *
+     * <p>Only populated in {@link Build.VERSION_CODES.O} and above
+     *
+     * <p>TYPE: INTEGER
+     */
+    public static final String TRANSCRIPTION_STATE = "transcription_state";
+
+    /**
      * See {@link android.provider.CallLog.Calls#VOICEMAIL_URI}.
      *
      * <p>TYPE: TEXT
diff --git a/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java b/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java
index 24410ee..ee484d9 100644
--- a/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java
+++ b/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java
@@ -24,6 +24,8 @@
 import android.database.Cursor;
 import android.net.Uri;
 import android.os.Build;
+import android.os.Build.VERSION;
+import android.os.Build.VERSION_CODES;
 import android.os.Handler;
 import android.provider.CallLog;
 import android.provider.CallLog.Calls;
@@ -32,6 +34,7 @@
 import android.support.annotation.ColorInt;
 import android.support.annotation.MainThread;
 import android.support.annotation.Nullable;
+import android.support.annotation.RequiresApi;
 import android.support.annotation.VisibleForTesting;
 import android.support.annotation.WorkerThread;
 import android.telecom.PhoneAccount;
@@ -49,6 +52,7 @@
 import com.android.dialer.common.LogUtil;
 import com.android.dialer.common.concurrent.Annotations.BackgroundExecutor;
 import com.android.dialer.common.concurrent.ThreadUtil;
+import com.android.dialer.compat.android.provider.VoicemailCompat;
 import com.android.dialer.phonenumberproto.DialerPhoneNumberUtil;
 import com.android.dialer.storage.StorageComponent;
 import com.android.dialer.telecom.TelecomUtil;
@@ -58,6 +62,7 @@
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.ListeningExecutorService;
 import com.google.i18n.phonenumbers.PhoneNumberUtil;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Set;
@@ -235,26 +240,7 @@
             .getContentResolver()
             .query(
                 Calls.CONTENT_URI_WITH_VOICEMAIL,
-                new String[] {
-                  Calls._ID,
-                  Calls.DATE,
-                  Calls.LAST_MODIFIED, // TODO(a bug): Not available in M
-                  Calls.NUMBER,
-                  Calls.NUMBER_PRESENTATION,
-                  Calls.TYPE,
-                  Calls.COUNTRY_ISO,
-                  Calls.DURATION,
-                  Calls.DATA_USAGE,
-                  Calls.TRANSCRIPTION,
-                  Calls.VOICEMAIL_URI,
-                  Calls.IS_READ,
-                  Calls.NEW,
-                  Calls.GEOCODED_LOCATION,
-                  Calls.PHONE_ACCOUNT_COMPONENT_NAME,
-                  Calls.PHONE_ACCOUNT_ID,
-                  Calls.FEATURES,
-                  Calls.POST_DIAL_DIGITS // TODO(a bug): Not available in M
-                },
+                getProjection(),
                 // TODO(a bug): LAST_MODIFIED not available on M
                 Calls.LAST_MODIFIED + " > ? AND " + Voicemails.DELETED + " = 0",
                 new String[] {String.valueOf(previousTimestampProcessed)},
@@ -358,6 +344,7 @@
           contentValues.put(AnnotatedCallLog.DATA_USAGE, dataUsage);
           contentValues.put(AnnotatedCallLog.TRANSCRIPTION, transcription);
           contentValues.put(AnnotatedCallLog.VOICEMAIL_URI, voicemailUri);
+          setTranscriptionState(cursor, contentValues);
 
           if (existingAnnotatedCallLogIds.contains(id)) {
             mutations.update(id, contentValues);
@@ -369,6 +356,53 @@
     }
   }
 
+  private void setTranscriptionState(Cursor cursor, ContentValues contentValues) {
+    if (VERSION.SDK_INT >= VERSION_CODES.O) {
+      int transcriptionStateColumn =
+          cursor.getColumnIndexOrThrow(VoicemailCompat.TRANSCRIPTION_STATE);
+      int transcriptionState = cursor.getInt(transcriptionStateColumn);
+      contentValues.put(VoicemailCompat.TRANSCRIPTION_STATE, transcriptionState);
+    }
+  }
+
+  private static final String[] PROJECTION_PRE_O =
+      new String[] {
+        Calls._ID,
+        Calls.DATE,
+        Calls.LAST_MODIFIED, // TODO(a bug): Not available in M
+        Calls.NUMBER,
+        Calls.NUMBER_PRESENTATION,
+        Calls.TYPE,
+        Calls.COUNTRY_ISO,
+        Calls.DURATION,
+        Calls.DATA_USAGE,
+        Calls.TRANSCRIPTION,
+        Calls.VOICEMAIL_URI,
+        Calls.IS_READ,
+        Calls.NEW,
+        Calls.GEOCODED_LOCATION,
+        Calls.PHONE_ACCOUNT_COMPONENT_NAME,
+        Calls.PHONE_ACCOUNT_ID,
+        Calls.FEATURES,
+        Calls.POST_DIAL_DIGITS // TODO(a bug): Not available in M
+      };
+
+  @RequiresApi(VERSION_CODES.O)
+  private static final String[] PROJECTION_O_AND_LATER;
+
+  static {
+    List<String> projectionList = new ArrayList<>(Arrays.asList(PROJECTION_PRE_O));
+    projectionList.add(VoicemailCompat.TRANSCRIPTION_STATE);
+    PROJECTION_O_AND_LATER = projectionList.toArray(new String[projectionList.size()]);
+  }
+
+  private String[] getProjection() {
+    if (VERSION.SDK_INT >= VERSION_CODES.O) {
+      return PROJECTION_O_AND_LATER;
+    }
+    return PROJECTION_PRE_O;
+  }
+
   private void populatePhoneAccountLabelAndColor(
       Context appContext,
       ContentValues contentValues,
diff --git a/java/com/android/dialer/compat/android/provider/VoicemailCompat.java b/java/com/android/dialer/compat/android/provider/VoicemailCompat.java
index 02eebb3..35e0ea5 100644
--- a/java/com/android/dialer/compat/android/provider/VoicemailCompat.java
+++ b/java/com/android/dialer/compat/android/provider/VoicemailCompat.java
@@ -16,10 +16,10 @@
 package com.android.dialer.compat.android.provider;
 
 /**
- * Provide access to new API constants before they're publicly available
+ * Provide access to Voicemail Transcription API constants as they won't be publicly available.
  *
- * <p>Copied from android.provider.VoicemailContract.Voicemails. These should become public in O-MR1
- * and these constants can be removed then.
+ * <p>Copied from android.provider.VoicemailContract.Voicemails. These do not plan to become public
+ * in O-MR1 or in the near future.
  */
 public class VoicemailCompat {
 
diff --git a/java/com/android/dialer/voicemail/listui/VoicemailCursorLoader.java b/java/com/android/dialer/voicemail/listui/VoicemailCursorLoader.java
index 74d1b61..11e7888 100644
--- a/java/com/android/dialer/voicemail/listui/VoicemailCursorLoader.java
+++ b/java/com/android/dialer/voicemail/listui/VoicemailCursorLoader.java
@@ -45,6 +45,7 @@
         AnnotatedCallLog.VOICEMAIL_URI,
         AnnotatedCallLog.IS_READ,
         AnnotatedCallLog.NUMBER_ATTRIBUTES,
+        AnnotatedCallLog.TRANSCRIPTION_STATE
       };
 
   // Indexes for VOICEMAIL_COLUMNS
@@ -59,6 +60,7 @@
   private static final int VOICEMAIL_URI = 8;
   private static final int IS_READ = 9;
   private static final int NUMBER_ATTRIBUTES = 10;
+  private static final int TRANSCRIPTION_STATE = 11;
 
   // TODO(zachh): Optimize indexes
   VoicemailCursorLoader(Context context) {
@@ -105,6 +107,7 @@
         .setCallType(cursor.getInt(CALL_TYPE))
         .setIsRead(cursor.getInt(IS_READ))
         .setNumberAttributes(numberAttributes)
+        .setTranscriptionState(cursor.getInt(TRANSCRIPTION_STATE))
         .build();
   }
 
diff --git a/java/com/android/dialer/voicemail/model/VoicemailEntry.java b/java/com/android/dialer/voicemail/model/VoicemailEntry.java
index f17a23e..5830fb1 100644
--- a/java/com/android/dialer/voicemail/model/VoicemailEntry.java
+++ b/java/com/android/dialer/voicemail/model/VoicemailEntry.java
@@ -20,6 +20,7 @@
 import android.support.annotation.Nullable;
 import com.android.dialer.DialerPhoneNumber;
 import com.android.dialer.NumberAttributes;
+import com.android.dialer.compat.android.provider.VoicemailCompat;
 import com.google.auto.value.AutoValue;
 
 /** Data class containing the contents of a voicemail entry from the AnnotatedCallLog. */
@@ -34,7 +35,8 @@
         .setNumberAttributes(NumberAttributes.getDefaultInstance())
         .setDuration(0)
         .setCallType(0)
-        .setIsRead(0);
+        .setIsRead(0)
+        .setTranscriptionState(VoicemailCompat.TRANSCRIPTION_NOT_STARTED);
   }
 
   public abstract int id();
@@ -44,7 +46,6 @@
   @NonNull
   public abstract DialerPhoneNumber number();
 
-
   @Nullable
   public abstract String formattedNumber();
 
@@ -65,6 +66,8 @@
 
   public abstract NumberAttributes numberAttributes();
 
+  public abstract int transcriptionState();
+
   /** Builder for {@link VoicemailEntry}. */
   @AutoValue.Builder
   public abstract static class Builder {
@@ -91,6 +94,8 @@
 
     public abstract Builder setNumberAttributes(NumberAttributes numberAttributes);
 
+    public abstract Builder setTranscriptionState(int transcriptionState);
+
     public abstract VoicemailEntry build();
   }
 }
