🔥 Visit and event tracking for JavaScript
- Easily track unique visitors
- Track events across page navigation
Use it with any backend. For Rails, check out the Ahoy gem.
Download ahoy.js and include it after jQuery.
<script src="jquery.js"></script>
<script src="ahoy.js"></script>Or use Bower
bower install ahoyOr use npm
npm install ahoy.jsWhen someone lands on your website, they are assigned a visit token and a visitor token.
The visit token expires after 4 hours, in which a new visit is created. Visits are useful for tracking metrics like monthly active users. The visitor token expires after 2 years. A POST request is sent to /ahoy/visits with:
- visit_token
- visitor_token
- referrer
- landing_page
The server can capture:
- ip
- user_agent
- user - from app authentication
And calculate things like:
- referring_domain and search_keyword from referrer
- utm_source, utm_medium, utm_term, utm_content, and utm_campaign from landing_page
- city, region, and country from ip
- browser, os, and device_type from user_agent
Track events with:
ahoy.track(name, properties);A POST request is sent to /ahoy/events with:
- name
- properties
- time
The server can capture:
- visit_token - from cookies
- user - from app authentication
As a precaution, the server should reject times that do not match:
1 minute ago < time <= now
Track all views and clicks with:
ahoy.trackAll();Set the page with:
ahoy.configure({page: "Landing page"});And sections with:
<div data-section="Header">
<a href="/home">Home</a>
</div>These are included in event properties if set.
ahoy.trackView();Name - $view
Properties
- url -
https://www.streamflip.com - title -
Streamflip
ahoy.trackClicks();Name - $click
Properties
- tag -
a - id -
account-link - class -
btn btn-primary - text -
View Account - href -
/account
ahoy.trackSubmits();Name - $submit
ahoy.trackChanges();Name - $change
Ahoy is built with developers in mind. You can run the following code in your browser’s console.
Force a new visit
ahoy.reset(); // then reload the pageLog messages
ahoy.debug();Turn off logging
ahoy.debug(false);Here’s the default configuration:
ahoy.configure({
urlPrefix: "",
visitsUrl: "/ahoy/visits",
eventsUrl: "/ahoy/events",
cookieDomain: null,
page: null,
platform: "Web",
useBeacon: false,
startOnReady: true
});To track visits across multiple subdomains, use:
ahoy.configure({cookieDomain: "yourdomain.com"});- Install the dependencies with
npm install - Run
npm run test:localand openhttp://localhost:8080/__zuulin your browser
- Send events in batches
- Add page and section for automatic events
- Add
trackContentmethod - Remove jQuery dependency
- Customize endpoints
View the changelog
Everyone is encouraged to help improve this project. Here are a few ways you can help:
- Report bugs
- Fix bugs and submit pull requests
- Write, clarify, or fix documentation
- Suggest or add new features