This library provides an Elixir HTTP client for PostHog. See the repository for more information.
Installation
This library was built by the community and is not maintained by the PostHog core team.
The package can be installed by adding posthog
to your list of dependencies in mix.exs
:
def deps do[{:posthog, "~> 0.1"}]end
Configuration
config :posthog,api_url: "https://us.i.posthog.com",api_key: "<ph_project_api_key>"
Optionally, you can pass in a :json_library
key. The default JSON parser is Jason.
Capturing events
You can send custom events using capture
:
Posthog.capture("user_signed_up", %{distinct_id: distinct_id_of_the_user})
Tip: We recommend using a
[object] [verb]
format for your event names, where[object]
is the entity that the behavior relates to, and[verb]
is the behavior itself. For example,project created
,user signed up
, orinvite sent
.
Setting event properties
Optionally, you can also include additional information in the event by setting the properties value:
Posthog.capture("user_signed_up", %{distinct_id: distinct_id_of_the_user,properties: %{login_type: "email",is_free_trial: true}})
Batching events
To capture multiple events at once, use batch()
:
Posthog.batch([{"user_signed_up", [distinct_id: distinct_id_of_the_user], nil}])
Feature flags
PostHog's feature flags enable you to safely deploy and roll back new features.
Elixir supports a subset of what our feature flag API provides.
Boolean feature flags
is_my_flag_enabled = Posthog.feature_flag_enabled?("flag-key", "distinct_id_of_your_user")if is_my_flag_enabled# Do something differently for this user# Optional: fetch the payload{:ok, feature_flag} = Posthog.feature_flag("flag-key", "distinct_id_of_your_user")end
Multivariate feature flags
{:ok, feature_flag} = Posthog.feature_flag("flag-key", "distinct_id_of_your_user")# %Posthog.FeatureFlag{ name: "flag-key", value: %{"variant-1" => "value-1", "variant-2" => "value-2"}, enabled: "variant-2" }if feature_flag.enabled == 'variant-2' # replace 'variant-2' with the key of your variant# Do something differently for this userend
Fetching all feature flags
Posthog.feature_flags("distinct_id_of_your_user"){:ok,%{"featureFlagPayloads" => %{"feature-1" => 1,"feature-2" => %{"variant-1" => "value-1", "variant-2" => "value-2"}},"featureFlags" => %{"feature-1" => true, "feature-2" => "variant-2"}}}
More documentation can be found in the repository.
Thanks
Thanks to nkezhaya for contributing this library.