figma guide

Designing breach FAQ and notice landing page UI in Figma: versioned answers, search, and plain-language handoff

Design breach FAQ and notice landing page UI in Figma with versioned Q&A, locale variants, search, accessibility, and handoff for privacy and comms teams after individual notification.

Published
Updated
Aug 20, 2026
Read time
8 min
Level
Intermediate

Quick answer

Breach FAQ and notice landing page UI gives affected individuals a stable, plain-language place to read what happened—without exposing investigation detail or other victims’ data. Design a versioned notice page (linked from email, SMS, and in-app notices), a structured FAQ block library with locale variants, search and anchor navigation, and publish workflow tied to individual notification campaigns. Connect to status page, remediation offers, regulatory archive, and trust center. Start from the Figma guides hub and pair with Dev Mode handoff.


Who this is for

  • Product designers building post-breach self-service surfaces that legal and comms can update without redeploying the whole app.
  • Privacy and comms teams who need one canonical FAQ version stamped to each notification campaign.
  • Support and engineering leads who want searchable answers before call volume spikes.

Notice landing page shell

NoticeLandingPage — Incident VIN-992 · Version NL-992-v3 · Published 2026-08-26 09:15 UTC
├── Header: Company logo · Incident reference (public-safe) · Last updated stamp
├── Hero summary (plain language):
│   ├── What happened — 2–3 sentences, no jargon
│   ├── What data may be involved — categories only, not field names from forensic logs
│   ├── What we are doing — mitigation steps customers can understand
│   └── What you should do — password reset, monitoring enrollment, watch for phishing
├── Primary CTAs:
│   ├── [ Check if you were affected ] → eligibility flow (no PII in URL params)
│   ├── [ Enroll in credit monitoring ] → [remediation offers](/designing-breach-remediation-offers-and-credit-monitoring-enrollment-ui-in-figma/)
│   └── [ Contact support ] → ticket form with incident tag pre-filled
├── FAQ section (structured blocks below)
├── Related links:
│   ├── [Status page](/designing-customer-incident-status-page-and-communication-ui-in-figma/) — service impact only
│   └── [Trust center](/designing-trust-center-and-security-documentation-ui-in-figma/) — evergreen policies, not incident-specific
├── Footer: Privacy contact · Regulatory references if required · PDF download (accessible)
└── Locale switcher: EN · DE · FR · ES (linked component variants)
ElementPurpose
Version stampProves which text individuals saw when they clicked from IND-* email
Category-level data description”Email addresses and hashed passwords” not “column user_email from shard 4”
No login wallArt. 34 notices must be reachable without account access
PDF exportAccessibility and users who prefer offline reading

Verdict: The landing page is the canonical public text for individuals—email and SMS should link here, not duplicate paragraphs that drift out of sync.


FAQ block library and versioning

FaqBlockLibrary — Incident VIN-992 · Draft v3 · Pending legal + comms
├── Required blocks (regulatory-aligned):
│   ├── What happened?
│   ├── What information was involved?
│   ├── What are you doing about it?
│   ├── What can I do to protect myself?
│   ├── How will you notify me in the future?
│   └── Who can I contact with questions?
├── Optional blocks (toggle per incident):
│   ├── Was my password exposed? → Link to reset flow
│   ├── Is financial data affected? → Only if true; hide block if N/A
│   ├── Free credit monitoring → CTA to [enrollment UI](/designing-breach-remediation-offers-and-credit-monitoring-enrollment-ui-in-figma/)
│   ├── Phishing warning → Sample fake email red flags
│   └── State-specific addendum (CA, NY) → Jurisdiction component variant
├── Version history:
│   ├── v1 — Initial publish with IND-441 send
│   ├── v2 — Clarified "no payment card numbers" after forensic confirmation
│   └── v3 — Added DE/FR locales · Current live
├── Approval: Legal ✓ · Comms ✓ · DPO ✓ · Publish locks v3 to NL-992-v3
└── Link: Template snapshot from [individual notification](/designing-affected-individual-breach-notification-and-communication-ui-in-figma/) IND-441

Design FAQ as reusable components with show/hide boolean properties per block—legal can disable “financial data” until confirmed true.


Search, navigation, and accessibility

FaqNavigation — NL-992-v3 · Mobile + desktop variants
├── Sticky table of contents (desktop): Jump links to each FAQ block
├── Accordion pattern (mobile): One question open at a time · Expand/collapse all
├── Search bar:
│   ├── Placeholder: "Search this notice (e.g. password, monitoring)"
│   ├── Results highlight within page · No external site search
│   └── Empty state: "Try 'password reset' or 'monitoring'"
├── Reading aids:
│   ├── Plain language badge · Estimated read time
│   ├── Glossary tooltips: "Hashed password" · "Phishing"
│   └── High contrast mode toggle
├── Accessibility checklist:
│   ├── WCAG AA contrast on alert banners
│   ├── Focus order matches visual order
│   ├── Accordion aria-expanded states
│   └── PDF tagged for screen readers
└── Analytics (privacy-preserving): Page views · FAQ expand events · CTA clicks · No individual tracking
PatternBest forSkip when
Accordion FAQMobile-first breach noticesLegal requires all text visible for audit screenshot
Anchor TOCLong notices with 10+ blocksVery short incidents with 4 blocks only
In-page searchHigh traffic after mass emailLow-affected-count incidents under 500 people

Pair with privacy-preserving analytics controls—do not fingerprint visitors on a breach notice URL.


Publish workflow and campaign linkage

NoticePublishWorkflow — VIN-992 · NL-992-v3 ready · Linked campaigns: IND-441, IND-442
├── Pre-publish gates:
│   ├── ☐ Legal approved plain-language summary
│   ├── ☐ Comms approved FAQ blocks and locales
│   ├── ☐ Engineering: URL live at /notice/vin-992 (no auth)
│   ├── ☐ Short link configured for SMS (301 to canonical URL)
│   └── ☐ Status page cross-link reviewed (no contradiction)
├── Publish actions:
│   ├── Set live · Invalidate CDN cache · Stamp NL-992-v3
│   ├── Notify [individual notification](/designing-affected-individual-breach-notification-and-communication-ui-in-figma/) to use v3 links
│   └── Export snapshot to [regulatory archive](/designing-regulatory-authority-correspondence-and-breach-filing-archive-ui-in-figma/) FIL-882 bundle
├── Update path (post-publish):
│   ├── Minor typo → v3.1 with changelog row
│   ├── Material fact change → v4 · Requires legal re-approval · Optional re-notify workflow
│   └── Retire page → Redirect to [trust center](/designing-trust-center-and-security-documentation-ui-in-figma/) after 24 months
└── Audit: published_by · published_at · diff from v2 → v3

Verdict: Treat FAQ updates like regulated content releases—version, approve, and archive, not a CMS quick edit during an active investigation.


Comparison: notice landing page vs adjacent surfaces

SurfaceFocusThis UI adds
Individual notificationEmail/SMS/in-app deliveryStable URL with full FAQ depth
Status pageService uptime and incident timelineData-breach-specific Q&A, not component status
Trust centerEvergreen security postureIncident-scoped notice with expiry
Remediation offersEnrollment flowsFAQ explains why monitoring is offered
Call center scriptsAgent-guided answersFAQ is source of truth agents read from

Handoff checklist (Dev Mode)

  • NoticeLandingPage — incident_id, version_id (NL-*), locale, hero_summary, published_at, retired_at, canonical_url.
  • FaqBlock — block_id, question, answer_richtext, jurisdiction, required, sort_order, locale.
  • NoticeVersion — version_id, incident_id, changelog, approval_chain[], snapshot_html_hash, linked_campaign_ids[].
  • NoticeCta — cta_type (eligibility, monitoring, support), label, destination_url, analytics_event_name.
  • LocaleVariant — parent_version_id, locale, translated_blocks[], fallback_locale.
  • Accessibility — Heading hierarchy h1 → h2 → h3; accordion keyboard support; PDF generation endpoint.

Common mistakes

MistakeWhy it hurtsFix
FAQ duplicates email copy without versioningDrift between channelsSingle canonical URL; email links out
Forensic detail in FAQHelps attackers; re-traumatizes usersCategory-level descriptions only
Login required to read noticeBlocks Art. 34 accessPublic URL with optional signed eligibility check
Status page contradicts noticeErodes trustSingle editorial owner; cross-review before publish
No locale variants for EU segmentLanguage compliance gapLinked components per individual notification segment
Search sends queries to third-party analyticsPrivacy violation on breach pageOn-page search index only
Retire notice without redirectBroken links in old emailsRedirect to trust center or archived PDF
Agents invent answers not in FAQInconsistent guidanceLink to call center script UI synced to FAQ version

  1. Draft hero summary and required FAQ blocks after privacy triage confirms high-risk individual notification.
  2. Run legal and comms approval on plain-language copy; enable jurisdiction-specific blocks only when confirmed.
  3. Publish notice landing page before or simultaneous with individual notification IND-* send.
  4. Link remediation CTAs when credit monitoring offer is approved.
  5. Export version snapshot to regulatory archive and sync call center scripts.
  6. Monitor analytics aggregates and expand FAQ blocks based on support ticket themes—not individual browsing data.

FAQ

Should the notice page replace the status page?

No. Status page covers service availability; notice landing page covers personal data impact. Cross-link both; do not merge into one page.

How long should a notice page stay live?

Design for 12–24 months minimum, then redirect to an archived PDF on the trust center. Jurisdiction may require longer retention of what was published, not necessarily a live URL.

Can we personalize the FAQ per user?

Carefully. Show eligibility-specific CTAs after a signed token check—do not put names or account details in the public URL.

What if facts change after publish?

Create v4 with changelog, re-run legal approval, and trigger supplemental notification if the change is material (new data category affected).

PDF vs HTML notice?

Offer both. HTML for accessibility and updates; PDF snapshot for users who want a downloadable record tied to NL-* version.


Next steps

Share on X

§ Keep reading

Related guides.