Module: Omnitrack

Defined in:
lib/omnitrack.rb,
lib/omnitrack/engine.rb,
lib/omnitrack/errors.rb,
lib/omnitrack/logger.rb,
lib/omnitrack/result.rb,
lib/omnitrack/context.rb,
lib/omnitrack/railtie.rb,
lib/omnitrack/version.rb,
lib/omnitrack/registry.rb,
lib/omnitrack/adapters/base.rb,
lib/omnitrack/adapters/meta.rb,
lib/omnitrack/configuration.rb,
lib/omnitrack/audit/recorder.rb,
lib/omnitrack/adapters/tiktok.rb,
lib/omnitrack/adapters/snapchat.rb,
lib/omnitrack/jobs/tracking_job.rb,
app/models/omnitrack/visit_event.rb,
lib/omnitrack/adapters/google_ads.rb,
lib/omnitrack/concerns/controller.rb,
lib/omnitrack/pipeline/dispatcher.rb,
lib/omnitrack/helpers/view_helpers.rb,
app/models/omnitrack/delivery_status.rb,
app/models/omnitrack/application_record.rb,
lib/omnitrack/adapters/google_analytics.rb,
lib/omnitrack/middleware/request_tracker.rb,
app/controllers/omnitrack/sessions_controller.rb,
app/controllers/omnitrack/application_controller.rb,
app/controllers/omnitrack/visit_events_controller.rb,
app/controllers/omnitrack/path/sessions_controller.rb,
lib/generators/omnitrack/install/install_generator.rb,
app/controllers/omnitrack/path/application_controller.rb,
app/controllers/omnitrack/path/visit_events_controller.rb

Overview

Omnitrack

Top-level module providing the primary public API.

Usage:

Omnitrack.configure { |c| c.adapters = { ... } }
Omnitrack.track("purchase", value: 99.00, currency: "USD")
Omnitrack.track_conversion(value: 99.00, order_id: "ORD-001")
Omnitrack.identify(email: "user@example.com")

Defined Under Namespace

Modules: Adapters, Audit, Concerns, Helpers, Jobs, Middleware, Path, Pipeline, Registry Classes: AdapterError, ApplicationController, ApplicationRecord, Configuration, ConfigurationError, Context, DeliveryStatus, Engine, Error, InstallGenerator, InvalidPayloadError, Logger, MultiResult, Railtie, Result, SessionsController, UnknownAdapterError, VisitEvent, VisitEventsController

Constant Summary collapse

VERSION =
"3.0.0"
Controller =

Shorthand for Omnitrack::Concerns::Controller

Concerns::Controller

Class Method Summary collapse

Class Method Details

.backend_mode?Boolean

Returns:

  • (Boolean)


134
135
136
# File 'lib/omnitrack.rb', line 134

def backend_mode?
  %i[backend hybrid].include?(config.effective_mode)
end

.configOmnitrack::Configuration

Access the global configuration object.



55
56
57
# File 'lib/omnitrack.rb', line 55

def config
  @config ||= Configuration.new
end

.configure {|config| ... } ⇒ Object

Configure OmniTrack via block.

Omnitrack.configure do |c|
  c.mode    = :hybrid
  c.adapters = { meta: { enabled: true, pixel_id: "..." } }
end

Yields:



66
67
68
69
70
71
# File 'lib/omnitrack.rb', line 66

def configure
  yield config
  config.validate!
  reset_logger!
  self
end

.frontend_mode?Boolean


Mode helpers


Returns:

  • (Boolean)


130
131
132
# File 'lib/omnitrack.rb', line 130

def frontend_mode?
  %i[frontend hybrid].include?(config.effective_mode)
end

.identify(user_data = {}) ⇒ Omnitrack::MultiResult

Identify a user across all enabled adapters.

Parameters:

  • user_data (Hash) (defaults to: {})

    keys: :email, :phone, :external_id, :first_name, :last_name, etc.

Returns:



122
123
124
# File 'lib/omnitrack.rb', line 122

def identify(user_data = {})
  dispatch(:identify_user, user_data.to_h)
end

.loggerOmnitrack::Logger

Returns:



93
94
95
# File 'lib/omnitrack.rb', line 93

def logger
  @logger ||= build_logger
end

.reset!Object

Reset configuration and logger (useful in tests)



74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/omnitrack.rb', line 74

def reset!
  @config = nil
  @logger = nil
  Omnitrack::Registry.reset!
  # Re-bind built-in adapters without reloading (avoids duplicate constant/method warnings)
  [
    Omnitrack::Adapters::GoogleAds,
    Omnitrack::Adapters::GoogleAnalytics,
    Omnitrack::Adapters::Meta,
    Omnitrack::Adapters::TikTok,
    Omnitrack::Adapters::Snapchat
  ].each { |adapter_class| Omnitrack::Registry.register(adapter_class) }
end

.track(event_name, payload = {}) ⇒ Omnitrack::MultiResult

Track a named event across all enabled adapters.

Parameters:

  • event_name (String, Symbol)
  • payload (Hash) (defaults to: {})

Returns:



106
107
108
# File 'lib/omnitrack.rb', line 106

def track(event_name, payload = {})
  dispatch(:track_event, event_name.to_s, payload.to_h)
end

.track_conversion(data = {}) ⇒ Omnitrack::MultiResult

Track a conversion across all enabled adapters.

Parameters:

  • data (Hash) (defaults to: {})

Returns:



114
115
116
# File 'lib/omnitrack.rb', line 114

def track_conversion(data = {})
  dispatch(:track_conversion, data.to_h)
end