| UI or UX | UI + UX - Invitation lifecycle for granting another person access | UI + UX - Persistent account establishment flow | UI + UX - Existing-entity lookup and selected-object confirmation | UI + UX - Guided workflow for regaining or routing around missing access | UI + UX - Structured file import workflow with mapping, validation, repair, and result reporting | UI + UX - Existing-profile readiness and enrichment flow | UI + UX - Final editable answer summary before committing a transaction |
| UI guidance | Render invite user as an access-granting workflow with recipient identity, role or permission, team or channel scope, optional message, delivery method, expiry, pending status, resend, edit, cancel, and acceptance outcome. | Render account creation as a focused task with a clear reason for the account, one identifier path, new-credential fields, verification or activation state, existing-account route, and post-creation destination. | Render a labelled lookup field with search text, scoped result list, active result, selected object chip or preview, object type, stable ID or equivalent key, secondary metadata, clear action, no-result state, loading state, and validation text. | Show a recovery workspace after denial with the current account, current role, requested role, safe owner or admin destination, request reason, policy limits, status timeline, and original blocked task. | Show the import as a staged workflow: template or requirements, file upload, detected headers, column mapping, sample row preview, validation results, duplicate review, confirmation, progress, and final report. | Render profile setup as a focused completion surface for an existing account or profile, with current profile preview, missing recommended fields, managed-field notices, visibility controls, skip or do-later paths, and clear save state. | Render a single review page immediately before commit with a clear title, grouped answer sections, readable key/value rows, per-answer or per-section Change actions, skipped optional answers when meaningful, and a primary button whose label names the committed action. |
| UX guidance | Use invite user when an authorized person needs to bring another person into a workspace, organization, project, channel, repository, team, tenant, or shared object. | Use account creation only when a persistent account is necessary for repeated access, saved data, updates, security, or legal accountability. | Use an object picker when the user must choose an existing entity whose identity matters beyond the displayed label, such as a record, person, group, account, file, team, project, or workspace. | Use permission recovery when users can take a concrete step to regain access, use another identity, request a different role, escalate a policy block, or continue with a safe fallback after an authorization denial. | Use bulk import when users need to create or update many structured records from a spreadsheet, and make them prove mapping and validation before the product commits data. | Use profile setup when a user already has a usable account or profile and needs guided help to make the profile complete enough for collaboration, public identity, trust, or discovery. | Use review before submit to give users one final chance to verify and correct captured answers before a transaction is sent, paid, published, applied, or otherwise committed. |
| Good UI | A workspace invite form accepts maya@example.com, labels the invite as Workspace member, shows default channels, explains billing impact, lets the inviter add a message, and shows the pending invite with resend and cancel actions. | A service lets users draft an application, then asks them to create an account to save and return later with email, new password, terms acknowledgement, and a clear activation message. | A Related account field shows two Acme Retail records with account ID, region, status, and owner, then displays a selected-object preview card before saving. | A restricted report recovery panel shows alex@northwind.example lacks Finance viewer access, lets the user request Viewer or Editor with a reason, names Priya as the approver, shows request ACC-2048 as pending, and returns to the report after approval. | A contacts importer starts with a downloadable CSV template, then shows Email mapped to Email address, Role mapped to Access role, three sample rows, and a warning that Phone is optional and unmapped. | A workspace profile setup checklist shows that display name is complete, photo is optional with initials fallback, title is managed by HR, time zone helps scheduling, and location visibility is set to Team only. | A claim review page has Applicant, Contact details, Evidence, and Declaration sections; each row shows the captured answer and a Change link with hidden context such as Change email address. |
| Bad UI | An Invite button immediately emails every typed address with Admin access and no review of workspace, channel, or billing scope. | A checkout asks for account registration before showing shipping cost or guest checkout even though the purchase can complete without an account. | A text field accepts Acme Retail as free text even though the backend needs a record ID. | A blocked report only has Retry, so the user repeats the same denied request. | A page has a single Upload spreadsheet button and a spinner, then says Import failed without row numbers, column names, or a corrected-file path. | A complete your profile banner blocks the product until the user uploads a photo, birthday, phone number, location, and social links. | A final page says Check your answers but shows only a paragraph and a Continue button with no answers, section headings, or change links. |
| Good UX | An admin invites an external contractor as a single-channel guest, sees the one-channel limit, adds a note, sends the invite, then extends it when it is still pending after 30 days. | A user completes most of a one-hour permit application, chooses to save progress, creates an account using the email already entered, verifies the email, and returns to the same draft. | A user searches Acme, compares two same-named records by region and status, selects the active EMEA account, and reviews the selected account ID before saving. | A user requests Finance viewer access with a reason, sees the request is pending with Priya, receives approval, opens the report from the same recovery panel, and lands back on the original report. | A user uploads contacts.csv, reviews suggested mappings, fixes Department to Team, filters to rows with errors, chooses Import valid rows and export invalid rows, confirms 1138 new and 20 skipped records, then downloads the error report. | A user adds time zone and pronouns, leaves photo and social links blank, sees the team-card preview update, and returns to the project they were working on. | A user changes their phone number from review, lands on the phone page with the old value pre-filled, saves, and returns directly to review with other answers preserved. |
| Bad UX | A member tries to invite a contractor but learns after send that guests require admin approval and no request status is shown. | A user must create an account before learning whether the service is suitable, then abandons because registration feels unnecessary. | A user types a person name and presses Save, but no actual user account was selected. | A user repeatedly clicks Retry on a permission denial because the UI treats authorization as a transient load failure. | A user uploads a file, the product commits immediately, and only afterward shows that 300 rows were skipped with no file explaining which rows failed. | A user provides a personal phone number to dismiss a profile-completion warning, then discovers it is visible to external collaborators. | A user selects Change address, edits one field, then has to repeat every later page before finding the review page again. |
| Best fit | An authorized user needs to bring another person into a workspace, organization, project, channel, repository, team, tenant, or shared object. | Users need to save and resume drafts, regularly update their data, manage records, check ongoing status, collaborate, or protect repeated access. | Users assign, link, reference, invite, route, or attach an existing entity. | A denied user can request access, switch accounts, ask an admin, join a group, or use a safe fallback to continue. | Users need to create, update, or merge many structured records from CSV, XLSX, TSV, copied spreadsheet data, or another system export. | Users already have an account or profile and need guided help to complete, review, enrich, or update it. | A user has provided multiple answers and should verify them before a consequential submit action. |
| Avoid when | The current user is creating their own account or profile. | The task is a one-off transaction that can be completed with a reference number, receipt, guest route, or emailed status link. | Any arbitrary text is valid. | The product only needs to state that access is denied and no recovery path exists. | The task needs one document or image attachment rather than parsed record data. | The user is creating their first profile identity rather than completing an existing profile. | The task is a single low-risk field with clear inline validation and an obvious submit action. |
| Required state | Recipient entry or directory lookup state | Need-for-account state explaining why an account is required or beneficial at this point. | Empty object lookup field with label, helper text, and current search scope. | Recovery start state with original blocked task and current account. | Pre-import requirements state with template, accepted file types, encoding, row limit, column limit, required fields, and side effects. | Current profile preview with existing values | Initial review state with grouped captured answers, relevant sections, and explicit submit action. |
| Accessibility burden | Use labelled fields for recipient, role, scope, team, channel, message, and expiry. | Use a clear H1 such as Create an account and visible labels that say Create a password or Email address rather than ambiguous credential labels. | Give the lookup field a persistent label and helper text that explains the expected object type. | Move focus to the recovery heading when the workflow opens from a denial. | Use a real file input or button for selecting the import file, even when drag-and-drop is also available. | Use explicit field labels and required or optional text for every profile value. | Use headings that make the review task explicit, such as Check your answers before sending your application. |
| Common misuse | Treating invitation sent as if the user is already a member. | Forcing accounts before users can evaluate a service or complete a one-off transaction. | Treating the picker as a free text field when the system requires an existing object ID. | Offering Retry for an unchanged authorization denial. | Treating a spreadsheet import like a generic file attachment with no mapping or row validation. | Calling every optional field required profile completion. | Using a review page that contains no captured answers. |