UI + UX Input And Data Entry established

Bulk import

Design bulk import as a guarded, inspectable workflow that starts with templates and limits, validates the uploaded structure, asks users to confirm column mappings and duplicate rules, previews row-level issues, confirms side effects, tracks import progress, and returns a usable report.

Decision first

Choose this pattern when the problem matches

Use when

  • Users need to create, update, or merge many structured records from CSV, XLSX, TSV, copied spreadsheet data, or another system export.
  • The product can parse the file, validate rows, map columns, detect duplicates, explain side effects, and report results.
  • Manual entry would be slow, error-prone, or operationally unrealistic.
  • Users can reasonably prepare data from a template, sample file, or exported source system.

Avoid when

  • The task needs one document or image attachment rather than parsed record data.
  • Users are creating one record and need guided judgment, conditional questions, or rich validation better served by a form.
  • The product cannot safely validate mappings, duplicates, permissions, or overwrite behavior before commit.
  • The import side effects are too risky without rollback, audit history, or a human approval step.
  • The audience cannot prepare structured files and would be better served by assisted entry or integration.

Problem it prevents

Bulk imports can save hours of repetitive entry, but they can also corrupt many records at once when requirements, mapping, validation, duplicates, overwrite rules, partial success, and result reporting are unclear.

Pattern anatomy

What a strong implementation has to make clear

User need

Users have many records in a spreadsheet or exported system file and cannot reasonably enter each record manually.

Pattern promise

Design bulk import as a guarded, inspectable workflow that starts with templates and limits, validates the uploaded structure, asks users to confirm column mappings and duplicate rules, previews row-level issues, confirms side effects, tracks import progress, and returns a usable report.

Required state

Pre-import requirements state with template, accepted file types, encoding, row limit, column limit, required fields, and side effects.

Recovery path

The importer says Upload complete when the file is only parsed and no records have been created.

Access contract

Use a real file input or button for selecting the import file, even when drag-and-drop is also available.

Quality bar

The difference between expert and weak execution

Strong implementation

Specific, visible, recoverable

  • 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 inventory import screen shows 1200 rows found, 1138 valid, 42 missing SKU, 20 duplicate matches, Update existing selected, and a disabled Start import button until required columns are mapped.
  • 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.
  • An admin chooses Update existing, sees external_id as the match key, reviews which blank cells will preserve existing data, cancels before commit, fixes the spreadsheet, and reruns validation.
Weak implementation

Vague, hidden, hard to recover from

  • 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 CSV drop area auto-imports immediately and overwrites existing records because blank cells and duplicate identifiers were not previewed.
  • 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.
  • An importer silently maps Full name into Email because the headers were similar and gives no preview before overwriting customer records.
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 mapping status, required fields, unmapped columns, row errors, warnings, duplicate matches, create/update counts, skipped rows, and downloadable error reports as visible tables or summaries rather than hidden upload messages.
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.
  • Let users fix mapping, choose duplicate and blank-value behavior, import only valid rows when supported, cancel before commit, and export failed rows after import.
Implementation contract

What the implementation must handle

States

  • Pre-import requirements state with template, accepted file types, encoding, row limit, column limit, required fields, and side effects.
  • File selected state showing filename, size, detected sheet, row count, column count, and parsed headers.
  • Mapping state with suggested mappings, required-field gaps, unmapped columns, ignored columns, and sample values.
  • Mapping error state for duplicate target fields, missing required mappings, unsupported fields, or ambiguous headers.

Interaction

  • Uploading parses the file into headers, sample rows, counts, and metadata before any records are created or updated.
  • Auto-mapping is a suggestion, not a commit; users can change, clear, ignore, reset, and review mappings before validation.
  • A required target field cannot be left unmapped unless the import mode or existing data makes it explicitly safe.
  • Each target field can receive at most one source column unless the product intentionally supports a combine-fields operation.

Accessibility

  • Use a real file input or button for selecting the import file, even when drag-and-drop is also available.
  • Represent mapping and validation in semantic tables or lists with clear column headers and row identifiers.
  • Do not rely on color alone for valid, warning, error, duplicate, ignored, or overwritten states.
  • Announce validation and import status changes at meaningful checkpoints rather than every row.

Review

  • What records can this import create, update, merge, skip, notify, or overwrite?
  • Can users see required fields, detected headers, sample values, unmapped columns, and duplicate mappings before validation?
  • What row-level errors, warnings, duplicates, and blank-overwrite risks can the user repair before committing?
  • Does the final confirmation explain counts and side effects in terms the importing user can verify?
Interactive lab

Inspect the states before you copy the pattern

Import structured records from a spreadsheet

Upload a CSV, review auto-mapped columns, fix a required mapping, validate rows, inspect duplicates, choose valid-row-only import, confirm counts, run import, and export failed rows.

Bulk import
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

Pre-import requirements state with template, accepted file types, encoding, row limit, column limit, required fields, and side effects.

Keyboard / Access

Tab reaches upload action, template download, mapping controls, error filters, duplicate decisions, confirmation controls, and report downloads in a logical order.

Avoid Generating

Treating a spreadsheet import like a generic file attachment with no mapping or row validation.

Evidence trail

Source-backed claims behind this guidance

Airtable Support: CSV Import Extension

Airtable - checked

Supports header detection, field mapping, optional import fields, reset mappings, preview sample records, merge options, and snapshot guidance.

Full agent/debug reference

Problem Context

  • Users have many records in a spreadsheet or exported system file and cannot reasonably enter each record manually.
  • The target system has required fields, typed values, enums, relationships, unique identifiers, ownership rules, and side effects such as notifications or permission changes.
  • Column names, date formats, encoding, blank cells, duplicate identifiers, invalid enum values, and missing required values commonly differ between source files and target schema.
  • Some imports create records, some update records, and some merge into existing data with different behavior for blank values and duplicates.
  • A failed or partially successful import needs a recovery path, because users should not have to rediscover every bad row by trial and error.

Selection Rules

  • Choose bulk import when one uploaded file represents many structured records that must be parsed into fields.
  • Use ordinary file upload when the uploaded file is evidence or content to store, not data to split into rows and columns.
  • Use drag-and-drop upload only as an optional file-selection enhancement inside the import workflow, not as the whole import experience.
  • Use multi-step form or complete complex form when a user is creating one record with guided human judgment rather than importing many prepared rows.
  • Offer a template, sample file, or clear format rules before upload when users can prepare the file in advance.
  • Require mapping review when column headers can differ from target field names or when unmapped columns would be ignored.
  • Validate before commit when errors could affect many records, especially required values, type formats, duplicate identifiers, relationships, permissions, and destructive updates.
  • Let users choose create-only, update-only, create-and-update, merge, or skip behavior when the same file can affect existing records.
  • Support valid-row-only import only when users can see exactly which rows will import, which will be excluded, and how to fix excluded rows.
  • Require final confirmation when the import sends notifications, changes permissions, overwrites data, creates many records, or cannot be fully undone.

Required States

  • Pre-import requirements state with template, accepted file types, encoding, row limit, column limit, required fields, and side effects.
  • File selected state showing filename, size, detected sheet, row count, column count, and parsed headers.
  • Mapping state with suggested mappings, required-field gaps, unmapped columns, ignored columns, and sample values.
  • Mapping error state for duplicate target fields, missing required mappings, unsupported fields, or ambiguous headers.
  • Validation running state with progress and cancel guidance before data commit.
  • Validation results state with valid row count, invalid row count, warning count, duplicate count, and row-level details.
  • Repair state with filters for errors, warnings, duplicates, and unmapped columns plus links to fix or export issues.
  • Duplicate review state with match key, create/update/skip choice, and overwrite behavior for blank values.
  • Confirmation state summarizing new, updated, skipped, invalid, warning, notification, and irreversible-change counts.
  • Import running state with progress, queued status, safe navigation guidance, and import history link.
  • Import complete state with success count, skipped count, failed count, warnings, download report, and next actions.
  • Import failed or partially completed state with retry guidance and preserved mapping choices.

Interaction Contract

  • Uploading parses the file into headers, sample rows, counts, and metadata before any records are created or updated.
  • Auto-mapping is a suggestion, not a commit; users can change, clear, ignore, reset, and review mappings before validation.
  • A required target field cannot be left unmapped unless the import mode or existing data makes it explicitly safe.
  • Each target field can receive at most one source column unless the product intentionally supports a combine-fields operation.
  • Validation reports row number, source column, target field, offending value, reason, severity, and recovery action.
  • Create/update/merge mode and duplicate matching are visible before final confirmation, including the identifier used to match existing records.
  • Blank-value overwrite behavior is explicit for updates and merges.
  • Starting the import after confirmation creates an auditable job with progress and results rather than leaving users on an indefinite spinner.
  • Users can export invalid rows or an error report that preserves row identifiers and current mappings.
  • Cancelling before final confirmation does not create or update records; cancelling after commit follows the product's documented job-cancel or rollback policy.

Implementation Checklist

  • Define accepted file types, encoding, max size, max rows, max columns, supported sheets, required fields, optional fields, ignored fields, relationship fields, duplicate keys, import modes, blank-value behavior, and notification side effects.
  • Provide templates or sample files that match required headers and data formats.
  • Parse files server-side or with a trusted parser and show detected headers, row count, column count, sample rows, and parse warnings before mapping.
  • Build a mapping table that supports auto-map, manual map, ignore, reset, required-field indicators, one-source-to-one-target checks, sample values, and unmapped-column review.
  • Validate required values, data types, dates, numbers, enums, relationships, duplicates, permissions, row length, unsupported fields, blank overwrites, and file-level limits before commit.
  • Provide repair views that filter invalid rows, warnings, duplicates, and unmapped columns, with exportable errors and preserved mapping decisions.
  • Show final confirmation for create/update/merge/skipped counts, notifications, irreversible changes, and valid-row-only behavior.
  • Run the import as a tracked job with progress, completion, partial failure, retry, import history, and downloadable result report.
  • Test small files, max-limit files, empty files, duplicate headers, missing required mappings, invalid dates, unknown enum values, duplicate existing records, blank update cells, network interruption, refresh/back, and permission-limited users.

Common Generated-UI Mistakes

  • Treating a spreadsheet import like a generic file attachment with no mapping or row validation.
  • Auto-starting the import immediately after upload.
  • Hiding duplicate matching, create/update mode, blank overwrite behavior, or notification side effects until after commit.
  • Showing only a generic invalid file error instead of row numbers, column names, and fixable reasons.
  • Importing valid rows and skipping invalid ones without telling users exactly which rows were excluded.
  • Letting similar headers auto-map into destructive target fields without a preview.
  • Forcing users to re-upload and remap from scratch after every recoverable validation error.

Critique Questions

  • What records can this import create, update, merge, skip, notify, or overwrite?
  • Can users see required fields, detected headers, sample values, unmapped columns, and duplicate mappings before validation?
  • What row-level errors, warnings, duplicates, and blank-overwrite risks can the user repair before committing?
  • Does the final confirmation explain counts and side effects in terms the importing user can verify?
  • What report or export helps users fix failed rows without rebuilding a whole file?
  • Can the team audit who imported what file, with which mapping, at what time, and with what result?
Accessibility
  • Use a real file input or button for selecting the import file, even when drag-and-drop is also available.
  • Represent mapping and validation in semantic tables or lists with clear column headers and row identifiers.
  • Do not rely on color alone for valid, warning, error, duplicate, ignored, or overwritten states.
  • Announce validation and import status changes at meaningful checkpoints rather than every row.
  • Make row error filters, mapping dropdowns, duplicate decisions, export actions, and final confirmation keyboard reachable.
  • Keep focus near the mapping or error that changed after auto-map, validation, repair, or reset actions.
  • Provide downloadable reports in accessible formats with row numbers, field names, error reasons, and recovery guidance.
Keyboard Behavior
  • Tab reaches upload action, template download, mapping controls, error filters, duplicate decisions, confirmation controls, and report downloads in a logical order.
  • Enter or Space activates file selection, auto-map, reset mapping, validate, filter, export, cancel, and confirm actions.
  • Mapping dropdowns can be changed without pointer drag gestures.
  • After validation, focus moves to the validation summary or first blocking error.
  • After exporting an error report, focus remains in the results area with confirmation of the downloaded report.
  • Escape closes confirmation dialogs without starting the import.
Variants
  • CSV import
  • XLSX import
  • Copy-paste spreadsheet import
  • Create-only import
  • Update-only import
  • Create-and-update import
  • Merge into existing records
  • Import valid rows only
  • Import with duplicate review
  • Import with error export
  • Import job history
  • Bulk import with approval

Verification

Last verified: