TelemetryDeck for Elixir

Elixir client for TelemetryDeck Ingest API v2.

This package sends privacy-conscious analytics signals to TelemetryDeck from Elixir applications. It is intentionally small: build a config, build a signal, and send one signal or a batch of signals.

Installation

Add telemetry_deck to your dependencies:

def deps do
  [
    {:telemetry_deck, "~> 0.1"}
  ]
end

Usage

config =
  TelemetryDeck.Config.new!(
    namespace: "your-namespace",
    app_id: "AAAA-BBBB"
  )

signal =
  TelemetryDeck.Signal.new!(
    type: "App.User.signedIn",
    client_user: TelemetryDeck.Hash.client_user("user-123", "your-secret"),
    payload: %{"App.Plan.name" => "pro"}
  )

TelemetryDeck.Client.send(config, signal)

Batching

TelemetryDeck.Client.send_batch(config, [signal_one, signal_two])

Configuration

TelemetryDeck.Config accepts:

Privacy

TelemetryDeck expects clientUser to be a stable hash. You can pass an already-hashed value, or use TelemetryDeck.Hash.client_user/2 to create an HMAC-SHA256 hash from your own identifier and secret.

Payloads should be flat maps of primitive values. Nested maps and lists are rejected so signals stay compatible with TelemetryDeck Ingest API v2.

Publishing Checklist

Before publishing a release:

mix test
mix docs
mix hex.build --unpack
mix hex.publish --dry-run

Then publish with:

mix hex.publish

License

MIT