Skip to main content
Ticket templates give requesters a pre-built form with the questions your team needs. This guide is for MSP staff. It covers creating a template, configuring PSA defaults and access, adding sections and fields, branches, and import and export. For a short first template, follow Create and preview a ticket template. Company users should read Understand your available request templates.

Before you start

  • Your role needs permission to write or manage ticket settings (Settings > Tickets).
  • If you use an external ticketing system, connect your PSA integration first. PSA defaults only appear after it is connected.
  • Set up ticket categories under Settings > Tickets > General if you want to group templates.

Create a template

1

Open Templates

Go to Settings > Tickets > Templates.
2

Click New Template

Click New Template at the top right.
3

Fill in Template Details

Under Template Details, enter:
  • Template Name, such as “New Employee Setup”
  • Category (or leave No Category)
  • Description, a short note on when to use the template
  • AI Description, which tells the AI Assistant when to pick this template. Click Generate to write one from the template’s fields. Generate works after you enter a name and add at least one field.
  • The Template is active and available for use switch. New templates start active. Turn it off while you draft.
4

Set PSA Integration Settings

Open PSA Integration Settings and pick the defaults for tickets created from this template. See Set PSA defaults.
5

Add sections and fields

Under Sections & Fields, click Add Section, then Add field in each section. See Add sections and fields.
6

Preview the form

Click Preview in the page header and try the form. Reset clears your preview answers. Click Close, or click outside the panel, to return to editing.
7

Save Template

Click Save Template and wait for “Template created successfully”. The editor stays open on the new template, so you can keep making changes.
The editor shows each setting group as a collapsible section. In order, they are Template Details, PSA Integration Settings, Subject Configuration, Priority Override (when a PSA is connected), Flow Webhook (JSON), TimeZest appointment scheduling (when TimeZest is connected), Company Visibility, Role Access, Branches and Import / Export (after the first save), then Sections & Fields.

Set PSA defaults

Open PSA Integration Settings to choose defaults for tickets created from this template. The fields depend on your connected PSA.
  • Service Board
  • Default Priority
  • Default Status
  • Default Ticket Type
  • Default Ticket Subtype
Two controls apply to all providers:
  • Use Client’s PSA Defaults. When on, tickets use the board, priority, and status from the company’s own settings instead of the template defaults.
  • Clear PSA defaults. Removes every default on this template so the tenant or client settings take over.
If a default status is not active on the selected board, the editor warns you and blocks saving until you pick a valid status.

Set a subject

Open Subject Configuration.
1

Enter a Subject Template

Type the subject, for example New Employee: {{employee_name}} - {{department}}. Use Variables to insert a field’s value at the cursor. Ticket Context variables include Reporting User and Company Name.
2

Lock the subject (optional)

Turn on Lock subject (users cannot modify it). Requesters then see the subject marked Auto-generated and cannot edit it.
3

Check the result

The Preview line shows the subject with sample values.

Control who can use a template

Company Visibility

Open Company Visibility in the editor to choose which companies can use the template.
1

Set the default for new companies

Under New Companies, choose Enabled (the default) or Disabled. This sets the template’s visibility for any company added later. When the form has branches, the setting is called New companies get and offers Main form, each branch, or No form. See Choose what new companies get.
2

Search for companies

Use Search companies… to find a company, then use its switch to turn the template on or off.
3

Use bulk buttons if needed

Enable All and Disable All change every company. On the main form, Enable All leaves companies that use a branch on their branch.
4

Save

Click Save Template. If some existing companies have no form while new companies get the main form, a “New companies will receive this template” prompt appears. Click Save Anyway to accept it, or Cancel to go back.
Each company uses one version of a form: the main form, one branch, or none. On the main form, companies that use a branch show the branch name next to their switch.

Role Access

Open Role Access to limit the template to certain company roles.
  • With no roles selected, the template is Open and every role can use it.
  • Turn a role on to switch to Restricted. Only the selected roles can use the template.
  • Click Allow All Roles to go back to open access. You cannot remove the last selected role. Use Allow All Roles instead.
  • Branches inherit role restrictions from the parent template. Edit them on the parent.
Role Access limits who sees the template. It does not give anyone permission to create tickets.

Company Gating (Types and Industries)

To limit a template to groups of companies, use the Groups column in the Templates list.
1

Open Company Gating

Go to Settings > Tickets > Templates. In the template’s row, click the link in the Groups column (it shows None or a count such as “2 restrictions”). The Company Gating dialog opens.
2

Pick Types

Under Types, turn on one or more company groups. Types are the company groups you create under Settings > Companies. Click Clear All to remove every type.
3

Pick Industries

Under Industries, turn on one or more industries. The list comes from the industry set on your companies. Set it under Settings > Companies. ConnectWise companies fill it from the PSA market field.
4

Close the dialog

Each switch saves as you click it. The template now appears only for companies that match.
How gating combines:
  • Types and industries are ANDed. A template gated to the type “Managed Services” and the industry “Healthcare” shows only for companies that match both.
  • Inside one list, values are ORed. Pick three types and any company in any of the three matches.
  • Industry matching ignores capitalization, so “healthcare” and “Healthcare” match.
  • A template with no gating is available to every company that is not switched off in Company Visibility.
Gating applies on the New Ticket page, in the AI Assistant, and in the browser extension. If you remove a company from a group, the template stops showing for it on the next page load. Existing tickets are not affected.

Create a branch

A branch is a version of a form that any set of companies can share. Use one when some clients need different fields, labels, or PSA routing. For example, two clients with the same approval process can share one branch while every other company keeps the main form. Each company uses one version of a form: the main form, one branch, or no form.
1

Open Branches

Open the main form, then expand Branches. This section appears after the form has been saved. It does not appear on a branch.
2

Click Create Branch

Click Create Branch. The New branch dialog opens.
3

Name the branch

Enter a Branch Name, such as “Enterprise Clients”. The name is required and shows in the Templates list and in each company’s form choices.
4

Choose companies (optional)

Under Companies (optional), select the companies that should use this branch. Chosen companies move onto it from the main form or from any other branch. You can leave this empty and add companies later.
5

Click Create & Edit

Click Create & Edit. MSPortal copies the form, with its fields, rules, and PSA defaults, and opens the copy for editing.
6

Edit the branch

Change fields, labels, help text, defaults, and PSA routing, then click Save Template.
A branch is a full independent copy. Only companies on the branch see it, its version history starts fresh, and later changes to the main form do not sync to it. A branch of an inactive form starts inactive. Turn on Template is active and available for use on the branch when it is ready.

Move companies onto or off a branch

You can change which version a company uses in three places:
  • On the branch. Open the branch and expand Company Visibility. Turn a company on to move it onto this branch. Turning one off puts it back on the main form. Click Save Template to apply the moves.
  • On the main form. In Company Visibility, turning a company on moves it to the main form. Turning it off leaves it with no form. Click Save Template to apply the moves.
  • On the company. Go to Settings > Companies, open the company, and select the Ticketing tab. Under Available Templates, each form with branches has a select with Main form, each branch, and Off. Inactive branches are marked (inactive). Forms without branches keep an on and off switch. Each change saves right away.

Choose what new companies get

On the main form, open Company Visibility. When the form has branches, New companies get sets the version that companies added later receive: Main form, a branch, or No form. This applies only to companies added later. It never moves companies that already exist. The branch you choose shows a New companies badge in the Branches section. Set this on the main form. A branch’s Company Visibility shows “New companies are set on the main form.”

Edit or delete a branch

Manage templates in the list

The Templates list at Settings > Tickets > Templates shows these columns: Name, Category, Companies, Roles, Groups, Branches, PSA Board, and Status.
  • Click a Companies, Roles, or Groups value to open Company Access, Role Access, or Company Gating.
  • Use the row’s action menu for Edit, Copy Permalink, Duplicate, Export / Import, and Delete.
  • Select several rows for bulk actions: Set Category, Company Access, Role Access, Set Active, Set Inactive, PSA Settings, Generate AI Descriptions, and delete.
  • Check for Issues scans every template against your PSA configuration and lists problems that would make a submission fall back to email.
  • Import creates a template from a file.

Import and export a template

Open Import / Export in the editor (after the first save), or use Export / Import in a row’s action menu. Export
Click Export JSON for a complete backup: sections, fields, rules, PSA defaults, and optionally company branches. Use it before major changes or to share a template between tenants.
Import
Click Select JSON File. Choose an Import Mode:
  • Replace existing (overwrites all content)
  • Create new (fails if key exists)
Options: Generate New Key adds a timestamp to avoid conflicts. Include Branches imports company branches and needs matching companies.Importing over an existing template shows a Changes Preview with added, modified, and removed sections and fields. Review it, then click Update Template. Company visibility, role settings, and branches are kept.
Export a JSON backup before you make major changes. You can import it later to restore the old version.

Add sections and fields

1

Add a section

Under Sections & Fields, click Add Section. Click the section title to rename it. Use a section for each group of questions, such as Employee Information, Hardware, or Access.
2

Add a field

In the section, click Add field. Enter the Field Label and pick a Type.
3

Set the requirement

Set Required to Optional, Required, or Conditional. See Show or require a field conditionally.
4

Add guidance and defaults

Add Placeholder text, Help Text, and a Default Value if needed. For dropdown, multi-select, and radio fields, click Add Options (or Edit Options) to list the choices.
5

Reorder

Drag sections and fields to reorder them. Click Collapse All to fold the sections while you organize, and Expand All to open them again.
The field Key is generated from the label and cannot be changed after the first save. Keys must be unique in a template. Use Use in variables as to see the name to use in subject variables.

Send an answer to a PSA field

With ConnectWise, Autotask or Halo PSA connected, a field’s editor can also write its answer to a ticket UDF in your PSA. Pick the UDF in the field named after your PSA, such as Autotask PSA field, beside Short label for tickets and Default Value. Use it to record who a request is for, separately from the submitter. See Send template answers to PSA fields. Field types

Where pickers get their records

Every picker lists records for the company the ticket is for. If a picker is empty, check that the integration is connected and has synced for that company.

Show or require a field conditionally

A rule has the form When field equals value then show this field or make required.
1

Open the field

Click the field row to expand its editor.
2

Choose what the rule does

To show the field only sometimes, check Only show this field when another field has a specific value. To make it required only sometimes, set Required to Conditional.
3

Build the rule

Under When, pick a trigger field, an operator such as equals, not equals, includes, or is checked, and a value. Trigger fields must come earlier in the template and be a checkbox, dropdown, multi-select, radio, priority, impact, or urgency field.
If no earlier field qualifies, the editor tells you to add a checkbox, dropdown, radio, priority, impact, or urgency field above to use as a trigger. A conditional field with no trigger blocks saving.

Set a priority override

If a PSA is connected, open Priority Override to raise the PSA priority automatically when conditions are met.
1

Turn it on

Check Enable Priority Override.
2

Add a rule

Click Add Rule. Pick When field, an Operator, and a value. For a time-based operator, enter Hours. Then pick the priority under Override to.
3

Order the rules

Rules run from top to bottom and only the first match applies. Put the most urgent rule first, for example 24 hours before 72 hours.

Embedded Templates

The Embedded Template field type lets one template pull in another template’s questions inline, gated by the parent field’s conditional logic. Each embedded template fires its own separate ticket on submit using its own PSA routing.
Use embedded templates when a single user request can spawn multiple PSA tickets that need different routing. Classic example: a “New Hire” parent template asks “Will this person need a new computer?” and “Will this person need software access?” Each “Yes” reveals an embedded template (New Computer Request, Software Access Request) and each lands a separate ticket on its own service board with its own approver workflow.

How Embedded Templates Behave

Adding an Embedded Template Field

1

Add a Field

Click Add field in the section that should host the embed, then click the field row to expand the editor.
2

Set the Type to Embedded Template

Open the Type dropdown and select Embedded Template.
3

Pick the Child Template

A teal Embedded template picker appears below the field’s Help Text. Choose the template you want to embed. The picker lists every other active template in your tenant. Templates that already contain their own embedded templates are disabled in the picker (depth-1 cap, see below).
4

Configure the Conditional (Recommended)

Check Only show this field when another field has a specific value, then build the rule so the embed only renders when a specific parent field has the right value. For example: When “Need a new computer?” equals “Yes”. Without a rule, the embed always renders and always fires a child ticket.
5

Save

Click Save Template. MSPortal validates the embed reference before saving and surfaces clean inline errors if anything is wrong (missing target, cross-tenant reference, depth-1 violation).

The Depth-1 Cap

An embedded template cannot itself contain embedded templates. This is enforced at three layers so it cannot be bypassed:
  • The picker disables any candidate template that already has an embed reference, with a (contains embeds) label so admins know why
  • The save flow blocks the upsert with a clear inline error if the picker is bypassed
  • The runtime renderer drops nested embeds defensively, surfacing a soft-warning card so the issue is visible
If you need a deeper hierarchy, model it with conditional fields inside the embedded template instead of trying to nest a third level. Conditional fields support arbitrary depth and don’t change the ticket count.

Embedded Templates and PSA Routing

Each embedded template is a normal ticket template, so all of its PSA settings apply when the embed fires:
  • Service board / queue: the embed’s default_board is used. If the parent goes to “Service Desk” and the embed’s default board is “Procurement”, the parent ticket lands on Service Desk and the embed lands on Procurement.
  • Priority and status: the embed’s default_priority and default_status are used.
  • Ticket type / subtype / category: the embed’s defaults are used.
  • Halo Category / Impact / Urgency: the embed’s Halo-specific routing is used.
  • Use client’s PSA defaults toggle: if the embed has this toggle on, the embed reads board/priority/status from the client’s company-level defaults instead of the embed’s own template defaults.
  • Branches on the embed: if the parent’s company uses a branch of the embedded template, the branch’s settings apply.
ConnectWise specifically: the embed’s default status must be active on the embed’s default board. If they don’t match, the embed throws a clear error like “Template status X is not active on the selected ConnectWise board” and the child ticket fails. The parent ticket still succeeds. Verify each embed’s board+status combination in the editor’s PSA Integration Settings.

Attachments Inside Embeds

File Upload, Screenshot, and Attachment fields placed inside an embedded template attach their files to the embed’s PSA ticket, not the parent’s. This lets you capture supporting documents per child request:
  • Parent: “New Hire” template, no attachments
  • Embed 1: “New Computer Request”, attach the approved hardware quote
  • Embed 2: “Software Access Request”, attach the user’s training certificate
Each PSA ticket receives only the attachments uploaded to its corresponding form section.

Form Preview Renders Embeds

The Form Preview panel (click Preview in the page header) renders embedded templates inline as teal-bordered sub-cards. The preview runs the embed’s own conditional engine against the values you fill in, so you can verify show/hide behavior before saving. If the embed reference can’t be resolved (deleted target, depth-1 cap drop, cross-tenant), the preview shows a clear warning instead of silently rendering nothing.

What Happens on Submit

When a user submits a parent ticket form:
  1. The parent ticket is validated and created in the PSA first.
  2. For each embedded template whose parent field’s conditional is satisfied, MSPortal fires a separate submitTicketFromTemplate call using the embed’s templateId.
  3. Each child ticket is created with its own routing, attachments, and “Related to ticket #N” prefix on the description.
  4. After the embed loop completes, MSPortal posts a single internal note on the parent ticket summarizing each child:
    • Successes with their PSA ticket numbers
    • Embeds that fell back to email (when the PSA call failed)
    • Embeds that failed to create (with the error so support can manually retry)
  5. The submitter sees a toast indicating how many related tickets were created, fell back, or failed.
If only some embeds succeed, the parent ticket is still created and tracked. Use the parent’s summary note to find which embeds need manual follow-up.

Validation Errors When Saving

When you save a template with embedded fields, MSPortal validates each embed reference and shows clean inline errors next to the offending field if anything is wrong: The error appears as a red banner inside the embed picker card and clears optimistically as soon as you pick a different template.

Offer appointment scheduling

If TimeZest is connected, open TimeZest appointment scheduling to let requesters pick a time after the ticket is created.
1

Turn it on

Check Offer Schedule Appointment for this template.
2

Choose the TimeZest settings

Pick the TimeZest integration, the Appointment type, and the Scheduling resources. You can select more than one resource only with TimeZest Professional.
3

Save

Click Save Template. Requesters then see Schedule appointment on the form. They create the ticket first and then continue to TimeZest.
Appointment scheduling is not available on webhook-only templates, because no PSA ticket is created. See Flow Webhook Recipient for the Flow Webhook (JSON) section.

Use AI to design a template

1

Open the AI Template Designer

Click the floating AI button on the right side of the editor.
2

Describe the template

Type what the template should do. For example: “Create a template for new employee onboarding that captures hardware needs, software requirements, and access permissions.”
3

Review the proposal

Click Review Template Changes to see Suggested Template Changes. Accept the ones you want and apply them. A “Changes applied to the template” message confirms it. Use Undo last changes if you change your mind.
4

Refine

Ask for more, such as “Add a section for emergency contacts”. The designer builds on the current draft.
5

Save

AI changes only edit your draft. Click Save Template to keep them.

Activate and verify a template

Choose multi-select defaults with the Default Value checkboxes. The Form Preview starts with the configured defaults, and Reset restores them after testing. All fields, including embedded fields, use their configured conditions to decide when they appear in the form and the preview.
1

Review the template

Check every section, field, PSA default, and access setting.
2

Save as inactive first (optional)

Turn off Template is active and available for use, click Save Template, and test with the preview.
3

Activate

Reopen the template, turn the switch on, and click Save Template again. You can also use Set Active in the Templates list.
4

Verify availability

Open Tickets > New Ticket for the intended company and confirm the template appears. Preview does not submit a ticket.

Best practices

Name templates so requesters can pick the right one. Include the purpose, such as “Password Reset - Standard” and “Password Reset - VIP”.
Show a field only when it matters. For example, show “Manager Approval” only when the request is over a budget.
Save the template as inactive, preview it, and activate it when the fields capture the right information.
Create a branch only for significant differences, and let clients with the same needs share it. Conditional fields handle minor variations.
Use Embedded Template fields when one request should create several PSA tickets with different routing. For variations that share routing, use conditional fields in one template.
Each embed’s board, priority, status, and type must be a valid PSA combination. For ConnectWise, the status must be active on the chosen board. Preview each conditional path and review the embedded template’s PSA Integration Settings before you go live.

Troubleshooting

Frequently asked questions

Go to Settings > Tickets > Templates and click New Template.
No. Preview only shows the form. It does not test PSA creation, webhooks, embedded tickets, or scheduling.
No. With no roles selected, every role can use the template. Turn off Template is active and available for use instead.
Keys are locked after the first save so existing tickets and subject variables keep working. Change the label or help text instead.
No. A branch is an independent copy. Edit each branch separately.

Ticket Settings

Configure categories, defaults, and ticket behavior

Create a ticket with AI

Use AI to create tickets from a description

Import/Export Settings

Bulk import and export data

ConnectWise Integration

Set up PSA integration for ticket sync

Send answers to PSA fields

Write template answers to ticket UDFs