My learning 0 of 20 lessons complete
Start lesson 1 →
Back to compare picker

Data export vs Bulk import vs Audit log vs Table vs Data grid vs Sensitive-data reveal

Use data export for scoped copy, archive, transfer, or portability workflows. Bulk import brings structured records in, audit log preserves governed event evidence, table or data grid export handles visible rows, and sensitive-data reveal briefly exposes one protected value.

Learn the decision

Match the interaction to the person's task

Use data export for scoped copy, archive, transfer, or portability workflows. Bulk import brings structured records in, audit log preserves governed event evidence, table or data grid export handles visible rows, and sensitive-data reveal briefly exposes one protected value.

Data export

Use it when: Users need to download or transfer a copy of account, workspace, personal, product, activity, or organization data.

Make this state clear: Eligible data categories and unavailable categories state.

Observe the result: A user requests a machine-readable archive, sees which data categories are eligible for portability, waits for preparation, downloads the package before expiry, and gets a manifest listing omitted records.

Study the full pattern →

Bulk import

Use it when: Users need to create, update, or merge many structured records from CSV, XLSX, TSV, copied spreadsheet data, or another system export.

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

Observe the result: 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.

Study the full pattern →

Audit log

Use it when: The product must support security investigations, compliance review, legal discovery, privileged-action review, or enterprise governance.

Make this state clear: Default audit-log search state with visible query, result count, scope, timezone, retention class, and evidence coverage.

Observe the result: An investigator filters privileged actions, opens one audit record, verifies the chain of custody, exports the exact scoped result set, and sees which fields are redacted by administrative-unit scope.

Study the full pattern →

Table

Use it when: Records share comparable attributes that users need to scan in aligned columns.

Make this state clear: Default table state with caption, visible headers, row values, and result count or context.

Observe the result: A user sorts by Amount descending, filters to Pending, moves to page 2, and the table keeps its caption, active sort, active filter, row count, and selected payment context.

Study the full pattern →

Data grid

Use it when: Users repeatedly inspect or update many records in shared columns.

Make this state clear: Default navigation state with labelled grid, column headers, row headers or row identifiers, focused cell, and row count context.

Observe the result: A user presses Arrow Right to move from Amount to Due, presses Enter to edit the due date, presses Escape to cancel, and focus returns to the same cell in navigation mode.

Study the full pattern →

Sensitive-data reveal

Use it when: Users need to inspect, copy, verify, rotate, transcribe, or compare a sensitive value that should normally stay masked or redacted.

Make this state clear: Masked state with the field identity, safe suffix or count, and reveal eligibility.

Observe the result: A developer needs to rotate a webhook secret, reveals it after step-up verification, copies it with a visible clipboard warning, then sees it auto-hide with an audit ID.

Study the full pattern →

Practice the judgment: Imagine this situation: The export button downloads only visible table rows but the page calls it complete account data. Write the person's goal, choose one of these patterns, and show the state that helps the person continue. Use the decision rules and source trail below to explain your choice.

Review the underlying principle →

Decision dimensions

Dimension Data exportBulk importAudit logTableData gridSensitive-data reveal
UI or UX UI + UX - User or administrator workflow for selecting, preparing, securing, downloading, transferring, and verifying data export packagesUI + UX - Structured file import workflow with mapping, validation, repair, and result reportingUI + UX - Governed audit evidence surface for security, compliance, forensic, and administrative reviewUI + UX - Semantic row-and-column data comparison surfaceUI + UX - Interactive row-and-column data workspaceUI + UX - Controlled reveal and re-hiding of masked sensitive values, secrets, tokens, credentials, identifiers, or private records
UI guidance Render data export as a job-based workflow with export scope, data categories, format, destination, estimated size, preparation status, expiry, security requirements, and download or transfer actions.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 audit logs as governed evidence records with audit ID, effective time, actor, actor type, action, protected object, result, source system, IP or session context, retention class, export status, and permission scope.Render a table with a specific caption or heading, visible column headers, optional row headers, aligned values, consistent row actions, and enough spacing for scanability.Render the grid as a named work surface with visible headers, row identifiers, focus location, selection state, dirty and invalid cell markers, column controls, and status text for row count, sort, filter, and save state.Render sensitive-data reveal as a masked value with an explicit reveal action, visible hide action, clear field identity, safe default state, reveal duration or hold behavior, and status feedback that explains what is visible now.
UX guidance Use data export when users need a portable copy of personal, account, workspace, product, activity, or organization data for reuse, compliance, migration, backup, or review.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 audit log when the product must support security review, compliance obligations, forensic investigation, privileged-action review, or administrator accountability with retained evidence.Use tables when aligned columns help users compare records, find exceptions, audit values, or triage work faster than opening each item.Use a data grid when cell-level interaction makes users faster and more accurate than opening each record separately.Use sensitive-data reveal when users need to verify, compare, copy, rotate, recover, or transcribe a sensitive value that is normally masked or redacted.
Good UI A privacy dashboard lets a user choose activity, profile, files, messages, and billing categories, shows JSON or CSV availability, requires reauthentication, creates archive EXP-2048, then shows download expiry and checksum.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 security audit log shows a role escalation with audit ID, UTC effective time, actor session, target account, old role, new role, source IP, retention class, legal-hold badge, and Export evidence action.A payment review table has the caption June vendor payments, headers Vendor, Status, Due date, Amount, and Action, right-aligned amounts, and row actions labelled by vendor.An invoice-review grid shows frozen invoice IDs, column headers for Vendor, Amount, Due, Owner, and Status, one highlighted focused cell, two selected rows, a dirty edited amount, and a status line naming the current cell.An API key row shows sk_live_****9H2Q by default, requires Reauthenticate before Full reveal, logs the reveal event, and automatically hides after 30 seconds.
Bad UI The export link stays valid forever, exposes sensitive files to the wrong account, and is presented next to Delete account as though export deletes data.A required field is unmapped but the user can still start the import.SIEM streaming falls behind but the UI says the audit pipeline is healthy.Mobile stacking removes headers and turns rows into unlabeled paragraphs.A static report uses role grid even though users only read values and ordinary table semantics would be clearer.A secret is visible on page load, print, export, screenshot, or shared-screen mode.
Good UX A user requests a machine-readable archive, sees which data categories are eligible for portability, waits for preparation, downloads the package before expiry, and gets a manifest listing omitted records.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 investigator filters privileged actions, opens one audit record, verifies the chain of custody, exports the exact scoped result set, and sees which fields are redacted by administrative-unit scope.A user sorts by Amount descending, filters to Pending, moves to page 2, and the table keeps its caption, active sort, active filter, row count, and selected payment context.A user presses Arrow Right to move from Amount to Due, presses Enter to edit the due date, presses Escape to cancel, and focus returns to the same cell in navigation mode.A developer needs to rotate a webhook secret, reveals it after step-up verification, copies it with a visible clipboard warning, then sees it auto-hide with an audit ID.
Bad UX The manifest lists raw sensitive values instead of safe category and count information.A required field is unmapped but the user can still start the import.SIEM streaming falls behind but the UI says the audit pipeline is healthy.Mobile stacking removes headers and turns rows into unlabeled paragraphs.The grid reports selection but the visual highlight is focus, or focus highlight is mistaken for selected data.A user taps a copied state and the interface silently places a raw token on the clipboard while the token remains hidden on screen.
Best fit Users need to download or transfer a copy of account, workspace, personal, product, activity, or organization data.Users need to create, update, or merge many structured records from CSV, XLSX, TSV, copied spreadsheet data, or another system export.The product must support security investigations, compliance review, legal discovery, privileged-action review, or enterprise governance.Records share comparable attributes that users need to scan in aligned columns.Users repeatedly inspect or update many records in shared columns.Users need to inspect, copy, verify, rotate, transcribe, or compare a sensitive value that should normally stay masked or redacted.
Avoid when The user is importing records into the product; use bulk import.The task needs one document or image attachment rather than parsed record data.Users only need recent collaboration updates or a lightweight activity feed.The task depends on rich previews, imagery, or uneven metadata.The data is read-only and ordinary table navigation is enough.The task is only entering a password into an authentication form; use password input.
Required state Eligible data categories and unavailable categories state.Pre-import requirements state with template, accepted file types, encoding, row limit, column limit, required fields, and side effects.Default audit-log search state with visible query, result count, scope, timezone, retention class, and evidence coverage.Default table state with caption, visible headers, row values, and result count or context.Default navigation state with labelled grid, column headers, row headers or row identifiers, focused cell, and row count context.Masked state with the field identity, safe suffix or count, and reveal eligibility.
Accessibility burden Use persistent status text for queued, preparing, ready, partial, failed, expired, and downloaded states rather than relying on a spinner or toast alone.Use a real file input or button for selecting the import file, even when drag-and-drop is also available.Use table or structured record semantics so audit ID, actor, action, object, timestamp, result, scope, and retention are perceivable together.Use native table semantics for tabular data rather than div-only rows.Use grid semantics only for an interactive composite widget with managed focus.Use a labelled button or toggle whose accessible name includes the field, such as Show API key or Hide account number.
Common misuse Confusing export with delete account, privacy preference changes, migration import, or audit-log investigation.Auto-starting the import immediately after upload.Omitting audit ID, actor type, effective time, result, scope, retention, or source system from the visible record.Using table markup to create page columns or layout spacing.Using role grid on a static table only to make it sound richer.Showing sensitive values in plain text by default.

Data export

UI or UX
UI + UX - User or administrator workflow for selecting, preparing, securing, downloading, transferring, and verifying data export packages
UI guidance
Render data export as a job-based workflow with export scope, data categories, format, destination, estimated size, preparation status, expiry, security requirements, and download or transfer actions.
UX guidance
Use data export when users need a portable copy of personal, account, workspace, product, activity, or organization data for reuse, compliance, migration, backup, or review.
Good UI
A privacy dashboard lets a user choose activity, profile, files, messages, and billing categories, shows JSON or CSV availability, requires reauthentication, creates archive EXP-2048, then shows download expiry and checksum.
Bad UI
The export link stays valid forever, exposes sensitive files to the wrong account, and is presented next to Delete account as though export deletes data.
Good UX
A user requests a machine-readable archive, sees which data categories are eligible for portability, waits for preparation, downloads the package before expiry, and gets a manifest listing omitted records.
Bad UX
The manifest lists raw sensitive values instead of safe category and count information.
Best fit
Users need to download or transfer a copy of account, workspace, personal, product, activity, or organization data.
Avoid when
The user is importing records into the product; use bulk import.
Required state
Eligible data categories and unavailable categories state.
Accessibility burden
Use persistent status text for queued, preparing, ready, partial, failed, expired, and downloaded states rather than relying on a spinner or toast alone.
Common misuse
Confusing export with delete account, privacy preference changes, migration import, or audit-log investigation.

Bulk import

UI or UX
UI + UX - Structured file import workflow with mapping, validation, repair, and result reporting
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.
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.
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.
Bad UI
A required field is unmapped but the user can still start the import.
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.
Bad UX
A required field is unmapped but the user can still start the import.
Best fit
Users need to create, update, or merge many structured records from CSV, XLSX, TSV, copied spreadsheet data, or another system export.
Avoid when
The task needs one document or image attachment rather than parsed record data.
Required state
Pre-import requirements state with template, accepted file types, encoding, row limit, column limit, required fields, and side effects.
Accessibility burden
Use a real file input or button for selecting the import file, even when drag-and-drop is also available.
Common misuse
Auto-starting the import immediately after upload.

Audit log

UI or UX
UI + UX - Governed audit evidence surface for security, compliance, forensic, and administrative review
UI guidance
Render audit logs as governed evidence records with audit ID, effective time, actor, actor type, action, protected object, result, source system, IP or session context, retention class, export status, and permission scope.
UX guidance
Use audit log when the product must support security review, compliance obligations, forensic investigation, privileged-action review, or administrator accountability with retained evidence.
Good UI
A security audit log shows a role escalation with audit ID, UTC effective time, actor session, target account, old role, new role, source IP, retention class, legal-hold badge, and Export evidence action.
Bad UI
SIEM streaming falls behind but the UI says the audit pipeline is healthy.
Good UX
An investigator filters privileged actions, opens one audit record, verifies the chain of custody, exports the exact scoped result set, and sees which fields are redacted by administrative-unit scope.
Bad UX
SIEM streaming falls behind but the UI says the audit pipeline is healthy.
Best fit
The product must support security investigations, compliance review, legal discovery, privileged-action review, or enterprise governance.
Avoid when
Users only need recent collaboration updates or a lightweight activity feed.
Required state
Default audit-log search state with visible query, result count, scope, timezone, retention class, and evidence coverage.
Accessibility burden
Use table or structured record semantics so audit ID, actor, action, object, timestamp, result, scope, and retention are perceivable together.
Common misuse
Omitting audit ID, actor type, effective time, result, scope, retention, or source system from the visible record.

Table

UI or UX
UI + UX - Semantic row-and-column data comparison surface
UI guidance
Render a table with a specific caption or heading, visible column headers, optional row headers, aligned values, consistent row actions, and enough spacing for scanability.
UX guidance
Use tables when aligned columns help users compare records, find exceptions, audit values, or triage work faster than opening each item.
Good UI
A payment review table has the caption June vendor payments, headers Vendor, Status, Due date, Amount, and Action, right-aligned amounts, and row actions labelled by vendor.
Bad UI
Mobile stacking removes headers and turns rows into unlabeled paragraphs.
Good UX
A user sorts by Amount descending, filters to Pending, moves to page 2, and the table keeps its caption, active sort, active filter, row count, and selected payment context.
Bad UX
Mobile stacking removes headers and turns rows into unlabeled paragraphs.
Best fit
Records share comparable attributes that users need to scan in aligned columns.
Avoid when
The task depends on rich previews, imagery, or uneven metadata.
Required state
Default table state with caption, visible headers, row values, and result count or context.
Accessibility burden
Use native table semantics for tabular data rather than div-only rows.
Common misuse
Using table markup to create page columns or layout spacing.

Data grid

UI or UX
UI + UX - Interactive row-and-column data workspace
UI guidance
Render the grid as a named work surface with visible headers, row identifiers, focus location, selection state, dirty and invalid cell markers, column controls, and status text for row count, sort, filter, and save state.
UX guidance
Use a data grid when cell-level interaction makes users faster and more accurate than opening each record separately.
Good UI
An invoice-review grid shows frozen invoice IDs, column headers for Vendor, Amount, Due, Owner, and Status, one highlighted focused cell, two selected rows, a dirty edited amount, and a status line naming the current cell.
Bad UI
A static report uses role grid even though users only read values and ordinary table semantics would be clearer.
Good UX
A user presses Arrow Right to move from Amount to Due, presses Enter to edit the due date, presses Escape to cancel, and focus returns to the same cell in navigation mode.
Bad UX
The grid reports selection but the visual highlight is focus, or focus highlight is mistaken for selected data.
Best fit
Users repeatedly inspect or update many records in shared columns.
Avoid when
The data is read-only and ordinary table navigation is enough.
Required state
Default navigation state with labelled grid, column headers, row headers or row identifiers, focused cell, and row count context.
Accessibility burden
Use grid semantics only for an interactive composite widget with managed focus.
Common misuse
Using role grid on a static table only to make it sound richer.

Sensitive-data reveal

UI or UX
UI + UX - Controlled reveal and re-hiding of masked sensitive values, secrets, tokens, credentials, identifiers, or private records
UI guidance
Render sensitive-data reveal as a masked value with an explicit reveal action, visible hide action, clear field identity, safe default state, reveal duration or hold behavior, and status feedback that explains what is visible now.
UX guidance
Use sensitive-data reveal when users need to verify, compare, copy, rotate, recover, or transcribe a sensitive value that is normally masked or redacted.
Good UI
An API key row shows sk_live_****9H2Q by default, requires Reauthenticate before Full reveal, logs the reveal event, and automatically hides after 30 seconds.
Bad UI
A secret is visible on page load, print, export, screenshot, or shared-screen mode.
Good UX
A developer needs to rotate a webhook secret, reveals it after step-up verification, copies it with a visible clipboard warning, then sees it auto-hide with an audit ID.
Bad UX
A user taps a copied state and the interface silently places a raw token on the clipboard while the token remains hidden on screen.
Best fit
Users need to inspect, copy, verify, rotate, transcribe, or compare a sensitive value that should normally stay masked or redacted.
Avoid when
The task is only entering a password into an authentication form; use password input.
Required state
Masked state with the field identity, safe suffix or count, and reveal eligibility.
Accessibility burden
Use a labelled button or toggle whose accessible name includes the field, such as Show API key or Hide account number.
Common misuse
Showing sensitive values in plain text by default.
Decision rules
  • Choose data export when users need a portable copy, archive, direct transfer, or downloadable package of account, workspace, personal, product, activity, or organization data.
  • Choose bulk import when users are bringing records into the product and need file parsing, column mapping, row validation, repair, confirmation, and import reporting.
  • Choose audit log when the task is governed event evidence with audit IDs, retention, legal hold, custody, export/API/SIEM, and tamper or coverage states; data export may package audit records but does not replace audit review.
  • Choose table or data grid export when users need to download the currently visible row set, selected columns, or filtered operational dataset rather than a broader account or workspace archive.
  • Choose sensitive-data reveal when the task is controlled exposure of one protected value, not preparing a long-lived package containing many data categories.
  • A data export flow should show category selection, account or workspace, date range, format, destination, estimated size, identity or permission check, package ID, expiry, manifest, checksum, and download or transfer status.
  • Do not label a visible CSV row download as full personal data export unless it includes all eligible categories, omissions, formats, retention limits, and portability constraints.
  • Do not make data export look like delete account, consent withdrawal, privacy setting changes, migration import, or report sharing; those may sit nearby but require separate states and consequences.
  • When export is partial, redacted, delayed, unsupported, expired, or failed, the flow should name affected categories and offer retry, regenerate, support, or archive-request paths.
  • Sensitive archives need time-limited, permission-checked links and should not expose raw secrets in manifests, notifications, logs, or broad admin views.
Inspect live examples
Failure modes
  • The export button downloads only visible table rows but the page calls it complete account data.
  • The export archive is ready but no manifest explains which services, date ranges, files, or redacted fields are included.
  • Users think export deletes source data because the export and delete account controls share one confirmation.
  • A failed messages category is hidden while the final state says export complete.
  • A direct transfer to another service fails after archive preparation and the UI does not say whether source export succeeded.
  • The manifest or notification leaks raw tokens, private files, or sensitive prompt content.

Saved items