Class: SeoGa4SyncWorker

Inherits:
Object
  • Object
show all
Includes:
Sidekiq::Status::Worker, Sidekiq::Worker
Defined in:
app/workers/seo_ga4_sync_worker.rb

Overview

Syncs engagement metrics from Google Analytics 4.
Can run in parallel with GSC and Visits sync (no dependencies).

Creates time-series data in site_map_data_points:
ga4_page_views, ga4_sessions, ga4_users, ga4_bounce_rate, ga4_engagement_rate, ga4_avg_session_duration

Scheduled nightly at 2:15 AM CT via sidekiq_production_schedule.yml

Instance Method Summary collapse

Instance Method Details

#perform(options = {}) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'app/workers/seo_ga4_sync_worker.rb', line 17

def perform(options = {})
  options = options.with_indifferent_access
  total 2

  at 1, 'Syncing Google Analytics 4 metrics...'
  result = Seo::Ga4SyncService.new(options.slice(:start_date, :end_date)).process

  at 2, 'Complete'
  store info_message: "GA4: #{result[:pages_updated]} pages updated"
  store pages_updated: result[:pages_updated]
  store errors: result[:errors]

  Rails.logger.info "[SeoGa4SyncWorker] Completed: #{result[:pages_updated]} pages"
rescue StandardError => e
  Rails.logger.error "[SeoGa4SyncWorker] Failed: #{e.message}"
  store info_message: "GA4 sync failed: #{e.message}"
  raise
end