module UserTrackers::IntercomTracker
Attributes
client[RW]
Public Class Methods
track(params)
click to toggle source
# File lib/user_trackers/intercom_tracker.rb, line 12 def self.track(params) user_id, event_name, event_attributes, anonymous_id, user_logged_in = params.values_at('user_id', 'event_name', 'event_attributes', 'anonymous_id', 'user_logged_in') user_id = user_id.to_s if user_id if user_id client.users.create(user_attributes(user_id, event_name, event_attributes, anonymous_id)) client.events.create(event_attributes(user_id, event_name, event_attributes, anonymous_id)) if user_logged_in contact_list = client.contacts.find(email: anonymous_id) if !contact_list.contacts.empty? contact_list.contacts.each do |contact| lead = client.contacts.find(id: contact['id']) client.contacts.convert(lead, Intercom::User.new(user_id: user_id)) end end end else contact_list = client.contacts.find(email: anonymous_id) if contact_list.contacts.empty? contact = client.contacts.create(email: anonymous_id) id = contact.id else id = contact_list.contacts.first['id'] end client.events.create( { id: id, event_name: event_name || "undefined_event", created_at: Time.now.to_i, metadata: event_attributes&.first(5).to_h || {}, }) end end