General Questions
What are Custom Events and why should I use them?
Custom Events are user-defined tracking points that let you monitor specific interactions on your website, such as button clicks, form submissions, or page views of important elements. Unlike standard tracking that captures all clicks and pageviews, Custom Events help you focus on the actions that matter most to your business goals. They allow you to filter your heatmaps, recordings, funnels, and analytics data to understand how users who perform specific actions behave differently from your general audience.
What's the difference between Custom Events and standard tracking?
Standard tracking automatically captures all pageviews and clicks across your website, which can result in a lot of data to sift through. Custom Events let you specifically identify and track only the interactions you care about like a "Sign Up" button click or viewing your pricing page, so you can quickly filter and analyze behavior around those key moments without noise from other data.
How many Custom Events can I create?
There is no specific limit to how many events you can create.
Do Custom Events work on mobile and desktop?
Yes, Custom Events work across all devices: desktop, mobile, and tablet. Once you create a Custom Event, it will automatically track the specified interaction regardless of which device your users are on. You can then filter your data by device type to see how behavior differs across platforms.
Can I track the same element on multiple pages with one Custom Event?
Yes, if the element has the same CSS selector across multiple pages, one Custom Event will track it everywhere it appears. For example, if you have a "Contact Us" button with the class .contact-button on every page of your site, a single Custom Event using that selector will track clicks on all of them. If the selectors differ between pages, you may need to create separate events or use a condition like "CSS Selector contains" to capture variations.
Setup and Configuration
What's the difference between creating a Custom Event from Settings vs. from the Filters tab?
Both methods create the same Custom Event with the same configuration options. The difference is workflow convenience:
From Settings: Best when you're planning ahead and setting up multiple events at once. You'll need to navigate to different features to apply the filter after creation.
From Filters tab: Best when you're already analyzing data and realize you need a new Custom Event. You can create it and immediately apply it as a filter without leaving your current view.
What's the difference between Click events and Page View events?
Click Events fire when a user clicks on an element matching your CSS selector. Use these for tracking button clicks, link clicks, or any interactive element.
Page View Events fire when a user views a page that contains an element matching your CSS selector. Use these to track whether users reach specific pages or see important content sections. The user doesn't need to click anything.
Example: Use a Click Event to track clicks on a "Buy Now" button, or use a Page View Event to track when users reach a checkout page that contains a specific element like #checkout-container.
When should I use "CSS Selector equals" vs. "CSS Selector contains"?
CSS Selector equals: Use when you know the exact, complete selector. Best for precise tracking when you want to match only exact elements.
Example: #signup-button will only match elements with exactly that ID
CSS Selector contains: Use when you want to match elements that include a certain string in their selector. Useful for tracking multiple similar elements or when selectors have dynamic parts.
Example: [class*="buy-button"] will match .buy-button-primary, .buy-button-secondary, etc.
Other conditions:
Starts with/Ends with: Useful for selectors that follow naming patterns
Does not equal/contain: Useful for excluding certain elements from tracking
Can I change a Custom Event after it's been created?
Yes, you can edit Custom Events after creation. When viewing your Custom Events in Settings, click on the event you want to modify. You can update:
Event name
CSS selector
Conditions
Action type (Click or Page View)
Changes take effect immediately, but keep in mind that editing the CSS selector will change what gets tracked going forward.
What happens to historical data if I edit a Custom Event's CSS selector?
Historical data remains unchanged as it reflects what was tracked with the previous selector. Once you update the CSS selector, new data will be tracked based on the new selector. This means you may see a shift in your metrics after the change. If you need to maintain historical consistency, consider creating a new Custom Event instead of editing the existing one.
Can I duplicate or copy an existing Custom Event?
Currently, there's no duplicate function, but you can manually create a new Custom Event with the same settings as an existing one. Simply reference the original event's configuration and create a new event with those same parameters.
Can I delete a Custom Event? What happens to the data?
Yes, you can delete Custom Events from the Settings → Custom Events section by clicking the three dots and selecting delete. When you delete an event:
The event will no longer collect new data
Historical data associated with that event will be removed from reports
Any filters using that event in saved views will no longer work
Make sure you truly want to remove the event before deleting it.
CSS Selectors
I don't know anything about CSS selectors. Can I still use Custom Events?
Absolutely! You don't need to be a developer. Follow the step-by-step instructions in the main guide:
Right-click on the element you want to track
Click "Inspect" to open Developer Tools
Right-click on the highlighted HTML code
Select Copy → Copy selector
Paste this into the CSS Selector field in Heatmap.com
The browser does all the technical work for you. Just make sure to test that your selector is working in the Event Log after creation.
What's the easiest way to find a CSS selector?
The easiest method:
Go to your website
Right-click the element you want to track (button, link, etc.)
Click Inspect
In the Developer Tools panel, right-click the highlighted HTML line
Select Copy → Copy selector
Paste into Heatmap.com's CSS Selector field
This works in Chrome, Edge, and Brave browsers and gives you a working selector automatically.
My CSS selector is matching multiple elements. How do I make it more specific?
If your selector is too broad, try these approaches in order:
Use an ID instead of a class if the element has one: #unique-button instead of .button
Combine multiple classes: .primary-button.signup instead of just .button
Add parent context: nav .contact-button to only match that button in the navigation
Use attribute selectors: button[type="submit"] for form submit buttons
Test in Developer Tools: Press Ctrl+F (or Cmd+F) in the Elements panel, paste your selector, and see how many elements light up
The goal is to have only your intended element(s) highlighted.
Should I use an ID or a class for my CSS selector?
Prefer IDs when available (#signup-button):
IDs are unique on a page, so there's no risk of accidentally tracking multiple elements
They're more stable and less likely to change
They're more specific and reliable
Use classes when IDs aren't available (.cta-button):
Make sure the class is specific enough to your target element
Consider combining multiple classes for precision
Test to ensure you're not matching unwanted elements
Can I use multiple conditions for one Custom Event?
Yes, each Custom Event can use multiple conditions (equals, contains, starts with, etc.). You can also:
Create multiple Custom Events and use them together as filters
Use a more flexible condition like "contains" to match multiple variations
Combine multiple classes in your CSS selector (.class1.class2)
What does "CSS Selector contains" mean and when should I use it?
"CSS Selector contains" matches any element whose selector includes the text you specify. It's useful when:
Elements have dynamic or auto-generated parts: [id*="button"] matches #button-123, #button-456, etc.
You want to track multiple similar elements: [class*="add-to-cart"] matches any class containing "add-to-cart"
Selectors include variable components you can't predict exactly
Use it when "equals" is too strict but you still want to maintain some specificity.
My website's HTML changes frequently. How can I create a stable selector?
To create selectors that survive website updates:
Avoid auto-generated classes: Skip classes like .btn-a7f2x or .element-12345
Use semantic IDs and classes: Look for human-readable names like #contact-form or .signup-button
Don't rely on deep nesting: Avoid selectors like div > div > div > button that break when structure changes
Prefer data attributes if available: [data-action="signup"] are often stable
Test across multiple pages: Ensure your selector works consistently everywhere it should
Can I track elements that are added to the page dynamically (after page load)?
Yes, Custom Events will track dynamically added elements as long as they match your CSS selector. This works for:
Elements loaded via JavaScript
Content in modals or pop-ups
Items added to the page after user interactions
The tracking automatically detects when these elements appear and match your selector.
Data and Reporting
How long does it take for Custom Event data to appear?
After creating a Custom Event, it takes approximately 30 minutes for data to start appearing in the Event Log and reports. This processing time is normal. If you don't see data after 30 minutes, check your CSS selector in the Event Log to verify the event is firing correctly.
Why am I seeing data in the Event Log but not in my reports?
If events appear in the Event Log but not in reports, this usually means:
Insufficient data: Reports may require a minimum number of events or sessions before displaying data
Date range mismatch: Check that your report's date range includes the period when events were firing
Filter conflicts: Other active filters might be excluding the sessions containing your Custom Event
Try expanding your date range or removing other filters to see if data appears.
What's the difference between Count, Sessions, and Counts per Session?
Count: Total number of times the event fired across all sessions
Example: If 10 users each clicked a button 3 times, Count = 30
Sessions: Number of unique sessions where the event occurred at least once
Example: If 10 users triggered the event (regardless of how many times), Sessions = 10
Counts per Session: Average number of times the event fires per session
Example: 30 total counts ÷ 10 sessions = 3.0 counts per session
Can I see which specific users triggered a Custom Event?
Custom Events track sessions, not individual identified users. However, you can:
View recordings of sessions where the event was triggered
Filter recordings by the Custom Event to watch those specific sessions
Use analytics filters to see aggregate data about sessions containing the event
This maintains user privacy while still giving you behavioral insights.
Can I export Custom Event data?
You can export data from reports and analytics that include Custom Event filters. When viewing a filtered report (heatmaps, analytics, etc.), look for export options within that feature. The exported data will reflect the Custom Event filter you've applied.
How far back does Custom Event data go?
Custom Events only track data from the moment they're created going forward. They don't retroactively capture historical data. If you create a Custom Event today, it will start collecting data from today onward. Plan your Custom Events early if you need long-term trend data.
Can I set up goals or conversions based on Custom Events?
Custom Events can be used as powerful filters to analyze goal completions and conversions. While Custom Events themselves aren't goals, you can:
Filter funnel data by Custom Events to see conversion rates for users who triggered specific events
Use Custom Events to segment users who completed important actions
Analyze how Custom Event interactions correlate with your existing goals
How do Custom Events work with date ranges?
When viewing Custom Event data, you can adjust the date range to analyze different time periods. The metrics (Count, Sessions, Counts per Session) will update to reflect only the data within your selected range. This lets you compare performance over time or focus on specific periods.
Filtering and Analysis
Can I filter by multiple Custom Events at once?
Yes, you can apply multiple Custom Event filters simultaneously. This shows you data from sessions where all selected events occurred. For example, filter by both "Clicked CTA" and "Viewed Page" to analyze users who did both actions.
Can I use Custom Events with other filters (device type, traffic source, etc.)?
Yes! Custom Events can be combined with all standard filters including:
Device type (Desktop, Mobile, Tablet)
Traffic source (Direct, Organic, Referral, etc.)
Date ranges
How do I see recordings of users who triggered a specific Custom Event?
Navigate to Recordings
Click the Filters tab
Select your Custom Event from the filter options
The recordings list will update to show only sessions where that event occurred
You can then watch these recordings to understand the full user journey of people who completed that specific action.
Can I use Custom Events to create segments in Analytics?
Yes, in Analytics you can filter by Custom Events to create behavioral segments. Go to Analytics → Filters → select your Custom Event. All analytics data will then be segmented to show only sessions containing that event, letting you understand traffic sources, pages, and behaviors specific to that segment.
What's the best way to compare users who triggered an event vs. those who didn't?
Create a report (heatmap, analytics, etc.) with your Custom Event filter applied
Note the key metrics
Create the same report without the filter to see all users
Compare the two reports side-by-side
For example, compare heatmaps of "users who clicked Buy Now" vs. "all users" to see if engaged users interact with your page differently.
Can I use Custom Events in Funnels?
Yes! In Funnels, you can apply Custom Events as filters to analyze conversion rates specifically for users who triggered that event. This helps you understand whether certain interactions (like watching a demo video or clicking a specific CTA) correlate with higher conversion rates through your funnel.
Troubleshooting
My Custom Event isn't firing. What should I check first?
Follow this checklist:
Wait 30 minutes: Data takes approximately 30 minutes to appear after creation
Check the Event Log: Go to Settings → Custom Events → Event Log
Test the element: Click or view the element on your site that should trigger the event
Verify the selector: Use Developer Tools to confirm your CSS selector matches the element
Check the condition: Make sure you're using the right condition (equals, contains, etc.)
If none of these resolve the issue, see "Still Not Working?" below.
The Event Log shows my event firing, but I don't see it in Heatmaps. Why?
If events appear in the Event Log but not in feature reports:
Check the date range: Make sure your report covers the time period when events were firing
Allow time for processing: Reports may take slightly longer to update than the Event Log
Verify sufficient data: Some visualizations need a minimum amount of data to display
Check other filters: Remove other active filters that might be excluding your data
My event count seems too high. What's wrong?
If an event count seems higher than expected:
Your selector is too broad: It's matching multiple elements or elements you didn't intend to track
The element appears multiple times: Your selector is correct, but the element exists in multiple places on the page
Users are clicking repeatedly: This may be legitimate behavior
Test your selector in Developer Tools (Ctrl+F / Cmd+F) to see how many elements it matches. If it's highlighting multiple elements, make your selector more specific.
I updated my website and now my Custom Event stopped working. What happened?
Website updates often change HTML structure, which can break CSS selectors. Common causes:
IDs or classes changed: Developers renamed or removed the attributes you were targeting
Element removed: The element you were tracking no longer exists
HTML structure changed: The element moved to a different location in the page
Go back to your website, inspect the element again, and update your Custom Event with the new CSS selector.
How can I test my Custom Event before using it in production?
Use Developer Tools: Test your CSS selector by pressing Ctrl+F (Cmd+F) in the Elements panel and pasting your selector to see what matches
Check the Event Log: After creating the event, monitor the Event Log for 30 minutes to verify it's firing
Test on a staging site: If you have a development or staging environment, create and test the event there first
Start with one event: Create and verify one Custom Event works correctly before creating many at once
What should I do if I've checked everything and my event still isn't working?
If you've verified your CSS selector is correct and the event still isn't firing in the Event Log after 30 minutes, contact support at support@heatmap.com. Include:
Your Custom Event name
The CSS selector you're using
The URL where the element appears
Screenshots of the element in Developer Tools
Our team will investigate and resolve any technical issues with event tracking.
Best Practices
How many Custom Events should I create?
Focus on quality over quantity. Start with 5-10 events for your most important interactions:
Key conversion points (signup buttons, purchase buttons)
Major navigation elements
Critical engagement actions (video plays, form starts)
Important content visibility
You can always add more later. Too many events from the start makes analysis overwhelming and harder to maintain.
What's the best naming convention for Custom Events?
Use clear, descriptive names that your whole team can understand:
Good names:
"Homepage - Hero CTA Click"
"Pricing Page View"
"Add to Cart - Product Page"
"Newsletter Signup - Footer"
Poor names:
"Button 1"
"Event A"
"Click"
"Test"
Consider including the location (page or section) and the action in the name for clarity.
Should I create separate events for the same button on different pages?
It depends on your analysis needs:
One event for all instances: Use if you want to track total engagement with that button type across your site
Example: Track all "Add to Cart" buttons with one event
Separate events by page: Use if you need to compare performance across different pages
Example: "Add to Cart - Homepage" vs. "Add to Cart - Product Page"
You can also use one event with page-level filters in your reports to achieve similar segmentation.
Can I track form submissions with Custom Events?
Yes! You have two approaches:
Track the submit button click: Create a Click Event targeting the submit button's CSS selector
Example: button[type="submit"] or #contact-form-submit
Track the success page view: Create a Page View Event for a confirmation or thank-you page that appears after submission
Example: Track an element on /thank-you page
The submit button method is usually more reliable as it tracks the submission attempt, while the success page method only tracks completed submissions.
What are some common mistakes to avoid when setting up Custom Events?
Creating too many events at once: Start small and add more as needed
Using overly complex selectors: Simple, stable selectors are better
Not testing selectors: Always verify in Developer Tools before saving
Generic naming: Use descriptive names you'll remember in 6 months
Tracking everything: Focus on meaningful interactions, not every possible click
Not documenting events: Keep notes on what each event tracks and why
Forgetting the 30-minute delay: Don't panic if data doesn't appear immediately
How should I organize my Custom Events across multiple websites?
For multiple sites:
Use consistent naming conventions: Apply the same naming patterns across all sites
Document your events: Keep a central reference document listing all events, their purpose, and which sites they're on
Create templates: Develop a standard set of events (e.g., "Header CTA", "Footer Newsletter") you implement on every site
Consider site-specific needs: While consistency helps, tailor events to each site's unique goals
Technical Questions
Do Custom Events slow down my website?
No, Custom Events don't impact your website's performance. The tracking happens through the existing Heatmap script already on your site. Custom Events simply configure what that script monitors. They don't add extra weight or loading time to your pages.
Does my Heatmap.com tracking script need to be updated to use Custom Events?
No updates needed! Custom Events work with your existing Heatmap tracking script. As long as the standard tracking script is installed on your site, you can create and use Custom Events immediately without any code changes.
Can I use Custom Events with single-page applications (SPAs)?
Yes, Custom Events work with single-page applications built with frameworks like React, Vue, or Angular. Since Custom Events track based on CSS selectors and DOM elements, they'll fire whenever matching elements are clicked or viewed, regardless of whether it's a traditional page load or a dynamic view change in an SPA.
Do Custom Events work with iframes?
Custom Events can only track elements within the same domain as your Heatmap tracking script. If you have an iframe from a different domain (like an embedded video or third-party form), you cannot track interactions inside that iframe. However, you can track clicks on the iframe container itself if needed.
Are there any limitations on which types of elements I can track?
You can track virtually any HTML element that can be identified with a CSS selector:
Buttons
Links
Form inputs
Images
Divs and containers
Navigation items
Videos (the player element)
Custom components
The element doesn't need to be clickable for Page View events; it just needs to exist on the page.
Do Custom Events respect user privacy settings and cookie consent?
Yes, Custom Events follow the same privacy rules as all Heatmap tracking. If a user has opted out of tracking or hasn't provided consent (depending on your setup), Custom Events won't fire for that user. Custom Events track sessions and behavior, not personally identifiable information.
Still Have Questions?
If your question isn't answered here, contact our support team at support@heatmap.com.