| 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. | Show enough fields to distinguish same-named objects before selection, and keep the selected object preview visible after the popup closes so the submitted entity can be inspected. | 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 | A user gets admin or organization-wide access because the invite defaulted to the broadest role. | A registration screen has Sign in and Sign up side by side with identical email and password fields, plus newsletter, profile photo, and referral-code fields. | 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 required field is unmapped but the user can still start the import. | A complete your profile banner blocks the product until the user uploads a photo, birthday, phone number, location, and social links. | Change links lack context, so assistive technology users hear a list of identical 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 user gets admin or organization-wide access because the invite defaulted to the broadest role. | A user must create an account before learning whether the service is suitable, then abandons because registration feels unnecessary. | A user picks the first Acme result because every row looks identical, then links the case to the wrong account. | A user repeatedly clicks Retry on a permission denial because the UI treats authorization as a transient load failure. | A required field is unmapped but the user can still start the import. | 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 user is unauthenticated and the next step is sign-in or session extension. | 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. | Auto-starting the import immediately after upload. | Calling every optional field required profile completion. | Labelling the final commit button Continue. |