Prerequisites
- You must have “Manage Tickets” permission
- PSA integration should be configured if using external ticketing systems
- Categories should be set up in Ticket Settings
Creating a New Template
Navigate to Templates
Click New Template
Configure Template Details
- Template Name: A descriptive name (e.g., “New Employee Setup”)
- Category: Select from available categories
- Description: Brief explanation of when to use this template
- Active Status: Toggle whether the template is available for use
Template Configuration Sections
The template editor is organized into expandable accordion sections:Template Details
Configure the basic template information:PSA Integration Settings
Configure default PSA values for tickets created from this template:- ConnectWise
- Autotask
- Halo PSA
- Service Board: Select the board for tickets
- Default Priority: Set initial priority level
- Default Status: Set initial status
- Ticket Type: Select type classification
- Ticket Subtype: Select subtype (if applicable)
Company Visibility
Control which companies can see and use this template: Default Visibility Setting: At the top of the visibility section, configure the default behavior for new companies:- Enabled (default): New companies automatically have access to this template
- Disabled: New companies must be manually enabled
- Search for companies using the search box
- Toggle the switch to enable or disable access
- Companies with branches are highlighted with a branch indicator
Company Gating (Types and Industries)
For more flexible access control than per-company toggles, restrict a template to companies that match specific types or industries. Gating is checked everywhere a template is offered: the new ticket page, the AI ticket assistant, and the browser extension.Open the Company Gating Dialog
Pick Allowed Types
Pick Allowed Industries
Save
- Types and industries are ANDed together. A template gated to type “Managed Services” AND industry “Healthcare” only shows for companies that are both
- Within a single axis, the values are ORed. Picking three types means the template shows for any company in any of the three
- Industry comparisons are case-insensitive, so PSA capitalization differences (“healthcare” vs “Healthcare”) do not matter
- A template with no gating rules behaves as before: visible to every company unless toggled off in per-company controls
Company Branches
Create company-specific versions of a template with customized fields and settings.- A client needs additional custom fields not relevant to other companies
- A client requires different PSA routing (different board, queue, or priority)
- A client wants simplified fields with some sections hidden
- A client needs different field labels or terminology
Expand Company Branches
Click Create Branch
Search and Select Company
Create & Edit
- Add, remove, or modify fields and sections
- Change field labels, help text, and default values
- Configure different PSA routing settings
- Give the branch a custom name (optional)
- Branch name and company name
- Number of companies with visibility enabled/disabled
- Quick actions to edit or delete each branch
Import / Export
Export templates for backup or sharing, or import templates from JSON/CSV files. Access the Import/Export dialog from the accordion section in the template editor or from the row actions menu in the templates list. Export Options:- JSON Export
- CSV Export
- Template name, key, description, category
- All sections and fields with their configuration
- Conditional rules and validation settings
- PSA default values (board, priority, status, type)
- Company branches (optional)
- Backup before making major changes
- Share templates between tenants
- Version control for template configurations
- JSON Import
- CSV Import
- Replace existing: Overwrites all content of an existing template with the same key
- Create new: Creates a new template (fails if the key already exists)
- Generate New Key: Adds a timestamp suffix to avoid key conflicts
- Include Branches: Import company branches (requires matching company names in your tenant)
- Added sections and fields (green)
- Modified sections and fields (yellow)
- Removed sections and fields (red)
Sections & Fields
Adding Sections
Click Add Section to create logical groupings of fields:- Employee Information
- Hardware Requirements
- Software Requirements
- Access Requirements
Adding Fields
Within each section, click Add Field to create a new field. Available Field Types:Conditional Fields
Make fields appear based on other field values:Set Required to Conditional
Select Trigger Field
Set Trigger Value
Reordering
- Drag sections to reorder their position
- Drag fields within sections to reorder
- Click Collapse All to minimize sections while organizing
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.How Embedded Templates Behave
Adding an Embedded Template Field
Add a Field
Set the Type to Embedded Template
Pick the Child Template
Configure the Conditional (Recommended)
Save
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
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_boardis 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_priorityanddefault_statusare 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.
- Per-company branches on the embed — if the embed has a branch for the parent’s company, the branch’s overrides apply.
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
Form Preview Renders Embeds
The Form Preview pane (right-side preview button in the template editor) 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:- The parent ticket is validated and created in the PSA first.
- For each embedded template whose parent field’s conditional is satisfied, MSPortal fires a separate
submitTicketFromTemplatecall using the embed’s templateId. - Each child ticket is created with its own routing, attachments, and “Related to ticket #N” prefix on the description.
- 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)
- The submitter sees a toast indicating how many related tickets were created, fell back, or failed.
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:Using AI to Generate Templates
Open AI Designer
Describe Your Template
Review Generated Fields
Customize as Needed
Saving and Activating
- Review all sections and fields
- Ensure PSA settings are configured if using integrations
- Click Save Template
- Enable the Active toggle to make the template available
Best Practices
Use Descriptive Names
Use Descriptive Names
Use Conditional Fields
Use Conditional Fields
Test Before Activating
Test Before Activating
Use Branches Sparingly
Use Branches Sparingly
Use Embedded Templates for Multi-Ticket Workflows
Use Embedded Templates for Multi-Ticket Workflows
Verify Embed Routing Before Activating
Verify Embed Routing Before Activating