Identity Resolution
By default, Signal tracks anonymous visitors using a privacy-safe hash that rotates daily. Identity resolution lets you link anonymous activity to a known person — turning "someone visited 5 pages" into "Jane Smith visited 5 pages before signing up."
Overview
By default, Signal tracks anonymous visitors using a privacy-safe hash that rotates daily. Identity resolution lets you link anonymous activity to a known person — turning "someone visited 5 pages" into "Jane Smith visited 5 pages before signing up."
How It Works
When a visitor does something that reveals who they are — filling out a form, logging in, making a purchase — call signal.identify():
signal.identify('jane@acme.com');
From that point forward, all events from this visitor include their identity. Their previous anonymous events in the same session are also linked.
API
Identify a visitor
// Basic — just an email or user ID
signal.identify('jane@acme.com');
// With traits — additional information about the person
signal.identify('jane@acme.com', {
name: 'Jane Smith',
plan: 'pro',
company: 'Acme Inc'
});
Reset identity (on logout)
signal.reset();
Call this when a user logs out so subsequent events are anonymous again.
When to Call identify()
Call it whenever you learn who the visitor is:
// After a form submission
document.querySelector('#contact-form').addEventListener('submit', function(e) {
var email = document.querySelector('#email').value;
signal.identify(email);
signal('form_submit', { form: 'contact' });
});
// After login
async function handleLogin(credentials) {
const user = await login(credentials);
signal.identify(user.email, { name: user.name, plan: user.plan });
}
// After signup
async function handleSignup(formData) {
const user = await createAccount(formData);
signal.identify(user.email, { name: user.name });
signal('signup', { plan: formData.plan });
}
// On page load (if user is already logged in)
if (currentUser) {
signal.identify(currentUser.email, { name: currentUser.name });
}
Privacy
Identity resolution is opt-in — Signal only knows who a visitor is when your code explicitly calls signal.identify(). Without it, visitors remain anonymous.
- Anonymous visitors are tracked using a daily-rotating hash (IP + User-Agent + salt)
- The hash changes every day, so anonymous visitors can't be tracked across days
- Identified visitors are linked by the identifier you provide (usually email)
- You control what data is sent — Signal never collects PII automatically
360° Customer View
Connect Signal identity to your Commander Tables to see every visitor's full journey alongside their record.
Setting It Up
- Open your connection and go to Settings
- Under 360° View, pick the table that contains your leads or customers (e.g., a "Leads" table)
- Pick the matching column (e.g., "email")
- Save
How It Works
When signal.identify('jane@acme.com') fires, Signal matches the identifier to Jane's row in your selected table. Jane's record now shows her full visitor journey: pages viewed, forms submitted, files downloaded, and time spent — all alongside her existing data.
This turns your Commander table into a CRM with built-in website intelligence — no Pardot, Marketo, or HubSpot required.
Requirements
- A Commander Table with a column that matches the identifier you pass to
signal.identify()(usually email) - At least one identified visitor (call
signal.identify()on your site) - The table and column selected in your connection's Settings