figma guide
Designing privacy request queue and case management UI in Figma: DSAR, erasure, objection, and SLA tracking
Design privacy request queue and case management UI in Figma with unified DSAR, erasure, and objection tickets, SLA timers, identity verification, and handoff for privacy ops teams.
- Published
- Updated
- Aug 15, 2026
- Read time
- 7 min
- Level
- Intermediate
Quick answer
A privacy request queue unifies DSAR, erasure, objection, restrict, and rectification tickets in one ops inbox with SLA timers, identity verification status, and assignee workflows. Design a case detail panel linking to the right user-facing flow, SLA countdown badges, bulk export for audits, and status sync back to the user’s portal. Start from the Figma guides hub and pair with DSAR portal, erasure, objection, proof of deletion, and Dev Mode handoff.
Who this is for
- Product designers building internal privacy ops tools alongside user-facing rights portals.
- DPOs and privacy analysts who need one queue instead of email + spreadsheets.
- Engineering teams normalizing request types into a shared case model.
Privacy ops inbox (admin overview)
PrivacyOpsInbox — Acme App · 47 open cases · 6 SLA at risk
├── Header: DSAR 12 · Erasure 8 · Objection 5 · Rectify 4 · Restrict 3 · Other 15
├── Actions: [ Assign bulk ] [ Export open cases ] [ SLA report ] [ Templates ]
├── Tabs: All · My queue · Unassigned · At risk · Completed · Escalated
├── Sort: SLA due · Newest · Priority · Region · Request type
├── Row example:
│ PRQ-9921 · DSAR access · u_441 · EU · Due in 2d · Unassigned · Id verified ✅
│ PRQ-9920 · Erasure full · u_882 · UK · Due in 18d · Alex · Job 3/6 complete
│ PRQ-9919 · Objection analytics · u_771 · DE · Due in 28d · Pending LI review
└── Link: [Trust center](/designing-trust-center-and-security-documentation-ui-in-figma/) · [Compliance exports](/designing-compliance-exports-and-legal-hold-ui-in-figma/) · [ROPA](/designing-records-of-processing-activities-and-data-mapping-ui-in-figma/)
| Column / element | Purpose |
|---|---|
| Request type | DSAR, erasure, objection, restrict, rectify, portability |
| SLA due | Region-specific deadline (e.g., 30 days GDPR) |
| Identity status | Verified, pending, failed, escalated |
| Assignee | Privacy analyst or team queue |
| Linked jobs | Deletion jobs, export jobs, review tasks |
Verdict: Queues fail when each right type lives in a separate tool—unify intake, SLA, and audit in one case record.
Case detail panel
CaseDetail — PRQ-9921 · DSAR access · Status: In progress
├── Header: User u_441 · EU resident · Submitted via [DSAR portal](/designing-data-subject-access-request-and-gdpr-portal-ui-in-figma/) 2026-08-01
├── SLA: Due 2026-08-31 · 26 days remaining · Extension logged? No
├── Identity: Verified via passkey 2026-08-01 · [Re-verify if suspicious](/designing-suspicious-login-alerts-and-account-recovery-ui-in-figma/)
├── Request scope: Full export · Include billing? Yes · Exclude other users' data ✅
├── Timeline:
│ ├── 2026-08-01 · Created · auto_ack_sent
│ ├── 2026-08-02 · Assigned · analyst@acme.com
│ ├── 2026-08-05 · Export job started · job_exp_441
│ └── 2026-08-10 · Awaiting QA on redaction
├── Actions: [ Complete & deliver ] [ Request extension ] [ Deny with reason ] [ Merge duplicate ]
├── Internal notes: Thread for legal · @mention DPO
├── User comms: Template picker · Last sent: "We're preparing your export"
└── Related: [Portability UI](/designing-data-portability-and-machine-readable-export-ui-in-figma/) · [Audit trail](/designing-proof-of-deletion-and-audit-trail-ui-in-figma/)
One case ID (PRQ-*) should follow the request from intake to closure.
Request type routing
| Type | User entry | Ops primary action | Closes when |
|---|---|---|---|
| DSAR access | DSAR portal | Generate export + redact | User downloads bundle |
| Erasure | Erasure wizard | Orchestrate deletion jobs | Receipt issued |
| Objection | Privacy settings | LI review queue | Decision sent |
| Restrict | Rectification flow | Apply processing freeze | Lift or erase |
| Rectify | Profile / DSAR | Correct fields + notify | User confirms |
| Portability | DSAR or dedicated | Machine-readable export | Download delivered |
| Withdraw consent | Consent admin | Downstream delete jobs | Marketing/analytics stopped |
Design one inbox filter per type but shared case chrome (SLA, identity, notes, audit).
SLA and extension UI
SLAWidget — PRQ-9921 · GDPR 30-day · Due 2026-08-31
├── Visual: Progress ring · Green >7d · Amber 3–7d · Red <3d
├── At-risk banner (inbox): "6 cases due within 72 hours"
├── Extension modal:
│ ├── Reason: Complex request · Third-party data · Legal review
│ ├── New due date: +30 days max per policy
│ ├── User notification: Required template · Plain language reason
│ ├── Approval: DPO sign-off if >14 day extension
│ └── Audit: extension_id · logged immutably
├── Deny path: Only when identity fails or manifestly unfounded · Link appeal copy
└── Region presets: EU 30d · UK 30d · CCPA 45d · Configurable in admin
SLA badges must appear in inbox list and case header—not buried in settings.
Identity verification gate
IdentityGate — PRQ-9920 · Erasure · Identity: Pending
├── Block ops actions until: Verified OR manual override with legal approval
├── Methods shown: Passkey ✅ · Email OTP · ID upload (high risk)
├── Failed verification: 3 attempts · Lock case · [Suspicious login](/designing-suspicious-login-alerts-and-account-recovery-ui-in-figma/) link
├── Manual override: Upload ticket · Manager approval · Audit reason required
├── User message: "Verify identity to continue" · Deep link to [email OTP](/designing-email-verification-and-otp-ui-in-figma/)
└── Never: Fulfill erasure on unverified email-only request for high-risk scopes
Erasure and full DSAR exports must not proceed without verified identity.
Duplicate and merge handling
MergeCases — PRQ-9918 + PRQ-9915 · Same user · Both DSAR access · 2h apart
├── Detect: Same user_id + type within 24h · Suggest merge banner
├── Merge preview: Keep earliest SLA · Combine notes · Close duplicate as merged_into
├── User sees: One portal status · One case ID
└── Audit: merge_event · both IDs preserved in trail
Duplicate requests are common after anxious refresh clicks—merge without resetting SLA unfairly.
User portal status sync
UserPortalStatus — "Your request PRQ-9921"
├── Mirror ops status: Received → In progress → Completed
├── Do not expose: Internal assignee names · Legal notes · Deny drafts
├── Messages: Pulled from approved templates only
├── Links: Download when ready · [Objection decision letter](/designing-objection-and-restrict-processing-ui-in-figma/) · [Deletion tracker](/designing-proof-of-deletion-and-audit-trail-ui-in-figma/)
└── Email parity: Same status text as portal · Unsubscribe not applicable to transactional
Ops case status and user portal must stay in sync—single source of truth.
Reporting and export
PrivacyOpsReports — Last 30 days
├── Metrics: Median time to complete · SLA breach count · By type · By region
├── Charts: Open vs closed · At-risk trend
├── Export: CSV for leadership · [Compliance bundle](/designing-compliance-exports-and-legal-hold-ui-in-figma/) for audits
├── Drill-down: Click metric → filtered inbox
└── Link [posture dashboard](/designing-security-posture-dashboard-and-compliance-checklist-ui-in-figma/) for exec summary
Handoff checklist (Dev Mode)
- PrivacyCase — case_id, type, user_id, region, status, sla_due_at, assignee_id, created_at, closed_at.
- CaseTimeline — event_type, timestamp, actor, note, linked_job_id.
- IdentityVerification — case_id, method, status, verified_at, override_reason.
- SLAExtension — case_id, old_due, new_due, reason, user_notified_at, approver_id.
- CaseMerge — primary_id, merged_id, merged_at.
- UserStatusSync — case_id, public_status, public_message, artifact_url.
- Accessibility — SLA color + text label; sortable table headers; keyboard row actions.
Common mistakes
| Mistake | Why it hurts | Fix |
|---|---|---|
| Separate queues per right | Missed SLAs | Unified inbox + type filter |
| No identity gate | Fraudulent erasure | Block until verified |
| SLA only in calendar | Breaches surprise | In-list countdown badges |
| Internal notes visible to user | Trust break | Strict public vs internal fields |
| Reset SLA on duplicate | Unfair delay | Merge cases, keep earliest due |
| Complete without artifact | Empty closure | Require export/receipt/denial letter |
| No extension user notice | Art. 12 violation | Template + audit on extend |
| Email-only ops workflow | No audit trail | All actions in case timeline |
Recommended workflow
- Define case model covering all rights types from privacy settings entry points.
- Design ops inbox with SLA badges, filters, and bulk assign.
- Design case detail with timeline, identity gate, and type-specific actions.
- Wire user portal (DSAR portal) to case public_status.
- Add extension and deny flows with required user notifications.
- Build reporting for DPO reviews and compliance exports.
- Test end-to-end from user submit → ops complete → portal download in Dev Mode.
FAQ
One queue for consumer and B2B?
Use separate inboxes or workspaces when employee DSAR differs from customer rights—same case model, different policies.
Link to objection review?
Objection cases open LI review subtasks—surface LIA link and competing grounds checklist in case detail.
Erasure case vs deletion jobs?
Case tracks SLA and user comms; deletion jobs track technical completion—link job IDs in timeline.
CCPA vs GDPR SLA?
Configure region presets in admin—do not hardcode one deadline in UI copy.
Escalate to legal?
Escalated tab + @DPO mention + freeze auto-complete until legal clears deny/extension.
Next steps
- Design data subject access request and GDPR portal UI in Figma — user intake that creates cases
- Design right to erasure and deletion request UI in Figma — erasure cases and job linking
- Design objection and restrict processing UI in Figma — objection review from case detail
- Design proof of deletion and audit trail UI in Figma — close erasure cases with receipts
- Design compliance exports and legal hold UI in Figma — audit bundles from ops reporting
§ Keep reading