Overview
The Events tab lets you define tracking events to capture specific visitor actions on your website. Track button clicks, form submissions, scroll milestones, element visibility, or fire custom events from your own code. Any event can be marked as a conversion goal to measure campaign effectiveness.
Events List
The events table shows all defined events with key metrics:| Column | Description |
|---|---|
| Name | Event name |
| Type | Event type (Click, Scroll, Form Submit, Visibility, Custom) |
| Fires | Total number of times this event has been triggered |
| Conversion | Whether this event counts as a conversion goal |
| Status | Active or inactive |
| Actions | Edit or delete the event |
Filters
Filter the events list by:| Filter | Description |
|---|---|
| Type | Show only events of a specific type |
| Conversion | Show only conversion goal events |
| Status | Show active or inactive events |
| Search | Search events by name |
Creating an Event
Click Create Event to define a new tracking event. Each event requires:| Field | Required | Description |
|---|---|---|
| Name | Yes | Event name for identification (e.g., “CTA Button Click”, “Contact Form Submit”) |
| Type | Yes | How the event is triggered (see Event Types below) |
| CSS Selector | Depends | CSS selector targeting the element (required for Click, Form Submit, Visibility) |
| Page URL | No | Restrict the event to fire only on a specific page |
| Conversion Goal | No | Toggle to count this event as a conversion in analytics |
Event Types
Each event type tracks a different kind of visitor interaction. The tracker script handles all automatic types — no coding required.Click
Fires when a visitor clicks on an element matching the CSS selector.| Setting | Description |
|---|---|
| CSS Selector | Target element selector (e.g., #cta-button, .buy-now, a[href="/contact"]) |
| Page URL | Optional — limit tracking to a specific page |
- Element text content (first 100 characters)
- Element tag name (
button,a,div, etc.) - CSS selector that matched
- Current page URL
Scroll (Visibility)
Fires when the visitor scrolls past a specific element on the page. Uses an IntersectionObserver to detect when the element enters the viewport.| Setting | Description |
|---|---|
| CSS Selector | Target element to observe (e.g., #pricing-section, .testimonials) |
| Scroll Threshold | Percentage of the element that must be visible (default: 50%) |
- Track how many visitors see your pricing section
- Measure engagement with specific content blocks
- Detect if visitors reach the bottom of a long page
Each scroll event fires only once per session per element — even if the visitor scrolls past it multiple times. This prevents inflated counts.
Form Submit
Fires when a visitor submits a form matching the CSS selector.| Setting | Description |
|---|---|
| CSS Selector | Target form element (e.g., #contact-form, .signup-form) |
| Form Fields | Optional — allowlist of field names to capture (e.g., email, phone, name) |
- Values from
<input>,<select>, and<textarea>fields - Field names and their values (up to 500 characters per field)
- Password and hidden fields are automatically excluded
Element Visibility
Fires when a specific element becomes visible in the browser viewport. Similar to Scroll, but focused on tracking whether a particular UI element was seen.| Setting | Description |
|---|---|
| CSS Selector | Target element (e.g., .promo-banner, #special-offer) |
- Track impressions of promotional banners
- Measure visibility of important CTAs
- Detect if dynamically loaded content is seen (works with SPAs)
The tracker uses a MutationObserver to watch for dynamically added elements. If the target element is rendered by JavaScript after page load (React, Vue, etc.), it will still be detected.
Custom (Manual)
Fires when you call the JavaScript API from your own code. This is the most flexible event type — you control exactly when and with what data the event fires.| Setting | Description |
|---|---|
| Name | Event name that matches the name used in RevolTracker.track() |
Conversion Goal
Any event can be marked as a Conversion Goal by enabling the toggle. When enabled:- The event is counted in the Conversions KPI card on the Dashboard
- It’s used to calculate Conversion Rate in the Campaign Performance table
- Sessions containing this event are highlighted in the session detail view
- The event appears in conversion funnels and reports
What Makes a Good Conversion Goal?
Lead generation
Lead generation
Mark form submissions as conversions — contact forms, quote requests, newsletter signups. These are clear indicators that a visitor became a lead.
E-commerce
E-commerce
Mark add to cart or purchase completed custom events as conversions. Track the full funnel from page view to purchase.
Engagement
Engagement
Mark scroll past pricing or video play events as micro-conversions. These indicate strong interest even without a form submission.
Calls and chats
Calls and chats
Mark phone number click or chat widget opened events as conversions. These show intent to engage directly.
Custom Events API
Custom events give you full control over event tracking from your own JavaScript code. Use them when automatic tracking (clicks, forms, visibility) isn’t enough — for dynamic interactions, multi-step processes, or business-specific actions.Basic Usage
API Reference
| Parameter | Type | Required | Description |
|---|---|---|---|
eventName | string | Yes | Event name — must match the name defined in the Events tab if you want it linked to an event definition |
data | object | No | Custom payload — any JSON-serializable data (objects, arrays, strings, numbers) |
- Current page URL
- Session ID
- Timestamp
- Company ID
E-Commerce Examples
Track the full shopping funnel:Add to Cart Integration
A complete example of integrating custom events with an “Add to Cart” button:Lead Form Example
Track form submissions with field data:SPA / React Example
For single-page applications, fire events on route changes or component interactions:How Events Are Sent
Events are buffered and batched for performance:- Each
RevolTracker.track()call adds the event to an internal buffer - Every 5 seconds, all buffered events are sent to the server in a single request
- On page unload, any remaining events are sent via
sendBeacon()for reliability - Maximum 50 events per batch — excess events are dropped
You don’t need to create an event definition in the dashboard for custom events to be recorded. Undefined custom events are still stored with their data — but they won’t have a fire count in the Events list. For full tracking, create a matching event definition with the same name.
Analyze Your Website with Claude Code
If you’re not sure which elements to track, you can use Claude Code to analyze your website and suggest an optimal event tracking setup.Prompt for website analysis
Prompt for website analysis


