trackingPostRequest :: MonadIO m => Text -> m (Either Text Text)
trackingPostRequest payload = do
  let postUrl = parseRequest_ $ "POST " <> googleAnalyticsApiEndpoint
  let requestPayload = C.fromStrict $ T.encodeUtf8 payload
  let postRequest = HTTP.setRequestIgnoreStatus
                  $ HTTP.setRequestBodyLBS requestPayload postUrl
  postResponse <- liftIO $ HTTP.httpLBS postRequest
  let postResp = T.decodeUtf8 . C.toStrict $ HTTP.getResponseBody postResponse
  case HTTP.getResponseStatusCode postResponse of
    200 -> return $ Right postResp
    _   -> return $ Left postResp
trackingPostRequest :: MonadIO m => Text -> m (Either Text Text)
trackingPostRequest payload = do
  let postUrl = parseRequest_ $ "POST " <> googleAnalyticsApiEndpoint
  let requestPayload = C.fromStrict $ T.encodeUtf8 payload
  let postRequest = HTTP.setRequestIgnoreStatus
                  $ HTTP.setRequestBodyLBS requestPayload postUrl
  postResponse <- liftIO $ HTTP.httpLBS postRequest
  let postResp = T.decodeUtf8 . C.toStrict $ HTTP.getResponseBody postResponse
  case HTTP.getResponseStatusCode postResponse of
    200 -> return $ Right postResp
    _   -> return $ Left postResp
trackingPostRequest payload = do
  let postUrl = parseRequest_ $ "POST " <> googleAnalyticsApiEndpoint
  let requestPayload = C.fromStrict $ T.encodeUtf8 payload
  let postRequest = HTTP.setRequestIgnoreStatus
                  $ HTTP.setRequestBodyLBS requestPayload postUrl
  postResponse <- liftIO $ HTTP.httpLBS postRequest
  let postResp = T.decodeUtf8 . C.toStrict $ HTTP.getResponseBody postResponse
  case HTTP.getResponseStatusCode postResponse of
    200 -> return $ Right postResp
    _   -> return $ Left postResp