diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown
--- a/CHANGELOG.markdown
+++ b/CHANGELOG.markdown
@@ -1,3 +1,7 @@
+1.3.3
+-----
+* Add `Pinned` system consumer strategy.
+
 1.3.2
 -----
 * Bug fix: Driver could end in a situation where it receives a close-connection message during
diff --git a/Database/EventStore/Internal/Types.hs b/Database/EventStore/Internal/Types.hs
--- a/Database/EventStore/Internal/Types.hs
+++ b/Database/EventStore/Internal/Types.hs
@@ -1084,10 +1084,24 @@
 -- | System supported consumer strategies for use with persistent subscriptions.
 data SystemConsumerStrategy
     = DispatchToSingle
-      -- ^ Distributes events to a single client until it is full. Then round
-      --   robin to the next client.
+      -- ^ Distributes events to a single client until the bufferSize is reached.
+      --   After which the next client is selected in a round robin style,
+      --   and the process is repeated.
     | RoundRobin
-      -- ^ Distributes events to each client in a round robin fashion.
+      -- ^ Distributes events to all clients evenly. If the client buffer-size
+      --   is reached the client is ignored until events are
+      --   acknowledged/not acknowledged.
+    | Pinned
+      -- ^ For use with an indexing projection such as the system $by_category
+      --   projection. Event Store inspects event for its source stream id,
+      --   hashing the id to one of 1024 buckets assigned to individual clients.
+      --   When a client disconnects it's buckets are assigned to other clients.
+      --   When a client connects, it is assigned some of the existing buckets.
+      --   This naively attempts to maintain a balanced workload.
+      --   The main aim of this strategy is to decrease the likelihood of
+      --   concurrency and ordering issues while maintaining load balancing.
+      --   This is not a guarantee, and you should handle the usual ordering
+      --   and concurrency issues.
     deriving (Show, Eq)
 
 --------------------------------------------------------------------------------
@@ -1095,12 +1109,14 @@
 strategyText :: SystemConsumerStrategy -> Text
 strategyText DispatchToSingle = "DispatchToSingle"
 strategyText RoundRobin       = "RoundRobin"
+strategyText Pinned           = "Pinned"
 
 --------------------------------------------------------------------------------
 -- | Tries to parse a 'SystemConsumerStrategy' given a raw 'Text'.
 strategyFromText :: Text -> Maybe SystemConsumerStrategy
 strategyFromText "DispatchToSingle" = Just DispatchToSingle
 strategyFromText "RoundRobin"       = Just RoundRobin
+strategyFromText "Pinned"           = Just Pinned
 strategyFromText _                  = Nothing
 
 --------------------------------------------------------------------------------
diff --git a/eventstore.cabal b/eventstore.cabal
--- a/eventstore.cabal
+++ b/eventstore.cabal
@@ -4,10 +4,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 171ce48c5ca32c8763beafe10906ae6d4b555cfc1b24872d3f56cef12b1d761d
+-- hash: bf11e2eb3f56e21967cbcbcdbafbb405a8955a6942e4b7f12ddaae7597d57737
 
 name:           eventstore
-version:        1.3.2
+version:        1.3.3
 synopsis:       EventStore TCP Client
 description:    EventStore TCP Client <https://eventstore.org>
 category:       Database
