Composed content needs to target people or groups inline.
The product needs recipient-specific notifications, attention routing, action items, or searchable references from within comments, messages, documents, issues, or threads.
The sender must see and resolve access, ambiguity, or broad-audience effects before posting.
Recipients need direct return to the exact location where they were mentioned.
Avoid when
The user is selecting a structured owner, assignee, approver, or recipient field outside written content.
The surface is only an inbox of already-delivered notifications.
The product cannot preserve stable recipient IDs, access checks, or notification routing.
A broad broadcast or emergency alert needs a separate governed workflow rather than inline prose.
Problem it prevents
Collaboration breaks when inline @ references are treated as decorative text, notify the wrong audience, ignore access boundaries, fail to disambiguate similar names, or send recipients to a generic page instead of the exact context.
Pattern anatomy
What a strong implementation has to make clear
User need
Users are composing messages, comments, documents, tasks, issues, pull requests, notes, tickets, or thread replies and need to draw attention to specific people or groups.
Pattern promise
Provide inline mention insertion with scoped suggestions, stable recipient IDs, visible recipient type, ambiguity resolution, permission checks, audience warnings, notification routing, preference-aware delivery, and direct return links to the mention context.
Required state
Empty composer, @ trigger, loading suggestions, no results, and filtered suggestions.
Recovery path
The UI highlights @text but stores no recipient ID.
Access contract
Expose the suggestion list as a labelled popup tied to the editor and announce the number of available mention targets.
Quality bar
The difference between expert and weak execution
Strong implementation
Specific, visible, recoverable
A comment composer opens a suggestion list after @, shows people and teams with avatars, handles, access labels, and keyboard focus, then inserts a mention chip for Priya Rao.
A broad @channel mention shows audience size, muted-thread limits, and a confirmation warning before the message is sent.
A user mentions @Dana in a private incident note, sees that Dana lacks access, chooses Invite and mention, and the resulting notification opens the exact note.
A user types @platform-oncall, sees the team size and notification policy, confirms the broad recipient, and the team mention remains searchable and preference-aware.
Weak implementation
Vague, hidden, hard to recover from
The editor highlights every @word as a mention even when it is plain text and has no recipient identity.
A suggestion list shows three Alex users with identical labels and lets the sender submit without disambiguating which person will be notified.
A user mentions someone in a private channel, the person is not notified, and the sender receives no warning or recovery path.
A mention notification opens the record homepage rather than the exact comment sentence, forcing the recipient to search for why they were pulled in.
UI guidance
Render mentions as inline tokens or highlighted text that preserve a stable recipient identity, display name, avatar or team marker, recipient type, and selected state without breaking surrounding editable text.
Show mention suggestions at the caret with names, handles, avatars, teams, channels, availability or scope hints, permission warnings, and keyboard-highlight state; distinguish exact matches, ambiguous display names, unavailable recipients, and broad-audience mentions.
UX guidance
Use mentions when a user needs to call attention to a person, team, channel, role, or group from inside a message, comment, task, document, issue, or thread while keeping the reference embedded in the authored content.
Bind each selected mention to notification, permission, assignment, follow-up, or deep-link behavior so recipients know why they were mentioned and can return to the exact context where the mention appeared.
Implementation contract
What the implementation must handle
States
Empty composer, @ trigger, loading suggestions, no results, and filtered suggestions.
Highlighted suggestion, keyboard-selected suggestion, mouse or touch-selected suggestion, and inserted mention token.
Individual, team, channel, user group, role, bot, and broad-audience mention states where the product supports them.
Ambiguous display name, duplicate handle, unavailable recipient, deleted user, deactivated account, and external guest states.
Interaction
Typing @ opens a suggestion list scoped to the current workspace, channel, object, permission boundary, and caret location.
Selecting a suggestion inserts an inline token bound to a stable target ID, not just the visible display name.
Arrow keys move through suggestions, Enter or Tab commits the highlighted target, Escape closes suggestions without deleting typed text, and Backspace removes or edits the mention predictably.
Submitting content validates access, broad-audience policy, duplicate recipients, quiet-hour or paused-notification behavior, and notification preferences before delivery.
Accessibility
Expose the suggestion list as a labelled popup tied to the editor and announce the number of available mention targets.
Name each suggestion with display name, handle, target type, access state, and warning state rather than relying only on avatar or color.
Keep the inline mention token readable as text while preserving target identity for assistive technology.
Announce inserted, removed, unavailable, duplicate, broad-audience, and notification-suppressed mention states.
Review
What stable target ID is bound to each visible mention token?
Can the sender tell whether they are mentioning a person, team, channel, role, bot, or broad audience?
What happens when several people match the same display name or handle?
Can every mentioned recipient see the underlying object or conversation?
Interactive lab
Inspect the states before you copy the pattern
Route attention with inline mentions
Type @ to open scoped suggestions, choose a person, resolve duplicate names, handle missing access, confirm a broad audience mention, inspect suppressed notification state, follow a deep link, create an action item, remove a token, and compare plain-text, wrong-person, no-access-warning, blast-all, generic-link, and fake-assignment failures.
Mentions
Interactive demo is ready
Launch the live UI/UX lab when you want to inspect states, keyboard behavior, and common failure modes.
State To Inspect
Empty composer, @ trigger, loading suggestions, no results, and filtered suggestions.
Keyboard / Access
Typing @ opens suggestions at the caret without moving focus away from the editor.
Avoid Generating
Parsing @words after submit without requiring the sender to choose a real recipient.
Microsoft Teams supports typing @, selecting a menu recipient, notification deep links to the conversation point, team and channel mentions, chat @everyone, and owner enablement.
Confluence supports @ autocomplete, toolbar insertion, person and team notifications, email delivery, action-item assignment, task completion, and team mention limits.
GitHub issue guidance supports @mentioning collaborators who have access to draw attention to a comment.
Full agent/debug reference
Problem Context
Users are composing messages, comments, documents, tasks, issues, pull requests, notes, tickets, or thread replies and need to draw attention to specific people or groups.
Mentionable targets may include individuals, teams, channels, roles, user groups, on-call rotations, bots, or workspace-wide audiences with different notification and permission rules.
Mentions can create notifications, action items, task ownership, inbox filters, search handles, or audit events, but they remain embedded in authored content.
The recipient may lack access, have notifications paused, share a display name with another person, belong to a broad audience, or receive the mention through a team preference.
Selection Rules
Choose mentions when the interaction begins in prose or rich text and the user needs an inline reference that targets a recipient or audience.
Use object picker when the user is selecting owners, reviewers, approvers, assignees, or recipients as a structured field rather than writing a message.
Use comments when the product needs anchored conversation state; mentions can live inside comments but should not carry reply, resolve, edit, or delete behavior by themselves.
Use threaded discussion when the core task is following a branchable topic conversation; mentions inside replies should notify without changing the thread hierarchy.
Use notification center for the retained inbox where mention events are read, filtered, muted, or opened after delivery.
Use typeahead or combobox for the suggestion-list interaction, but add mention-specific recipient identity, access, and notification semantics.
Warn before broad mentions that reach a channel, team, workspace, or chat, especially when audience size, quiet hours, or admin rules make the effect large.
Do not send a mention silently when the target cannot see the object, private channel, document, issue, or thread; show invite, request access, remove, or send-without-notify choices according to product policy.
Required States
Empty composer, @ trigger, loading suggestions, no results, and filtered suggestions.
Highlighted suggestion, keyboard-selected suggestion, mouse or touch-selected suggestion, and inserted mention token.
Individual, team, channel, user group, role, bot, and broad-audience mention states where the product supports them.
Ambiguous display name, duplicate handle, unavailable recipient, deleted user, deactivated account, and external guest states.
Recipient lacks access, sender lacks permission to mention, admin-restricted broad mention, guest-restricted broad mention, and invite-before-mention states.
Notification sent, notification suppressed by preferences or paused status, thread-limited mention, failed notification, and retry or remove states.
Mention edited, mention removed, pasted mention text, copied mention, escaped plain @ text, and serialized mention ID states.
Direct-linked mention state where the recipient opens the exact message, comment, reply, task, or document location.
Interaction Contract
Typing @ opens a suggestion list scoped to the current workspace, channel, object, permission boundary, and caret location.
Selecting a suggestion inserts an inline token bound to a stable target ID, not just the visible display name.
Arrow keys move through suggestions, Enter or Tab commits the highlighted target, Escape closes suggestions without deleting typed text, and Backspace removes or edits the mention predictably.
Submitting content validates access, broad-audience policy, duplicate recipients, quiet-hour or paused-notification behavior, and notification preferences before delivery.
If a recipient cannot see the content, the sender gets a clear warning and an allowed recovery path such as invite, request access, remove mention, or send without notifying.
Mention notifications deep-link to the exact sentence, comment, task, reply, or document location and highlight the mention or its containing item on arrival.
Editing a mention updates the target identity, display text, notification rules, and audit or activity evidence according to product policy.
Implementation Checklist
Define mentionable target types, stable IDs, display labels, handles, avatars, membership, visibility, notification policy, broad-audience rules, and serialization format before building the editor.
Implement caret-aware suggestion positioning, keyboard navigation, loading and empty states, duplicate-name disambiguation, screen-reader labels, touch-safe rows, and mobile viewport behavior.
Validate access and notification outcomes at submit time, including private spaces, guest users, deactivated users, muted threads, paused notifications, broad mentions, and admin restrictions.
Design warning and recovery flows for broad mentions, unavailable recipients, missing access, duplicate mentions, failed notification delivery, and mention edits.
Ensure copied, pasted, edited, deleted, and rendered mentions preserve or intentionally drop target identity with visible feedback.
Test notification deep links, inbox filtering, search, action-item creation, assignment side effects, audit evidence, localization of display names, and ambiguous names.
Common Generated-UI Mistakes
Parsing @words after submit without requiring the sender to choose a real recipient.
Treating a mention suggestion list as a generic people picker and ignoring caret position, inline serialization, and notification side effects.
Allowing broad mentions with no audience size, policy, quiet-hours, or confirmation warning.
Mentioning people who cannot access the object and giving neither sender nor recipient a recoverable path.
Using mentions as the only assignment mechanism without creating task ownership, due state, or completion behavior.
Letting ambiguous display names, renamed users, deactivated users, or external guests collapse into the same visible token.
Sending notification links to the top of a page rather than the exact mention context.
Failing to distinguish person mentions, team mentions, channel mentions, bots, roles, and plain @ text.
Critique Questions
What stable target ID is bound to each visible mention token?
Can the sender tell whether they are mentioning a person, team, channel, role, bot, or broad audience?
What happens when several people match the same display name or handle?
Can every mentioned recipient see the underlying object or conversation?
Does the interface warn before broad mentions and respect admin, guest, quiet-hours, and notification-preference rules?
Where does the recipient land when they open the mention notification?
Does a mention also create assignment, task, or audit state, and is that state visible outside the prose?
Accessibility
Expose the suggestion list as a labelled popup tied to the editor and announce the number of available mention targets.
Name each suggestion with display name, handle, target type, access state, and warning state rather than relying only on avatar or color.
Keep the inline mention token readable as text while preserving target identity for assistive technology.
Announce inserted, removed, unavailable, duplicate, broad-audience, and notification-suppressed mention states.
Provide keyboard and touch access to disambiguation, invite, remove, confirm broad mention, and send-without-notify controls.
When a mention notification opens, move focus to the containing message, comment, task, or document location and identify the mention context.
Keyboard Behavior
Typing @ opens suggestions at the caret without moving focus away from the editor.
Arrow keys move through suggestions, Enter or Tab inserts the highlighted mention, Escape closes suggestions and leaves typed text intact.
Backspace on an inserted token selects or removes the whole mention before deleting surrounding prose.
Tab order reaches broad-mention confirmation, access recovery, invite, remove, and send controls in a logical order.
After inserting a mention, focus returns to the editor immediately after the token.
When a notification deep link opens a mention, focus moves to the mentioned item or a heading that names the containing context.