diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..fde7112 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,12 @@ + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/lib/rack/tracker.rb b/lib/rack/tracker.rb index d549a53..51e447c 100644 --- a/lib/rack/tracker.rb +++ b/lib/rack/tracker.rb @@ -22,6 +22,7 @@ require "rack/tracker/criteo/criteo" require "rack/tracker/zanox/zanox" require "rack/tracker/hotjar/hotjar" +require "rack/tracker/salesforce/salesforce" module Rack class Tracker diff --git a/lib/rack/tracker/salesforce/salesforce.rb b/lib/rack/tracker/salesforce/salesforce.rb new file mode 100644 index 0000000..6295927 --- /dev/null +++ b/lib/rack/tracker/salesforce/salesforce.rb @@ -0,0 +1,47 @@ +class Salesforce < Rack::Tracker::Handler + + self.position = :body + + def domain + options[:domain] + end + + class Track < OpenStruct + + def tracker + @tracker ||= JSON.parse(cookies.fetch(:sfmc, "{}")) + end + + def convert? + tracker.any? + end + + def delete(domain) + cookies.delete(:sfmc, :domain => domain) + end + + def tags + output = <<-XML + + tracking + conversion + #{tracker["mid"]} + #{tracker["j"]} + + #{tracker["sfmc_sub"]} + #{tracker["l"]} + #{tracker["u"]} + #{tracker["jb"]} + #{tracker["j"]} + Completed + 2 + + + XML + + output.strip.gsub(/(>\s+<)/, "><") + end + + end + +end diff --git a/lib/rack/tracker/salesforce/template/salesforce.erb b/lib/rack/tracker/salesforce/template/salesforce.erb new file mode 100644 index 0000000..ae187cc --- /dev/null +++ b/lib/rack/tracker/salesforce/template/salesforce.erb @@ -0,0 +1,7 @@ +<% events.each do |event| %> + <% if event.convert? %> + + <% event.delete(domain) %> + <% end %> +<% end %> +