add submission tracking events

This commit is contained in:
Alex Turchyn
2023-09-10 12:55:41 +03:00
parent 62cea05084
commit 8cabe31827
15 changed files with 190 additions and 4 deletions
+3 -1
View File
@@ -45,7 +45,9 @@ module ReplaceEmailVariables
def build_submitter_link(submitter)
Rails.application.routes.url_helpers.submit_form_url(
slug: submitter.slug, **Docuseal.default_url_options
slug: submitter.slug,
t: SubmissionEvents.build_tracking_param(submitter, 'click_email'),
**Docuseal.default_url_options
)
end
+22
View File
@@ -0,0 +1,22 @@
# frozen_string_literal: true
module SubmissionEvents
TRACKING_PARAM_LENGTH = 6
module_function
def build_tracking_param(submitter, event_type = 'click_email')
Base64.urlsafe_encode64(
[submitter.slug, event_type, Rails.application.secrets.secret_key_base].join(':')
).first(TRACKING_PARAM_LENGTH)
end
def create_with_tracking_data(submitter, event_type, request)
SubmissionEvent.create!(submitter:, event_type:, data: {
ip: request.remote_ip,
ua: request.user_agent,
sid: request.session.id.to_s,
uid: request.env['warden'].user(:user)&.id
}.compact_blank)
end
end
+7 -1
View File
@@ -7,7 +7,11 @@ module Submitters
module_function
def call(submitter, params, request)
Submissions.update_template_fields!(submitter.submission) if submitter.submission.template_fields.blank?
if submitter.submission.template_fields.blank?
Submissions.update_template_fields!(submitter.submission)
SubmissionEvents.create_with_tracking_data(submitter, 'start_form', request)
end
update_submitter!(submitter, params, request)
@@ -32,6 +36,8 @@ module Submitters
submitter.completed_at = Time.current
submitter.ip = request.remote_ip
submitter.ua = request.user_agent
SubmissionEvents.create_with_tracking_data(submitter, 'complete_form', request)
end
submitter.save!