Advanced

Goals

Visitors allows you to send custom events to track user actions and conversions.

Track method

Sends a custom event.

visitors.track("signup", {
  source: "footer",
})

Parameters

event

stringrequired

The name of the event you want to track.

properties

object

Optional object containing event properties

Properties

[key]

string | numberflexible

Any additional custom properties for this event.

Data attributes

Track clicks declaratively using HTML data attributes. No JavaScript required.

Add data-visitors-event to any clickable element (buttons, links, etc.):

<button data-visitors-event="Signup">
  Get Started
</button>

Adding properties

Add additional data-visitors-* attributes to include event properties:

<button
  data-visitors-event="Signup"
  data-visitors-plan="Pro"
  data-visitors-source="hero"
>
  Get Started
</button>

This sends a Signup event with properties { plan: "Pro", source: "hero" }.

Tracking forms

For form submissions, it's best to use visitors.track() in your submit handler after validation succeeds. For example:

const handleSubmit = async (e) => {
  e.preventDefault()
  const result = await submitForm(data)
  if (!result.success) return
  visitors.track("signup", {
    source: "footer",
  })
}

This ensures you only track successful submissions and events aren't tracked for failed validation failures.