All threads / Tracking Metrics with Ahoy and Blazer Discussion
Ask A Question


You’re not receiving notifications from this thread.

Tracking Metrics with Ahoy and Blazer Discussion

Awesome episode! Thanks Chris!

Masud Rana Hossain ·

Awesome episode

this is great, good demo on ahoy and blazer!

ruby rails ·

great video, thank for sharing it !

Ahoy is a wonderfull gem when it comes to track !
I also use Ahoy::Event to track visit duration and sometimes to create heatmap of my page :p

more information if you want : http://www.tuto-ruby-gratui...

this is my free rails tutorial, it's in french but code is understandable :p

That's really cool, thanks for sharing!

If using the webpacker and the latest ahoy 2.0, my browser's console returns: "ahoy is not defined", but a ruby side are working good! Can I fix that?
import ahoy from "ahoy.js";
Any thoughts on the best way to get Longitude and Latitude as part of the tracking of visits from ahoy?  it defaults to city/state/country but blazer says it needs longitude and latitude for auto generating maps.

I haven't actually used it myself but you could try the Geocoder Gem and which will take an address and give you coordinates with Geocoder.coordinates(location)

Hey, Chris! It looks like a lot has changed with ahoy in the past two years. Any way you could update this?

I don't think a whole lot has changed. They have instructions for using it with Webpacker now, but it seems mostly the same to me. Are you talking about anything specific?

No, it turns out I have a Rails 5 app that uses Webpacker, and what I implemented was apparently causing confusion in my app. I took the Webpacker stuff out and it works fine now. Thanks, anyway!

Hey Chris, does ahoy_matey only integrate with the devise User model? My colleague and I have been attempting to integrate it with another model called Product -- ignoring the User model altogether. Changing t.references :user to t.references :product.

Our app does not have user auth, and we just want to track visits and events in our Product model.


Yeah, should be able to set it up without Users. That's what guests are anyways, they don't have a User. You can always ask on the GitHub issues for it and get tips from the author. 👍

Does anybody have any examples of using Ahoy::Events in Blazer?? It seems the two should marry nicely, but I'm struggling to find any examples.

Blazer + Ahoy::Visits is easy, all the data points are proper fields... but with Ahoy::Events each useful piece of data is within Json and so Blazer won't parse it... (do I need to change field to JsonB??)

I want to track playback and video performance analytics (easy to do in Ahoy) and then display some of it in Blazer. But I can't work out how to delve into the properties of an Event/Visit?? Any clues?

Example: I can search by an event like "User Pressed Play" but I want to know [event].video_id or [event].current_playback_time in Blazer... then I can do average time played, number of playbacks per user, etc.


When I installed Ahoy, I just changed the migration to have the data type be JSONB and haven't experienced any issues.

From there, you could query in Blazer using regular SQL (perhaps like):

SELECT CAST((properties->>'video_id') AS INTEGER)
  FROM ahoy_events
 WHERE = 'User Pressed Play'
   AND ahoy_events.time >= '2020-12-01 00:00:00';

This assumes that you have a field called 'video_id' in your properties hash. Basically we're fetching the string value from JSONB and then casting it to an intger. You could also join on that, potentially, like:

SELECT ahoy_events.*, videos.*
  FROM ahoy_events
  JOIN videos ON = CAST((properties->>'video_id') AS INTEGER)
 WHERE = 'User Pressed Play'
   AND ahoy_events.time >= '2020-12-01 00:00:00';

I hope this gives you some ideas. If you have something else in mind, let me know, maybe I can assist further.

Anyone using Ahoy on rails 7? Server side is working fine but getting errors on client side that "ahoy is not defined"

gem file

gem "ahoy_matey"


class Ahoy::Event < ApplicationRecord
  include Ahoy::QueryMethods

  self.table_name = "ahoy_events"

  belongs_to :visit
  belongs_to :user, optional: true


class Ahoy::Visit < ApplicationRecord
  self.table_name = "ahoy_visits"

  has_many :events, class_name: "Ahoy::Event"
  belongs_to :user, optional: true

console output

player.js:23 Uncaught ReferenceError: ahoy is not defined
    at togglePlay (player.js:23:7)
    at HTMLAnchorElement.<anonymous> (player.js:14:9)


ahoy.track("Played Audio", audio_detail)


class Ahoy::Store < Ahoy::DatabaseStore

  Ahoy.api = true

  Ahoy.geocode = false

Typing ahoy.track("test") directly in console also return the same error.

Any help/thoughts?

Join the discussion

Want to stay up-to-date with Ruby on Rails?

Join 70,337+ developers who get early access to new tutorials, screencasts, articles, and more.

    We care about the protection of your data. Read our Privacy Policy.

    logo Created with Sketch.

    Screencast tutorials to help you learn Ruby on Rails, Javascript, Hotwire, Turbo, Stimulus.js, PostgreSQL, MySQL, Ubuntu, and more. Icons by Icons8

    © 2023 GoRails, LLC. All rights reserved.