Module: Spree::CheckoutAnalyticsHelper

Included in:
CheckoutController
Defined in:
app/helpers/spree/checkout_analytics_helper.rb

Instance Method Summary collapse

Instance Method Details

#clean_analytics_sessionObject



11
12
13
14
15
# File 'app/helpers/spree/checkout_analytics_helper.rb', line 11

def clean_analytics_session
  session.delete(:checkout_started)
  session.delete(:checkout_step_viewed)
  session.delete(:checkout_step_completed)
end

#clear_checkout_completed_sessionObject



17
18
19
# File 'app/helpers/spree/checkout_analytics_helper.rb', line 17

def clear_checkout_completed_session
  session.delete(:checkout_completed)
end

#coupon_tracking_paramsObject



3
4
5
6
7
8
9
# File 'app/helpers/spree/checkout_analytics_helper.rb', line 3

def coupon_tracking_params
  {
    order: @order,
    coupon_code: params[:coupon_code],
    coupon_handler: @result
  }
end

#order_tracking_paramsObject



21
22
23
24
25
26
27
28
# File 'app/helpers/spree/checkout_analytics_helper.rb', line 21

def order_tracking_params
  tracking_params = {
    last_ip_address: request.remote_ip,
  }

  tracking_params[:ahoy_visit_id] = current_visit.id if @order.respond_to?(:ahoy_visit) && defined?(current_visit) && current_visit&.id
  tracking_params
end

#track_checkout_completedObject



69
70
71
72
73
74
75
# File 'app/helpers/spree/checkout_analytics_helper.rb', line 69

def track_checkout_completed
  # server-side tracking
  track_event('order_completed', { order: @order })

  # client-side tracking
  session[:checkout_completed] = true
end

#track_checkout_entered_emailObject



38
39
40
41
42
43
# File 'app/helpers/spree/checkout_analytics_helper.rb', line 38

def track_checkout_entered_email
  return unless @order.email.present?
  return unless params.dig(:order, :email).present?

  track_event('checkout_email_entered', { order: @order, email: @order.email })
end

#track_checkout_startedObject



30
31
32
33
34
35
36
# File 'app/helpers/spree/checkout_analytics_helper.rb', line 30

def track_checkout_started
  # server-side tracking
  track_event('checkout_started', { order: @order })

  # client-side tracking
  session[:checkout_started] = true
end

#track_checkout_step_completedObject



61
62
63
64
65
66
67
# File 'app/helpers/spree/checkout_analytics_helper.rb', line 61

def track_checkout_step_completed
  # server-side tracking
  track_event('checkout_step_completed', { order: @order, step: @previous_state })

  # client-side tracking
  session[:checkout_step_completed] = @previous_state # for 3rd party frontend tracking
end

#track_checkout_step_viewedObject



52
53
54
55
56
57
58
59
# File 'app/helpers/spree/checkout_analytics_helper.rb', line 52

def track_checkout_step_viewed
  # server-side tracking
  track_event('checkout_step_viewed', { order: @order, step: params[:state] || @order.state })

  # client-side tracking
  trackable_checkout_steps = @order.checkout_steps[0..2]
  session[:checkout_step_viewed] = true if trackable_checkout_steps.include? @order.state
end

#track_payment_info_enteredObject



45
46
47
48
49
50
# File 'app/helpers/spree/checkout_analytics_helper.rb', line 45

def track_payment_info_entered
  return unless @order.payment_method.present?
  return unless params.dig(:order, :payments_attributes).present?

  track_event('payment_info_entered', { order: @order })
end