Back to Blog
Product Analytics User Behavior

User Behavior: See which anonymous visitors convert into real users

CZ
Chris Zioutas · Founder
· · 4 min read

Every website has two kinds of visitors: anonymous guests browsing around, and identified users who have signed up or logged in. The moment a guest becomes a user is one of the most important events in your product — and until now, it was invisible.

Today we’re introducing User Behavior, a new section in Witnes that automatically surfaces conversion signals. No configuration, no event tagging, no funnel setup. Just open the page and see what’s happening.

What is a conversion?

In Witnes, a conversion happens when the same browser that was tracked anonymously later calls identify() with a real user ID. Witnes matches the anonymous sessions to the identify call using the browser fingerprint, then groups them under a single conversion event.

That grouping is your conversion.

What you can see

Key metrics

At the top of the Conversions page you get three numbers:

  • Total conversions — the number of distinct conversion events in the selected period
  • Conversion rate — what percentage of your anonymous visitors actually converted
  • Median time to convert — how long it typically takes from a visitor’s first page load to the moment they identify

Expand the card to see a daily bar chart of conversion volume over time.

Individual conversion journeys

Below the metrics is a table of every conversion in the period, sortable by sessions, recency, and time to convert. Click any row and you see the pages that visitor browsed before they identified — broken down by session, with timestamps, so you can see exactly which tab they had open and in what order they navigated.

A visitor who opens multiple tabs on the same day will show one session per tab — each with its own set of pages, timestamped so you can follow the order.

This is the kind of context that turns a conversion rate into something actionable. If most visitors convert in a single session and land directly on your pricing page, that tells you something very different than if they take three days and multiple tabs to get there.

How it works — and what privacy costs us

Witnes is built around a hard constraint: no cookies, no persistent identifiers, no cross-session fingerprinting. That makes it safe to deploy without a consent banner, but it also means the conversion data you get here is less complete than what you would see from a traditional analytics platform that tracks users across days and devices.

Here is what that means in practice.

Session IDs live in sessionStorage, which is scoped to a single browser tab and wiped when the tab is closed. There are no cookies, no localStorage entries, nothing that survives a browser restart. Each new tab is a fresh session. This is why no consent banner is needed — there is nothing to consent to.

Browser fingerprints rotate daily. To recognise that two page loads came from the same browser without storing a persistent ID, Witnes generates a daily fingerprint using a salt that changes every 24 hours. This means anonymous sessions can only be linked to a conversion that happens on the same day. A visitor who browses your site on Monday and signs up on Wednesday will not have their Monday sessions attributed — their Wednesday sessions will, but the cross-day journey is lost. Other platforms would track this with a persistent cookie. We don’t.

We never link a guest to a user. When a conversion is detected, the anonymous sessions are grouped under a neutral ID — not your user’s account, not their email, not any identifier you passed to identify(). The grouping is one-way. You can see that someone converted and what they browsed before they did, but Witnes cannot tell you which specific user it was. This is intentional.

The result is that conversion numbers here will likely be lower than reality — some visitors take longer than a day to convert, and those are not captured. What is captured is accurate, private, and requires no legal framework to justify collecting it. For most products, that is a reasonable trade.

No new instrumentation required.

Getting started

If you are already using identify() in your tracker snippet, conversions are being tracked right now. Open User Behavior in the sidebar and switch to the Conversions tab.

If you are not yet calling identify(), see the Identifying Users section of the integration guide for the exact call and where to place it.

That is all it takes. Witnes handles the rest.

Get Started

If you want to see in ation what you read about head over and sign up for free!

One script tag. No backend changes. No cookies. Hosted in the EU.