---
title: "Setting up Custom Compose Fields for the Outlook Add-in"
slug: "custom-compose-fields"
description: "Add dropdown, text, and checkbox fields to the Opensense Outlook Add-in pane: labels and values, padlock behavior, priority, and HTML template examples."
updated: 2026-07-22T17:40:32.000Z
canonical: "https://help.opensense.com/docs/custom-compose-fields"
---

> ## Documentation Index
> Fetch the complete documentation index at: https://help.opensense.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Setting up Custom Compose Fields for the Outlook Add-in

## Overview

Custom Compose Fields let admins add user-facing inputs to the Outlook Add-in pane: dropdowns, checkboxes, and free-text fields. Users fill them in while they compose an email, and the values populate specific fields in the signature template. Common uses include opt-ins, salutations, out-of-office messages, and role-based preferences.

You configure Custom Compose Fields in the Opensense portal, and code them into the HTML signature template. They don't store data in the user's core Opensense profile.


## Requirements and behavior

- Custom Compose Fields must be turned on in [Domain Settings](https://app.opensense.com/beta/manage/domain-settings/outlook) before you use them.
- They need the Outlook Add-in with Plain Text Block or Visual Preview turned on.

:::caution[Not compatible with Stamping]
Custom Compose Fields don't work with the Stamping deployment method. See [Comparing Outlook Add-in deployment methods](https://help.opensense.com/docs/deployment-mode-comparison).
:::

### Field labels and values

Each Custom Compose Field has two parts:

<div class="kb-deployment-compare kb-deployment-compare--plain">
  <div class="kb-deployment-compare__viewport" role="region" aria-label="Field label and field value" tabindex="0">
    <table>
      <colgroup><col class="kb-deployment-compare__feature-col"></colgroup>
      <thead>
        <tr>
          <th scope="col">Part</th>
          <th scope="col"><span class="kb-deployment-compare__method">What it is</span></th>
          <th scope="col"><span class="kb-deployment-compare__method">Format</span></th>
          <th scope="col"><span class="kb-deployment-compare__method">Example</span></th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <th scope="row">Field Label</th>
          <td>What the user sees in the add-in pane</td>
          <td>Can include capitals and spaces</td>
          <td>Salutations</td>
        </tr>
        <tr>
          <th scope="row">Field Value</th>
          <td>The variable name used in the HTML template</td>
          <td>All lowercase, with underscores in place of spaces</td>
          <td><code>salutation_custom</code></td>
        </tr>
      </tbody>
    </table>
  </div>
</div>

:::caution[Use unique field values]
Don't use default field names that already exist in user profiles, such as `name` or `title`. Use custom names, like `title_custom` or `title_1`, to avoid conflicts.
:::

### Padlock behavior

<dl class="kb-insights-summary">
  <div><dt>Unlocked</dt><dd>The field resets to blank on each new compose.</dd></div>
  <div><dt>Locked</dt><dd>The user's selection persists across future compose sessions on that device. Locking a field doesn't sync the selection to other devices.</dd></div>
</dl>

:::note[Selections don't sync between devices]
Checkbox, dropdown, and text selections are stored locally on each device. A user who composes email on both a desktop and a mobile device must set their preferences separately on each. Selections made on one device don't appear on another.
:::

## Assignment and priority

You can configure Custom Compose Fields at the domain level or the group level. When both apply to a user, this priority order decides which value is used:

1. User profile
2. Group level
3. Domain settings level

### Group level

Fields apply only to members of the group, once the group is assigned to a signature in [Routing](https://app.opensense.com/beta/signatures/routing). To add them, go to **Manage** > **Groups**, open the group, and use the **Add-in Custom Fields** section.

<img src="https://help.opensense.com/media/custom-20compose-201-a006ccea569d.jpg" alt="Edit Group page for a routed group, with an Add-in Custom Fields section holding a Salutations dropdown and its three options" width="540" height="706" loading="lazy" decoding="async">

### Domain settings level

Fields apply to all users scoped to the add-in. To add them, go to **Manage** > **Domain Settings**, and use **Custom Compose Fields Configuration** under **User & Signature Fields**.

![Domain Settings, User and Signature Fields, with Custom Compose Fields enabled and a configuration listing a dropdown, a checkbox, and a text field](https://help.opensense.com/media/custom-20compose-202-7844cb92f273.jpg)

## Field types

There are three field types: dropdown, text, and checkbox.

### Dropdown

A dropdown gives users a preset list of options. The first line sets the Field Label and the Field Value to reference in the HTML template. Each option then has its own label and value:

- **Label:** what appears in the add-in dropdown
- **Value:** what the HTML signature template uses

Use it for a region, a salutation, or a title variant.

![Custom Compose Fields Configuration with a Salutation dropdown (salutation_custom) and three options, beside the add-in's Compose Settings pane with the Salutations dropdown open](https://help.opensense.com/media/screenshot-202026-03-20-20at-2012-41-20-e2-80-afpm-78dbc3ab3491.jpg)

This example shows the salutation only when the user picks one:

```plaintext wrap
{% if salutation_custom != blank %}
<tr>
  <td valign="bottom" style="color:#379190;font-size:13px;font-family:Aptos, Arial;line-height:19px;white-space:nowrap">
    {{ salutation_custom }}
  </td>
</tr>
{% endif %}
```

### Text

A text field gives users a free-text input. The value is inserted wherever the field variable is coded in the HTML template. The Field Label names the text box in the add-in pane, and the Field Value is the variable, `{{field_value}}`, coded into the template. You can enforce a character limit in the HTML.

Use it for out-of-office messages or special instructions.

![Domain Settings with a Text field labeled Custom Text (custom_text), beside the add-in's Compose Settings pane with an empty Custom Text box](https://help.opensense.com/media/image-1774025597598-ba7a85b82ac2.png)

This example limits the text to 50 characters:

```plaintext wrap
<td valign="bottom" style="white-space:nowrap;max-width:50ch;overflow:hidden;text-overflow:ellipsis;">
  {{ custom_text | slice: 0,50 }}
</td>
```

### Checkbox

A checkbox gives users a true or false toggle. When it is checked, the field value is `true`, and the signature element renders. When it is unchecked, the value is `false`, and the element is hidden. The Field Label names the checkbox in the add-in pane, and the Field Value is the variable, `{{field_value}}`, used in the template.

Checkbox values are booleans, not strings, so you don't need to check for "true" or "false" in the HTML. If the checkbox is off, nothing renders.

Use it for a pronoun, headshot, or disclaimer opt-in.

![Custom Compose Fields Configuration with a Checkbox labeled Show Pronouns (show_pronouns), beside the add-in's Compose Settings pane with Show Pronouns checked](https://help.opensense.com/media/screenshot-202026-03-20-20at-2012-52-01-e2-80-afpm-d5f892634252.jpg)

This example shows the user's pronouns only when the box is checked:

```plaintext wrap
{% if show_pronouns %}
<tr>
  <td style="color:#010101;font-size:12.5px;font-family:Lato, Arial, Helvetica,sans-serif;white-space:nowrap">
    {{ pronouns }}
  </td>
</tr>
{% endif %}
```

## Best practices

- Always use unique field values, to avoid conflicts with existing user and group fields.
- Lock fields only when the selection must persist across compose sessions.
- When you assign custom field values at the group level, add an identifier to the group name to show that the group holds custom values. For example: `sales_custom_compose_fields`.


## What's next

- [Outlook Add-in overview](https://help.opensense.com/docs/outlook-add-in-overview-1)
- [Configuring the Outlook Add-in in Domain Settings](https://help.opensense.com/docs/clone-outlook-add-in-domain-settings-with-scenarios-and-best-practices)
- [Expected behaviors in routed Outlook Add-in deployments](https://help.opensense.com/docs/clone-outlook-add-in-routed-key-behaviors-and-nuances)
