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 %>
+