diff --git a/quiche/quic/core/quic_buffered_packet_store.h b/quiche/quic/core/quic_buffered_packet_store.h
index 6999681..5570b7f 100644
--- a/quiche/quic/core/quic_buffered_packet_store.h
+++ b/quiche/quic/core/quic_buffered_packet_store.h
@@ -33,6 +33,7 @@
 #include "quiche/quic/core/quic_types.h"
 #include "quiche/quic/core/quic_versions.h"
 #include "quiche/quic/core/tls_chlo_extractor.h"
+#include "quiche/quic/platform/api/quic_bug_tracker.h"
 #include "quiche/quic/platform/api/quic_socket_address.h"
 #include "quiche/common/platform/api/quiche_export.h"
 #include "quiche/common/platform/api/quiche_logging.h"
@@ -268,6 +269,21 @@
   const BufferedPacketList* GetPacketList(
       const QuicConnectionId& connection_id) const;
 
+  // Returns the number of buffered sessions in the store.
+  size_t num_buffered_sessions() const { return num_buffered_sessions_; }
+
+  // Returns the number of buffered sessions without a full CHLO.
+  size_t num_buffered_sessions_without_chlo() const {
+    if (num_buffered_sessions_ < num_buffered_sessions_with_chlo_) {
+      QUIC_BUG(quic_store_invalid_session_counts)
+          << "num_buffered_sessions: " << num_buffered_sessions_
+          << ", num_buffered_sessions_with_chlo: "
+          << num_buffered_sessions_with_chlo_;
+      return 0;
+    }
+    return num_buffered_sessions_ - num_buffered_sessions_with_chlo_;
+  }
+
  private:
   friend class test::QuicBufferedPacketStorePeer;
 
diff --git a/quiche/quic/core/quic_dispatcher.cc b/quiche/quic/core/quic_dispatcher.cc
index 5a04ab6..e98e00e 100644
--- a/quiche/quic/core/quic_dispatcher.cc
+++ b/quiche/quic/core/quic_dispatcher.cc
@@ -1183,6 +1183,8 @@
         packet_list.connection_id_generator,
         packet_list.dispatcher_sent_packets);
     if (session_ptr != nullptr) {
+      OnNewSessionCreated(*session_ptr, packet_list.creation_time,
+                          /*entire_chlo_buffered=*/true);
       DeliverPacketsToSession(packets, session_ptr.get());
     }
   }
@@ -1261,6 +1263,8 @@
     QUICHE_DCHECK_EQ(packet_list.connection_id_generator, nullptr);
     return;
   }
+  OnNewSessionCreated(*session_ptr, packet_list.creation_time,
+                      /*entire_chlo_buffered=*/false);
   // Process the current packet first, then deliver queued-up packets.
   // Note that multi-packet CHLOs, if received in packet number order, will
   // not be delivered in the same order. This needs to be fixed.
diff --git a/quiche/quic/core/quic_dispatcher.h b/quiche/quic/core/quic_dispatcher.h
index 11ac78d..f8ac340 100644
--- a/quiche/quic/core/quic_dispatcher.h
+++ b/quiche/quic/core/quic_dispatcher.h
@@ -39,6 +39,7 @@
 #include "quiche/quic/core/quic_packets.h"
 #include "quiche/quic/core/quic_process_packet_interface.h"
 #include "quiche/quic/core/quic_session.h"
+#include "quiche/quic/core/quic_time.h"
 #include "quiche/quic/core/quic_time_wait_list_manager.h"
 #include "quiche/quic/core/quic_types.h"
 #include "quiche/quic/core/quic_version_manager.h"
@@ -142,6 +143,16 @@
 
   size_t NumSessions() const;
 
+  // Number of buffered sessions in the store.
+  size_t num_buffered_sessions() const {
+    return buffered_packets_.num_buffered_sessions();
+  }
+
+  // Number of buffered sessions without a full ClientHello in the store.
+  size_t num_buffered_sessions_without_chlo() const {
+    return buffered_packets_.num_buffered_sessions_without_chlo();
+  }
+
   // Deletes all sessions on the closed session list and clears the list.
   virtual void DeleteSessions();
 
@@ -238,6 +249,14 @@
   // will be owned by the dispatcher as time_wait_list_manager_
   virtual QuicTimeWaitListManager* CreateQuicTimeWaitListManager();
 
+  // Called after a new session is created and before any packet is delivered to
+  // it. `first_packet_buffered_time` is the time when the first received packet
+  // of the connection was buffered, or QuicTime::Zero if no packets were
+  // buffered.
+  virtual void OnNewSessionCreated(const QuicSession& /*session*/,
+                                   QuicTime /*first_packet_buffered_time*/,
+                                   bool /*entire_chlo_buffered*/) const {}
+
   // Called when |packet_info| is the last received packet of the client hello.
   // |parsed_chlo| is the parsed version of the client hello. Creates a new
   // connection and delivers any buffered packets for that connection id.
@@ -260,6 +279,8 @@
 
   QuicConnectionHelperInterface* helper() { return helper_.get(); }
 
+  const QuicConnectionHelperInterface* helper() const { return helper_.get(); }
+
   QuicCryptoServerStreamBase::Helper* session_helper() {
     return session_helper_.get();
   }
