Overview
No data yet
Add the script to your site and this page fills in a few seconds after the first visit.
Sessions over time
Top pages
Where visitors come from
Devices and places
What stands out
Site health
Realtime
Who is on your site right now. The last 30 minutes, whatever the time range above.
Where they are
Pages being viewed
Countries
Sessions
No sessions yet
Add this script tag to your site. Sessions appear here a few seconds after the first page view.
<script src="https://hotspot.buxa.ai/hotspot.js" data-api-key="hs_live_prod" defer></script>
Click around the sample site and its events show up here within a few seconds.
No sessions in this time range
Pick a longer range to see older sessions.
No sessions match these filters
Change the status, device, browser or search, or clear everything.
Sessions
No session selected
Pick a session from the list to watch it.No replay for this session
Flow
How visitors move from page to page, and where they leave.
Visitor journeys
Each box is a page. Hover a box or a band for details.No journeys yet
Where visitors land
Where visitors leave
Most common journeys
| Journey | Visits | Converted |
|---|
Funnel
How many visitors get through the steps you care about, in order.
Steps
A visitor counts for a step only after doing every step before it, in the same visit. Page paths and element selectors can end with * to match everything that starts the same way, like /blog/*.
Breakage
Where visitors get stuck: clicks that do nothing, clicks made in frustration, and errors.
Rage clicks
three or more clicks on the same spot within a second or two| What they clicked | Page | Clicks | Sessions | Last seen |
|---|
Dead clicks
clicks on things that are not links or buttons| What they clicked | Page | Clicks | Sessions | Last seen |
|---|
JavaScript errors
uncaught errors and failed promises, grouped by message| Error | Page | Times | Sessions | Last seen |
|---|
Pages
Every page visitors saw: how long they stayed, how far they scrolled, where they left and how fast it loaded.
Pages
| Page | Views | Visits | Time on page | Scrolled | Left here | Converted | Breakage | Load | Stability | Response |
|---|
Referring sites
| Source | Visits | Share | Converted | Conversion rate |
|---|
AI assistants
| Assistant | Visits |
|---|
Install
Four steps, each with a test. The first visit shows up in the dashboard a few seconds after step 2.
Lock the server down
Set these two values in the environment of the server running Hotspot, in .env.hotspot for the full stack or next to the standalone command. The key goes in the script tag in step 2, so only your site can send data. The password protects this dashboard.
Both values were generated in this browser just now and exist nowhere else. Restart the server after setting them, then press Test.
Add the script to your site
Paste this tag into the <head> of every page, before your other scripts. That is the whole install: page views, clicks, rage clicks, errors, web vitals and session replay all come from this one line.
<script src="https://hotspot.buxa.ai/hotspot.js" data-api-key="hs_live_prod" defer></script>
Press Test, then open your site in another tab and click around. The test passes as soon as that visit reaches this server.
Names and goals
Tell Hotspot who a visitor is after they sign in, so sessions show a name instead of "Visitor 4a8b2c". Then name the events that count as a goal, so the funnel and the conversion rate mean something to you. Both are optional.
Press Test to send a named test visitor and a goal event from this browser through the same endpoint your site uses. It shows up in Sessions as "Install test".
Done
Here is where everything stands. Anything still amber can be fixed later from this page.
Script options
data-api-key- The key sent with every event. Required.
data-api-host- Where events are sent. Defaults to the host the script came from.
data-autocapture="false"- Turn off click and form capture.
data-capture-errors="false"- Turn off JavaScript error capture.
data-capture-pageview="false"- Turn off automatic page views.
data-replay="false"- Turn off the session recording. The event timeline still works.
data-mask-inputs="all"- Mask every typed value in the recording. Password and payment fields are always masked.
data-mask-text="true"- Mask all text on the page in the recording.
data-capture-console="false"- Leave console output out of the recording.
data-capture-network="false"- Leave network requests out of the recording.
data-capture-web-vitals="false"- Turn off web vitals.
data-debug="true"- Log every captured event to the browser console.
data-debug-hud="true"- Show an on-page overlay of your own clicks. Toggle it with Alt+H, or add
?hotspot_debug_hud=1to a URL. data-hotspot-mask- On any element: mask its text and typed values in the recording.
data-hotspot-block- On any element: replace it with an empty box of the same size in the recording.
JavaScript API (window.hotspot)
capture(name, props)Record a custom eventidentify(id, { email, name, company })Attach a person to the visitorsetPersonProperties(props)Update person propertiesregister(props)Send these properties with every eventreset()Forget the visitor and start a new sessionoptOut()optIn()hasOptedOut()Visitor consentstartSessionRecording()stopSessionRecording()Replay on and off, for consent flowsgetDistinctId()getSessionId()Current idson(eventName, callback)Run code when an event is capturedflush()Send queued events nowdebug.show()debug.hide()Toggle the on-page overlay