Module: Omnitrack

Defined in:
lib/omnitrack.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/adapters/tiktok.rb,
lib/omnitrack/adapters/snapchat.rb,
lib/omnitrack/jobs/tracking_job.rb,
lib/omnitrack/adapters/google_ads.rb,
lib/omnitrack/concerns/controller.rb,
lib/omnitrack/pipeline/dispatcher.rb,
lib/omnitrack/helpers/view_helpers.rb,
lib/omnitrack/adapters/google_analytics.rb,
lib/omnitrack/middleware/request_tracker.rb,
lib/generators/omnitrack/install/install_generator.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, Concerns, Helpers, Jobs, Middleware, Pipeline, Registry Classes: AdapterError, Configuration, ConfigurationError, Context, Error, InstallGenerator, InvalidPayloadError, Logger, MultiResult, Railtie, Result, UnknownAdapterError

Constant Summary collapse

VERSION =
"2.0.0"
Controller =

Shorthand for Omnitrack::Concerns::Controller

Concerns::Controller

Class Method Summary collapse

Class Method Details

.backend_mode?Boolean

Returns:

  • (Boolean)


132
133
134
# File 'lib/omnitrack.rb', line 132

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

.configOmnitrack::Configuration

Access the global configuration object.



53
54
55
# File 'lib/omnitrack.rb', line 53

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:



64
65
66
67
68
69
# File 'lib/omnitrack.rb', line 64

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

.frontend_mode?Boolean


Mode helpers


Returns:

  • (Boolean)


128
129
130
# File 'lib/omnitrack.rb', line 128

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:



120
121
122
# File 'lib/omnitrack.rb', line 120

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

.loggerOmnitrack::Logger

Returns:



91
92
93
# File 'lib/omnitrack.rb', line 91

def logger
  @logger ||= build_logger
end

.reset!Object

Reset configuration and logger (useful in tests)



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

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:



104
105
106
# File 'lib/omnitrack.rb', line 104

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:



112
113
114
# File 'lib/omnitrack.rb', line 112

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