Class: Omnitrack::Adapters::Snapchat

Inherits:
Base
  • Object
show all
Defined in:
lib/omnitrack/adapters/snapchat.rb

Overview

Snapchat Conversions API (server-side). Docs: marketingapi.snapchat.com/docs/conversion.html

Required config:

pixel_id      — Snap Pixel ID
access_token  — long-lived access token

Constant Summary collapse

API_ENDPOINT =
"https://tr.snapchat.com/v2/conversion"
STANDARD_EVENTS =
%w[
  PURCHASE ADD_CART VIEW_CONTENT ADD_BILLING SIGN_UP LOGIN
  START_CHECKOUT PAGE_VIEW SUBSCRIBE SEARCH CUSTOM_EVENT_1
].freeze

Instance Attribute Summary

Attributes inherited from Base

#config, #logger

Instance Method Summary collapse

Methods inherited from Base

#enabled?, inherited, #initialize, #name

Constructor Details

This class inherits a constructor from Omnitrack::Adapters::Base

Instance Method Details

#identify_user(user_data = {}) ⇒ Object



36
37
38
39
40
41
42
43
44
# File 'lib/omnitrack/adapters/snapchat.rb', line 36

def identify_user(user_data = {})
  ctx = Omnitrack::Context.current
  ctx&.merge!(snapchat_user_data: normalize_user(user_data))

  Omnitrack::Result.success(
    adapter:  name,
    metadata: { note: "Snapchat user data stored in context" }
  )
end

#track_conversion(data = {}) ⇒ Object



32
33
34
# File 'lib/omnitrack/adapters/snapchat.rb', line 32

def track_conversion(data = {})
  track_event("PURCHASE", data)
end

#track_event(event_name, payload = {}) ⇒ Object



22
23
24
25
26
27
28
29
30
# File 'lib/omnitrack/adapters/snapchat.rb', line 22

def track_event(event_name, payload = {})
  safe_execute(event_name) do
    body     = build_event_body(event_name, payload)
    response = http_post(API_ENDPOINT, body: body, headers: auth_headers)
    result   = JSON.parse(response.body)

    Omnitrack::Result.success(adapter: name, data: result)
  end
end