---
title: Templates
summary: 'A saved set of user-field values applied to many users at once. The Override toggle next to each field decides whether the value is pushed or left alone.'
section: features
tags:
  - crud
  - telephony
  - management
updated: '2026-09-03'
---

> A **template** is a saved set of user-field values you apply to many users at once. Instead of editing each user one by one, you define the values on a template and apply it to a batch of users and groups.

## Overview

A template has two parts: the field values and a per-field **Override** toggle that decides whether each value is actually pushed.

## What it does

The **Override** toggle separates "this value is set on the template" from "this value should overwrite the target's value".

| Override state | What happens on apply |
|---|---|
| **On** | The template's value replaces the target user's value. |
| **Off** | The target user's current value is preserved. The template's value is ignored. |

Override is off by default on most fields. Use it liberally in the off state: the point of templates is to push the deltas, not the defaults. A focused template with three fields toggled on is easier to reason about than one with thirty.

## Choosing the targets

A template is applied to the users you name, the members of the groups you name, or - with the **Apply to all users** switch - to everyone on the PBX. Targets are resolved when you run the apply action, not when you save the template, so a group that gains a member, or a user created after the switch was turned on, is covered by the next apply without touching the template.

Turning the switch on hides the two target lists but keeps them: turn it off and the previous selection comes back.

Apply overwrites the marked fields on every target user with no per-user opt-out and no rollback, so confirm the targets and the override list first. Templates are batch operations, not standing policies: nothing is applied until you run the apply action.

## Applying

**Apply** on a template opens the preview page, which shows what the apply would change. The apply itself is confirmed there.

Small applies run while you wait and report the exact number of users changed. Past 20 targets the run is handed to a background worker instead, and the toast says it has started rather than that it has finished. Either way you land on the apply history with the run on it, and the **Last applied** column on the template list shows when the run finished and who started it.

### Preview

The list on the left shows every override that changes somebody, with the number of targets it actually changes: "20/48" means twenty of the forty-eight targets end up different. Overrides that turn a switch off for somebody carry a red dot. Overrides every target already matches are folded into one line at the bottom, which expands to list them.

Click an override to show only that field in the table; click it again, or **All fields**, to show everything. This filters the view only: **Apply** always writes every override on the template.

The table lists each person, then their changes under **Field**, **Currently** and **Will be**. Values are shown by type:

- switches as **Yes** / **No**
- choices by their label, as in the form
- groups, languages, tags and other lists as one badge per item, with removed items struck through and added items highlighted
- phone buttons position by position, with the positions that change marked on both sides

People the template changes nothing on are listed last, marked as unchanged. The first 100 people are listed; the counts cover every target. **Find a user** narrows the table by name.

**Apply** asks for a short confirmation that repeats the numbers: how many users, how many fields change, and any switches turned off, values removed or phone button layouts replaced. Existing values are overwritten; the apply history keeps what they were.

Only one template is applied at a time in a PBX. While another apply is queued or running, the preview says so, links to its progress and keeps **Apply** disabled; the same goes for **Retry**.

If the template is edited, or the set of users it targets changes, while your preview is open, applying is refused rather than writing changes you never reviewed. Reload the preview and check it again.

### History

**Apply history** on the template list records every run: when it was requested, who by, how many users it reached of how many it aimed at, and an outcome that carries the status, whether it ran immediately or in the background, and how long it took. A run that failed shows why underneath. A run no worker picked up within 30 minutes, or whose worker stopped partway, is marked failed automatically. On a failed run's page, **Retry** finishes it for the users it did not reach; users it already updated are skipped. Retry is not offered once the template has been edited since the run; apply the template again from its preview instead. The list can be filtered by status and by template. **Changes** on a run opens its detail, laid out like the preview: the same field list and user search, with each person's values **Before** and **After**. Users that were targeted but already matched the template are listed too, marked as unchanged.

> [!WARNING]
> A template with no Override toggled on does nothing on apply. Double-check before saving.

## See also

- [Users](users.md) - the target of every template apply. Each User-form field is mirrored on the template.
- [Groups](groups.md) - the membership source for group-targeted templates.

```yaml fields
name:
  label: Name
  tab: Template
  hint: 'Identifies the template in lists and on the Apply action. Use names that say what the template changes, like "Sales onboarding permissions" or "New hire defaults".'
type:
  label: Type
  tab: General
  hint: 'The entity type this template applies to (for example, User). Determines which fields are available for override.'
target_all_users:
  label: 'Apply to all users'
  tab: Template
  hint: 'Targets every user of this PBX, including users created after the template was saved. The target lists below are kept but ignored while this is on.'
targetUsers:
  label: 'Target users'
  tab: Template
  hint: 'The individual users this template will be applied to when you run the apply action.'
targetGroups:
  label: 'Target groups'
  tab: Template
  hint: 'The groups whose members this template will be applied to when you run the apply action.'
status:
  label: Enabled
  tab: 'Profile information'
  hint: 'Whether users should be active or disabled. Disabled users cannot log in or receive calls.'
language:
  label: 'Phone language'
  tab: 'Profile information'
  hint: 'The phone language for target users. Options: English, German, French.'
groups:
  label: Group
  tab: 'Profile information'
  hint: "The group to assign to target users. Overriding this replaces each user's current group."
tags:
  label: Tags
  tab: 'Profile information'
  hint: "Tags for categorization and filtering. Overriding this replaces each user's current tags."
locations:
  label: Locations
  tab: 'Profile information'
  hint: 'Physical locations associated with target users.'
languages:
  label: Languages
  tab: 'Profile information'
  hint: 'Languages spoken by target users. Used for routing calls to language-specific queues.'
voicemail_type:
  label: 'Voicemail type'
  tab: 'Call preferences'
  hint: 'The voicemail mode: Disabled, Internal, External, or Enabled (all calls).'
voicemail_destination:
  label: 'Voicemail destination'
  tab: 'Call preferences'
  hint: 'Where voicemail messages are delivered: Email only or Email and phone.'
show_caller_id_for_twinning_call:
  label: 'Show my company default number on twinning calls'
  tab: 'Call preferences'
  hint: 'Show my company default number when twinning (transferring) an incoming call to my mobile GSM number.'
allow_telephony:
  label: 'Allow telephony'
  tab: Permissions
  hint: 'Master switch for telephony. When off, users cannot make or receive calls.'
allow_call_forwarding:
  label: 'Allow call forwarding'
  tab: Permissions
  hint: 'When on, users can set up call forwarding rules.'
allow_dnd:
  label: 'Allow DND (Do not disturb)'
  tab: Permissions
  hint: 'When on, users can activate Do not disturb.'
allow_change_twinning_dest:
  label: 'Allow change twinning destination'
  tab: Permissions
  hint: 'When on, users can change their own twinning destination numbers from the Voxbi app.'
allow_sms:
  label: 'Allow SMS'
  tab: Permissions
  hint: 'When on, users can send and receive SMS messages.'
vip:
  label: VIP
  tab: Permissions
  hint: 'When on, VIP contacts can still reach users even when Do not disturb is active.'
send_missed_call_via_email:
  label: 'Send missed call via email'
  tab: Permissions
  hint: 'Send an email notification to this user when they miss a call.'
limit_email_missed_call_to_direct:
  label: 'Limit missed call emails to direct calls only'
  tab: Permissions
  hint: 'When enabled, missed call email notifications are only sent for calls that rang directly on this extension (not via call flow or twinning).'
allow_national_calls:
  label: 'Allow national calls'
  tab: Permissions
  hint: 'When on, users can make national outgoing calls.'
allow_eu_calls:
  label: 'Allow EU calls'
  tab: Permissions
  hint: 'When on, users can make outgoing calls to EU countries.'
allow_international_calls:
  label: 'Allow world calls'
  tab: Permissions
  hint: 'When on, users can make international (world) outgoing calls.'
allow_premium_numbers:
  label: 'Allow premium calls'
  tab: Permissions
  hint: 'When on, users can call premium-rate phone numbers.'
allow_anonymous_calls:
  label: 'Allow anonymous calls'
  tab: Permissions
  hint: 'When on, users can hide their caller identity when making outgoing calls.'
allow_default_pbxes_outgoing_phone_numbers:
  label: 'Allow default outgoing phone numbers'
  tab: Permissions
  hint: 'When on, the PBX-level default outgoing phone numbers are available to users.'
show_in_address_book:
  label: 'Show in address book'
  tab: Permissions
  hint: 'When on, users appear in the internal address book.'
allow_status_changer:
  label: 'Allow status changer'
  tab: Permissions
  hint: 'When on, users can change their presence status from the Voxbi app.'
allow_right_to_disconnect:
  label: 'Allow right to disconnect'
  tab: Permissions
  hint: 'When on, users can activate the right-to-disconnect feature to prevent calls outside working hours.'
extension_roaming:
  label: 'Extension roaming'
  tab: Permissions
  hint: 'When on, users can log in to any SIP device and use their own extension.'
allow_manage_voicemail_parameters:
  label: 'Allow voicemail changes'
  tab: Permissions
  hint: 'When on, users can change their own voicemail settings from the Voxbi app.'
concurrent_calls:
  label: 'Concurrent calls'
  tab: Permissions
  hint: 'When on, users can handle multiple calls at the same time.'
record_your_calls:
  label: 'Record your external calls'
  tab: Permissions
  hint: 'When on, all external calls are recorded.'
access_all_call_recordings:
  label: 'Access own call recordings and transcriptions'
  tab: Permissions
  hint: 'When on, users can access and listen to their own call recordings.'
record_your_internal_calls:
  label: 'Record your internal calls'
  tab: Permissions
  hint: 'When on, all internal calls are recorded.'
allow_in_call_recording:
  label: 'Allow in-call recording'
  tab: Permissions
  hint: 'When on, users can manually start and stop recording during an active call.'
callRecordingAllowedGroups:
  label: 'Access group call recordings and transcriptions'
  tab: Permissions
  hint: 'Groups whose call recordings the target users can access and listen to.'
allow_manage_global_contacts:
  label: 'Allow managing all contacts'
  tab: Permissions
  hint: 'When on, users can create, edit, and delete global contacts visible to everyone on the PBX.'
allowManageGroupContacts:
  label: 'Allow managing group contacts'
  tab: Permissions
  hint: 'Groups whose shared contacts users can create, edit, and delete.'
allowAccessToGroupContacts:
  label: 'Allow visibility to group contacts'
  tab: Permissions
  hint: 'Groups whose shared contacts users can view and search, without the ability to modify them.'
allow_grafana_access:
  label: 'Access to call analytics'
  tab: Permissions
  hint: 'When on, users can access the call analytics (Grafana) dashboard.'
roles:
  label: Roles
  tab: Permissions
  hint: 'Application roles assigned to target users. Roles determine which parts of the admin panel users can access.'
phoneButtons:
  label: 'Phone buttons'
  tab: 'Phone buttons'
  hint: "Phone buttons (BLF keys, speed dials, line keys) to push to target users. These replace the user's own buttons entirely when overridden - they do not merge."
integration_mappings:
  hint: 'Maps the template fields to matching fields in a connected integration, so data flows to the right place.'
```
