figma guide

Designing affected individual breach notification and communication UI in Figma: Art. 34 notices, channels, and delivery tracking

Design affected individual breach notification UI in Figma with Art. 34 notices, multi-channel delivery, suppression rules, and handoff for privacy and comms teams.

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

Quick answer

Individual breach notification UI tells affected people what happened, what you did, and what they should do—without exposing other victims or leaking investigation details. Design a notification decision workspace (Art. 34 / state-law triggers), channel-aware templates (email, SMS, in-app, postal), audience segmentation and suppression rules, and delivery tracking with proof of send. Connect to regulatory filing, breach notification, privacy triage, and subprocessor cascade. Start from the Figma guides hub and pair with status page, trust center, and Dev Mode handoff.


Who this is for

  • Product designers building privacy ops tooling where legal decides whether—and how—to notify individuals.
  • Privacy and comms teams coordinating high-risk breach notices across email, SMS, and in-app surfaces.
  • Engineering and support leads who need delivery logs, bounce handling, and suppression before mass send.

Notification decision workspace

IndividualNotificationDecision — Incident VIN-992 · PIN-1044 · Status: Pending legal review
├── Header: High risk to rights? Legal: Likely yes · Regulator notified: FIL-882 submitted · Individual notify: Required
├── Decision checklist:
│   ├── ☐ High risk to rights and freedoms (Art. 34 threshold)
│   ├── ☐ Encryption or technical measures reduce risk below threshold
│   ├── ☐ Subsequent measures taken (password reset, monitoring offer)
│   ├── ☐ Public communication would be more effective (Art. 34(3) exception)
│   └── ☐ State-law thresholds met (CA, NY, etc.) — separate toggle per jurisdiction
├── Audience estimate: 102,400 affected · 98,200 with email · 41,300 with SMS on file · 12,100 postal only
├── Actions: [ Approve notify ] [ Defer pending regulator ] [ Document no-notify rationale ] [ Request comms review ]
├── Linked: [Regulatory filing FIL-882](/designing-regulatory-authority-correspondence-and-breach-filing-archive-ui-in-figma/) · [Cascade worksheet](/designing-subprocessor-breach-notification-and-cascade-impact-ui-in-figma/)
└── Audit: Decision owner · Timestamp · Immutable rationale text · Linked evidence bundle
ElementPurpose
Risk threshold panelShows why notify vs no-notify with editable legal rationale
Jurisdiction matrixEU Art. 34 vs US state rules may differ on timing and content
Audience countersPre-send sanity check—do not show individual names in admin summary
Defer pathSome teams wait for regulator acknowledgment before public individual notice

Verdict: Decision UI fails when “we sent email” is the only record—capture the legal basis for notify, defer, or no-notify before any channel goes live.


Audience segmentation and suppression

AudienceSegmentation — VIN-992 · 102,400 total · 3 segments · 1,240 suppressed
├── Segment A: EU residents · 48,200 · Template: EU Art. 34 · Language: EN + DE + FR variants
├── Segment B: US CA/NY · 22,100 · Template: State breach · Include AG reference if required
├── Segment C: All others · 32,100 · Template: General high-risk notice
├── Suppression rules (applied automatically):
│   ├── Already notified via vendor direct (subprocessor) · 890 · Source: [Cascade impact](/designing-subprocessor-breach-notification-and-cascade-impact-ui-in-figma/)
│   ├── Deceased / invalid contact · 210 · Do not send
│   ├── Duplicate accounts merged · 140 · Single notice per person
│   └── Legal hold on account · 0
├── Manual exclusion: Support tickets referencing incident · Review queue · 12 pending
├── Preview: Sample 5 anonymized records per segment · No PII in design file exports
└── Export: Segment manifest hash for [compliance export](/designing-compliance-exports-and-legal-hold-ui-in-figma/)

Design segment cards with channel availability per cohort—not one template for 102k people with mixed contact data.


Template composer (multi-channel)

NoticeTemplateComposer — Segment A · EU Art. 34 · Draft v3 · Pending comms + legal
├── Required content blocks (regulatory):
│   ├── Nature of breach in clear plain language
│   ├── Categories of data affected · Approximate numbers (range OK)
│   ├── Likely consequences · Measures taken by controller
│   ├── Recommended steps for individual · Contact point (DPO / privacy team)
│   └── Link to FAQ — not raw forensic detail
├── Channel variants (linked components in Figma):
│   ├── Email — Subject line · Preheader · Body · CTA to account security
│   ├── SMS — 160/320 char budget · Short link to notice landing page
│   ├── In-app banner + modal — Logged-in users · Persistent until acknowledged
│   ├── Postal — Print layout · Return address · QR to digital FAQ
│   └── Notice landing page — Public URL · No login required · Version stamped
├── Personalization tokens: {{first_name}} · {{last_four}} · {{reset_link}} · {{monitoring_enrollment}}
├── Approval chain: Legal ☐ · Comms ✓ · DPO ☐ · Executive ☐ (if external PR overlap)
├── Schedule: Send after FIL-882 acknowledgment · Stagger: 10k/hour rate limit
└── Link: [Remediation offers](/designing-breach-remediation-offers-and-credit-monitoring-enrollment-ui-in-figma/) block optional in template

Plain language preview mode shows reading level and flags jargon—privacy notices are not security runbooks.


Delivery tracking and proof of send

DeliveryTracker — Campaign IND-441 · Segment A · Sent 2026-08-26 09:00 UTC
├── Summary: Queued 48,200 · Delivered 47,891 · Bounced 241 · Suppressed 68 · Opened 31,204 · CTA clicked 8,902
├── Bounce handling:
│   ├── Hard bounce → Mark undeliverable · Trigger postal fallback task if required
│   ├── Soft bounce → Retry 3x · Escalate to manual outreach queue
│   └── SMS undeliverable → Email fallback · Log channel switch
├── Acknowledgment (in-app): 12,440 acknowledged · Reminder at 7 days for unacked
├── Proof bundle: Send log · Template version · Segment hash · Approval timestamps
├── Regulator ask: Export "reasonable efforts" report for [FIL-882 thread](/designing-regulatory-authority-correspondence-and-breach-filing-archive-ui-in-figma/)
└── Link: [Audit log](/designing-audit-log-and-security-activity-ui-in-figma/) · [Customer status page](/designing-customer-incident-status-page-and-communication-ui-in-figma/) (high-level only)
MetricWhy it matters
Delivered vs bouncedDemonstrates reasonable efforts to reach individuals
Template versionProves what text was actually sent, not draft v2
Channel fallbackShows attempt when primary contact failed
Acknowledgment rateIn-app notices need persistent UI until dismissed

Comparison: individual notice vs adjacent tools

ToolFocusThis UI adds
Breach notificationRegulator-first filing composerConsumer-facing templates and delivery
Regulatory archiveAuthority threads and FIL-* recordsLinks IND-* campaigns to FIL-* incidents
Subprocessor cascadeVendor incident impactSuppression when vendor already notified users
Status pagePublic incident summaryNever replace individual notice with status page alone
Trust centerEvergreen policiesIncident FAQ linked from notice, not generic privacy policy

Handoff checklist (Dev Mode)

  • IndividualNotificationDecision — incident_id, jurisdiction_rules[], risk_assessment, notify_required, rationale, decided_by, decided_at.
  • NotificationSegment — segment_id, incident_id, template_id, audience_count, suppression_rules[], channel_plan[].
  • NoticeTemplate — template_id, version, channel, locale, content_blocks[], approval_chain[], immutable_at_send.
  • NotificationCampaign — campaign_id (IND-*), segment_id, scheduled_at, sent_at, rate_limit, status.
  • DeliveryEvent — campaign_id, recipient_hash, channel, event_type (queued/sent/delivered/bounced/opened/clicked), timestamp.
  • SuppressionRecord — incident_id, reason, source, count, manifest_hash.
  • Accessibility — Email and landing page WCAG contrast; SMS plain language; in-app modal focus trap and dismiss.

Common mistakes

MistakeWhy it hurtsFix
Same copy for regulator and individualsConfusing and legally riskySeparate templates with plain-language blocks
Send before legal decision recordedAudit gapGate send on signed decision workspace
Show victim lists in admin UIPrivacy violation in the tool itselfAggregates and hashed IDs only
No bounce fallbackFails “reasonable efforts”Postal or alternate channel tasks
Link to internal runbook in emailLeaks investigation detailPublic FAQ and account security CTAs only
Ignore subprocessor suppressionDouble notificationImport cascade suppress list
No template version at sendCannot prove contentSnapshot v3 at campaign start
Status page replaces Art. 34 noticeNon-complianceStatus page supplements, not substitutes

  1. Complete regulatory decision in breach notification and privacy triage before opening individual notify workspace.
  2. Record notify / no-notify rationale with jurisdiction checklist and link to FIL-* filing.
  3. Build segments with suppression from subprocessor cascade.
  4. Draft multi-channel templates; run comms and legal approval; snapshot version.
  5. Schedule send with rate limits; monitor delivery tracker and bounce queues.
  6. Export proof bundle into regulatory archive and compliance exports at incident close.

FAQ

When is individual notification not required?

When risk to rights is unlikely after mitigation, or Art. 34(3) public communication is more effective—document the rationale in the decision workspace, do not leave the field blank.

Can we notify before the regulator?

Jurisdiction-dependent. UI should support defer until FIL acknowledgment without blocking template prep and segment review.

In-app only for logged-in users?

Insufficient if email or SMS is available—design multi-channel with in-app as reinforcement, not sole channel.

Optional CTA block in template composer when legal approves monitoring or credit services.

Public FAQ vs individual email?

Email points to versioned notice landing page; FAQ on status page stays high-level.


Next steps

Share on X

§ Keep reading

Related guides.