By default, widget submissions are anonymous — Conclude knows the page they were submitted from, but not who submitted them. Identifying the user attaches their identity to every submission, which makes the difference between "someone said this" and "Acme's CTO said this."
Why identify
Once you identify users:
- Feedback is attributed. The submitter's name and email show up on every submission.
- Companies are tracked. You can group feedback by customer, see who's complaining about the same thing, and prioritise by account size.
- Notifications go to the right people. When you ship something they asked for, Conclude can email them.
- Linear gets richer issues. If you auto-create Linear issues from feedback (Pro+), the issue carries the customer context.
Identifying is opt-in and happens client-side. Conclude never sees PII you don't pass it.
How to identify (developer)
This is a developer task, but worth understanding from the product side because what you pass determines what's useful in the dashboard.
React SDK
import { useConclude } from "@conclude-fyi/react";
const { identify } = useConclude();
identify({
externalId: "user_123", // your stable user ID
email: "ada@acme.com",
name: "Ada Lovelace",
companies: [
{
id: "co_acme", // your stable company ID
name: "Acme",
monthlySpend: 5000, // any unit you choose
created: "2025-01-15T00:00:00Z"
}
],
});
Script tag
Conclude.identify({
externalId: "user_123",
email: "ada@acme.com",
name: "Ada Lovelace",
companies: [{ id: "co_acme", name: "Acme", monthlySpend: 5000 }],
});
→ Full developer details: React SDK, Script tag.
What's required vs. optional
The minimum useful identification is:
externalId— a stable user ID you control. Required.- One of
emailorname— strongly recommended.
Everything else is optional and is stored as metadata on the submitter.
Companies
A submitter can belong to one or more companies. The shape is an array — useful for consultants, contractors, and multi-org users.
companies: [
{
id: "co_acme", // required (your stable company ID — used for dedup)
name: "Acme", // required
monthlySpend: 5000, // optional, any unit
created: "2025-01-15T00:00:00Z" // optional, ISO timestamp
}
]
Conclude dedups companies by id within your workspace. Re-submitting with the same id updates the existing company row (e.g. when monthlySpend changes). monthlySpend is opaque — Conclude doesn't interpret currency or units; pass whatever number is comparable across your customer base.
Conclude tracks companies separately from users. In the dashboard you can:
- See all feedback from a single company.
- See which companies are most affected by a theme.
- Prioritise by company size or plan when triaging.
Identifying the same user across surfaces
If a user submits via the widget and via the public board (after typing their email), Conclude joins them on email. Submitter records are deduplicated within a workspace.
Privacy considerations
- Conclude stores what you pass. If you don't want a field stored, don't pass it.
- Submitter records live inside your workspace's tenant data and are not shared across workspaces.
- You can delete a submitter on request. Contact support.