diff --git a/quiche/quic/moqt/moqt_framer.cc b/quiche/quic/moqt/moqt_framer.cc
index b0eeaea..66fb3af 100644
--- a/quiche/quic/moqt/moqt_framer.cc
+++ b/quiche/quic/moqt/moqt_framer.cc
@@ -527,9 +527,9 @@
 quiche::QuicheBuffer MoqtFramer::SerializeSubscribeDone(
     const MoqtSubscribeDone& message) {
   return SerializeControlMessage(
-      MoqtMessageType::kSubscribeDone, WireVarInt62(message.subscribe_id),
+      MoqtMessageType::kSubscribeDone, WireVarInt62(message.request_id),
       WireVarInt62(message.status_code), WireVarInt62(message.stream_count),
-      WireStringWithVarInt62Length(message.reason_phrase));
+      WireStringWithVarInt62Length(message.error_reason));
 }
 
 quiche::QuicheBuffer MoqtFramer::SerializeSubscribeUpdate(
diff --git a/quiche/quic/moqt/moqt_messages.h b/quiche/quic/moqt/moqt_messages.h
index 84633c7..d51237a 100644
--- a/quiche/quic/moqt/moqt_messages.h
+++ b/quiche/quic/moqt/moqt_messages.h
@@ -608,10 +608,10 @@
 };
 
 struct QUICHE_EXPORT MoqtSubscribeDone {
-  uint64_t subscribe_id;
+  uint64_t request_id;
   SubscribeDoneCode status_code;
   uint64_t stream_count;
-  std::string reason_phrase;
+  std::string error_reason;
 };
 
 struct QUICHE_EXPORT MoqtSubscribeUpdate {
diff --git a/quiche/quic/moqt/moqt_parser.cc b/quiche/quic/moqt/moqt_parser.cc
index abcef72..710848c 100644
--- a/quiche/quic/moqt/moqt_parser.cc
+++ b/quiche/quic/moqt/moqt_parser.cc
@@ -534,10 +534,10 @@
 size_t MoqtControlParser::ProcessSubscribeDone(quic::QuicDataReader& reader) {
   MoqtSubscribeDone subscribe_done;
   uint64_t value;
-  if (!reader.ReadVarInt62(&subscribe_done.subscribe_id) ||
+  if (!reader.ReadVarInt62(&subscribe_done.request_id) ||
       !reader.ReadVarInt62(&value) ||
       !reader.ReadVarInt62(&subscribe_done.stream_count) ||
-      !reader.ReadStringVarInt62(subscribe_done.reason_phrase)) {
+      !reader.ReadStringVarInt62(subscribe_done.error_reason)) {
     return 0;
   }
   subscribe_done.status_code = static_cast<SubscribeDoneCode>(value);
diff --git a/quiche/quic/moqt/moqt_session.cc b/quiche/quic/moqt/moqt_session.cc
index 23ae173..715413b 100644
--- a/quiche/quic/moqt/moqt_session.cc
+++ b/quiche/quic/moqt/moqt_session.cc
@@ -627,9 +627,9 @@
                   "Peer did not close session after GOAWAY");
 }
 
-bool MoqtSession::SubscribeIsDone(uint64_t subscribe_id, SubscribeDoneCode code,
-                                  absl::string_view reason_phrase) {
-  auto it = published_subscriptions_.find(subscribe_id);
+bool MoqtSession::SubscribeIsDone(uint64_t request_id, SubscribeDoneCode code,
+                                  absl::string_view error_reason) {
+  auto it = published_subscriptions_.find(request_id);
   if (it == published_subscriptions_.end()) {
     return false;
   }
@@ -639,10 +639,10 @@
       subscription.GetAllStreams();
 
   MoqtSubscribeDone subscribe_done;
-  subscribe_done.subscribe_id = subscribe_id;
+  subscribe_done.request_id = request_id;
   subscribe_done.status_code = code;
   subscribe_done.stream_count = subscription.streams_opened();
-  subscribe_done.reason_phrase = reason_phrase;
+  subscribe_done.error_reason = error_reason;
   SendControlMessage(framer_.SerializeSubscribeDone(subscribe_done));
   QUIC_DLOG(INFO) << ENDPOINT << "Sent SUBSCRIBE_DONE message for "
                   << subscription.publisher().GetTrackName();
@@ -1136,7 +1136,7 @@
 
 void MoqtSession::ControlStream::OnSubscribeDoneMessage(
     const MoqtSubscribeDone& message) {
-  auto it = session_->upstream_by_id_.find(message.subscribe_id);
+  auto it = session_->upstream_by_id_.find(message.request_id);
   if (it == session_->upstream_by_id_.end()) {
     return;
   }
diff --git a/quiche/quic/moqt/moqt_session.h b/quiche/quic/moqt/moqt_session.h
index b7e5301..8448d14 100644
--- a/quiche/quic/moqt/moqt_session.h
+++ b/quiche/quic/moqt/moqt_session.h
@@ -614,8 +614,8 @@
 
   // Private members of MoqtSession.
   // Returns true if SUBSCRIBE_DONE was sent.
-  bool SubscribeIsDone(uint64_t subscribe_id, SubscribeDoneCode code,
-                       absl::string_view reason_phrase);
+  bool SubscribeIsDone(uint64_t request_id, SubscribeDoneCode code,
+                       absl::string_view error_reason);
   void MaybeDestroySubscription(SubscribeRemoteTrack* subscribe);
   void DestroySubscription(SubscribeRemoteTrack* subscribe);
 
diff --git a/quiche/quic/moqt/test_tools/moqt_test_message.h b/quiche/quic/moqt/test_tools/moqt_test_message.h
index 2f2dba9..de211c6 100644
--- a/quiche/quic/moqt/test_tools/moqt_test_message.h
+++ b/quiche/quic/moqt/test_tools/moqt_test_message.h
@@ -704,8 +704,8 @@
 
   bool EqualFieldValues(MessageStructuredData& values) const override {
     auto cast = std::get<MoqtSubscribeDone>(values);
-    if (cast.subscribe_id != subscribe_done_.subscribe_id) {
-      QUIC_LOG(INFO) << "SUBSCRIBE_DONE subscribe ID mismatch";
+    if (cast.request_id != subscribe_done_.request_id) {
+      QUIC_LOG(INFO) << "SUBSCRIBE_DONE request ID mismatch";
       return false;
     }
     if (cast.status_code != subscribe_done_.status_code) {
@@ -716,8 +716,8 @@
       QUIC_LOG(INFO) << "SUBSCRIBE_DONE stream count mismatch";
       return false;
     }
-    if (cast.reason_phrase != subscribe_done_.reason_phrase) {
-      QUIC_LOG(INFO) << "SUBSCRIBE_DONE reason phrase mismatch";
+    if (cast.error_reason != subscribe_done_.error_reason) {
+      QUIC_LOG(INFO) << "SUBSCRIBE_DONE error reason mismatch";
       return false;
     }
 
@@ -732,16 +732,16 @@
 
  private:
   uint8_t raw_packet_[9] = {
-      0x0b, 0x00, 0x06, 0x02, 0x02,  // subscribe_id = 2, error_code = 2,
+      0x0b, 0x00, 0x06, 0x02, 0x02,  // request_id = 2, error_code = 2,
       0x05,                          // stream_count = 5
-      0x02, 0x68, 0x69,              // reason_phrase = "hi"
+      0x02, 0x68, 0x69,              // error_reason = "hi"
   };
 
   MoqtSubscribeDone subscribe_done_ = {
-      /*subscribe_id=*/2,
+      /*request_id=*/2,
       /*error_code=*/SubscribeDoneCode::kTrackEnded,
       /*stream_count=*/5,
-      /*reason_phrase=*/"hi",
+      /*error_reason=*/"hi",
   };
 };
 
