Avo Functions in Ruby

4 minute read

Platforms

Avo can code generate Avo Functions in Ruby for your server side tracking.

Quickstart

Avo functions usage consists of 4 steps.

Step 1. Include the Avo file

Pull the generated code with the Avo CLI

To get the Avo generated Ruby file you must be a member of an Avo workspace with a Ruby source. Ask for an invite from a colleague or create a new workspace

Terminal
Copy
$
$
$
npm install -g avo
avo login
avo pull --branch my-branch-name

Learn more about the CLI here.

You can also download the file manually from your Avo workspace.

Step 2. Initialize Avo

Import Avo from the generated file and initialize it by calling the init_avo method before tracking

Ruby
Copy
1
2
3
require './avo.rb'
Avo.init_avo(options: { env: :dev }, [system_properties], [custom_destination])

The actual parameters depend on your tracking plan setup, see the parameters explanation in the reference below.

Step 3. Call Avo functions to track your product usage

Every event in your tracking plan, marked with the "Implement with Avo" checkbox, gets a function in the generated code, named according to the event name, in snake_case.

For example, if you have a "Signup Start" event defined like this in Avo:

Event 'Signup Start' defined in Avo with referral string property and implement with Avo check

You'll be able to call it like this from the generated code

Ruby
Copy
1
Avo.signup_start(referral: 'direct')

Notice, that you are not passing the System property with the call. System properties are defined on the init step and then automatically included with all events. You can update the system properties with set_system_properties function.

Step 4. Verify the implementation

Use the Implementation status in your Avo workspace to verify that your implementation is correct.

Reference

init_avo

Ruby
Copy
1
def self.init_avo(options:, [system_properties:], [custom_dest:], [logger: nil])

Initializes Avo, needs to be called before the tracking methods. This method will call the make(env:) callback in the provided custom destinations.

Arguments

options (Hash): a hash with :env symbol (:prod, :dev), :verbose (true, false)

system_properties (Hash): a Hash containing the system properties that should be sent with every event. When you define system properties in your Avo workspace you set name and type - the keys in this hash should be the same as system properties, in snake_case, and you should provide corresponding types, can be string, int, long, float, bool and list.

[custom_dest (object)]: if you have set up a custom destination for this source, an object with callbacks for the custom destination.

Custom destination object format:

Ruby
Copy
1
2
3
4
5
6
7
8
class CustomDestination
def make(**args); end
def track_event(**args); end
def set_user_properties(**args); end
end

Read more about custom destinations here.

set_system_properties

Ruby
Copy
1
def self.set_system_properties(system_props)

A method to update system properties.

Arguments

system_props (Hash): a Hash containing the system properties that should be sent with every event. When you define system properties in your Avo workspace you set name and type - the keys in this dictionary should be the same as system properties, in snake_case, and you should provide corresponding types.

Event tracking functions

Ruby
Copy
1
def self.[your_event_name]([event_property_0:], [event_property_1:], ..., [user_property_0:], [user_property_1:], ..., [user_Id:], [anonymous_id:] })

Every event you define in your tracking plan in Avo gets a function named after the event in snake_case. The arguments of the function depend on how it's defined in your tracking plan.

Arguments

event_property: type defined in the Avo tracking plan, can be string, int, long, float, bool, array and any. The argument key is snake_case version of the property name defined in the Avo UI. This is an event property that should be tracked with given event. Pass the value of the property to track here.

user_property: type defined in the Avo tracking plan, can be string, int, long, float, bool, array and any. The argument key is snake_case version of the property name defined in the Avo UI. This is a user property that should be updated with given event. Pass the value of the property to update here.

user_id: string added to all events, used to connect event to specific user, you have to either provide it or the anonymous_id

anonymous_id: string, this argument is automatically added, used to track anonymous users

Destinations

You can send your data using the Avo generated JavaScript code to any data destination that accepts custom events, including:

  • Amplitude
  • FacebookAnalytics
  • FullStory
  • Mixpanel
  • Mixpanel
  • Permutive
  • Segment
  • Snowplow
  • ZendeskConnect
  • Adobe Analytics
  • Apptelemetry
  • Rudderstack
  • Freshpaint
  • Posthog
  • Google Analytics 4 / Firebase Analytics
  • Heap
  • Keen
  • Kissmetrics
  • LaunchDarkly Events
  • Pendo
  • Fivetran
  • AppsFlyer
  • Braze
  • Intercom
  • A home made SDK
  • Internal API