diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.1.1
+
+- Monoid and Semigroup instance for Trigger.
+
 ## 0.1.0.2
 
 - Made `Detach` visible.
diff --git a/event.cabal b/event.cabal
--- a/event.cabal
+++ b/event.cabal
@@ -1,5 +1,5 @@
 name:                event
-version:             0.1.0.2
+version:             0.1.1
 synopsis:            Monoidal, monadic and first-class events
 description:         This package can be used to represent events as
                      first-class objects instead of deepening callbacks and
diff --git a/src/Control/Concurrent/Event.hs b/src/Control/Concurrent/Event.hs
--- a/src/Control/Concurrent/Event.hs
+++ b/src/Control/Concurrent/Event.hs
@@ -54,7 +54,7 @@
   , on
   , newEvent
     -- * Triggering events
-  , Trigger
+  , Trigger(..)
   , trigger
   ) where
 
@@ -114,6 +114,13 @@
 
 -- |@'Trigger' a@ is used to 'trigger' an @'Event' a@.
 newtype Trigger a = Trigger (a -> IO ())
+
+instance Monoid (Trigger a) where
+  mempty = Trigger . const $ pure ()
+  mappend = (<>)
+  
+instance Semigroup (Trigger a) where
+  Trigger f <> Trigger g = Trigger $ \a -> f a >> g a
 
 -- |Use a 'Trigger'.
 trigger :: (MonadIO m) => Trigger a -> a -> m ()
