Connections

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."

SignalIdentity ResolutionPrivacy
Last updated: March 1, 20264 min read

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

  1. Open your connection and go to Settings
  2. Under 360° View, pick the table that contains your leads or customers (e.g., a "Leads" table)
  3. Pick the matching column (e.g., "email")
  4. 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