Signatures deprecated
Signatures
Mail signatures support raw signature templates, managed signatures, and compose-time placeholders.
Placeholders are rendered only when a signature is inserted in compose. In settings, the raw template stays visible and editable.
Placeholder syntax
Basic placeholder:
{{ firstName }}
Placeholder with explicit format:
{{ company.website | link }}
Supported formats:
| Format | Result |
|---|---|
text | Escaped text output. This is the default. |
link | HTML link, adds https:// if no protocol is present. |
image | HTML image tag. |
mailto | Mail link. |
tel | Telephone link. |
Supported fields
The following placeholders are supported directly from user profile data:
Names
| Placeholder | Source |
|---|---|
{{ firstName }} | first_name |
{{ secondName }} | second_name |
{{ lastName }} | last_name |
{{ fullName }} | Derived full name |
{{ suffix }} | suffix |
{{ title }} | title |
Company / job
| Placeholder | Source | Default format |
|---|---|---|
{{ position }} | position | text |
{{ department }} | department | text |
{{ room }} | room_number | text |
{{ roomNumber }} | room_number | text |
{{ company }} | company | text |
{{ url }} | url | link |
Communication
| Placeholder | Source | Default format |
|---|---|---|
{{ email }} | email1 | mailto |
{{ email1 }} | email1 | mailto |
{{ phone.cell }} | cellular_telephone1 | tel |
{{ phone.mobile }} | cellular_telephone1 | tel |
{{ phone.home }} | telephone_home1 | tel |
{{ phone.work }} | telephone_business1 | tel |
{{ fax }} | fax_business | tel |
Home address
| Placeholder | Source |
|---|---|
{{ address.home.street }} | street_home |
{{ address.home.code }} | postal_code_home |
{{ address.home.postalCode }} | postal_code_home |
{{ address.home.city }} | city_home |
{{ address.home.state }} | state_home |
{{ address.home.country }} | country_home |
Work address
| Placeholder | Source |
|---|---|
{{ address.work.street }} | street_business |
{{ address.work.code }} | postal_code_business |
{{ address.work.postalCode }} | postal_code_business |
{{ address.work.city }} | city_business |
{{ address.work.state }} | state_business |
{{ address.work.country }} | country_business |
Configured placeholder data
Additional placeholder values can be configured under:
io.ox/mail/signatures/data/**
These values are useful for company-wide data that should not come from the user profile, for example website, logo, hotline, legal text, or campaign links.
Examples:
io.ox/mail:
signatures:
data:
company:
website: portal.example.test
email: info@example.test
phone: +49 123 456789
logo: https://example.test/logo.png
legal:
disclaimer: Confidential. Internal use only.
campaign:
spring:
url: https://example.test/spring
This can be used in signatures like:
<p>{{ fullName }}</p>
<p>{{ position }}</p>
<p>{{ email }}</p>
<p>{{ company.website | link }}</p>
<p>{{ company.phone }}</p>
<p><img data-src="{{ company.logo }}"></p>
<p>{{ legal.disclaimer }}</p>
<p>{{ campaign.spring.url | link }}</p>
Notes: - company.website, company.email, company.phone, and company.logo have built-in default formats. - Other configured keys under company.*, campaign.*, or legal.* default to plain text unless a format is given explicitly. - Unknown placeholders remain unchanged so missing values stay visible.
Managed signatures
Administrators can provide centrally-managed signatures that appear in every user’s signature list. They are read-only and rendered with the user’s own contact data at compose time.
Enable the feature in the App Suite middleware:
io.ox/core//features/managedSignatures: true
Provide a signatures.yaml file in the mail assets directory (default /etc/mail-assets). The directory is mounted from a ConfigMap shared across all mail-assets features. See Signature Designer for the deployment setup.
File format
signatures.yaml is a YAML object map keyed by a stable identifier:
company_default:
title: Company Default Signature
insertion: below
content: |
<p>{{ fullName }}<br>{{ position }}<br>{{ company }}</p>
<p>{{ phone.work | tel }}<br>{{ email | mailto }}</p>
legal_notice:
title: Legal Notice
content: |
<p>{{ legal.disclaimer }}</p>
| Field | Required | Description |
|---|---|---|
title | No | Display name in the signature list. Falls back to the map key. |
content | Yes | HTML with {{ }} placeholders (see Placeholder syntax above). |
insertion | No | above or below quoted text. Falls back to the user’s default. |
Behavior
- Appear above user signatures in settings, in definition order, with a "Predefined" badge.
- Read-only — users cannot edit or delete them, but can pick them as default.
- Placeholders render at compose time; the settings list shows the raw
{{ }}template. - A missing or malformed
signatures.yamlresults in an empty list; no error is shown.
Managed templates
Administrators can provide centrally-managed mail templates that users can insert from the compose dropdown. They are read-only and rendered with the user’s contact data at insert time.
Enable the feature in the App Suite middleware:
io.ox/core//features/managedTemplates: true
Provide a templates.yaml file in the mail assets directory (default /etc/mail-assets). The directory is mounted from a ConfigMap shared across all mail-assets features. See Signature Designer for the deployment setup.
File format
templates.yaml is a YAML object map keyed by a stable identifier:
welcome:
title: Welcome Email
content: |
<p>Dear {{ fullName }},</p>
<p>Welcome to {{ company }}!</p>
<p>Best regards,<br>The {{ company }} Team</p>
| Field | Required | Description |
|---|---|---|
title | No | Display name in the template list. Falls back to the map key. |
content | Yes | HTML with {{ }} placeholders (see Placeholder syntax above). |
Behavior
- Appear above user templates in settings and in the compose dropdown, in definition order, with a "Predefined" badge.
- Read-only — users cannot edit or delete them.
- Placeholders render at insert time; the settings list shows the raw
{{ }}template. - A missing or malformed
templates.yamlresults in an empty list; no error is shown.