| UI or UX | UI + UX - Structured file import workflow with mapping, validation, repair, and result reporting | UI + UX - File selection and attachment control | UI + UX - Drop-zone file upload enhancement with file input fallback | UI + UX - Multi-page transaction with saved step state |
| UI guidance | 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 a visible label, persistent hint, native file chooser or equivalent button, accepted file formats, maximum file size, selected filename, uploaded status, remove control, and field-specific error message. | Render a large labelled drop zone with clear copy that says users can drag files there or activate a normal file picker, plus visible format, size, and count requirements. | Render each step as a focused page with a clear heading, progress context when useful, Back and Continue controls, local validation, and a final review page before submission. |
| UX guidance | 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 file upload only when the service needs the original file and make expectations clear before the user opens the file picker. | Use drag-and-drop upload as an enhancement for users who can drag files from a file manager, while preserving an equivalent click, keyboard, and mobile path. | Use a multi-step form when a transaction is too long, conditional, high-stakes, or hard to recover from as one page, and users need manageable saved progress. |
| Good UI | 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. | An evidence upload field says Upload bank statement, hints PDF, PNG, or JPG up to 10 MB, shows statement.pdf selected, displays upload progress, and offers Remove. | A drop zone says Drag bank statements here or choose files, shows PDF/PNG/JPG up to 10 MB, highlights when files hover over it, lists two dropped filenames, and keeps a Choose files button visible. | A benefit application has Eligibility, Contact details, Documents, Review, and Submit pages, with the current step named in the heading and completed steps shown from saved data. |
| Bad UI | A required field is unmapped but the user can still start the import. | A failed upload clears other form answers or returns users to the start of the journey. | The whole page becomes a hidden drop target that opens the dropped file in the browser when users miss the box. | A five-screen flow shows all steps as complete after users only viewed them. |
| Good UX | 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 selects bank-statement.pdf, sees it queued, watches progress reach uploaded, removes it to choose another file, then submits after reviewing the rest of the form. | A user drags two PDFs over the zone, sees the target activate, drops them, reviews both filenames, removes the wrong one, uploads the remaining file, and then continues. | A user completes eligibility and contact details, goes Back from documents, sees contact details still filled, continues, and returns to the same documents step. |
| Bad UX | A required field is unmapped but the user can still start the import. | A user selects a 28 MB scan, clicks Continue, and the page reloads with File failed but the selected filename and other answers are gone. | A user drags a file over the page, misses the small target, and the browser navigates to the file, wiping unsaved answers. | A browser refresh on step 3 clears steps 1 and 2, forcing the user to start again. |
| Best fit | Users need to create, update, or merge many structured records from CSV, XLSX, TSV, copied spreadsheet data, or another system export. | The service needs a document, image, scan, spreadsheet, media file, or other original file. | Users often upload files from a desktop file manager and benefit from dropping one or more files into a visible target. | A transaction spans several ordered pages or sections. |
| Avoid when | The task needs one document or image attachment rather than parsed record data. | A typed answer, reference number, checkbox, or declaration would satisfy the task. | A normal file input is sufficient and the extra drop-zone states would add confusion. | The fields are short, related, and easier to scan together on one page. |
| Required state | Pre-import requirements state with template, accepted file types, encoding, row limit, column limit, required fields, and side effects. | Empty labelled state with requirements hint and choose-file action. | Idle drop zone with visible label, requirements, and choose-file fallback. | Current step state with heading, saved context, local answer controls, Back, and Continue. |
| Accessibility burden | Use a real file input or button for selecting the import file, even when drag-and-drop is also available. | Keep requirements in persistent hint text and associate them with the file input or upload button. | Keep a visible label and instructions that name both drag-and-drop and choose-file paths. | Use a clear page heading on every step and keep it synchronized with route and progress context. |
| Common misuse | Auto-starting the import immediately after upload. | Asking for a file when a typed reference number or simple answer would be enough. | Replacing the normal file chooser with a drop zone that only pointer users can operate. | Using a multi-step form to hide a short related form that users should review on one page. |