figma guide

Designing data portability and machine-readable export UI in Figma: formats, scopes, and delivery

Design GDPR and CPRA data portability export UI in Figma with format pickers, scope selection, machine-readable JSON bundles, and secure delivery flows for DSAR and self-service.

Published
Updated
Aug 11, 2026
Read time
7 min
Level
Intermediate

Quick answer

Data portability UI lets users request a structured copy of personal data they provided or that was observed about them—delivered in a machine-readable format they can reuse elsewhere. Design a self-service export hub with scope selection (profile, activity, purchases), format pickers (JSON, CSV, ZIP bundle), and secure delivery (time-limited download link + email receipt). Start from the Figma guides hub and pair with DSAR portal, privacy settings, consent withdrawal, compliance exports, and Dev Mode handoff.


Who this is for

  • Product designers building self-service “download my data” flows in account settings or privacy portals.
  • Privacy engineers defining export schemas, redaction rules, and cross-system bundle assembly.
  • Legal and compliance teams separating portability (Art. 20) from full access (Art. 15) and erasure (Art. 17).

Data portability hub (internal overview)

PortabilityHub — Acme App · 842 exports last 30d · Avg bundle 12.4 MB · SLA 72h
├── Header: Pending 23 · Failed 2 · Median completion 4.1h · Largest bundle 890 MB
├── Actions: [ New export template ] [ Retry failed ] [ Audit log ] [ Schema docs ]
├── Tabs: Requests · Templates · Formats · Redaction rules · Delivery · Incidents
├── Alert: Export EX-9921 · User hit 3/day rate limit · Possible automation abuse
├── Filters: Region · Status · Format · Scope · Date range
└── Link: [DSAR portal](/designing-data-subject-access-request-and-gdpr-portal-ui-in-figma/) · [Privacy settings](/designing-privacy-settings-and-data-management-ui-in-figma/) · ROPA · DPA hub
SectionPurpose
RequestsUser-initiated and DSAR-linked export jobs
TemplatesPredefined scope + format bundles per product surface
FormatsJSON, CSV, XML, PDF summary, media attachments
Redaction rulesStrip third-party PII, secrets, derived scores where not portable
DeliverySigned URLs, expiry, re-auth before download
IncidentsFailed jobs, oversized bundles, schema drift

Verdict: Portability fails when the export is a PDF screenshot of settings—users need structured, reusable data.


Self-service export request (customer-facing)

ExportMyData — Privacy · Download a copy of your data
├── What you can export (portability scopes):
│   ├── ☑ Profile and account info · Name, email, preferences · JSON, CSV
│   ├── ☑ Activity history · Posts, comments, likes · JSON (recommended)
│   ├── ☐ Purchase records · Orders, receipts · CSV · Contract basis included
│   └── ☐ Connected services · OAuth tokens metadata only · No third-party secrets
├── Format: (•) JSON bundle (recommended) · ( ) CSV per table · ( ) ZIP with attachments
├── Delivery: Email link when ready · Link expires in 7 days · Re-login required to download
├── Not included: Other users' messages, fraud scores, internal support notes
├── Estimated size: ~8 MB · Typical wait: under 4 hours
├── Legal note: Right to data portability (GDPR Art. 20) · Differs from full DSAR access
└── [ Request export ] · [ View past exports ] · [ Open full DSAR ](/designing-data-subject-access-request-and-gdpr-portal-ui-in-figma/)
RuleImplementation
Scope clarityList each category with plain-language contents
Format guidanceRecommend JSON for interoperability; CSV for spreadsheets
Honest exclusionsExplain derived/inferred data and third-party limits upfront
Separate from erasureDo not conflate export with consent withdrawal or delete
Rate limitsShow daily cap to prevent abuse without hiding the right

Export progress and status

ExportStatus — Request #EX-2026-44102 · Requested Aug 11 03:22 UTC
├── Status: Processing · Step 3 of 5 · Assembling activity feed
├── Progress bar: 62% · ETA ~45 minutes
├── Scopes: Profile ✓ · Activity in progress · Purchases queued
├── Format: JSON bundle · Schema version 2.4 · [ View schema docs ]
├── Notifications: Email when ready · In-app badge on Privacy page
├── Cancel: [ Cancel request ] · Available until assembly starts
└── Past exports: Aug 3 · Completed · Link expired · [ Request again ]

Show real pipeline stages—“Processing” for 48 hours erodes trust and invites regulator complaints.


Secure delivery and download

ExportReady — Your data export is ready
├── Bundle: acme-export-EX-44102.zip · 11.2 MB · JSON + CSV + README
├── Contents summary:
│   ├── profile.json · account.json · activity.json
│   ├── purchases.csv · connections.json
│   └── README.txt · Schema URLs · Redaction notes
├── Security:
│   ├── Link expires: Aug 18 2026 · One-time download optional toggle
│   ├── [ Verify identity ] · Password or 2FA required · [Session timeout](/designing-session-timeout-and-re-authentication-ui-in-figma/) pattern
│   └── Do not forward this email · Contains personal data
├── After download: [ Delete server copy now ] · Auto-delete in 7 days regardless
└── [ Download export ] · [ Report problem ] · Receipt #EX-44102 stored in audit log

Pair re-auth with security settings—exports are high-value targets for account takeover.


Admin: export template and schema editor

ExportTemplateAdmin — activity_history · v2.4
├── Portable fields: post_id, body, created_at, visibility · Source: posts_db
├── Excluded: moderation_flags, internal_quality_score · Reason: not provided by user
├── Redaction: Strip @mentions of non-exporting users → user_id hash
├── Output: activity.json · JSON Schema URL · CSV fallback columns
├── Linked ROPA: PA-104 Product analytics · PA-88 User-generated content
├── DSAR parity: Same bundle used for Art. 15 access when scope = portability
├── SLA: 95% complete < 24h · Max bundle 2 GB · Split oversized into parts
└── [ Test export for @qa-user ] · [ Diff vs v2.3 schema ]

Legal, engineering, and design share field inventories—UI labels must match export contents exactly.


Comparison: portability vs access vs erasure

RightUser getsTypical formatUI surface
Portability (Art. 20)Data they provided + observed activityJSON, CSV, structured ZIPSelf-service export hub
Access (Art. 15)Broader copy including inferred dataPDF summary + structured bundleDSAR portal
Erasure (Art. 17)Deletion confirmationN/APrivacy settings delete flow
Rectification (Art. 16)Correct inaccurate fieldsInline edit, not exportProfile settings

Use distinct entry points—one “download everything” button blurs legal bases and creates review risk.


Handoff checklist (Dev Mode)

  • ExportRequest — request_id, user_id, scopes[], format, status, requested_at, completed_at.
  • ExportScope — scope_id, label, description, included_fields[], excluded_fields[], legal_basis.
  • ExportBundle — bundle_id, request_id, file_urls[], size_bytes, schema_version, checksum.
  • DeliveryLink — link_id, bundle_id, expires_at, download_count, requires_reauth.
  • ExportTemplate — template_id, scopes[], format_defaults, redaction_rules[], sla_hours.
  • ExportReceipt — receipt_id, request_id, downloaded_at, ip_hash, user_agent_hash.
  • Accessibility — progress announced to screen readers; format options not radio-only color cues; download errors readable.

Common mistakes

MistakeWhy it hurtsFix
PDF-only exportFails machine-readable requirementOffer JSON/CSV as primary
Including third-party secretsSecurity and contract breachMetadata only for OAuth connections
No schema documentationData unusable at destinationREADME + JSON Schema links in bundle
Same flow as full DSARWrong legal basis timingSeparate portability vs access scopes
Permanent download linksLeak risk after email forwardExpiry + optional one-time use
No re-auth on downloadAccount takeover exfiltrationStep-up auth before file access
Hidden rate limitsUser frustrationShow caps in UI before submit
Stale export templatesSchema drift breaks importersVersion templates; notify on breaking changes

  1. Inventory portable fields with Legal—map to ROPA activities.
  2. Design self-service hub in privacy settings with scope + format pickers.
  3. Add progress and ETA tied to real pipeline stages.
  4. Ship secure delivery with expiry, re-auth, and auto-delete.
  5. Document schemas for engineering and downstream importers.
  6. Wire DSAR portal so Art. 15 requests can reuse templates with broader scopes.
  7. Log every download in audit trail for compliance exports.

FAQ

Same as DSAR access?

Portability is a subset focused on structured, reusable data the user provided or that was observed; access can include inferred scores, internal notes, and PDF summaries.

Yes for data still held under contract or legal obligation; withdrawn scopes should not appear in new exports—show what was removed.

Import elsewhere?

Include README with schema URLs; consider linking to connected accounts for OAuth-based importers where you support them.

B2B org exports?

Enterprise admins may export org metadata separately—do not bundle employee PII without role checks and team permissions.

Block deletion of pending export bundles when legal hold applies—show hold badge on status screen.


Next steps

Share on X

§ Keep reading

Related guides.