figma guide

Designing notification preferences and communication settings UI in Figma: channels, toggles, and compliance

Design notification preferences UI in Figma with email, SMS, and push toggles, marketing vs transactional categories, unsubscribe flows, and Dev Mode specs for account settings.

Published
Updated
Jul 04, 2026
Read time
7 min
Level
Beginner

Quick answer

Notification preferences let users control which messages they receive—marketing emails, order updates, SMS alerts, and push notifications—without disabling legally required transactional mail. Design a settings page or modal grouped by category (Orders, Marketing, Account security) with per-channel toggles (email, SMS, push). Transactional notifications (receipts, shipping) should be on and non-disableable with clear copy explaining why. Marketing toggles need explicit opt-in/opt-out, save confirmation, and a link to one-click unsubscribe from emails. Start from the Figma guides hub and pair with the account dashboard, login registration, and forms guides.


Who this is for

  • Product designers building account settings, preference centers, and email footer unsubscribe flows.
  • CRM and lifecycle teams aligning UI with CAN-SPAM, CASL, and GDPR consent rules.
  • Engineers syncing preference APIs with ESPs (Klaviyo, Braze, etc.) and push providers.

Settings surface comparison

SurfaceWhen to useTrade-off
Account settings pageLogged-in preference managementCanonical, bookmarkable
Dedicated preference centerEmail footer ?token= linksWorks without login
Registration opt-in checkboxInitial marketing consentMust sync to settings page
Modal after permission promptPush notification OS prompt follow-upEasy to dismiss—low retention
Inline checkout checkboxOne-time promotional opt-inDo not replace full settings

Verdict: maintain one NotificationPreferencesPanel component used on the account settings route and on the tokenized preference center (layout may differ slightly).


NotificationPreferencesPanel anatomy

PartSpecNotes
Page title”Notification preferences” or “Communication settings”Under account nav
Category sectionsOrders, Marketing, Account, Optional SMSAccordion or stacked cards
Channel rowLabel + description + toggleEmail / SMS / Push per row
Transactional lockToggle disabled + lock icon”Required for your orders”
Save barSticky on mobile when dirty”Save changes” + “Cancel”
Success toast”Preferences updated”After save
Unsubscribe allDestructive text link at bottomMarketing only—not orders
NotificationPreferencesPanel
├── Variant: context=accountSettings | emailFooterToken
├── Variant: state=default | dirty | saving | saved | error
└── Layers:
    ├── PageHeader
    ├── CategorySection (repeat)
    │   ├── CategoryTitle
    │   └── PreferenceRow (repeat)
    │       ├── RowLabel
    │       ├── RowDescription
    │       ├── ChannelToggle (email|sms|push)
    │       └── LockedBadge (transactional)
    ├── SaveBar
    ├── UnsubscribeAllLink
    └── SuccessToast

Use toggle switches for on/off—not ambiguous checkboxes without labels.


Category and channel matrix

CategoryEmailSMSPushUser can disable?
Order confirmationsoptionaloptionalEmail: No (transactional)
Shipping & delivery✓ commonEmail: No; SMS/push: Yes
Back in stockoptionalYes—all channels
Promotions & salesoptionalYes—all channels
Cart abandonmentrareoptionalYes
Account securityoptionaloptionalEmail: No (password, verify)
Loyalty & rewardsoptionalYes
Product recommendationsoptionalYes

Verdict: never let users disable order receipts or security alerts via marketing-style toggles—show them as locked rows with explanation copy.


Registration vs settings consistency

TouchpointUIMust sync to
Sign-up marketing checkboxUnchecked by default (CASL/GDPR regions)Marketing email toggle
Guest checkout emailNo marketing pre-checkN/A until account created
Post-purchase accountOptional opt-in on create formMarketing toggle
Email footer unsubscribeOne-click or preference centerSame API as settings page

If registration shows “Send me deals and new arrivals,” the account settings Promotions row must reflect that state on first login. Cross-link guest checkout opt-in patterns.


Users arriving from “Manage preferences” in an email may not be logged in.

ElementSpec
HeaderBrand logo + “Email preferences for j•••@example.com”
No account navSimpler layout—no sidebar
Same categoriesReuse CategorySection components
SaveImmediate save per toggle or explicit save bar
Sign in CTA”Sign in for more settings” link to login
Unsubscribe all marketingProminent at bottom
PreferenceCenterToken
├── Variant: tokenValid | tokenExpired
└── Layers:
    ├── BrandHeader
    ├── EmailMasked
    ├── NotificationPreferencesPanel (embedded)
    └── TokenExpiredMessage (conditional)

Design token expired state: “This link has expired—sign in to update preferences.”


Push and SMS-specific UI

ChannelExtra UINotes
Push”Enable in device settings” when OS deniedLink to browser/app settings
PushPreview of notification typesOptional illustration
SMSPhone number display + verify badgeLink to verify flow
SMS”Message and data rates may apply”Legal footnote
SMSDisable if number unverifiedGray out SMS toggles

SMS opt-in often requires double opt-in—design a confirm screen after enabling SMS marketing, similar to email verification.


Save, undo, and error states

StateUI
DefaultToggles reflect server state; save bar hidden
DirtySticky save bar appears; unsaved dot on nav item
SavingButton spinner; toggles disabled
SavedToast + save bar hides
ErrorInline banner “Couldn’t save—try again” + retry
OptimisticOptional instant toggle with rollback on fail

Avoid auto-save on every toggle unless your API is fast and idempotent—explicit Save changes reduces accidental opt-outs.


Mobile layout

PatternSpec
Stacked rowsLabel above toggle, full width
Sticky saveFixed bottom bar when dirty=true
Section spacing24px between categories
Touch targetsToggle + label row min 48px height
Account navCollapse to sidebar drawer on small screens

At 375px, put description text below the label—not beside the toggle—to avoid cramped two-column rows.


Handoff checklist

ItemDev Mode annotation
Preference APIPATCH /account/notifications field map
Transactional flagslocked=true on server—ignore client disable
ESP syncKlaviyo/Braze list IDs per category
Legal regionsDefault marketing off in CA/EU
Token TTLPreference center link expiry (e.g. 30 days)
Analyticspref_marketing_off, pref_save_success, pref_unsubscribe_all
a11yToggle associated with <label>; section headings as h2
Unsubscribe one-clickRFC 8058 one-click POST for marketing emails

Document which categories map to which email templates in Dev Mode descriptions—not only in external docs.


Common mistakes

MistakeWhy it hurtsFix
One master “Emails off” toggleBlocks order confirmationsSplit transactional vs marketing
Pre-checked marketing on sign-upLegal risk in CASL/GDPRDefault off where required
No save confirmationUsers unsure if it workedToast on success
Settings ≠ email footer centerInconsistent opt-out stateOne API, two layouts
Hiding SMS legal copyCompliance issuesFootnote on SMS rows
Push toggle when OS deniedBroken UXLink to system settings
No token expired stateDead-end from old emailsSign-in fallback
Dark-pattern unsubscribeTrust + legal exposureClear “Unsubscribe from marketing”

  1. Audit message types with CRM—map to categories and channels.
  2. Build PreferenceRow + channel toggles with locked transactional variant.
  3. Compose NotificationPreferencesPanel with Orders, Marketing, Account sections.
  4. Add registration checkbox state sync to marketing row.
  5. Design tokenized preference center for email footer links.
  6. Spec SMS/push edge cases (unverified phone, OS denied).
  7. Prototype dirty save bar and success toast on mobile.
  8. Cross-link account dashboard and login opt-in.

FAQ

Separate page or tab under Account?

Use a dedicated settings page linked from account nav—easier to deep-link from emails than a hidden tab.

Granular product category opt-outs?

Add only if CRM supports it—otherwise keep Promotions as one row to avoid false precision.

Unsubscribe all vs disable marketing toggle?

Unsubscribe all marketing should set the same backend flag as turning off Promotions + Recommendations + Abandonment rows.

Show notification preview?

Optional for push—small phone mockup with sample copy helps users understand toggles.


Next steps

Share on X

§ Keep reading

Related guides.