diff --git a/Clckwrks/Monad.hs b/Clckwrks/Monad.hs
--- a/Clckwrks/Monad.hs
+++ b/Clckwrks/Monad.hs
@@ -28,6 +28,7 @@
 --    , markupToContent
 --    , addPreProcessor
     , addAdminMenu
+    , appendRequestInit
     , getNavBarLinks
     , addPreProc
     , addNavBarCallback
@@ -94,7 +95,7 @@
 import Happstack.Auth                (AuthProfileURL(..), AuthURL(..), AuthState, ProfileState, UserId)
 import qualified Happstack.Auth      as Auth
 
-import Happstack.Server              (Happstack, ServerMonad(..), FilterMonad(..), WebMonad(..), Input, Request(..), Response, HasRqData(..), ServerPartT, UnWebT, internalServerError, mapServerPartT, escape, toResponse)
+import Happstack.Server              (Happstack, ServerMonad(..), FilterMonad(..), WebMonad(..), Input, Request(..), Response, HasRqData(..), ServerPart, ServerPartT, UnWebT, internalServerError, mapServerPartT, escape, toResponse)
 import Happstack.Server.HSP.HTML     () -- ToMessage XML instance
 import Happstack.Server.XMLGenT      () -- instance Happstack XMLGenT
 import Happstack.Server.Internal.Monads (FilterFun)
@@ -195,13 +196,14 @@
       (Just tlsSettings) ->
           Just $ Text.pack $ "https://" ++ (clckHostname c) ++ if ((clckPort c /= 443) && (clckHidePort c == False)) then (':' : show (clckTLSPort tlsSettings)) else ""
 
-data ClckState
-    = ClckState { acidState        :: Acid
-                , uniqueId         :: TVar Integer -- only unique for this request
-                , adminMenus       :: [(T.Text, [(Set Role, T.Text, T.Text)])]
-                , enableAnalytics  :: Bool -- ^ enable Google Analytics
-                , plugins          :: ClckPlugins
-                }
+data ClckState = ClckState
+    { acidState        :: Acid
+    , uniqueId         :: TVar Integer -- only unique for this request
+    , adminMenus       :: [(T.Text, [(Set Role, T.Text, T.Text)])]
+    , enableAnalytics  :: Bool -- ^ enable Google Analytics
+    , plugins          :: ClckPlugins
+    , requestInit      :: ServerPart () -- ^ an action which gets called at the beginning of each request
+    }
 
 newtype ClckT url m a = ClckT { unClckT :: RouteT url (StateT ClckState m) a }
     deriving (Functor, Applicative, Alternative, Monad, MonadIO, MonadPlus, ServerMonad, HasRqData, FilterMonad r, WebMonad r, MonadState ClckState)
@@ -282,12 +284,18 @@
 getEnableAnalytics :: (Functor m, MonadState ClckState m) => m Bool
 getEnableAnalytics = enableAnalytics <$> get
 
+-- | add an Admin menu
 addAdminMenu :: (Monad m) => (T.Text, [(Set Role, T.Text, T.Text)]) -> ClckT url m ()
 addAdminMenu (category, entries) =
     modify $ \cs ->
         let oldMenus = adminMenus cs
             newMenus = Map.toAscList $ Map.insertWith List.union category entries $ Map.fromList oldMenus
         in cs { adminMenus = newMenus }
+
+-- | append an action to the request init
+appendRequestInit :: (Monad m) => ServerPart () -> ClckT url m ()
+appendRequestInit action =
+    modify $ \cs -> cs { requestInit = (requestInit cs) >> action }
 
 -- | change the route url
 withRouteClckT :: ((url' -> [(T.Text, Maybe T.Text)] -> T.Text) -> url -> [(T.Text, Maybe T.Text)] -> T.Text)
diff --git a/Clckwrks/Server.hs b/Clckwrks/Server.hs
--- a/Clckwrks/Server.hs
+++ b/Clckwrks/Server.hs
@@ -42,6 +42,7 @@
                                         , adminMenus       = []
                                         , enableAnalytics  = clckEnableAnalytics cc
                                         , plugins          = plugins
+                                        , requestInit      = return ()
                                         }
               action clckState
 
@@ -72,8 +73,10 @@
          maybe (return ()) killThread mHttpsTID
 
     where
-    handlers cc clckState =
+      handlers :: ClckwrksConfig -> ClckState -> ServerPart Response
+      handlers cc clckState =
        do decodeBody (defaultBodyPolicy "/tmp/" (10 * 10^6)  (1 * 10^6)  (1 * 10^6))
+          requestInit clckState
           msum $
             [ jsHandlers cc
             , dir "favicon.ico" $ notFound (toResponse ())
diff --git a/clckwrks.cabal b/clckwrks.cabal
--- a/clckwrks.cabal
+++ b/clckwrks.cabal
@@ -1,5 +1,5 @@
 Name:                clckwrks
-Version:             0.18.3
+Version:             0.19.0
 Synopsis:            A secure, reliable content management system (CMS) and blogging platform
 Description:         clckwrks (pronounced, clockworks) aims to compete
                      directly with popular PHP-based blogging and CMS
