Store / read UTM
This commit is contained in:
parent
0113408780
commit
85d2b3fd53
|
|
@ -15,6 +15,7 @@
|
|||
var location = window.location;
|
||||
this.handleFbc(location.search);
|
||||
this.handleFbp();
|
||||
this.handleUtm(location.search);
|
||||
},
|
||||
|
||||
// 1. Parsing and storing _fbc (Click ID)
|
||||
|
|
@ -33,6 +34,19 @@
|
|||
}
|
||||
},
|
||||
|
||||
handleUtm: function (searchParams) {
|
||||
var utmParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content'];
|
||||
var self = this;
|
||||
// forEach not supported in IE8, but this is modern enough or we can use for loop
|
||||
for (var i = 0; i < utmParams.length; i++) {
|
||||
var param = utmParams[i];
|
||||
var value = self.getQueryParam(param, searchParams);
|
||||
if (value) {
|
||||
self.setCookie(param, value, 90);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
// 2. Handling _fbp (Browser ID)
|
||||
handleFbp: function () {
|
||||
if (!this.getCookie('_fbp')) {
|
||||
|
|
|
|||
|
|
@ -42,8 +42,8 @@ class ApiRecurlyController < ApiController
|
|||
affiliate_referral_id: cookies[:affiliate_visitor],
|
||||
origin: origin_cookie,
|
||||
timezone: current_timezone,
|
||||
facebook_click_id: cookies['_fbc'],
|
||||
facebook_browser_id: cookies['_fbp']
|
||||
facebook_click_id: cookies[:_fbc],
|
||||
facebook_browser_id: cookies[:_fbp]
|
||||
}
|
||||
|
||||
options = User.musician_defaults(request.remote_ip, ApplicationHelper.base_uri(request) + "/confirm", any_user, options)
|
||||
|
|
|
|||
|
|
@ -49,11 +49,22 @@ class ApplicationController < ActionController::Base
|
|||
|
||||
def origin_cookie
|
||||
begin
|
||||
JSON.parse(cookies[:origin]) if cookies[:origin]
|
||||
data = JSON.parse(cookies[:origin]) if cookies[:origin]
|
||||
rescue
|
||||
nil
|
||||
data = nil
|
||||
end
|
||||
|
||||
# Backfill with individual UTM cookies if present
|
||||
# This supports cases where the frontend (jam-ui/web) set specific cookies
|
||||
# or if the JSON cookie is missing/incomplete.
|
||||
%w(utm_source utm_medium utm_campaign utm_term utm_content).each do |key|
|
||||
if cookies[key].present?
|
||||
data ||= {}
|
||||
data[key] = cookies[key]
|
||||
end
|
||||
end
|
||||
|
||||
data
|
||||
end
|
||||
|
||||
def track_origin
|
||||
|
|
|
|||
|
|
@ -635,6 +635,10 @@ class LandingsController < ApplicationController
|
|||
musician: true,
|
||||
timezone: current_timezone,
|
||||
first_name: @first,
|
||||
origin: origin_cookie,
|
||||
affiliate_referral_id: cookies[:affiliate_visitor],
|
||||
facebook_click_id: cookies[:_fbc],
|
||||
facebook_browser_id: cookies[:_fbp],
|
||||
instruments: [{:instrument_id => @instrument, :proficiency_level => 1, :priority => 1}])
|
||||
if @user.errors.any?
|
||||
first = @user.errors.first
|
||||
|
|
|
|||
|
|
@ -118,7 +118,10 @@ class SessionsController < ApplicationController
|
|||
last_name: auth_hash[:info][:last_name],
|
||||
email: auth_hash[:info][:email],
|
||||
timezone: current_timezone,
|
||||
affiliate_referral_id: cookies[:affiliate_visitor])
|
||||
affiliate_referral_id: cookies[:affiliate_visitor],
|
||||
origin: origin_cookie,
|
||||
facebook_click_id: cookies[:_fbc],
|
||||
facebook_browser_id: cookies[:_fbp])
|
||||
|
||||
# Users who sign up using oauth are presumed to have valid email adddresses.
|
||||
user.confirm_email!
|
||||
|
|
@ -194,7 +197,9 @@ class SessionsController < ApplicationController
|
|||
location: {:country => nil, :state => nil, :city => nil},
|
||||
affiliate_referral_id: cookies[:affiliate_visitor],
|
||||
origin: origin_cookie,
|
||||
timezone: current_timezone
|
||||
timezone: current_timezone,
|
||||
facebook_click_id: cookies[:_fbc],
|
||||
facebook_browser_id: cookies[:_fbp]
|
||||
}
|
||||
|
||||
options = User.musician_defaults(request.remote_ip, ApplicationHelper.base_uri(request) + "/confirm", any_user, options)
|
||||
|
|
|
|||
Loading…
Reference in New Issue