Skip to content

Idiomatic Clojure wrapper for the Segment.io 2.x Java client

License

Notifications You must be signed in to change notification settings

circleci/analytics-clj

Repository files navigation

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

CircleCI

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 "bob@acme.com"})

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.

About

Idiomatic Clojure wrapper for the Segment.io 2.x Java client

Resources

License

Stars

Watchers

Forks

Packages

No packages published