Skip to content

Profile — Signature

The Profile ▸ Persona ▸ Signature page renders your personal email signature from the template HR assigned to you (or your division, or the org default) merged with your Profile ▸ General contact details. The page is read-only — edits flow through HR via templates rather than per-user overrides.

Profile Signature — Acme Financial Group demo tenant

Standard PageHeader with the title Email Signature and a one-line description.

A small pill above the preview that shows how the template was selected for you:

SourceMeaning
Assigned by HRAn admin explicitly attached a template to your user record
Division defaultPicked from your division’s default template
Org defaultThe org-wide default template, used when no other applies

The badge also shows the template name in use, so you can reference it when talking to HR.

Two buttons sit to the right of the assignment badge:

  • Copy HTML — primary action; rich HTML payload + plain-text fallback in the clipboard. Click animates a checkmark on success and a toast confirms.
  • Copy plain text — a stripped, line-break-aware plain text version for clients that reject HTML (notably iOS Mail).

The HTML payload is sanitized via DOMPurify on render and again on copy as defense-in-depth. Server-side HTML escaping is the primary safety net.

A boxed prose-styled preview of the sanitized HTML signature. Updates whenever HR edits the template or your profile contact details change.

A tabbed panel below the preview with numbered step-by-step paste instructions for five email clients:

  • Gmail
  • Outlook Web
  • Outlook Desktop
  • Apple Mail
  • iOS Mail

Each tab includes a tip when relevant (e.g., Gmail strips external fonts; iOS Mail doesn’t accept HTML).

If neither the user nor their division nor the org has a template assigned, the page shows a centered empty state asking the user to contact HR. The copy buttons are hidden until a template is in place.

The render pipeline is:

template HTML (from Settings ▸ Signatures)
──▶ resolve placeholders against the user's profile
──▶ HTML-escape every substituted value (#108.1)
──▶ store the rendered HTML on the user record
──▶ return on /signatures/me

Substituted fields:

PlaceholderSource
{{full_name}}users.name_first + name_last
{{title}}employee_profiles.title
{{email}}users.email
{{phone}}employee_profiles.phone
{{headshot_url}}employee_profiles.headshot_url
{{org_name}}org.name
{{org_address}}org.address

When any of these fields change, the rendered signature is recomputed on the next request.

RoleView ownCopyEdit templates
Owner / Admin✓ (via Settings ▸ Signatures)
Member
Viewer

Templates are admin-managed; this page is the read-only render.

Every copy emits signature.copied (with format: html | text). Every template assignment emits signature.assigned from the admin side. Events surface in Settings ▸ Audit Log for admins.

SymptomMost likely causeFix
”No signature assigned”No template + no division + no org defaultAsk HR to assign or set a default in Settings ▸ Signatures
Copy HTML fails silentlyBrowser blocked clipboard writeAllow clipboard permission, or use plain text
Signature looks plain in GmailGmail strips external font stacksTest draft; ask HR to use web-safe fonts
iOS pastes plain textiOS Mail does not accept HTML in SettingsUse plain text on iOS or copy from a sent desktop email
Old details showingCached signature in email clientRe-paste from this page after every template/profile change
Avatar shows initialsNo headshot uploadedUpload one in Profile ▸ General ▸ Headshot