Create, customize, and manage ticket templates, shared branches, access settings, and import/export
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.
ConnectWise
Autotask
Halo PSA
Service Board
Default Priority
Default Status
Default Ticket Type
Default Ticket Subtype
Queue
Default Priority
Default Status
Default Ticket Type
Default Ticket Subtype
Default Ticket Category
Default Work Type
Default Source
Default Work Type and Default Source list the active values in your Autotask instance. Leave either on Default (from Ticket Defaults) to use the value set in Settings > Tickets > General > Ticket Defaults. A value picked here overrides that default for tickets created from this template, including tickets the AI assistant creates with it.
Team (when your Halo teams have synced)
Default Priority
Default Status
Halo Category
Halo Impact
Halo Urgency
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
Action
How
Edit a branch
Click the edit branch icon next to it in the Branches section. Each branch shows how many companies use it.
Delete a branch
Click the trash icon and confirm. The branch’s companies go back to the main form. Deleting cannot be undone.
See branches in the list
In the Templates list, click the number in the Branches column to expand the rows.
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
JSON
CSV
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.
Click Export CSV for a spreadsheet of fields. Edit labels, help text, and options in a spreadsheet, then import it back.
Import
JSON
CSV
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.
Click Select CSV File, then Import CSV. CSV updates existing field labels, help text, and options. It cannot create a template or change structure. Use JSON for structure changes.
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.
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
Type
Use it for
Text
A short single-line answer
Long Text
A multi-line answer
Number and Decimal
Numeric input
Dropdown
One choice from a list
Multi-Select
Several choices from a list
Radio Buttons
One choice from a short visible list
Checkbox
A yes or no box
Date and Date & Time
Calendar and time pickers
Email, Phone, URL
Validated contact and link fields
Contact phone update
Collect a phone number to save to the requester’s PSA contact
Let the requester choose an allowed PSA type, and optionally a subtype or Halo category
Hudu / IT Glue Asset Field
Shown only when Hudu or IT Glue is connected
Microsoft 365 / Google Group
Shown only when Microsoft 365 is connected
Embedded Template
Pull another template’s questions inline as a sub-card. Each embedded template creates its own ticket. See Embedded Templates.
Label (display text)
Read-only rich text for a notice or instructions. Write it in Label Content. Turn on Require acknowledgment to add a checkbox (default text “I have read and agree”) that the requester must tick before submitting. The ticket records the acknowledgment.
Where pickers get their records
Every picker lists records for the company the ticket is for.
Field
Lists
User
The company’s people: active portal company users, plus people synced from Microsoft 365, Google Workspace and your PSA who have no portal account. Each person appears once. Only member accounts are listed, so guests, shared mailboxes, rooms, service accounts and disabled accounts are left out. People hired later appear after the next integration sync, without being imported as portal users.
Device, Asset
The company’s devices from every connected device integration, such as your RMM. Archived devices are left out.
Location, Site
The company’s locations in MSPortal. Add them, or import sites from your PSA, on the company’s Locations tab in Companies.
Project
The company’s projects in MSPortal.
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 Whenfieldequalsvaluethenshow 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
Behavior
Detail
Visibility
The parent field’s conditional logic gates the embed. If the parent field isn’t visible, the embed doesn’t render and no child ticket fires.
One ticket per embed
Every visible embedded template field creates exactly one separate PSA ticket. Two embed fields pointing at the same target template create two tickets.
PSA routing
Each embed uses the embedded template’s own service board, priority, status, ticket type, ticket subtype, and category, not the parent’s.
Same PSA integration
Both parent and embed land in the tenant’s currently selected PSA integration. There is one selected PSA per tenant.
Attachments
File uploads, screenshots, and attachment fields placed inside an embedded template are uploaded to that embed’s PSA ticket, not the parent’s.
Company gating inheritance
Embedded templates do not need to be enabled for every company the parent applies to. The parent’s gating rules already govern visibility; the embed is treated as part of the parent flow.
Parent ticket reference
Every child ticket prepends “Related to ticket #N in template Foo” to its description so support staff can trace the relationship in the PSA.
Parent ticket summary note
After the embed loop runs, MSPortal posts an internal note on the parent PSA ticket listing every related ticket number, fallback-emailed embed, and any failures.
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:
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 submitTicketFromTemplate call 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.
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:
Reason
What it means
Fix
Missing target
The referenced template no longer exists or was deleted
Pick a different template
Self-reference
The field tries to embed the template into itself
Pick a different template
Depth-1 violation
The referenced template itself contains embedded templates
Pick a non-embedding template, or restructure the deeper template
Cross-tenant
The referenced template is in a different tenant (rare; usually only seen during template imports)
Pick a template from your own tenant
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
Use Descriptive Names
Name templates so requesters can pick the right one. Include the purpose, such as “Password Reset - Standard” and “Password Reset - VIP”.
Group Related Fields
Organize fields into logical sections so long forms stay manageable.
Use Conditional Fields
Show a field only when it matters. For example, show “Manager Approval” only when the request is over a budget.
Test Before Activating
Save the template as inactive, preview it, and activate it when the fields capture the right information.
Use Branches Sparingly
Create a branch only for significant differences, and let clients with the same needs share it. Conditional fields handle minor variations.
Use Embedded Templates for Multi-Ticket Workflows
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.
Verify Embed Routing Before Activating
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
Issue
What to do
Template not appearing
Check that it is active, enabled for the company under Company Visibility, allowed for the role under Role Access, and not excluded by Company Gating.
Conditional field not showing
Check the trigger field and value. The trigger must come earlier in the template.
Cannot save: “needs a trigger field selected”
A conditional field has no trigger. Pick one or remove the condition.
Cannot save: field key used more than once
Field keys must be unique. Rename one of the fields.
PSA fields not loading
Check that your PSA integration is connected and synced.
Cannot save: default status not active on this board
Pick a status that is active on the selected board.
Import fails
The JSON must match the export format. CSV needs an existing template.
Embedded template option disabled in the picker
That template already contains its own embeds (depth-1 cap). Pick a template without embeds.
”Embedded template references need attention” on save
An embed field points to a missing, cross-tenant, or self-referencing template. The red banner in each embed picker says which. Pick another template and save again.
Embed ticket failed but the parent succeeded
Open the parent ticket in your PSA. MSPortal posts a summary note listing each embed’s result. For ConnectWise, a common cause is a default status that is not active on the embed’s board. Fix the embed’s PSA Integration Settings and create the missing ticket by hand.
Frequently asked questions
Where do I create a template?
Go to Settings > Tickets > Templates and click New Template.
Does Preview create a ticket?
No. Preview only shows the form. It does not test PSA creation, webhooks, embedded tickets, or scheduling.
Can I disable a template by turning every role off?
No. With no roles selected, every role can use the template. Turn off Template is active and available for use instead.
Why can't I edit a field key?
Keys are locked after the first save so existing tickets and subject variables keep working. Change the label or help text instead.
Do changes to the parent template reach branches?
No. A branch is an independent copy. Edit each branch separately.
Related guides
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
Was this page helpful?
{"docsConfig":{"theme":"aspen","$schema":"https://mintlify.com/docs.json","name":"MSPortal.ai Documentation","colors":{"primary":"#0C8376","light":"#15B79E","dark":"#107569"},"logo":{"light":"https://mintcdn.com/msportal/KnbwIXtZSTlVJTt6/logo/light.svg?fit=max\u0026auto=format\u0026n=KnbwIXtZSTlVJTt6\u0026q=85\u0026s=eb69f6d6bf16b2c401770aef19ade1d2","dark":"https://mintcdn.com/msportal/KnbwIXtZSTlVJTt6/logo/dark.svg?fit=max\u0026auto=format\u0026n=KnbwIXtZSTlVJTt6\u0026q=85\u0026s=03f8df7191e7a8ea7da084df57f6107f"},"favicon":"https://mintcdn.com/msportal/KjsKytvp08K0bejm/favicon-16x16.png?fit=max\u0026auto=format\u0026n=KjsKytvp08K0bejm\u0026q=85\u0026s=378df7f039bbff7885231fec799d29ac","navbar":{"links":[{"href":"/release-notes/roadmap","label":"Roadmap"},{"href":"mailto:support@msportal.ai","label":"Support"}],"primary":{"type":"button","label":"Dashboard","href":"https://app.msportal.ai"}},"footer":{"socials":{"linkedin":"https://linkedin.com/company/msportal"},"links":[{"header":"Resources","items":[{"label":"MSPortal.ai","href":"https://msportal.ai"},{"label":"Support","href":"mailto:support@msportal.ai"},{"label":"Status","href":"https://status.msportal.ai"}]}]},"fonts":{"family":"Inter"},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"msportal","hasAudioNarration":false,"actualSubdomain":"msportal","customDomains":["docs.msportal.ai"],"gitSource":{"type":"github","owner":"msportal-ai","repo":"mintlify-docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"feedback":{"thumbs":true},"entitlements":{},"buildId":"6af8ae8e28ec454592799ad5","clientVersion":"0.0.4143","searchFilterCounts":[{"language":"default","tag":"MSP Guides","count":470},{"language":"default","tag":"API Reference","count":433},{"language":"default","tag":"Operations","count":126},{"language":"default","tag":"Planning","count":101},{"language":"default","tag":"Integrations","count":95},{"language":"default","tag":"Projects","count":75},{"language":"default","tag":"Protection","count":59},{"language":"default","tag":"Standards","count":56},{"language":"default","tag":"Client Onboarding","count":48},{"language":"default","tag":"Compliance","count":45}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"#page-title{font-size:1.75rem;line-height:2.125rem}#header .prose.text-lg{font-size:1rem;line-height:1.5rem;color:rgb(var(--gray-500))}#content-area .prose{font-size:0.9375rem;line-height:1.6}#content-area .mdx-content{margin-top:1.5rem}#content-area .mdx-content h2{font-size:1.25rem;line-height:1.75rem;margin-top:2.25rem;margin-bottom:0.75rem}#content-area .mdx-content h3{font-size:1.0625rem;line-height:1.5rem;margin-top:1.75rem;margin-bottom:0.5rem}#content-area .mdx-content li{margin-top:0.25em;margin-bottom:0.25em}#content-area .steps{margin-top:1rem}#content-area .step{padding-bottom:0.75rem}#content-area [data-component-part=\"step-title\"]{margin-top:0.25rem;margin-bottom:0.375rem}#content-area [data-component-part=\"accordion-content\"] td,#content-area [data-component-part=\"accordion-content\"] th{min-width:0}@media (max-width: 639px){#content-area [data-component-part=\"accordion-content\"] td:last-child{min-width:16rem}}#content-area [data-table-wrapper]>[data-component-part=\"scroll-area-viewport\"]{-webkit-mask-image:linear-gradient(\n to right,\n transparent 0,\n black min(var(--scroll-area-fade-size), var(--scroll-area-overflow-x-start, 0px)),\n black calc(100% - min(var(--scroll-area-fade-size), var(--scroll-area-overflow-x-end, 0px))),\n transparent 100%\n );mask-image:linear-gradient(\n to right,\n transparent 0,\n black min(var(--scroll-area-fade-size), var(--scroll-area-overflow-x-start, 0px)),\n black calc(100% - min(var(--scroll-area-fade-size), var(--scroll-area-overflow-x-end, 0px))),\n transparent 100%\n )}#content-area [data-table-wrapper]>[data-component-part=\"scroll-area-scrollbar\"][data-has-overflow-x]{opacity:1;pointer-events:auto}#sidebar-content li>a,#sidebar-content li>button{font-size:0.875rem;line-height:1.25rem;padding-top:0.3125rem;padding-bottom:0.3125rem}#sidebar-content li>a span{hyphens:manual}#sidebar-content a.nav-anchor{margin-bottom:0.25rem;font-size:0.875rem}#sidebar-content ul:has(>li>a.nav-anchor){margin-bottom:1rem;padding-bottom:0.5rem;border-bottom:1px solid rgb(var(--gray-100))}.dark #sidebar-content ul:has(>li>a.nav-anchor){border-bottom-color:rgb(255 255 255 / 0.1)}#table-of-contents{font-size:0.8125rem;line-height:1.25rem}#sidebar-content li>a>div:first-child:has(>svg,>img){display:none}:root{--sidebar-width: 16rem}@media (min-width: 1024px){#navbar .max-w-8xl,#body-content{max-width:none}#content-container{max-width:88rem;margin-left:0;padding-left:2.5rem;padding-right:2rem;column-gap:2.5rem;justify-content:space-between}}@media (min-width: 1280px){#content-area{width:calc(100% - 16.5rem);max-width:52rem;margin-left:0}#navbar.is-wide~#body-content #content-container{max-width:none}#navbar.is-wide~#body-content #content-area{width:100%;max-width:none}#table-of-contents-layout{width:14rem;padding-left:0}#table-of-contents{width:14rem}}.roadmap-embed{display:block;border:0;background:transparent;color-scheme:light}.dark .roadmap-embed{color-scheme:dark}#content-area img[width=\"390\"],#content-area img[width=\"780\"]{width:100%!important;max-width:300px!important;height:auto!important;margin-left:auto;margin-right:auto}"}],"page":{"pagePath":"user-guides/ticketing/how-to-create-a-ticket-template","slug":"/user-guides/ticketing/how-to-create-a-ticket-template","pageMetadata":{"title":"How to Create a Ticket Template","description":"Create, customize, and manage ticket templates, shared branches, access settings, and import/export","icon":"file-lines","href":"/user-guides/ticketing/how-to-create-a-ticket-template"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Create, customize, and manage ticket templates, shared branches, access settings, and import/export\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,em:`em`,li:`li`,ol:`ol`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Accordion,AccordionGroup,Card,CardGroup,Heading,Info,Note,Step,Steps,Tab,Table,Tabs,Tip,Warning}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!AccordionGroup)_missingMdxReference(`AccordionGroup`,true);if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!Note)_missingMdxReference(`Note`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Tab)_missingMdxReference(`Tab`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tabs)_missingMdxReference(`Tabs`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`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.`}),`\n`,_jsxs(_components.p,{children:[`For a short first template, follow `,_jsx(_components.a,{href:`/user-guides/ticketing/create-and-preview-ticket-template`,children:`Create and preview a ticket template`}),`. Company users should read `,_jsx(_components.a,{href:`/user-guides/ticketing/understand-request-templates`,children:`Understand your available request templates`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`before-you-start`,children:`Before you start`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Your role needs permission to write or manage ticket settings (`,_jsx(_components.strong,{children:`Settings > Tickets`}),`).`]}),`\n`,_jsx(_components.li,{children:`If you use an external ticketing system, connect your PSA integration first. PSA defaults only appear after it is connected.`}),`\n`,_jsxs(_components.li,{children:[`Set up ticket categories under `,_jsx(_components.strong,{children:`Settings > Tickets > General`}),` if you want to group templates.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`create-a-template`,children:`Create a template`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Open Templates`,children:_jsxs(_components.p,{children:[`Go to `,_jsx(_components.strong,{children:`Settings > Tickets > Templates`}),`.`]})}),_jsx(Step,{title:`Click New Template`,children:_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`New Template`}),` at the top right.`]})}),_jsxs(Step,{title:`Fill in Template Details`,children:[_jsxs(_components.p,{children:[`Under `,_jsx(_components.strong,{children:`Template Details`}),`, enter:`]}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Template Name`}),`, such as “New Employee Setup”`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Category`}),` (or leave `,_jsx(_components.strong,{children:`No Category`}),`)`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Description`}),`, a short note on when to use the template`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`AI Description`}),`, which tells the AI Assistant when to pick this template. Click `,_jsx(_components.strong,{children:`Generate`}),` to write one from the template’s fields. `,_jsx(_components.strong,{children:`Generate`}),` works after you enter a name and add at least one field.`]}),`\n`,_jsxs(_components.li,{children:[`The `,_jsx(_components.strong,{children:`Template is active and available for use`}),` switch. New templates start active. Turn it off while you draft.`]}),`\n`]})]}),_jsx(Step,{title:`Set PSA Integration Settings`,children:_jsxs(_components.p,{children:[`Open `,_jsx(_components.strong,{children:`PSA Integration Settings`}),` and pick the defaults for tickets created from this template. See `,_jsx(_components.a,{href:`#set-psa-defaults`,children:`Set PSA defaults`}),`.`]})}),_jsx(Step,{title:`Add sections and fields`,children:_jsxs(_components.p,{children:[`Under `,_jsx(_components.strong,{children:`Sections \u0026 Fields`}),`, click `,_jsx(_components.strong,{children:`Add Section`}),`, then `,_jsx(_components.strong,{children:`Add field`}),` in each section. See `,_jsx(_components.a,{href:`#add-sections-and-fields`,children:`Add sections and fields`}),`.`]})}),_jsx(Step,{title:`Preview the form`,children:_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Preview`}),` in the page header and try the form. `,_jsx(_components.strong,{children:`Reset`}),` clears your preview answers. Click `,_jsx(_components.strong,{children:`Close`}),`, or click outside the panel, to return to editing.`]})}),_jsx(Step,{title:`Save Template`,children:_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Save Template`}),` and wait for “Template created successfully”. The editor stays open on the new template, so you can keep making changes.`]})})]}),`\n`,_jsxs(_components.p,{children:[`The editor shows each setting group as a collapsible section. In order, they are `,_jsx(_components.strong,{children:`Template Details`}),`, `,_jsx(_components.strong,{children:`PSA Integration Settings`}),`, `,_jsx(_components.strong,{children:`Subject Configuration`}),`, `,_jsx(_components.strong,{children:`Priority Override`}),` (when a PSA is connected), `,_jsx(_components.strong,{children:`Flow Webhook (JSON)`}),`, `,_jsx(_components.strong,{children:`TimeZest appointment scheduling`}),` (when TimeZest is connected), `,_jsx(_components.strong,{children:`Company Visibility`}),`, `,_jsx(_components.strong,{children:`Role Access`}),`, `,_jsx(_components.strong,{children:`Branches`}),` and `,_jsx(_components.strong,{children:`Import / Export`}),` (after the first save), then `,_jsx(_components.strong,{children:`Sections \u0026 Fields`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`set-psa-defaults`,children:`Set PSA defaults`}),`\n`,_jsxs(_components.p,{children:[`Open `,_jsx(_components.strong,{children:`PSA Integration Settings`}),` to choose defaults for tickets created from this template. The fields depend on your connected PSA.`]}),`\n`,_jsxs(Tabs,{children:[_jsx(Tab,{title:`ConnectWise`,id:`connectwise`,children:_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.strong,{children:`Service Board`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.strong,{children:`Default Priority`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.strong,{children:`Default Status`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.strong,{children:`Default Ticket Type`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.strong,{children:`Default Ticket Subtype`})}),`\n`]})}),_jsxs(Tab,{title:`Autotask`,id:`autotask`,children:[_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.strong,{children:`Queue`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.strong,{children:`Default Priority`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.strong,{children:`Default Status`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.strong,{children:`Default Ticket Type`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.strong,{children:`Default Ticket Subtype`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.strong,{children:`Default Ticket Category`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.strong,{children:`Default Work Type`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.strong,{children:`Default Source`})}),`\n`]}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Default Work Type`}),` and `,_jsx(_components.strong,{children:`Default Source`}),` list the active values in your Autotask instance. Leave either on `,_jsx(_components.strong,{children:`Default (from Ticket Defaults)`}),` to use the value set in `,_jsx(_components.strong,{children:`Settings > Tickets > General > Ticket Defaults`}),`. A value picked here overrides that default for tickets created from this template, including tickets the AI assistant creates with it.`]})]}),_jsx(Tab,{title:`Halo PSA`,id:`halo-psa`,children:_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Team`}),` (when your Halo teams have synced)`]}),`\n`,_jsx(_components.li,{children:_jsx(_components.strong,{children:`Default Priority`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.strong,{children:`Default Status`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.strong,{children:`Halo Category`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.strong,{children:`Halo Impact`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.strong,{children:`Halo Urgency`})}),`\n`]})})]}),`\n`,_jsx(_components.p,{children:`Two controls apply to all providers:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`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.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Clear PSA defaults.`}),` Removes every default on this template so the tenant or client settings take over.`]}),`\n`]}),`\n`,_jsx(Note,{children:_jsx(_components.p,{children:`If a default status is not active on the selected board, the editor warns you and blocks saving until you pick a valid status.`})}),`\n`,_jsx(Heading,{level:`2`,id:`set-a-subject`,children:`Set a subject`}),`\n`,_jsxs(_components.p,{children:[`Open `,_jsx(_components.strong,{children:`Subject Configuration`}),`.`]}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Enter a Subject Template`,children:_jsxs(_components.p,{children:[`Type the subject, for example `,_jsx(_components.code,{children:`New Employee: {{employee_name}} - {{department}}`}),`. Use `,_jsx(_components.strong,{children:`Variables`}),` to insert a field’s value at the cursor. `,_jsx(_components.strong,{children:`Ticket Context`}),` variables include `,_jsx(_components.strong,{children:`Reporting User`}),` and `,_jsx(_components.strong,{children:`Company Name`}),`.`]})}),_jsx(Step,{title:`Lock the subject (optional)`,children:_jsxs(_components.p,{children:[`Turn on `,_jsx(_components.strong,{children:`Lock subject (users cannot modify it)`}),`. Requesters then see the subject marked `,_jsx(_components.strong,{children:`Auto-generated`}),` and cannot edit it.`]})}),_jsx(Step,{title:`Check the result`,children:_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`Preview`}),` line shows the subject with sample values.`]})})]}),`\n`,_jsx(Heading,{level:`2`,id:`control-who-can-use-a-template`,children:`Control who can use a template`}),`\n`,_jsx(Heading,{level:`3`,id:`company-visibility`,children:`Company Visibility`}),`\n`,_jsxs(_components.p,{children:[`Open `,_jsx(_components.strong,{children:`Company Visibility`}),` in the editor to choose which companies can use the template.`]}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Set the default for new companies`,children:_jsxs(_components.p,{children:[`Under `,_jsx(_components.strong,{children:`New Companies`}),`, choose `,_jsx(_components.strong,{children:`Enabled`}),` (the default) or `,_jsx(_components.strong,{children:`Disabled`}),`. This sets the template’s visibility for any company added later. When the form has branches, the setting is called `,_jsx(_components.strong,{children:`New companies get`}),` and offers `,_jsx(_components.strong,{children:`Main form`}),`, each branch, or `,_jsx(_components.strong,{children:`No form`}),`. See `,_jsx(_components.a,{href:`#choose-what-new-companies-get`,children:`Choose what new companies get`}),`.`]})}),_jsx(Step,{title:`Search for companies`,children:_jsxs(_components.p,{children:[`Use `,_jsx(_components.strong,{children:`Search companies…`}),` to find a company, then use its switch to turn the template on or off.`]})}),_jsx(Step,{title:`Use bulk buttons if needed`,children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Enable All`}),` and `,_jsx(_components.strong,{children:`Disable All`}),` change every company. On the main form, `,_jsx(_components.strong,{children:`Enable All`}),` leaves companies that use a branch on their branch.`]})}),_jsx(Step,{title:`Save`,children:_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`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 `,_jsx(_components.strong,{children:`Save Anyway`}),` to accept it, or `,_jsx(_components.strong,{children:`Cancel`}),` to go back.`]})})]}),`\n`,_jsx(Note,{children:_jsx(_components.p,{children:`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.`})}),`\n`,_jsx(Heading,{level:`3`,id:`role-access`,children:`Role Access`}),`\n`,_jsxs(_components.p,{children:[`Open `,_jsx(_components.strong,{children:`Role Access`}),` to limit the template to certain company roles.`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`With no roles selected, the template is `,_jsx(_components.strong,{children:`Open`}),` and every role can use it.`]}),`\n`,_jsxs(_components.li,{children:[`Turn a role on to switch to `,_jsx(_components.strong,{children:`Restricted`}),`. Only the selected roles can use the template.`]}),`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.strong,{children:`Allow All Roles`}),` to go back to open access. You cannot remove the last selected role. Use `,_jsx(_components.strong,{children:`Allow All Roles`}),` instead.`]}),`\n`,_jsx(_components.li,{children:`Branches inherit role restrictions from the parent template. Edit them on the parent.`}),`\n`]}),`\n`,_jsx(_components.p,{children:`Role Access limits who sees the template. It does not give anyone permission to create tickets.`}),`\n`,_jsx(Heading,{level:`3`,id:`company-gating-types-and-industries`,children:`Company Gating (Types and Industries)`}),`\n`,_jsxs(_components.p,{children:[`To limit a template to groups of companies, use the `,_jsx(_components.strong,{children:`Groups`}),` column in the Templates list.`]}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Open Company Gating`,children:_jsxs(_components.p,{children:[`Go to `,_jsx(_components.strong,{children:`Settings > Tickets > Templates`}),`. In the template’s row, click the link in the `,_jsx(_components.strong,{children:`Groups`}),` column (it shows `,_jsx(_components.strong,{children:`None`}),` or a count such as “2 restrictions”). The `,_jsx(_components.strong,{children:`Company Gating`}),` dialog opens.`]})}),_jsx(Step,{title:`Pick Types`,children:_jsxs(_components.p,{children:[`Under `,_jsx(_components.strong,{children:`Types`}),`, turn on one or more company groups. Types are the company groups you create under `,_jsx(_components.strong,{children:`Settings > Companies`}),`. Click `,_jsx(_components.strong,{children:`Clear All`}),` to remove every type.`]})}),_jsx(Step,{title:`Pick Industries`,children:_jsxs(_components.p,{children:[`Under `,_jsx(_components.strong,{children:`Industries`}),`, turn on one or more industries. The list comes from the industry set on your companies. Set it under `,_jsx(_components.strong,{children:`Settings > Companies`}),`. ConnectWise companies fill it from the PSA market field.`]})}),_jsx(Step,{title:`Close the dialog`,children:_jsx(_components.p,{children:`Each switch saves as you click it. The template now appears only for companies that match.`})})]}),`\n`,_jsx(_components.p,{children:`How gating combines:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Types and industries are ANDed. A template gated to the type “Managed Services” and the industry “Healthcare” shows only for companies that match both.`}),`\n`,_jsx(_components.li,{children:`Inside one list, values are ORed. Pick three types and any company in any of the three matches.`}),`\n`,_jsx(_components.li,{children:`Industry matching ignores capitalization, so “healthcare” and “Healthcare” match.`}),`\n`,_jsxs(_components.li,{children:[`A template with no gating is available to every company that is not switched off in `,_jsx(_components.strong,{children:`Company Visibility`}),`.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`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.`}),`\n`,_jsx(Heading,{level:`2`,id:`create-a-branch`,children:`Create a branch`}),`\n`,_jsx(_components.p,{children:`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.`}),`\n`,_jsx(_components.p,{children:`Each company uses one version of a form: the main form, one branch, or no form.`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Open Branches`,children:_jsxs(_components.p,{children:[`Open the main form, then expand `,_jsx(_components.strong,{children:`Branches`}),`. This section appears after the form has been saved. It does not appear on a branch.`]})}),_jsx(Step,{title:`Click Create Branch`,children:_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Create Branch`}),`. The `,_jsx(_components.strong,{children:`New branch`}),` dialog opens.`]})}),_jsx(Step,{title:`Name the branch`,children:_jsxs(_components.p,{children:[`Enter a `,_jsx(_components.strong,{children:`Branch Name`}),`, such as “Enterprise Clients”. The name is required and shows in the Templates list and in each company’s form choices.`]})}),_jsx(Step,{title:`Choose companies (optional)`,children:_jsxs(_components.p,{children:[`Under `,_jsx(_components.strong,{children:`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.`]})}),_jsx(Step,{title:`Click Create \u0026 Edit`,children:_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Create \u0026 Edit`}),`. MSPortal copies the form, with its fields, rules, and PSA defaults, and opens the copy for editing.`]})}),_jsx(Step,{title:`Edit the branch`,children:_jsxs(_components.p,{children:[`Change fields, labels, help text, defaults, and PSA routing, then click `,_jsx(_components.strong,{children:`Save Template`}),`.`]})})]}),`\n`,_jsxs(_components.p,{children:[`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 `,_jsx(_components.strong,{children:`Template is active and available for use`}),` on the branch when it is ready.`]}),`\n`,_jsx(Heading,{level:`3`,id:`move-companies-onto-or-off-a-branch`,children:`Move companies onto or off a branch`}),`\n`,_jsx(_components.p,{children:`You can change which version a company uses in three places:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`On the branch.`}),` Open the branch and expand `,_jsx(_components.strong,{children:`Company Visibility`}),`. Turn a company on to move it onto this branch. Turning one off puts it back on the main form. Click `,_jsx(_components.strong,{children:`Save Template`}),` to apply the moves.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`On the main form.`}),` In `,_jsx(_components.strong,{children:`Company Visibility`}),`, turning a company on moves it to the main form. Turning it off leaves it with no form. Click `,_jsx(_components.strong,{children:`Save Template`}),` to apply the moves.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`On the company.`}),` Go to `,_jsx(_components.strong,{children:`Settings > Companies`}),`, open the company, and select the `,_jsx(_components.strong,{children:`Ticketing`}),` tab. Under `,_jsx(_components.strong,{children:`Available Templates`}),`, each form with branches has a select with `,_jsx(_components.strong,{children:`Main form`}),`, each branch, and `,_jsx(_components.strong,{children:`Off`}),`. Inactive branches are marked `,_jsx(_components.strong,{children:`(inactive)`}),`. Forms without branches keep an on and off switch. Each change saves right away.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`choose-what-new-companies-get`,children:`Choose what new companies get`}),`\n`,_jsxs(_components.p,{children:[`On the main form, open `,_jsx(_components.strong,{children:`Company Visibility`}),`. When the form has branches, `,_jsx(_components.strong,{children:`New companies get`}),` sets the version that companies added later receive: `,_jsx(_components.strong,{children:`Main form`}),`, a branch, or `,_jsx(_components.strong,{children:`No form`}),`. This applies only to companies added later. It never moves companies that already exist.`]}),`\n`,_jsxs(_components.p,{children:[`The branch you choose shows a `,_jsx(_components.strong,{children:`New companies`}),` badge in the `,_jsx(_components.strong,{children:`Branches`}),` section. Set this on the main form. A branch’s `,_jsx(_components.strong,{children:`Company Visibility`}),` shows “New companies are set on the main form.”`]}),`\n`,_jsx(Heading,{level:`3`,id:`edit-or-delete-a-branch`,children:`Edit or delete a branch`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Action`}),_jsx(_components.th,{children:`How`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Edit`}),` a branch`]}),_jsxs(_components.td,{children:[`Click the edit branch icon next to it in the `,_jsx(_components.strong,{children:`Branches`}),` section. Each branch shows how many companies use it.`]})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Delete`}),` a branch`]}),_jsx(_components.td,{children:`Click the trash icon and confirm. The branch’s companies go back to the main form. Deleting cannot be undone.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`See branches in the list`}),_jsxs(_components.td,{children:[`In the Templates list, click the number in the `,_jsx(_components.strong,{children:`Branches`}),` column to expand the rows.`]})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`manage-templates-in-the-list`,children:`Manage templates in the list`}),`\n`,_jsxs(_components.p,{children:[`The Templates list at `,_jsx(_components.strong,{children:`Settings > Tickets > Templates`}),` shows these columns: `,_jsx(_components.strong,{children:`Name`}),`, `,_jsx(_components.strong,{children:`Category`}),`, `,_jsx(_components.strong,{children:`Companies`}),`, `,_jsx(_components.strong,{children:`Roles`}),`, `,_jsx(_components.strong,{children:`Groups`}),`, `,_jsx(_components.strong,{children:`Branches`}),`, `,_jsx(_components.strong,{children:`PSA Board`}),`, and `,_jsx(_components.strong,{children:`Status`}),`.`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Click a `,_jsx(_components.strong,{children:`Companies`}),`, `,_jsx(_components.strong,{children:`Roles`}),`, or `,_jsx(_components.strong,{children:`Groups`}),` value to open `,_jsx(_components.strong,{children:`Company Access`}),`, `,_jsx(_components.strong,{children:`Role Access`}),`, or `,_jsx(_components.strong,{children:`Company Gating`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Use the row’s action menu for `,_jsx(_components.strong,{children:`Edit`}),`, `,_jsx(_components.strong,{children:`Copy Permalink`}),`, `,_jsx(_components.strong,{children:`Duplicate`}),`, `,_jsx(_components.strong,{children:`Export / Import`}),`, and `,_jsx(_components.strong,{children:`Delete`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Select several rows for bulk actions: `,_jsx(_components.strong,{children:`Set Category`}),`, `,_jsx(_components.strong,{children:`Company Access`}),`, `,_jsx(_components.strong,{children:`Role Access`}),`, `,_jsx(_components.strong,{children:`Set Active`}),`, `,_jsx(_components.strong,{children:`Set Inactive`}),`, `,_jsx(_components.strong,{children:`PSA Settings`}),`, `,_jsx(_components.strong,{children:`Generate AI Descriptions`}),`, and delete.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Check for Issues`}),` scans every template against your PSA configuration and lists problems that would make a submission fall back to email.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Import`}),` creates a template from a file.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`import-and-export-a-template`,children:`Import and export a template`}),`\n`,_jsxs(_components.p,{children:[`Open `,_jsx(_components.strong,{children:`Import / Export`}),` in the editor (after the first save), or use `,_jsx(_components.strong,{children:`Export / Import`}),` in a row’s action menu.`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Export`})}),`\n`,_jsxs(Tabs,{children:[_jsx(Tab,{title:`JSON`,id:`json`,children:_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`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.`]})}),_jsx(Tab,{title:`CSV`,id:`csv`,children:_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Export CSV`}),` for a spreadsheet of fields. Edit labels, help text, and options in a spreadsheet, then import it back.`]})})]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Import`})}),`\n`,_jsxs(Tabs,{children:[_jsxs(Tab,{title:`JSON`,id:`json-2`,children:[_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Select JSON File`}),`. Choose an `,_jsx(_components.strong,{children:`Import Mode`}),`:`]}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.strong,{children:`Replace existing (overwrites all content)`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.strong,{children:`Create new (fails if key exists)`})}),`\n`]}),_jsxs(_components.p,{children:[`Options: `,_jsx(_components.strong,{children:`Generate New Key`}),` adds a timestamp to avoid conflicts. `,_jsx(_components.strong,{children:`Include Branches`}),` imports company branches and needs matching companies.`]}),_jsxs(_components.p,{children:[`Importing over an existing template shows a `,_jsx(_components.strong,{children:`Changes Preview`}),` with added, modified, and removed sections and fields. Review it, then click `,_jsx(_components.strong,{children:`Update Template`}),`. Company visibility, role settings, and branches are kept.`]})]}),_jsx(Tab,{title:`CSV`,id:`csv-2`,children:_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Select CSV File`}),`, then `,_jsx(_components.strong,{children:`Import CSV`}),`. CSV updates existing field labels, help text, and options. It cannot create a template or change structure. Use JSON for structure changes.`]})})]}),`\n`,_jsx(Tip,{children:_jsx(_components.p,{children:`Export a JSON backup before you make major changes. You can import it later to restore the old version.`})}),`\n`,_jsx(Heading,{level:`2`,id:`add-sections-and-fields`,children:`Add sections and fields`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Add a section`,children:_jsxs(_components.p,{children:[`Under `,_jsx(_components.strong,{children:`Sections \u0026 Fields`}),`, click `,_jsx(_components.strong,{children:`Add Section`}),`. Click the section title to rename it. Use a section for each group of questions, such as Employee Information, Hardware, or Access.`]})}),_jsx(Step,{title:`Add a field`,children:_jsxs(_components.p,{children:[`In the section, click `,_jsx(_components.strong,{children:`Add field`}),`. Enter the `,_jsx(_components.strong,{children:`Field Label`}),` and pick a `,_jsx(_components.strong,{children:`Type`}),`.`]})}),_jsx(Step,{title:`Set the requirement`,children:_jsxs(_components.p,{children:[`Set `,_jsx(_components.strong,{children:`Required`}),` to `,_jsx(_components.strong,{children:`Optional`}),`, `,_jsx(_components.strong,{children:`Required`}),`, or `,_jsx(_components.strong,{children:`Conditional`}),`. See `,_jsx(_components.a,{href:`#show-or-require-a-field-conditionally`,children:`Show or require a field conditionally`}),`.`]})}),_jsx(Step,{title:`Add guidance and defaults`,children:_jsxs(_components.p,{children:[`Add `,_jsx(_components.strong,{children:`Placeholder`}),` text, `,_jsx(_components.strong,{children:`Help Text`}),`, and a `,_jsx(_components.strong,{children:`Default Value`}),` if needed. For dropdown, multi-select, and radio fields, click `,_jsx(_components.strong,{children:`Add Options`}),` (or `,_jsx(_components.strong,{children:`Edit Options`}),`) to list the choices.`]})}),_jsx(Step,{title:`Reorder`,children:_jsxs(_components.p,{children:[`Drag sections and fields to reorder them. Click `,_jsx(_components.strong,{children:`Collapse All`}),` to fold the sections while you organize, and `,_jsx(_components.strong,{children:`Expand All`}),` to open them again.`]})})]}),`\n`,_jsxs(_components.p,{children:[`The field `,_jsx(_components.strong,{children:`Key`}),` is generated from the label and cannot be changed after the first save. Keys must be unique in a template. Use `,_jsx(_components.strong,{children:`Use in variables as`}),` to see the name to use in subject variables.`]}),`\n`,_jsx(Heading,{level:`3`,id:`send-an-answer-to-a-psa-field`,children:`Send an answer to a PSA field`}),`\n`,_jsxs(_components.p,{children:[`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 `,_jsx(_components.strong,{children:`Autotask PSA field`}),`, beside `,_jsx(_components.strong,{children:`Short label for tickets`}),` and `,_jsx(_components.strong,{children:`Default Value`}),`. Use it to record who a request is for, separately from the submitter. See `,_jsx(_components.a,{href:`/user-guides/ticketing/send-answers-to-psa-fields`,children:`Send template answers to PSA fields`}),`.`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Field types`})}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Type`}),_jsx(_components.th,{children:`Use it for`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Text`})}),_jsx(_components.td,{children:`A short single-line answer`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Long Text`})}),_jsx(_components.td,{children:`A multi-line answer`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Number`}),` and `,_jsx(_components.strong,{children:`Decimal`})]}),_jsx(_components.td,{children:`Numeric input`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Dropdown`})}),_jsx(_components.td,{children:`One choice from a list`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Multi-Select`})}),_jsx(_components.td,{children:`Several choices from a list`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Radio Buttons`})}),_jsx(_components.td,{children:`One choice from a short visible list`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Checkbox`})}),_jsx(_components.td,{children:`A yes or no box`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Date`}),` and `,_jsx(_components.strong,{children:`Date \u0026 Time`})]}),_jsx(_components.td,{children:`Calendar and time pickers`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Email`}),`, `,_jsx(_components.strong,{children:`Phone`}),`, `,_jsx(_components.strong,{children:`URL`})]}),_jsx(_components.td,{children:`Validated contact and link fields`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Contact phone update`})}),_jsx(_components.td,{children:`Collect a phone number to save to the requester’s PSA contact`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Priority`}),`, `,_jsx(_components.strong,{children:`Impact`}),`, `,_jsx(_components.strong,{children:`Urgency`})]}),_jsx(_components.td,{children:`PSA-driven choice fields`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`User`}),`, `,_jsx(_components.strong,{children:`Device`}),`, `,_jsx(_components.strong,{children:`Location`}),`, `,_jsx(_components.strong,{children:`Project`}),`, `,_jsx(_components.strong,{children:`Site`}),`, `,_jsx(_components.strong,{children:`Asset`})]}),_jsxs(_components.td,{children:[`Pickers for existing records. See `,_jsx(_components.a,{href:`#where-pickers-get-their-records`,children:`Where pickers get their records`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`File Upload`}),`, `,_jsx(_components.strong,{children:`File Attachment`}),`, `,_jsx(_components.strong,{children:`Screenshot`})]}),_jsx(_components.td,{children:`Attachments`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`PSA Classification`})}),_jsx(_components.td,{children:`Let the requester choose an allowed PSA type, and optionally a subtype or Halo category`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Hudu / IT Glue Asset Field`})}),_jsx(_components.td,{children:`Shown only when Hudu or IT Glue is connected`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Microsoft 365 / Google Group`})}),_jsx(_components.td,{children:`Shown only when Microsoft 365 is connected`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Embedded Template`})}),_jsxs(_components.td,{children:[`Pull another template’s questions inline as a sub-card. Each embedded template creates its own ticket. See `,_jsx(_components.a,{href:`#embedded-templates`,children:`Embedded Templates`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Label (display text)`})}),_jsxs(_components.td,{children:[`Read-only rich text for a notice or instructions. Write it in `,_jsx(_components.strong,{children:`Label Content`}),`. Turn on `,_jsx(_components.strong,{children:`Require acknowledgment`}),` to add a checkbox (default text “I have read and agree”) that the requester must tick before submitting. The ticket records the acknowledgment.`]})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`where-pickers-get-their-records`,children:`Where pickers get their records`}),`\n`,_jsx(_components.p,{children:`Every picker lists records for the company the ticket is for.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`Lists`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`User`})}),_jsx(_components.td,{children:`The company’s people: active portal company users, plus people synced from Microsoft 365, Google Workspace and your PSA who have no portal account. Each person appears once. Only member accounts are listed, so guests, shared mailboxes, rooms, service accounts and disabled accounts are left out. People hired later appear after the next integration sync, without being imported as portal users.`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Device`}),`, `,_jsx(_components.strong,{children:`Asset`})]}),_jsx(_components.td,{children:`The company’s devices from every connected device integration, such as your RMM. Archived devices are left out.`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Location`}),`, `,_jsx(_components.strong,{children:`Site`})]}),_jsxs(_components.td,{children:[`The company’s locations in MSPortal. Add them, or import sites from your PSA, on the company’s `,_jsx(_components.strong,{children:`Locations`}),` tab in `,_jsx(_components.a,{href:`/user-guides/settings/companies`,children:`Companies`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Project`})}),_jsx(_components.td,{children:`The company’s projects in MSPortal.`})]})]})]}),`\n`,_jsx(_components.p,{children:`If a picker is empty, check that the integration is connected and has synced for that company.`}),`\n`,_jsx(Heading,{level:`2`,id:`show-or-require-a-field-conditionally`,children:`Show or require a field conditionally`}),`\n`,_jsxs(_components.p,{children:[`A rule has the form `,_jsx(_components.strong,{children:`When`}),` `,_jsx(_components.em,{children:`field`}),` `,_jsx(_components.em,{children:`equals`}),` `,_jsx(_components.em,{children:`value`}),` `,_jsx(_components.strong,{children:`then`}),` `,_jsx(_components.em,{children:`show this field`}),` or `,_jsx(_components.em,{children:`make required`}),`.`]}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Open the field`,children:_jsx(_components.p,{children:`Click the field row to expand its editor.`})}),_jsx(Step,{title:`Choose what the rule does`,children:_jsxs(_components.p,{children:[`To show the field only sometimes, check `,_jsx(_components.strong,{children:`Only show this field when another field has a specific value`}),`. To make it required only sometimes, set `,_jsx(_components.strong,{children:`Required`}),` to `,_jsx(_components.strong,{children:`Conditional`}),`.`]})}),_jsx(Step,{title:`Build the rule`,children:_jsxs(_components.p,{children:[`Under `,_jsx(_components.strong,{children:`When`}),`, pick a trigger field, an operator such as `,_jsx(_components.strong,{children:`equals`}),`, `,_jsx(_components.strong,{children:`not equals`}),`, `,_jsx(_components.strong,{children:`includes`}),`, or `,_jsx(_components.strong,{children:`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.`]})})]}),`\n`,_jsx(_components.p,{children:`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.`}),`\n`,_jsx(Heading,{level:`2`,id:`set-a-priority-override`,children:`Set a priority override`}),`\n`,_jsxs(_components.p,{children:[`If a PSA is connected, open `,_jsx(_components.strong,{children:`Priority Override`}),` to raise the PSA priority automatically when conditions are met.`]}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Turn it on`,children:_jsxs(_components.p,{children:[`Check `,_jsx(_components.strong,{children:`Enable Priority Override`}),`.`]})}),_jsx(Step,{title:`Add a rule`,children:_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Add Rule`}),`. Pick `,_jsx(_components.strong,{children:`When field`}),`, an `,_jsx(_components.strong,{children:`Operator`}),`, and a value. For a time-based operator, enter `,_jsx(_components.strong,{children:`Hours`}),`. Then pick the priority under `,_jsx(_components.strong,{children:`Override to`}),`.`]})}),_jsx(Step,{title:`Order the rules`,children:_jsx(_components.p,{children:`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.`})})]}),`\n`,_jsx(Heading,{level:`2`,id:`embedded-templates`,children:`Embedded Templates`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`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.`]}),`\n`,_jsx(Info,{children:_jsx(_components.p,{children:`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.`})}),`\n`,_jsx(Heading,{level:`3`,id:`how-embedded-templates-behave`,children:`How Embedded Templates Behave`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Behavior`}),_jsx(_components.th,{children:`Detail`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Visibility`})}),_jsx(_components.td,{children:`The parent field’s conditional logic gates the embed. If the parent field isn’t visible, the embed doesn’t render and no child ticket fires.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`One ticket per embed`})}),_jsx(_components.td,{children:`Every visible embedded template field creates exactly one separate PSA ticket. Two embed fields pointing at the same target template create two tickets.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`PSA routing`})}),_jsxs(_components.td,{children:[`Each embed uses the `,_jsx(_components.strong,{children:`embedded template’s`}),` own service board, priority, status, ticket type, ticket subtype, and category, not the parent’s.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Same PSA integration`})}),_jsx(_components.td,{children:`Both parent and embed land in the tenant’s currently selected PSA integration. There is one selected PSA per tenant.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Attachments`})}),_jsx(_components.td,{children:`File uploads, screenshots, and attachment fields placed inside an embedded template are uploaded to that embed’s PSA ticket, not the parent’s.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Company gating inheritance`})}),_jsxs(_components.td,{children:[`Embedded templates do `,_jsx(_components.strong,{children:`not`}),` need to be enabled for every company the parent applies to. The parent’s gating rules already govern visibility; the embed is treated as part of the parent flow.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Parent ticket reference`})}),_jsx(_components.td,{children:`Every child ticket prepends “Related to ticket #N in template Foo” to its description so support staff can trace the relationship in the PSA.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Parent ticket summary note`})}),_jsx(_components.td,{children:`After the embed loop runs, MSPortal posts an internal note on the parent PSA ticket listing every related ticket number, fallback-emailed embed, and any failures.`})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`adding-an-embedded-template-field`,children:`Adding an Embedded Template Field`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Add a Field`,children:_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Add field`}),` in the section that should host the embed, then click the field row to expand the editor.`]})}),_jsx(Step,{title:`Set the Type to Embedded Template`,children:_jsxs(_components.p,{children:[`Open the `,_jsx(_components.strong,{children:`Type`}),` dropdown and select `,_jsx(_components.strong,{children:`Embedded Template`}),`.`]})}),_jsx(Step,{title:`Pick the Child Template`,children:_jsxs(_components.p,{children:[`A teal `,_jsx(_components.strong,{children:`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).`]})}),_jsx(Step,{title:`Configure the Conditional (Recommended)`,children:_jsxs(_components.p,{children:[`Check `,_jsx(_components.strong,{children:`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: `,_jsx(_components.strong,{children:`When`}),` “Need a new computer?” `,_jsx(_components.strong,{children:`equals`}),` “Yes”. Without a rule, the embed always renders and always fires a child ticket.`]})}),_jsx(Step,{title:`Save`,children:_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`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).`]})})]}),`\n`,_jsx(Heading,{level:`3`,id:`the-depth-1-cap`,children:`The Depth-1 Cap`}),`\n`,_jsxs(_components.p,{children:[`An embedded template `,_jsx(_components.strong,{children:`cannot`}),` itself contain embedded templates. This is enforced at three layers so it cannot be bypassed:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`The picker disables any candidate template that already has an embed reference, with a `,_jsx(_components.code,{children:`(contains embeds)`}),` label so admins know why`]}),`\n`,_jsx(_components.li,{children:`The save flow blocks the upsert with a clear inline error if the picker is bypassed`}),`\n`,_jsx(_components.li,{children:`The runtime renderer drops nested embeds defensively, surfacing a soft-warning card so the issue is visible`}),`\n`]}),`\n`,_jsx(Tip,{children:_jsx(_components.p,{children:`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.`})}),`\n`,_jsx(Heading,{level:`3`,id:`embedded-templates-and-psa-routing`,children:`Embedded Templates and PSA Routing`}),`\n`,_jsx(_components.p,{children:`Each embedded template is a normal ticket template, so all of its PSA settings apply when the embed fires:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Service board / queue`}),`: the embed’s `,_jsx(_components.code,{children:`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.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Priority and status`}),`: the embed’s `,_jsx(_components.code,{children:`default_priority`}),` and `,_jsx(_components.code,{children:`default_status`}),` are used.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Ticket type / subtype / category`}),`: the embed’s defaults are used.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Halo Category / Impact / Urgency`}),`: the embed’s Halo-specific routing is used.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`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.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Branches on the embed`}),`: if the parent’s company uses a branch of the embedded template, the branch’s settings apply.`]}),`\n`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`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.`]})}),`\n`,_jsx(Heading,{level:`3`,id:`attachments-inside-embeds`,children:`Attachments Inside Embeds`}),`\n`,_jsxs(_components.p,{children:[`File Upload, Screenshot, and Attachment fields placed inside an embedded template attach their files to the `,_jsx(_components.strong,{children:`embed’s`}),` PSA ticket, not the parent’s. This lets you capture supporting documents per child request:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Parent: “New Hire” template, no attachments`}),`\n`,_jsx(_components.li,{children:`Embed 1: “New Computer Request”, attach the approved hardware quote`}),`\n`,_jsx(_components.li,{children:`Embed 2: “Software Access Request”, attach the user’s training certificate`}),`\n`]}),`\n`,_jsx(_components.p,{children:`Each PSA ticket receives only the attachments uploaded to its corresponding form section.`}),`\n`,_jsx(Heading,{level:`3`,id:`form-preview-renders-embeds`,children:`Form Preview Renders Embeds`}),`\n`,_jsxs(_components.p,{children:[`The Form Preview panel (click `,_jsx(_components.strong,{children:`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.`]}),`\n`,_jsx(_components.p,{children:`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.`}),`\n`,_jsx(Heading,{level:`3`,id:`what-happens-on-submit`,children:`What Happens on Submit`}),`\n`,_jsx(_components.p,{children:`When a user submits a parent ticket form:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`The parent ticket is validated and created in the PSA first.`}),`\n`,_jsxs(_components.li,{children:[`For each embedded template whose parent field’s conditional is satisfied, MSPortal fires a separate `,_jsx(_components.code,{children:`submitTicketFromTemplate`}),` call using the embed’s templateId.`]}),`\n`,_jsx(_components.li,{children:`Each child ticket is created with its own routing, attachments, and “Related to ticket #N” prefix on the description.`}),`\n`,_jsxs(_components.li,{children:[`After the embed loop completes, MSPortal posts a single internal note on the parent ticket summarizing each child:`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Successes with their PSA ticket numbers`}),`\n`,_jsx(_components.li,{children:`Embeds that fell back to email (when the PSA call failed)`}),`\n`,_jsx(_components.li,{children:`Embeds that failed to create (with the error so support can manually retry)`}),`\n`]}),`\n`]}),`\n`,_jsx(_components.li,{children:`The submitter sees a toast indicating how many related tickets were created, fell back, or failed.`}),`\n`]}),`\n`,_jsx(Tip,{children:_jsx(_components.p,{children:`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.`})}),`\n`,_jsx(Heading,{level:`3`,id:`validation-errors-when-saving`,children:`Validation Errors When Saving`}),`\n`,_jsx(_components.p,{children:`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:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Reason`}),_jsx(_components.th,{children:`What it means`}),_jsx(_components.th,{children:`Fix`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Missing target`})}),_jsx(_components.td,{children:`The referenced template no longer exists or was deleted`}),_jsx(_components.td,{children:`Pick a different template`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Self-reference`})}),_jsx(_components.td,{children:`The field tries to embed the template into itself`}),_jsx(_components.td,{children:`Pick a different template`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Depth-1 violation`})}),_jsx(_components.td,{children:`The referenced template itself contains embedded templates`}),_jsx(_components.td,{children:`Pick a non-embedding template, or restructure the deeper template`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Cross-tenant`})}),_jsx(_components.td,{children:`The referenced template is in a different tenant (rare; usually only seen during template imports)`}),_jsx(_components.td,{children:`Pick a template from your own tenant`})]})]})]}),`\n`,_jsx(_components.p,{children:`The error appears as a red banner inside the embed picker card and clears optimistically as soon as you pick a different template.`}),`\n`,_jsx(Heading,{level:`2`,id:`offer-appointment-scheduling`,children:`Offer appointment scheduling`}),`\n`,_jsxs(_components.p,{children:[`If TimeZest is connected, open `,_jsx(_components.strong,{children:`TimeZest appointment scheduling`}),` to let requesters pick a time after the ticket is created.`]}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Turn it on`,children:_jsxs(_components.p,{children:[`Check `,_jsx(_components.strong,{children:`Offer Schedule Appointment for this template`}),`.`]})}),_jsx(Step,{title:`Choose the TimeZest settings`,children:_jsxs(_components.p,{children:[`Pick the `,_jsx(_components.strong,{children:`TimeZest integration`}),`, the `,_jsx(_components.strong,{children:`Appointment type`}),`, and the `,_jsx(_components.strong,{children:`Scheduling resources`}),`. You can select more than one resource only with TimeZest Professional.`]})}),_jsx(Step,{title:`Save`,children:_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Save Template`}),`. Requesters then see `,_jsx(_components.strong,{children:`Schedule appointment`}),` on the form. They create the ticket first and then continue to TimeZest.`]})})]}),`\n`,_jsxs(_components.p,{children:[`Appointment scheduling is not available on webhook-only templates, because no PSA ticket is created. See `,_jsx(_components.a,{href:`/user-guides/ticketing/flow-webhook-recipient`,children:`Flow Webhook Recipient`}),` for the `,_jsx(_components.strong,{children:`Flow Webhook (JSON)`}),` section.`]}),`\n`,_jsx(Heading,{level:`2`,id:`use-ai-to-design-a-template`,children:`Use AI to design a template`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Open the AI Template Designer`,children:_jsx(_components.p,{children:`Click the floating AI button on the right side of the editor.`})}),_jsx(Step,{title:`Describe the template`,children:_jsx(_components.p,{children:`Type what the template should do. For example: “Create a template for new employee onboarding that captures hardware needs, software requirements, and access permissions.”`})}),_jsx(Step,{title:`Review the proposal`,children:_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Review Template Changes`}),` to see `,_jsx(_components.strong,{children:`Suggested Template Changes`}),`. Accept the ones you want and apply them. A “Changes applied to the template” message confirms it. Use `,_jsx(_components.strong,{children:`Undo last changes`}),` if you change your mind.`]})}),_jsx(Step,{title:`Refine`,children:_jsx(_components.p,{children:`Ask for more, such as “Add a section for emergency contacts”. The designer builds on the current draft.`})}),_jsx(Step,{title:`Save`,children:_jsxs(_components.p,{children:[`AI changes only edit your draft. Click `,_jsx(_components.strong,{children:`Save Template`}),` to keep them.`]})})]}),`\n`,_jsx(Heading,{level:`2`,id:`activate-and-verify-a-template`,children:`Activate and verify a template`}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`Choose multi-select defaults with the `,_jsx(_components.strong,{children:`Default Value`}),` checkboxes. The Form Preview starts with the configured defaults, and `,_jsx(_components.strong,{children:`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.`]})}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Review the template`,children:_jsx(_components.p,{children:`Check every section, field, PSA default, and access setting.`})}),_jsx(Step,{title:`Save as inactive first (optional)`,children:_jsxs(_components.p,{children:[`Turn off `,_jsx(_components.strong,{children:`Template is active and available for use`}),`, click `,_jsx(_components.strong,{children:`Save Template`}),`, and test with the preview.`]})}),_jsx(Step,{title:`Activate`,children:_jsxs(_components.p,{children:[`Reopen the template, turn the switch on, and click `,_jsx(_components.strong,{children:`Save Template`}),` again. You can also use `,_jsx(_components.strong,{children:`Set Active`}),` in the Templates list.`]})}),_jsx(Step,{title:`Verify availability`,children:_jsxs(_components.p,{children:[`Open `,_jsx(_components.strong,{children:`Tickets > New Ticket`}),` for the intended company and confirm the template appears. Preview does not submit a ticket.`]})})]}),`\n`,_jsx(Heading,{level:`2`,id:`best-practices`,children:`Best practices`}),`\n`,_jsxs(AccordionGroup,{children:[_jsx(Accordion,{title:`Use Descriptive Names`,id:`use-descriptive-names`,children:_jsx(_components.p,{children:`Name templates so requesters can pick the right one. Include the purpose, such as “Password Reset - Standard” and “Password Reset - VIP”.`})}),_jsx(Accordion,{title:`Group Related Fields`,id:`group-related-fields`,children:_jsx(_components.p,{children:`Organize fields into logical sections so long forms stay manageable.`})}),_jsx(Accordion,{title:`Use Conditional Fields`,id:`use-conditional-fields`,children:_jsx(_components.p,{children:`Show a field only when it matters. For example, show “Manager Approval” only when the request is over a budget.`})}),_jsx(Accordion,{title:`Test Before Activating`,id:`test-before-activating`,children:_jsx(_components.p,{children:`Save the template as inactive, preview it, and activate it when the fields capture the right information.`})}),_jsx(Accordion,{title:`Use Branches Sparingly`,id:`use-branches-sparingly`,children:_jsx(_components.p,{children:`Create a branch only for significant differences, and let clients with the same needs share it. Conditional fields handle minor variations.`})}),_jsx(Accordion,{title:`Use Embedded Templates for Multi-Ticket Workflows`,id:`use-embedded-templates-for-multi-ticket-workflows`,children:_jsxs(_components.p,{children:[`Use `,_jsx(_components.strong,{children:`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.`]})}),_jsx(Accordion,{title:`Verify Embed Routing Before Activating`,id:`verify-embed-routing-before-activating`,children:_jsxs(_components.p,{children:[`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 `,_jsx(_components.strong,{children:`PSA Integration Settings`}),` before you go live.`]})})]}),`\n`,_jsx(Heading,{level:`2`,id:`troubleshooting`,children:`Troubleshooting`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Issue`}),_jsx(_components.th,{children:`What to do`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Template not appearing`}),_jsxs(_components.td,{children:[`Check that it is active, enabled for the company under `,_jsx(_components.strong,{children:`Company Visibility`}),`, allowed for the role under `,_jsx(_components.strong,{children:`Role Access`}),`, and not excluded by `,_jsx(_components.strong,{children:`Company Gating`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Conditional field not showing`}),_jsx(_components.td,{children:`Check the trigger field and value. The trigger must come earlier in the template.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Cannot save: “needs a trigger field selected”`}),_jsx(_components.td,{children:`A conditional field has no trigger. Pick one or remove the condition.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Cannot save: field key used more than once`}),_jsx(_components.td,{children:`Field keys must be unique. Rename one of the fields.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`PSA fields not loading`}),_jsx(_components.td,{children:`Check that your PSA integration is connected and synced.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Cannot save: default status not active on this board`}),_jsx(_components.td,{children:`Pick a status that is active on the selected board.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Import fails`}),_jsx(_components.td,{children:`The JSON must match the export format. CSV needs an existing template.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Embedded template option disabled in the picker`}),_jsx(_components.td,{children:`That template already contains its own embeds (depth-1 cap). Pick a template without embeds.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`”Embedded template references need attention” on save`}),_jsx(_components.td,{children:`An embed field points to a missing, cross-tenant, or self-referencing template. The red banner in each embed picker says which. Pick another template and save again.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Embed ticket failed but the parent succeeded`}),_jsx(_components.td,{children:`Open the parent ticket in your PSA. MSPortal posts a summary note listing each embed’s result. For ConnectWise, a common cause is a default status that is not active on the embed’s board. Fix the embed’s PSA Integration Settings and create the missing ticket by hand.`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`frequently-asked-questions`,children:`Frequently asked questions`}),`\n`,_jsxs(AccordionGroup,{children:[_jsx(Accordion,{title:`Where do I create a template?`,id:`where-do-i-create-a-template`,children:_jsxs(_components.p,{children:[`Go to `,_jsx(_components.strong,{children:`Settings > Tickets > Templates`}),` and click `,_jsx(_components.strong,{children:`New Template`}),`.`]})}),_jsx(Accordion,{title:`Does Preview create a ticket?`,id:`does-preview-create-a-ticket`,children:_jsx(_components.p,{children:`No. Preview only shows the form. It does not test PSA creation, webhooks, embedded tickets, or scheduling.`})}),_jsx(Accordion,{title:`Can I disable a template by turning every role off?`,id:`can-i-disable-a-template-by-turning-every-role-off`,children:_jsxs(_components.p,{children:[`No. With no roles selected, every role can use the template. Turn off `,_jsx(_components.strong,{children:`Template is active and available for use`}),` instead.`]})}),_jsx(Accordion,{title:`Why can't I edit a field key?`,id:`why-cant-i-edit-a-field-key`,children:_jsx(_components.p,{children:`Keys are locked after the first save so existing tickets and subject variables keep working. Change the label or help text instead.`})}),_jsx(Accordion,{title:`Do changes to the parent template reach branches?`,id:`do-changes-to-the-parent-template-reach-branches`,children:_jsx(_components.p,{children:`No. A branch is an independent copy. Edit each branch separately.`})})]}),`\n`,_jsx(Heading,{level:`2`,id:`related-guides`,children:`Related guides`}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`Ticket Settings`,icon:`gear`,href:`/user-guides/settings/tickets`,children:_jsx(_components.p,{children:`Configure categories, defaults, and ticket behavior`})}),_jsx(Card,{title:`Create a ticket with AI`,icon:`sparkles`,href:`/user-guides/ticketing/open-a-ticket-with-ai`,children:_jsx(_components.p,{children:`Use AI to create tickets from a description`})}),_jsx(Card,{title:`Import/Export Settings`,icon:`file-import`,href:`/user-guides/settings/import-export`,children:_jsx(_components.p,{children:`Bulk import and export data`})}),_jsx(Card,{title:`ConnectWise Integration`,icon:`plug`,href:`/user-guides/integrations/enable-connectwise-integration`,children:_jsx(_components.p,{children:`Set up PSA integration for ticket sync`})}),_jsx(Card,{title:`Send answers to PSA fields`,icon:`arrow-right-to-bracket`,href:`/user-guides/ticketing/send-answers-to-psa-fields`,children:_jsx(_components.p,{children:`Write template answers to ticket UDFs`})})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"How to Create a Ticket Template","description":"Create, customize, and manage ticket templates, shared branches, access settings, and import/export","icon":"file-lines","href":"/user-guides/ticketing/how-to-create-a-ticket-template"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Before you start","slug":"before-you-start","depth":2,"children":[]},{"title":"Create a template","slug":"create-a-template","depth":2,"children":[]},{"title":"Set PSA defaults","slug":"set-psa-defaults","depth":2,"children":[]},{"title":"Set a subject","slug":"set-a-subject","depth":2,"children":[]},{"title":"Control who can use a template","slug":"control-who-can-use-a-template","depth":2,"children":[{"title":"Company Visibility","slug":"company-visibility","depth":3,"children":[]},{"title":"Role Access","slug":"role-access","depth":3,"children":[]},{"title":"Company Gating (Types and Industries)","slug":"company-gating-types-and-industries","depth":3,"children":[]}]},{"title":"Create a branch","slug":"create-a-branch","depth":2,"children":[{"title":"Move companies onto or off a branch","slug":"move-companies-onto-or-off-a-branch","depth":3,"children":[]},{"title":"Choose what new companies get","slug":"choose-what-new-companies-get","depth":3,"children":[]},{"title":"Edit or delete a branch","slug":"edit-or-delete-a-branch","depth":3,"children":[]}]},{"title":"Manage templates in the list","slug":"manage-templates-in-the-list","depth":2,"children":[]},{"title":"Import and export a template","slug":"import-and-export-a-template","depth":2,"children":[]},{"title":"Add sections and fields","slug":"add-sections-and-fields","depth":2,"children":[{"title":"Send an answer to a PSA field","slug":"send-an-answer-to-a-psa-field","depth":3,"children":[]},{"title":"Where pickers get their records","slug":"where-pickers-get-their-records","depth":3,"children":[]}]},{"title":"Show or require a field conditionally","slug":"show-or-require-a-field-conditionally","depth":2,"children":[]},{"title":"Set a priority override","slug":"set-a-priority-override","depth":2,"children":[]},{"title":"Embedded Templates","slug":"embedded-templates","depth":2,"children":[{"title":"How Embedded Templates Behave","slug":"how-embedded-templates-behave","depth":3,"children":[]},{"title":"Adding an Embedded Template Field","slug":"adding-an-embedded-template-field","depth":3,"children":[]},{"title":"The Depth-1 Cap","slug":"the-depth-1-cap","depth":3,"children":[]},{"title":"Embedded Templates and PSA Routing","slug":"embedded-templates-and-psa-routing","depth":3,"children":[]},{"title":"Attachments Inside Embeds","slug":"attachments-inside-embeds","depth":3,"children":[]},{"title":"Form Preview Renders Embeds","slug":"form-preview-renders-embeds","depth":3,"children":[]},{"title":"What Happens on Submit","slug":"what-happens-on-submit","depth":3,"children":[]},{"title":"Validation Errors When Saving","slug":"validation-errors-when-saving","depth":3,"children":[]}]},{"title":"Offer appointment scheduling","slug":"offer-appointment-scheduling","depth":2,"children":[]},{"title":"Use AI to design a template","slug":"use-ai-to-design-a-template","depth":2,"children":[]},{"title":"Activate and verify a template","slug":"activate-and-verify-a-template","depth":2,"children":[]},{"title":"Best practices","slug":"best-practices","depth":2,"children":[]},{"title":"Troubleshooting","slug":"troubleshooting","depth":2,"children":[]},{"title":"Frequently asked questions","slug":"frequently-asked-questions","depth":2,"children":[]},{"title":"Related guides","slug":"related-guides","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/msportal/d65dc731b8cde0aa/roadmap-embed.js"],"subdomain":"msportal","siteName":"MSPortal.ai Documentation","title":"How to Create a Ticket Template - MSPortal.ai Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-12T18:56:34.632Z","originalFileLocation":"user-guides/ticketing/how-to-create-a-ticket-template.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Create, customize, and manage ticket templates, shared branches, access settings, and import/export\">\u003cmeta data-mint-head name=\"application-name\" content=\"MSPortal.ai Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/msportal/MdEo74vho503Sp8Y/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/msportal/MdEo74vho503Sp8Y/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/msportal/MdEo74vho503Sp8Y/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/msportal/MdEo74vho503Sp8Y/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/msportal/MdEo74vho503Sp8Y/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/msportal/MdEo74vho503Sp8Y/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/msportal/MdEo74vho503Sp8Y/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/msportal/MdEo74vho503Sp8Y/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/msportal/MdEo74vho503Sp8Y/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"How to Create a Ticket Template - MSPortal.ai Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Create, customize, and manage ticket templates, shared branches, access settings, and import/export\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"MSPortal.ai Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.msportal.ai/user-guides/ticketing/how-to-create-a-ticket-template\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://msportal.mintlify.site/_mintlify/api/og/v2?division=Ticketing\u0026amp;title=How+to+Create+a+Ticket+Template\u0026amp;description=Create%2C+customize%2C+and+manage+ticket+templates%2C+shared+branches%2C+access+settings%2C+and+import%2Fexport\u0026amp;theme=88706d4dcbb07b7aeafbf701\u0026amp;signature=95c0fdad02824e97f74ab2f8f7a4388f8969b38041651a92205d2eee34adcfe5\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"How to Create a Ticket Template - MSPortal.ai Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Create, customize, and manage ticket templates, shared branches, access settings, and import/export\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://msportal.mintlify.site/_mintlify/api/og/v2?division=Ticketing\u0026amp;title=How+to+Create+a+Ticket+Template\u0026amp;description=Create%2C+customize%2C+and+manage+ticket+templates%2C+shared+branches%2C+access+settings%2C+and+import%2Fexport\u0026amp;theme=88706d4dcbb07b7aeafbf701\u0026amp;signature=95c0fdad02824e97f74ab2f8f7a4388f8969b38041651a92205d2eee34adcfe5\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/msportal/MdEo74vho503Sp8Y/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"MSPortal.ai Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0C8376\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.msportal.ai/user-guides/ticketing/how-to-create-a-ticket-template\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/user-guides/ticketing/how-to-create-a-ticket-template.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.msportal.ai/#organization\",\"name\":\"MSPortal.ai Documentation\",\"url\":\"https://docs.msportal.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/msportal/KnbwIXtZSTlVJTt6/logo/light.svg?fit=max\u0026auto=format\u0026n=KnbwIXtZSTlVJTt6\u0026q=85\u0026s=eb69f6d6bf16b2c401770aef19ade1d2\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.msportal.ai#website\",\"name\":\"MSPortal.ai Documentation\",\"url\":\"https://docs.msportal.ai\",\"publisher\":{\"@id\":\"https://docs.msportal.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.msportal.ai/user-guides/ticketing/how-to-create-a-ticket-template#webpage\",\"url\":\"https://docs.msportal.ai/user-guides/ticketing/how-to-create-a-ticket-template\",\"name\":\"How to Create a Ticket Template\",\"description\":\"Create, customize, and manage ticket templates, shared branches, access settings, and import/export\",\"dateModified\":\"2026-11-12T18:56:34.632Z\",\"isPartOf\":{\"@id\":\"https://docs.msportal.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.msportal.ai/user-guides/ticketing/how-to-create-a-ticket-template#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.msportal.ai/user-guides/ticketing/how-to-create-a-ticket-template#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Ticketing\",\"item\":\"https://docs.msportal.ai/user-guides/ticketing\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to Create a Ticket Template\",\"item\":\"https://docs.msportal.ai/user-guides/ticketing/how-to-create-a-ticket-template\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.msportal.ai/user-guides/ticketing/how-to-create-a-ticket-template#article\",\"headline\":\"How to Create a Ticket Template\",\"name\":\"How to Create a Ticket Template\",\"description\":\"Create, customize, and manage ticket templates, shared branches, access settings, and import/export\",\"url\":\"https://docs.msportal.ai/user-guides/ticketing/how-to-create-a-ticket-template\",\"mainEntityOfPage\":{\"@id\":\"https://docs.msportal.ai/user-guides/ticketing/how-to-create-a-ticket-template#webpage\"},\"dateModified\":\"2026-11-12T18:56:34.632Z\",\"publisher\":{\"@id\":\"https://docs.msportal.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.msportal.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"MSPortal.ai Documentation\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"MSPortal.ai Documentation\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/user-guides/ticketing/how-to-create-a-ticket-template.md","siteName":"MSPortal.ai Documentation","nav":{"global":null,"tabs":[{"tab":"Company Guides","pages":[{"title":"Company Guides","href":"/user-guides/account/manage-your-profile"}]},{"tab":"MSP Guides","anchors":[{"anchor":"Getting started","icon":"rocket","pages":[{"title":"Getting started","href":"/user-guides/getting-started"}]},{"anchor":"Planning","icon":"compass","pages":[{"title":"Planning","href":"/user-guides/company-overview"}]},{"anchor":"Operations","icon":"briefcase","groups":[{"group":"Client Onboarding","pages":[{"title":"Client Onboarding","icon":"clipboard-check","href":"/user-guides/client-onboarding"},{"title":"Open your onboarding portal","icon":"door-open","href":"/user-guides/client-onboarding/open-your-onboarding"},{"title":"Complete onboarding tasks and forms","icon":"list-check","href":"/user-guides/client-onboarding/complete-tasks-and-forms"},{"title":"Upload onboarding documents and secure files","icon":"file-arrow-up","href":"/user-guides/client-onboarding/upload-files"},{"title":"Hand over credentials during onboarding","icon":"key","href":"/user-guides/client-onboarding/hand-over-credentials"},{"title":"Review onboarding approvals and sign documents","icon":"signature","href":"/user-guides/client-onboarding/review-and-sign"},{"title":"Use onboarding meetings, training, surveys, and reference pages","icon":"clipboard-list","href":"/user-guides/client-onboarding/meetings-training-and-surveys"},{"title":"Quick Start","icon":"rocket","href":"/user-guides/client-onboarding/quick-start"},{"title":"Onboarding Templates","icon":"copy","href":"/user-guides/client-onboarding/templates"},{"title":"Client Pages","icon":"book-open","href":"/user-guides/client-onboarding/pages"},{"title":"Onboarding Forms","icon":"clipboard-list","href":"/user-guides/client-onboarding/forms"},{"title":"Managing Portals","icon":"bars-progress","href":"/user-guides/client-onboarding/managing-portals"},{"title":"Link an onboarding template task to a Standard","icon":"link","href":"/user-guides/client-onboarding/link-task-to-standard"},{"title":"Retrieve onboarding credentials and secure files","icon":"shield-halved","href":"/user-guides/client-onboarding/retrieve-secure-submissions"},{"title":"Custom Dates and Countdowns","icon":"stopwatch","href":"/user-guides/client-onboarding/custom-dates"},{"title":"Understand the client onboarding portal","icon":"browser","href":"/user-guides/client-onboarding/client-portal"}]},{"group":"Ticketing","pages":[{"title":"Tickets","icon":"ticket","href":"/user-guides/ticketing/index"},{"title":"How to open a ticket","icon":"ticket","href":"/msp-guides/ticketing/open-a-ticket"},{"title":"Find and follow up on a ticket","icon":"comments","href":"/msp-guides/ticketing/follow-up-on-a-ticket"},{"title":"Time ticket work with a timer","description":"Start a timer on a ConnectWise, HaloPSA or Autotask ticket or checklist item, then review the time before it is logged to your PSA.","icon":"stopwatch","href":"/user-guides/ticketing/time-work-with-timers"},{"title":"How to Create a Ticket Template","icon":"file-lines","href":"/user-guides/ticketing/how-to-create-a-ticket-template"},{"title":"Create a ticket with AI assistance","description":"Describe a request in plain language and let the AI Assistant choose a template and fill in the New Ticket form.","icon":"wand-magic-sparkles","href":"/msp-guides/ticketing/open-a-ticket-with-ai"},{"title":"Change Management","icon":"shield-check","href":"/user-guides/ticketing/change-management"},{"title":"Ticket approval chains","icon":"list-check","href":"/user-guides/ticketing/ticket-approval-chains"},{"title":"Flow Webhook Recipient","icon":"webhook","href":"/user-guides/ticketing/flow-webhook-recipient"},{"title":"Understand your available request templates","icon":"file-lines","href":"/msp-guides/ticketing/understand-request-templates"},{"title":"Create and preview a ticket template","icon":"file-lines","href":"/user-guides/ticketing/create-and-preview-ticket-template"},{"title":"Translate ticket forms","icon":"language","href":"/user-guides/ticketing/translate-ticket-forms"},{"title":"Ticket description layout","icon":"align-left","href":"/user-guides/ticketing/ticket-description-layout"},{"title":"Send template answers to PSA fields","icon":"arrow-right-to-bracket","href":"/user-guides/ticketing/send-answers-to-psa-fields"}]},{"group":"Training","pages":[{"title":"Training","icon":"graduation-cap","href":"/user-guides/training/index"},{"title":"Find and enroll in a training course","icon":"book-open","href":"/user-guides/training/find-and-enroll"},{"title":"Take a course and track progress","icon":"graduation-cap","href":"/user-guides/training/take-a-course"},{"title":"View and share a training certificate","icon":"award","href":"/user-guides/training/certificates"},{"title":"Enable training for companies and users","icon":"graduation-cap","href":"/user-guides/training/enabling-training"},{"title":"Manage learning paths","icon":"route","href":"/user-guides/training/learning-paths"},{"title":"Security awareness training","icon":"shield-check","href":"/user-guides/training/security-awareness"},{"title":"Read security awareness learner status","icon":"user-shield","href":"/user-guides/training/read-awareness-status"},{"title":"Read a Breach Secure Now learner's risk details","icon":"user-shield","href":"/user-guides/training/read-bsn-risk"},{"title":"Open your Huntress training","icon":"shield-check","href":"/user-guides/training/open-huntress-training"},{"title":"Find Huntress training assignments","icon":"graduation-cap","href":"/user-guides/training/read-huntress-assignments"},{"title":"Read a Huntress curriculum and preview episodes","icon":"book-open","href":"/user-guides/training/read-huntress-curriculum"}]},{"group":"Projects","pages":[{"title":"Projects","icon":"folder-open","href":"/user-guides/projects/index"},{"title":"Projects and Onboarding are coming together","icon":"diagram-project","href":"/user-guides/projects/upcoming-onboarding-changes"},{"title":"Find and open a project","icon":"folder-open","href":"/user-guides/projects/find-projects"},{"title":"Filter and sort projects","icon":"filter","href":"/user-guides/projects/filter-projects"},{"title":"Native Projects: Start to Finish","icon":"folder-open","href":"/user-guides/projects/native-projects"},{"title":"Project Templates","icon":"layer-group","href":"/user-guides/projects/templates"},{"title":"Project AI, MCP, and Client Reviews","icon":"sparkles","href":"/user-guides/projects/ai-and-client-reviews"},{"title":"Project Workspace","icon":"list-check","href":"/user-guides/projects/workspace"},{"title":"Read and filter project ticket Kanban","icon":"table-columns","href":"/user-guides/projects/read-ticket-kanban"},{"title":"Read a project schedule","icon":"calendar-days","href":"/user-guides/projects/read-project-schedule"},{"title":"Filter the project schedule","icon":"filter","href":"/user-guides/projects/filter-project-schedule"},{"title":"Dispatch project work","icon":"calendar-clock","href":"/user-guides/projects/dispatch-board"},{"title":"Read the project overview","icon":"file-lines","href":"/user-guides/projects/read-project-overview"},{"title":"Read project phases and tickets","icon":"layer-group","href":"/user-guides/projects/read-project-phases"},{"title":"Use phase and ticket action menus","icon":"ellipsis","href":"/user-guides/projects/use-phase-ticket-actions"},{"title":"Project Team and Onboarding Contacts","icon":"users","href":"/user-guides/projects/read-project-team"},{"title":"Edit the project goal and description","icon":"pen-to-square","href":"/user-guides/projects/edit-project-details"},{"title":"Manage project contacts and the client sponsor","icon":"address-book","href":"/user-guides/projects/manage-project-contacts"},{"title":"Read project updates","icon":"message","href":"/user-guides/projects/read-project-updates"},{"title":"Read project milestones","icon":"calendar","href":"/user-guides/projects/read-project-timeline"},{"title":"Read deliverables and download project files","icon":"file-arrow-down","href":"/user-guides/projects/read-project-deliverables"},{"title":"Create and manage project deliverables","icon":"list-check","href":"/user-guides/projects/manage-project-deliverables"},{"title":"Upload and share deliverable documents","icon":"file-arrow-up","href":"/user-guides/projects/manage-deliverable-documents"},{"title":"Write and share project updates","icon":"pen-to-square","href":"/user-guides/projects/write-project-updates"},{"title":"Create and manage project milestones","icon":"flag-checkered","href":"/user-guides/projects/manage-project-milestones"},{"title":"Project Calendar","icon":"calendar","href":"/user-guides/projects/calendar"},{"title":"Respond to project decisions and action items","icon":"list-check","href":"/user-guides/projects/respond-to-project-actions"},{"title":"Create and manage project decisions and action items","icon":"clipboard-list","href":"/user-guides/projects/manage-project-actions"},{"title":"Export a project to Excel","icon":"file-spreadsheet","href":"/user-guides/projects/export-project-to-excel"}]},{"group":"Compliance","pages":[{"title":"Compliance","icon":"shield-halved","href":"/user-guides/compliance/index"},{"title":"Find compliance checks and understand results","icon":"shield-halved","href":"/user-guides/compliance/find-and-read-checks"},{"title":"Read compliance guidance, evidence, and history","icon":"shield-halved","href":"/user-guides/compliance/read-evidence-and-history"},{"title":"Export the compliance check list","icon":"shield-halved","href":"/user-guides/compliance/export-checks"},{"title":"Compliance AI","icon":"sparkles","href":"/user-guides/compliance/compliance-ai"},{"title":"Risk Management","icon":"shield-halved","href":"/user-guides/compliance/risk-management"},{"title":"Liongard Compliance Metrics","icon":"gauge-high","href":"/user-guides/compliance/liongard-metrics"},{"title":"Adding CIS Benchmarks","icon":"book","href":"/user-guides/compliance/adding-cis-benchmarks"},{"title":"Add NIS2 playbooks","icon":"book","href":"/user-guides/compliance/adding-nis2-playbooks"},{"title":"Track AI Readiness on a dashboard","icon":"brain","href":"/user-guides/compliance/ai-readiness-dashboard"},{"title":"Review completed compliance assessments","icon":"clock-rotate-left","href":"/user-guides/compliance/view-check-history"}]},{"group":"Documentation","pages":[{"title":"Documentation","icon":"book","href":"/user-guides/documentation/index"},{"title":"Find and read shared documents","icon":"file-lines","href":"/user-guides/documentation/find-shared-documents"},{"title":"Use the Documentation Hub","icon":"grid-2","href":"/user-guides/documentation/resource-hub"},{"title":"Use shared passwords","icon":"key","href":"/user-guides/documentation/shared-passwords"},{"title":"View shared IT records and procedures","icon":"server","href":"/user-guides/documentation/view-it-records"},{"title":"Create and maintain portal documents","icon":"file-pen","href":"/user-guides/documentation/create-portal-documents"},{"title":"Add files and links to the Documentation Hub","icon":"grid-2","href":"/user-guides/documentation/add-files-and-links-to-hub"},{"title":"Suggest related guides on new tickets","icon":"book-open","href":"/user-guides/documentation/related-guides"}]},{"group":"Invoices","pages":[{"title":"Invoices","icon":"file-invoice-dollar","href":"/user-guides/invoices/index"},{"title":"Find and review invoices","icon":"file-invoice","href":"/user-guides/invoices/view-invoices"},{"title":"Where invoice data comes from","icon":"file-invoice-dollar","href":"/msp-guides/invoices/invoice-data-sources"},{"title":"Download and export invoices","icon":"download","href":"/user-guides/invoices/download-invoices"},{"title":"Use an invoice payment link","icon":"credit-card","href":"/user-guides/invoices/pay-an-invoice"},{"title":"MSP: review Pax8 invoice charges","icon":"receipt","href":"/user-guides/invoices/view-pax8-invoices"},{"title":"Upload invoices, quotes and orders with the API","icon":"code","href":"/msp-guides/invoices/upload-with-the-api"}]},{"group":"Agreements and contracts","pages":[{"title":"Agreements and contracts","icon":"file-signature","href":"/user-guides/agreements/index"},{"title":"Find and review an agreement","icon":"file-contract","href":"/user-guides/agreements/view-agreements"},{"title":"Understand agreement balances","icon":"clock","href":"/user-guides/agreements/read-balances"},{"title":"Open an agreement PDF","icon":"file-pdf","href":"/user-guides/agreements/download-documents"},{"title":"Upload and manage agreement PDFs","icon":"file-arrow-up","href":"/user-guides/agreements/manage-documents"}]},{"group":"Storefront","pages":[{"title":"Storefront","icon":"store","href":"/user-guides/storefront/index"},{"title":"Review your subscriptions","icon":"layer-group","href":"/user-guides/storefront/view-subscriptions"},{"title":"Review Azure usage","icon":"cloud","href":"/user-guides/storefront/view-azure-usage"}]},{"group":"Quotes","pages":[{"title":"Quotes","icon":"file-contract","href":"/user-guides/quotes/index"},{"title":"Connect and manage Quoter","icon":"plug","href":"/user-guides/quotes/setup"},{"title":"Find and open a quote","icon":"file-contract","href":"/user-guides/quotes/view-quotes"},{"title":"Read a quote’s details","icon":"file-invoice-dollar","href":"/user-guides/quotes/read-quote-details"},{"title":"Download quote documents and export the list","icon":"file-arrow-down","href":"/user-guides/quotes/download-quotes"},{"title":"Control company quote access","icon":"user-shield","href":"/user-guides/quotes/manage-company-access"},{"title":"Troubleshoot missing Quoter quotes and company links","icon":"magnifying-glass","href":"/user-guides/quotes/troubleshoot-quoter-quotes"},{"title":"Troubleshoot QuoteWerks quotes and QuoteValet links","icon":"file-invoice-dollar","href":"/user-guides/quotes/troubleshoot-quotewerks-quotes"},{"title":"Troubleshoot Salesbuildr quotes and PDFs","icon":"file-invoice-dollar","href":"/user-guides/quotes/troubleshoot-salesbuildr-quotes"}]},{"group":"Reporting","pages":[{"title":"Reporting","icon":"chart-pie","href":"/user-guides/reporting/index"},{"title":"Design reporting blocks with AI","icon":"wand-magic-sparkles","href":"/user-guides/reporting/design-ai-blocks"},{"title":"Present reports as slides","icon":"presentation-screen","href":"/user-guides/reporting/present-reports"},{"title":"Brand packages","icon":"palette","href":"/user-guides/reporting/brand-packages"},{"title":"Planner report with a cover page","icon":"book-open","href":"/user-guides/reporting/planner-report"},{"title":"Design custom reporting blocks","icon":"chart-column","href":"/user-guides/reporting/custom-blocks"},{"title":"Edit a report presentation","icon":"presentation-screen","href":"/user-guides/reporting/edit-presentation"},{"title":"Reports Imports","icon":"inbox","href":"/user-guides/reporting/email-imports"},{"title":"Industry trends and software standardization","icon":"industry","href":"/user-guides/reporting/industry-insights"}]}]},{"anchor":"Protection","icon":"shield-halved","pages":[{"title":"Protection","href":"/user-guides/cloud"}]},{"anchor":"MSP Tools","icon":"toolbox","pages":[{"title":"MSP Tools","href":"/user-guides/msp-tools"}]},{"anchor":"Administration","icon":"gear","pages":[{"title":"Administration","href":"/user-guides/settings"}]},{"anchor":"Integrations","icon":"plug","pages":[{"title":"Integrations","href":"/user-guides/integrations"}]}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api-reference/budgets/list-budgets"}]},{"tab":"Release Notes","pages":[{"title":"Release Notes","href":"/release-notes"}]}]},"basePath":"","title":"How to Create a Ticket Template - MSPortal.ai Documentation","buildId":"dpl_Fyv1NbzwP68g2bEH2Roy98uY1zmE","deploymentId":"dpl_Fyv1NbzwP68g2bEH2Roy98uY1zmE","dynamics":[],"chunks":[]}