analytics-clj
                                
                                 analytics-clj copied to clipboard
                                
                                    analytics-clj copied to clipboard
                            
                            
                            
                        Idiomatic Clojure wrapper for the Segment.io 2.x Java client
analytics-clj
Idiomatic Clojure wrapper for the Segment.io 2.x Java client
For full documentation on the Segment.io 2.x Java client, see analytics-java.
Build Status
Installation
[circleci/analytics-clj "<VERSION>"]
To find the most recent published version, see https://clojars.org/circleci/analytics-clj
Usage
View the full API.
Initialize an analytics client
(use '[circleci.analytics-clj.core])
(def analytics (initialize "<writeKey>"))
With logging:
(defn logger []
  (reify com.segment.analytics.Log
    (print [this level format args]
      (println (str (java.util.Date.) "\t" level "\t" args)))
    (print [this level error format args]
      (println error))))
(def analytics (initialize "<writeKey>" {:log (logger)}))
Messages
All of the message types can take options. See Spec: Common Fields for a list of common fields between all message types.
Identify
(identify analytics "user-id")
With traits:
(identify analytics "user-id" {:email "[email protected]"})
Track
(track analytics "user-id" "signup")
With properties:
(track analytics "user-id" "signup" {:company "Acme Inc."})
A full example:
(track analytics (:id user) "signup" {:company "Acme Inc."} {:context {:language "en-us"}
                                                             :integrations {"AdRoll" false}
                                                             :integration-options {"Amplitude" {:session-id (:id session)}}})
Screen
(screen analytics "1234" "Login Screen")
With properties:
(screen analytics "1234" "Login Screen" {:path "/users/login"})
Page
(page analytics "1234" "Login Page")
With properties:
(page analytics "1234" "Login Page" {:path "/users/login"})
Group
(group analytics "1234" "group-5678")
With traits:
(group analytics "1234" "group-5678" {:name "Segment"})
Alias
(alias analytics "anonymous_user" "5678")
Did we miss something?
We provided a top level enqueue function to allow you to do the following:
(enqueue analytics (doto (YourMessageType/builder)
                         (.userId "user-id")
                         (.properties {"company" "Acme Inc."})))
Releasing
New git tags are automatically published to clojars.
The following should be updated on the main/master branch before tagging:
- project.clj- version
- CHANGELOG.md- summary of changes
License
Copyright © 2019 CircleCI
Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version.