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
# File 'app/helpers/spree/checkout_analytics_helper.rb', line 21

def order_tracking_params
  {
    last_ip_address: request.remote_ip,
  }
end

#track_checkout_completedObject



66
67
68
69
70
71
72
# File 'app/helpers/spree/checkout_analytics_helper.rb', line 66

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



35
36
37
38
39
40
# File 'app/helpers/spree/checkout_analytics_helper.rb', line 35

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



27
28
29
30
31
32
33
# File 'app/helpers/spree/checkout_analytics_helper.rb', line 27

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



58
59
60
61
62
63
64
# File 'app/helpers/spree/checkout_analytics_helper.rb', line 58

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



49
50
51
52
53
54
55
56
# File 'app/helpers/spree/checkout_analytics_helper.rb', line 49

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



42
43
44
45
46
47
# File 'app/helpers/spree/checkout_analytics_helper.rb', line 42

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