diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,14 @@
 
 ## [Unreleased]
 
+## [0.3.0] - 2020-12-14
+
+### Fixed
+
+- expose EngageData
+- EngageData.ignoreTime should be a `Maybe Bool`
+- fix parsing of ignoreTime
+
 ## [0.2.1] - 2019-08-26
 
 ### Fixed
diff --git a/mixpanel-client.cabal b/mixpanel-client.cabal
--- a/mixpanel-client.cabal
+++ b/mixpanel-client.cabal
@@ -1,5 +1,5 @@
 name:           mixpanel-client
-version:        0.2.1
+version: 0.3.0
 synopsis:       Mixpanel client
 homepage:       https://github.com/hercules-ci/mixpanel-client#readme
 bug-reports:    https://github.com/hercules-ci/mixpanel-client/issues
diff --git a/src/MixPanel.hs b/src/MixPanel.hs
--- a/src/MixPanel.hs
+++ b/src/MixPanel.hs
@@ -11,6 +11,7 @@
   , track
   , alias
   , engage
+  , engage'
   -- HTTP manager reexports
   , tlsManagerSettings
   , HTTP.newManager
@@ -95,3 +96,7 @@
 engage :: Env -> DistinctId -> Operation -> IO (Either MixPanelError ())
 engage Env{..} distinctid operation =
   runMixPanel clientEnv $ engageC' $ mkEngageData authtoken distinctid operation
+
+engage' :: Env -> DistinctId -> (EngageData -> EngageData) -> Operation -> IO (Either MixPanelError ())
+engage' Env{..} distinctid f operation =
+  runMixPanel clientEnv $ engageC' $ f $ mkEngageData authtoken distinctid operation
diff --git a/src/MixPanel/Types/EngageData.hs b/src/MixPanel/Types/EngageData.hs
--- a/src/MixPanel/Types/EngageData.hs
+++ b/src/MixPanel/Types/EngageData.hs
@@ -1,7 +1,7 @@
 {-# LANGUAGE GADTs #-}
 {-# LANGUAGE FlexibleContexts #-}
 module MixPanel.Types.EngageData
-  ( EngageData
+  ( EngageData(..)
   , DistinctId
   , mkEngageData
   , Operation(..)
@@ -61,7 +61,7 @@
   , distinctId :: DistinctId
   , ip :: Maybe Text
   , time :: Maybe Text
-  , ignoreTime :: Maybe Text
+  , ignoreTime :: Maybe Bool
   , operation :: Operation
   }
 
@@ -70,7 +70,7 @@
     [ "$token" .= token
     , "$distinct_id" .= distinctId
     , "$time" .= time
-    , "$ignoreTime" .= ignoreTime
+    , "$ignore_time" .= ignoreTime
     , "$ip" .= ip
     , operationIdentifier operation .= toJSON operation
     ]
diff --git a/test/TypesSpec.hs b/test/TypesSpec.hs
--- a/test/TypesSpec.hs
+++ b/test/TypesSpec.hs
@@ -20,4 +20,4 @@
   it "EngageData merges properties" $
     let
       ed = mkEngageData (AuthToken "foobar") "123" $ Set (fromList [ "customProperty" .= ("foobar" :: String)])
-    in encode ed `shouldBe` "{\"$distinct_id\":\"123\",\"$set\":{\"customProperty\":\"foobar\"},\"$token\":\"foobar\",\"$ip\":null,\"$ignoreTime\":null,\"$time\":null}"
+    in encode ed `shouldBe` "{\"$distinct_id\":\"123\",\"$set\":{\"customProperty\":\"foobar\"},\"$token\":\"foobar\",\"$ip\":null,\"$ignore_time\":null,\"$time\":null}"
