diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Revision history for eventuo11y-batteries
 
+## 0.4.0.0 -- 2023-01-17
+
+- Fix `ClientM` to be usable as an `EventMonadKind`
+
 ## 0.3.0.2 -- 2023-01-17
 
 - Bump upper bound for `eventuo11y`
diff --git a/eventuo11y-batteries.cabal b/eventuo11y-batteries.cabal
--- a/eventuo11y-batteries.cabal
+++ b/eventuo11y-batteries.cabal
@@ -1,6 +1,6 @@
 cabal-version:      3.0
 name:               eventuo11y-batteries
-version:            0.3.0.3
+version:            0.4.0.0
 synopsis:           Grab bag of eventuo11y-enriched functionality
 description:
   Miscellaneous helpers for instrumenting with [eventuo11y](https://hackage.haskell.org/package/eventuo11y) and 3rd-party packages.
diff --git a/src/Observe/Event/Servant/Client.hs b/src/Observe/Event/Servant/Client.hs
--- a/src/Observe/Event/Servant/Client.hs
+++ b/src/Observe/Event/Servant/Client.hs
@@ -63,7 +63,10 @@
 import Servant.Client.Core.RunClient hiding (RunRequest)
 
 -- | A monad to use in place of 'S.ClientM' to get instrumentation on requests.
-type ClientM em r s = TransEventMonad (ReaderT (ClientEnv s)) (TransEventMonad (ExceptT ClientError) em) r s
+--
+-- Note that 'ClientM' is only 'RunClient' when the selector of the ambient 'EventBackend' is
+-- @s@, see the instance under 'ClientEnv'.
+type ClientM em s = TransEventMonad (ReaderT (ClientEnv s)) (TransEventMonad (ExceptT ClientError) em)
 
 -- | An instrumented 'S.ClientEnv'
 data ClientEnv s = ClientEnv
@@ -71,7 +74,7 @@
     injectRunRequest :: !(InjectSelector RunRequest s)
   }
 
-instance (MonadIO (em r s), MonadWithEvent em) => RunClient (ClientM em r s) where
+instance (MonadIO (em r s), MonadWithEvent em) => RunClient (ClientM em s r s) where
   runRequestAcceptStatus stats req = do
     e <- ask
     injectRunRequest e RunRequest \runReq injField -> withEvent runReq \ev -> do
@@ -82,7 +85,7 @@
   throwClientError = throwError
 
 -- | Instrumented version of 'S.runClientM'
-runClientM :: ClientM em r s a -> ClientEnv s -> em r s (Either ClientError a)
+runClientM :: ClientM em s r s' a -> ClientEnv s -> em r s' (Either ClientError a)
 runClientM = coerce
 
 -- | Selector for events in 'ClientM'
