diff --git a/envelope.cabal b/envelope.cabal
--- a/envelope.cabal
+++ b/envelope.cabal
@@ -1,5 +1,5 @@
 name:                envelope
-version:             0.2.0.1
+version:             0.2.1.0
 synopsis:            Defines generic 'Envelope' type to wrap reponses from a JSON API.
 description:         Please see README.md
 homepage:            https://github.com/cdepillabout/envelope#readme
diff --git a/src/Web/Envelope.hs b/src/Web/Envelope.hs
--- a/src/Web/Envelope.hs
+++ b/src/Web/Envelope.hs
@@ -49,6 +49,8 @@
     , Envelope'(..)
     , Success(..)
     , Err(..)
+    , toErr
+    , toErr'
     , throwEnvelopeErr
     , throwEnvelopeErr'
     , toSuccessEnvelope
@@ -207,6 +209,20 @@
          FromForm (Err e) where
   fromForm :: Form -> Either Text (Err e)
   fromForm form = Err <$> parseUnique "error" form <*> lookupMaybe "extra" form
+
+-- | Smart constructor for 'Err'.
+--
+-- >>> toErr "DB_ERROR" "an error occurred"
+-- Err {errErr = "DB_ERROR", errExtra = Just "an error occurred"}
+toErr :: e -> Text -> Err e
+toErr e extra = Err e (Just extra)
+
+-- | Smart constructor for 'Err' that doesn't use an 'errExtra'.
+--
+-- >>> toErr' "DB_ERROR"
+-- Err {errErr = "DB_ERROR", errExtra = Nothing}
+toErr' :: e -> Err e
+toErr' e = Err e Nothing
 
 -- | Wrap an @a@ in a success 'Envelope'.
 --
