Usage data with no story
Connect event counts to the sessions and feedback that explain them.
Product event tracking
Capture the actions that matter, measure feature usage and active users, and link every event to replay, funnels, and feedback.
Problems it solves
Connect event counts to the sessions and feedback that explain them.
Combine autocapture with custom events so you ship tracking fast.
Use the same events for funnels, custom event counts, and replay triage.
Workflow
Use autocapture and custom events to track key actions.
See feature usage, active users, and retention over time.
Jump from an event to the session replay behind it.
Capture
Start with what the script records on its own, then name the actions that matter.
| Autocapture | Page views, clicks, form inputs, rage clicks and JavaScript errors are recorded as soon as the script loads, with no code. Every click keeps the element’s id, classes and text, plus its data-* and aria-* attributes, so it can be named later. |
|---|---|
| Defined event (no code) | Name a click without touching your code: match autocaptured clicks by element ID, CSS class, text, data attribute, tag or a full CSS selector, and combine conditions when one is not enough. The definition applies to clicks already recorded, and the editor shows how many matching clicks it finds before you save. |
| Tracked event (code) | Send a named event from your code with PulsePanda.track("plan_upgraded", { plan: "pro" }), with up to 25 properties per event. Calls made before the script has loaded are queued, and calls made before the visitor’s consent decision are held until it is made. |
| Google Tag Manager dataLayer | Already pushing events to the dataLayer? Add data-datalayer="true" to the script tag and those events arrive as tracked events, with nested values flattened into properties. Pass a comma-separated list of event names instead of true to keep only those. Fields that look like contact details are dropped. |
No-code events
Matching a click by its text is the quickest way to name it, and the most fragile: the event stops matching the day someone rewrites the button label, and it never matches the translated version of the page. A data attribute survives both.
<button data-track="signup">Start free</button>. Any data-* name works, because the script records every one on each click.data-track="signup". The value is matched exactly, ignoring case, and a bare data-track matches any value.Definitions run over clicks that were already recorded, so an event defined today by ID or class also counts last month’s clicks. A data attribute added today matches clicks from today on, since older clicks were recorded without it.
What you get
| Events | Custom events and autocapture in one SDK. |
|---|---|
| Metrics | Feature usage and DAU, WAU, and MAU trends. |
| Context | Events linked to replay and funnels. |
What to track
Autocapture means you never start from zero, but a list of every click is not a measurement plan. Name the handful of actions that mark real progress: signed up, created a first project, invited a teammate, upgraded. Most products need ten to twenty named events, not two hundred.
Name them as an object and a past-tense action (project_created, plan_upgraded), keep one spelling, and put variations in properties rather than in new event names. What event tracking is, and which events are worth tracking covers naming in more depth.
Then put the events to work: an activation funnel built from them shows the step where new users stall, and the replays behind each drop-off show why.
FAQ
Product event tracking records the actions users take in your product so teams can measure feature usage, active users, and retention.
No. PulsePanda combines autocapture with custom events, so you can start fast and add detail where you need it.
Events power funnels and replay triage, and every event links to the session replay it came from.
FAQ
Software that records the actions people take on your site or in your product, such as clicks, signups and upgrades, as named events you can count, use as funnel steps and filter by. PulsePanda combines autocaptured events, events you define from recorded clicks, and events you send from code.
Yes. Clicks are captured automatically, and you can turn any of them into a named event by matching its ID, class, text, data attribute, tag or CSS selector. A data-* attribute on the element is the most robust option, because it survives copy changes and translations.
Yes. A defined event matches clicks that were already recorded, so a funnel built today can use earlier visits. Events sent with PulsePanda.track() exist only from the moment you add the call.
Yes. PulsePanda.track() takes an event name and up to 25 properties, each a string, number, boolean or null. Strings are capped at 255 characters.
Yes. You can add the script through Google Tag Manager, and with data-datalayer="true" on the script tag the events you already push to the dataLayer are recorded as tracked events.
Related pages
Install once and connect product analytics, replay, heatmaps, funnels, and feedback in minutes.
Start for free