Klaviyo
An Elixir library for working with the Klaviyo REST API.
Installation
def deps do
[
{:klaviyo, "~> 2.0"},
{:hackney, "~> 1.15"},
{:jason, "~> 1.1"}
]
end
Note that usage of hackney and jason are optional. You may implement support
for your own HTTP library and JSON codec.
Usage
You make a request to the Klaviyo API by passing the request description created
by resource endpoint functions (e.g. Klaviyo.Campaign.send/1 or
Klaviyo.track/1) to the Klaviyo.request/2 function.
All requests that get a response from the Klaviyo API will be returned as either
{:ok, %Klaviyo.Response{}} or {:error, %Klaviyo.Response{}}. In the event of
a client error {:error, _reason} will be returned.
iex> Klaviyo.Campaign.send("dqQnNW") |> Klaviyo.request(%{ private_api_key: "..." })
{:ok, %Klaviyo.Response{body: _, headers: _, status_code: 200}}Configuration
Configuration is passed as a map to the second argument of Klaviyo.request/2.
:host- HTTP host to make requests to. Defaults toa.klaviyo.com.:http_client- the HTTP client used for making requests. Defaults to`Klaviyo.Client.Hackney`.:http_client_opts- additional options passed to:http_clientwhen makinga request:json_codec- codec for encoding and decoding JSON. Defaults toJason.:path- URL path prefix used when making a request:port- HTTP port used when making a request:private_api_key- the Klaviyo private API key used when making a request toa resource endpoints:protocol- HTTP protocol used when making a request. Defaults tohttps.:public_api_key- the Klaviyo public API key used when making a request tothe track and identify endpoints
Supported Endpoint Functions
Server-Side
Klaviyo.identify/1Klaviyo.track/1Klaviyo.track_once/1
Campaign
Klaviyo.Campaign.all/1Klaviyo.Campaign.all_recipients/1Klaviyo.Campaign.cancel/1Klaviyo.Campaign.clone/2Klaviyo.Campaign.create/1Klaviyo.Campaign.get/1Klaviyo.Campaign.schedule/2Klaviyo.Campaign.send/1Klaviyo.Campaign.update/2
List
Klaviyo.List.add_as_member/2Klaviyo.List.add_as_subscriber/2Klaviyo.List.all/0Klaviyo.List.all_exclusions/2Klaviyo.List.all_group_members/2Klaviyo.List.create/1Klaviyo.List.delete/1Klaviyo.List.get/1Klaviyo.List.get_memberships/2Klaviyo.List.get_subscriptions/2Klaviyo.List.remove_as_member/2Klaviyo.List.remove_as_subscriber/2Klaviyo.List.update/2
Metric
Klaviyo.Metric.all/1Klaviyo.Metric.export/2Klaviyo.Metric.timeline/1Klaviyo.Metric.timeline/2
Person
Klaviyo.Person.get/1Klaviyo.Person.timeline/2Klaviyo.Person.timeline_for_metric/3Klaviyo.Person.update/2
Template
Klaviyo.Template.all/0Klaviyo.Template.clone/2Klaviyo.Template.create/1Klaviyo.Template.delete/1Klaviyo.Template.render/2Klaviyo.Template.send/2Klaviyo.Template.update/2