Identity & Traits
Identify your users and attach custom traits for targeting and richer bug reports.
When Callout knows who your users are, bug reports include the reporter's name and email, onboarding tracks progress per user, and you can target experiences with segments.
It's Probably Already Working
If your app uses Clerk or Auth0, Callout detects the logged-in user automatically. No code needed. Names, emails, and user IDs are picked up and attached to everything.
Other Auth Providers
For Firebase, Supabase, or any other auth system, add one call after your user logs in:
Callout.identify({
id: "user_12345",
email: "[email protected]",
name: "Jane Doe"
});That's it. All future bug reports and onboarding interactions are tied to this user. See the Frameworks guide for React, Next.js, and Vue examples.
Traits
Traits are custom properties you attach to a user. They appear in bug reports and — more importantly — they power segment targeting so you can show different onboarding to different audiences.
Callout.identify({
id: "user_12345",
email: "[email protected]",
name: "Jane Doe",
traits: {
plan: "pro",
role: "admin",
company: "Acme Corp",
signupDate: "2025-08-15"
}
});Common Traits
| Trait | Why It's Useful |
|---|---|
plan | Target upgrade prompts to free users, advanced features to paid |
role | Different onboarding for admins vs. members |
company | Target by organization for B2B onboarding |
signupDate | Target new vs. experienced users |
teamSize | Different onboarding for solo users vs. teams |
Trait values can be strings, numbers, or booleans.
Managing Trait Definitions
You can define and view traits at Engage > Segments > Traits. This shows which traits your users are sending and how many users have each one.
Without Identity
Everything still works without identifying users:
- Bug reports are submitted anonymously — they just won't have a name or email attached
- URL-targeted tooltips and banners still display for everyone
- Checklists and tours need an identified user to track progress per person
- Segment targeting needs traits, which require
identify()