diff --git a/synapse/rest/client/room.py b/synapse/rest/client/room.py
index 7699cc8d1bc031db65606593a905939a12302fb4..033100e627d0746e61f5c722d81d01bfdc6fef89 100644
--- a/synapse/rest/client/room.py
+++ b/synapse/rest/client/room.py
@@ -331,6 +331,7 @@ class RoomSendEventRestServlet(TransactionRestServlet):
         super().__init__(hs)
         self.event_creation_handler = hs.get_event_creation_handler()
         self.auth = hs.get_auth()
+        self.hs = hs
 
     def register(self, http_server: HttpServer) -> None:
         # /rooms/$roomid/send/$event_type[/$txn_id]
@@ -354,7 +355,10 @@ class RoomSendEventRestServlet(TransactionRestServlet):
             "sender": requester.user.to_string(),
         }
 
-        if requester.app_service:
+        if (
+            requester.app_service
+            or requester.user.to_string() in self.hs.config.meow.timestamp_override
+        ):
             origin_server_ts = parse_integer(request, "ts")
             if origin_server_ts is not None:
                 event_dict["origin_server_ts"] = origin_server_ts