diff --git a/preamble.cabal b/preamble.cabal
--- a/preamble.cabal
+++ b/preamble.cabal
@@ -1,5 +1,5 @@
 name:                  preamble
-version:               0.0.35
+version:               0.0.36
 synopsis:              Yet another prelude.
 description:           A prelude built on basic-prelude.
 homepage:              https://github.com/swift-nav/preamble
diff --git a/src/Preamble/Ctx.hs b/src/Preamble/Ctx.hs
--- a/src/Preamble/Ctx.hs
+++ b/src/Preamble/Ctx.hs
@@ -48,7 +48,7 @@
   h <- liftIO $ fromMaybe "127.0.0.1" <$> lookupEnv "STATS_HOST"
   a <- liftIO $ inet_addr h
   let stat m = void $ sendTo s m $ SockAddrInet 8125 a
-  runTransT (StatsCtx c mempty stat) action
+  runTransT (StatsCtx c mempty stat mempty) action
 
 -- | Update stats context's preamble.
 --
diff --git a/src/Preamble/Stats.hs b/src/Preamble/Stats.hs
--- a/src/Preamble/Stats.hs
+++ b/src/Preamble/Stats.hs
@@ -14,14 +14,16 @@
   , statsDecrement
   ) where
 
-import Preamble.Prelude
-import Preamble.Types
+import qualified Data.Text        as T
+import           Preamble.Prelude
+import           Preamble.Types
 
 stats :: (MonadStatsCtx c m, Show a) => Text -> Text -> a -> Tags -> m ()
 stats metric name value tags = do
   labels <- (<> tags) <$> view scLabels
-  let statsd = name -:- show value -|- metric
-      tagged = intercalate "," $ flip map labels $ uncurry (-:-)
+  prefix <- ap (bool mempty) T.null <$> view scPrefix
+  let statsd = prefix <> name -:- show value -|- metric
+      tagged = T.intercalate "," $ flip map labels $ uncurry (-:-)
   stat <- view scStat
   liftIO $ stat $ encodeUtf8 $ bool (statsd -|- "#" <> tagged) statsd $ null labels
 
diff --git a/src/Preamble/Types/Ctx.hs b/src/Preamble/Types/Ctx.hs
--- a/src/Preamble/Types/Ctx.hs
+++ b/src/Preamble/Types/Ctx.hs
@@ -51,6 +51,8 @@
     -- ^ Tags to append to every stat.
   , _scStat   :: Stat
     -- ^ Configurable stat function.
+  , _scPrefix :: Text
+    -- ^ Stats prefix.
   }
 
 $(makeClassyConstraints ''StatsCtx [''HasCtx])
