Ticket Triage
The Ticket Triage action automatically analyzes and sets various fields for incoming PSA tickets, such as type, sub-type, priority, contact, company, and custom fields. It can also move the ticket to a specified board or queue.
Automating ticket triage ensures consistency, reduces manual effort for technicians, speeds up ticket processing, and helps in correctly categorizing issues मूडfor better reporting and resolution.
What It Does
- Analyzes Ticket Content: Reviews the ticket's title, summary (conversation history), existing metadata, and linked configurations.
- Sets PSA Fields: Intelligently populates or updates fields like:
- Type, Sub-Type, Item (ConnectWise)
- Ticket Type, Issue Type, Sub-Issue Type, Category (Autotask)
- Priority
- Contact
- Company & Site (ConnectWise) / Company (Autotask)
- Agreement/Contract
- Due Date (Autotask)
- Summary/Title
- Budget/Estimated Hours
- Team (ConnectWise)
- User-defined custom fields.
- Considers Context: Leverages information from similar past tickets and custom instructions (both action-level and company-level) to make informed decisions.
- Optional Board/Queue Management: Can move the triaged ticket to a different board or queue in your PSA.
How It Works
The Ticket Triage action processes a single ticket through several stages:
1. Input Data
The action takes the PsaTicket
to be triaged as its primary input, along with configuration settings that define which fields to triage and how.
2. Field Triage Process
For each field specified in the fields_to_triage
configuration, Neo performs the following:
- Gathers Context: It considers the ticket's content (summary, title), metadata, linked configurations, and any provided custom instructions (both for the specific field and general company-level instructions if
include_company_custom_instructions
is enabled). It also looks at similar past tickets to understand common patterns for the field being triaged. - Specialized Logic:
- Company Triage: Neo identifies the most appropriate company for the ticket. It uses AI to extract potential company names, IDs, and associated contact details from the ticket's content. It then attempts to match this information with your PSA data based on the
search_company_by
configuration, which can include:COMPANY_ID
: Direct match of a company ID found in the ticket.COMPANY_NAME
: Fuzzy matching of company names extracted from the ticket against company names in your PSA.CONTACT_EMAIL
: Identifies a contact by an email in the ticket, then uses that contact's associated company.CONTACT_FULL_NAME
: Identifies a contact by a full name in the ticket, then uses that contact's associated company.
- Site Triage (ConnectWise specific): When triaging the
Site
field for a ConnectWise ticket, Neo determines the correct site using thesearch_site_by
configuration:CONTACT_EMAIL
: Analyzes the ticket contact's email domain to infer a potential site and matches it against the company's known sites.CONTACT_PHONE
: Matches the ticket contact's phone number with phone numbers associated with the company's sites.SITE_NAME_PRESENT_IN_NOTES
: AI extracts potential site names mentioned within the ticket notes and matches them against the company's configured sites.
- Contact Triage: Neo identifies the correct contact for the ticket. AI extracts potential contact names and email addresses from the ticket's content. This information is then matched against contacts in your PSA by:
- Email address (primary matching method).
- Full name (using fuzzy matching against contacts, typically within the ticket's assigned company).
- Key settings include:
use_client_primary_contact_if_unable_to_triage
: If enabled, Neo will use the primary contact associated with the ticket's company as a fallback if a specific contact cannot be confidently determined from the ticket details.save_original_contact_as_additional_contact
(Autotask only): If Neo changes the primary contact on an Autotask ticket, this setting allows the original contact to be saved as an additional contact.
- Priority Triage: Neo determines the ticket's priority by combining its internal logic (based on an urgency/impact matrix) with your
custom_instructions
. If theignore_neo_instructions_for_priority
setting is enabled, Neo relies solely on your custom instructions. - Custom Field Triage: Neo populates custom fields based on the
custom_field_options_source
setting:Fixed List
: You provide a predefined list ofcustom_field_possible_options
, and Neo selects the most appropriate one.Free Text (use Custom Instructions to guide Neo)
: Neo generates a value based on the ticket content and yourcustom_instructions
.Another Custom Field (UDF) of the same ticket
: Neo uses the value(s) from another specified custom field on the ticket (defined inoptions_source_ticket_another_custom_field_name
) as the available options.Custom Field (UDF) of the ticket's company
: Neo uses the value(s) from a specified custom field on the ticket's company (defined inoptions_source_company_custom_field_name
) as the available options.
- Budget/Estimated Hours Triage (for
Budget Hours
in ConnectWise orEstimated Hours
in Autotask): Neo estimates the required hours by:- Analyzing similar past tickets.
- Prioritizing the actual hours logged on those similar tickets.
- If actual hours are unavailable, it uses the estimated hours from those similar tickets.
- It calculates an average from these historical hours and rounds it to the nearest quarter-hour to suggest a budget.
- The
include_only_billable_hours_to_estimate_budget_hours
setting determines if only billable hours from past tickets are considered in this estimation.
- Due Date Triage (Autotask specific for
Due Date
field): Neo predicts an appropriate due date using AI. It considers any specific timeframes or deadlines mentioned in the ticket, the ticket's priority, standard business hours, issue complexity, and anycustom_instructions
you provide. The suggested due date is returned in ISO 8601 format. - Title/Summary Triage (for
Summary
in ConnectWise orTitle
in Autotask): Neo generates a concise and descriptive title or summary. It analyzes the ticket's entire content (notes, metadata) to identify the core issue, aiming to create a summary that accurately reflects the ticket's purpose. It preserves important details like internal codes, server names, software names, and dates from the original title/summary, and considers yourcustom_instructions
. - Other Fields (Type, Sub-Type, Item, Board/Queue, Agreement, Team, etc.): For most other PSA fields, Neo first fetches the list of available options for that field from your PSA (these options can be dependent on the ticket's current board/queue or parent fields like Type). It then analyzes the ticket's content, metadata, linked configurations, custom instructions, and patterns from similar past tickets to select the best-fitting option.
- Company Triage: Neo identifies the most appropriate company for the ticket. It uses AI to extract potential company names, IDs, and associated contact details from the ticket's content. It then attempts to match this information with your PSA data based on the
- AI Decision Making: Utilizes AI models to analyze the gathered information and select the most appropriate value for the field from the available options or based on free-text instructions.
3. Board/Queue Management
If move_to_board
is configured to True
and a target_board_or_queue_name
is provided, Neo identifies the ID of the target board/queue to prepare for a potential move (usually handled by a subsequent "Update Ticket Fields" action).
4. Output Structure
The action produces a TriageOutput
object. This includes:
default_messages_for_dashboard
: Detailed messages about the triage process for the Event History.default_messages_for_msp
: Messages suitable for internal notes in the PSA, summarizing the triage actions.default_fields_to_update
: A list ofFieldUpdateAudit
objects. Each object represents a field that was triaged and suggests the new value. This list is typically used by a subsequent "Update Ticket Fields" action to apply the changes in the PSA.
Configuration Fields
When you add the "Ticket Triage" action to a workflow, you'll configure the following:
fields_to_triage
A list defining each specific field you want Neo to triage for the ticket. Each item in this list has its own settings:
field_name
The specific PSA field to be triaged (e.g., "Priority", "Type", "Custom - Billing Category").
allow_removing_field
If set to True
, Neo is allowed to clear the value of this field if its analysis determines that no value is appropriate or if custom instructions direct it to do so. (default: False
)
use_custom_instructions
Set to True
to provide specific AI instructions for triaging this particular field. (default: False
)
custom_instructions
(Optional) Provide plain text instructions to guide the AI's decision-making process for this specific field. This is visible if use_custom_instructions
is True
.
include_company_custom_instructions
If set to True
, Neo will also consider any relevant company-level custom instructions (configured on the 'Companies' tab) when triaging this field. (default: False
)
ignore_neo_instructions_for_priority
(Optional, specific to "Priority" field) If True
, Neo will not use its default internal logic for determining priority (based on urgency/impact matrix) and will rely solely on your custom_instructions
. (default: False
)
custom_field_name
(Optional, specific to "Custom Field" type in field_name
) The exact name of the custom field (UDF) in your PSA that you want to triage.
custom_field_options_source
(Optional, specific to "Custom Field" type in field_name
) Defines how Neo should determine the possible values for the custom field. Options include:
Fixed List
: You provide a predefined list of possible values.Free Text (use Custom Instructions to guide Neo)
: Neo will generate a value based on the ticket content and yourcustom_instructions
.Another Custom Field (UDF) of the same ticket
: Neo uses the value(s) from another specified custom field on the ticket as options.Custom Field (UDF) of the ticket's company
: Neo uses the value(s) from a specified custom field on the ticket's company as options. (default:Fixed List
)
custom_field_possible_options
(Optional, specific to "Custom Field" with custom_field_options_source
as Fixed List
) A list of exact text values that are the allowed options for this custom field.
options_source_ticket_another_custom_field_name
(Optional, specific to "Custom Field" with custom_field_options_source
as Another Custom Field (UDF) of the same ticket
) The name of the other custom field on the ticket that provides the options.
options_source_company_custom_field_name
(Optional, specific to "Custom Field" with custom_field_options_source
as Custom Field (UDF) of the ticket's company
) The name of the custom field on the ticket's company that provides the options.
save_original_contact_as_additional_contact
(Optional, Autotask only, specific to "Contact" field) If True
and Neo changes the primary contact, the original contact will be added as an additional contact on the ticket. (default: False
)
use_client_primary_contact_if_unable_to_triage
(Optional, specific to "Contact" field) If True
and Neo cannot confidently determine the correct contact from the ticket details, it will attempt to use the primary contact associated with the ticket's company. (default: False
)
search_company_by
(Optional, specific to "Company" field) A set of methods Neo will use to identify the company. Options include searching by COMPANY_ID
, COMPANY_NAME
, CONTACT_EMAIL
, CONTACT_FULL_NAME
found within the ticket. (default: COMPANY_NAME
, CONTACT_EMAIL
, CONTACT_FULL_NAME
)
search_site_by
(Optional, ConnectWise only, specific to "Site" field) A set of methods Neo will use to identify the site. Options include searching by CONTACT_EMAIL
, CONTACT_PHONE
, or SITE_NAME_PRESENT_IN_NOTES
. (default: CONTACT_EMAIL
, CONTACT_PHONE
, SITE_NAME_PRESENT_IN_NOTES
)
move_to_board
Set to True
if you want Neo to potentially move the ticket to a different board or queue after triaging. The actual move is typically performed by a subsequent "Update Ticket Fields" action using Neo's suggestion. (default: False
)
target_board_or_queue_name
(Optional) The name of the destination board (ConnectWise) or queue (Autotask) if move_to_board
is True
.
Output Fields
This action makes the following information available to subsequent actions in the workflow:
default_messages_for_dashboard
A list of strings providing detailed messages about the triage process for each field. These are displayed in the Neo Dashboard Event History.
default_messages_for_msp
A list of WorkflowMessages
objects suitable for internal MSP use, such as adding as an internal note to the ticket, summarizing the triage actions and reasoning.
default_fields_to_update
A list of FieldUpdateAudit
objects. Each object details a field that was triaged, its original value, the value Neo suggests, and the reasoning. This output is crucial for a subsequent "Update Ticket Fields" action to apply the changes to the PSA ticket.
Use Cases
1. Standardize New Ticket Categorization
- Trigger: New ticket created.
- Action: Ticket Triage
fields_to_triage
: Configure to setType
,Sub-Type
,Priority
.
- Action: Update Ticket Fields (to apply the triage suggestions).
- Result: New tickets are consistently categorized, improving routing and reporting.
2. Assign Tickets from a Catch-All Company
- Trigger: New ticket created in a "Catch-All" or "Unknown" company.
- Action: Ticket Triage
fields_to_triage
: Configure to setCompany
andContact
. Provide custom instructions if needed to help identify them from email signatures or ticket content.
- Action: Update Ticket Fields.
- Result: Tickets are correctly assigned to the right company and contact, ensuring proper ownership and communication.
3. Set Agreement/Contract Post-Resolution
- Trigger: Ticket status changed to "Resolved" or "Closed".
- Action: Ticket Triage
fields_to_triage
: Configure to setAgreement
(ConnectWise) orContract
(Autotask).custom_instructions
: Provide detailed instructions on how to select the correct agreement/contract based on the type of work performed (derived from ticket notes/summary), services used, or specific keywords.
- Action: Update Ticket Fields.
- Result: Ensures accurate billing and service tracking by associating resolved tickets with the correct service agreements.
Best Practices
- Start Simple: Begin by triaging a few key fields (e.g., Priority, Type). Gradually add more fields as you become comfortable with the action's behavior.
- Iterate with Custom Instructions: For fields that are complex or highly specific to your business (especially custom fields), use the
custom_instructions
setting extensively. Review Neo's triage decisions in the Event History and refine your instructions to improve accuracy. - Use Examples (Implicitly): While you don't directly provide examples in the configuration, Neo learns from your PSA data. Ensure your existing ticket data is well-maintained for fields you want Neo to triage, as this helps its internal learning.
- Test
allow_removing_field
Carefully: Only enableallow_removing_field
if you have clear scenarios where a field value should be intentionally cleared by Neo. - Validate Custom Field Options:
- If using
Fixed List
forcustom_field_options_source
, ensure thecustom_field_possible_options
list is accurate and complete. - For
Free Text
, provide robustcustom_instructions
to guide Neo in generating appropriate values.
- If using
- Monitor Event History: Regularly check the Neo Dashboard Event History to see how the Ticket Triage action is performing. Note the reasoning provided by Neo to understand its decisions and identify areas for improvement in your configurations or instructions.
- Combine with "Update Ticket Fields": The Ticket Triage action suggests changes. You almost always need to follow it with an "Update Ticket Fields" action to apply these suggestions to the actual ticket in your PSA.
- Board/Queue Triage: When triaging to a different board/queue, ensure the
target_board_or_queue_name
is correct. Also, remember that dependent fields like Type, Sub-Type, etc., might have different available options on the target board/queue. Neo will attempt to triage based on the options available on the original board/queue if the field is triaged before the board/queue itself is conceptually changed. Consider the order of operations.
Neo's Default Priority Instructions
For Priority triaging, Neo has its own built-in instructions based on an urgency/impact matrix. If the ignore_neo_instructions_for_priority
setting is checked, Neo will NOT use these default instructions and will rely solely on your custom instructions. If unchecked (default), Neo will use both your custom instructions and its own instructions.
Here are Neo's exact default priority instructions:
# Neo's Priority Triage default instruction
- Priority is determined by urgency and impact
- Urgency is how quickly the issue needs to be resolved
- Impact is how many people are affected by the issue
## Definitions:
- **Urgency - Low**: One user or a small group of users is affected
- **Urgency - Medium**: Departments or large groups of users are affected
- **Urgency - High**: The whole company is affected
- **Impact - Low**: More of an irritation than a stoppage
- **Impact - Medium**: Business is degraded, but there is a reasonable workaround.
- **Impact - High**: Critical - Major business processes are stopped, there is no reasonable workaround
## Priority Matrix:
| | High Urgency | Medium Urgency | Low Urgency |
| --- | --- | --- | --- |
| High Impact | PRIORITY 1 | PRIORITY 2 | PRIORITY 2 |
| Medium Impact | PRIORITY 2 | PRIORITY 3 | PRIORITY 3 |
| Low Impact | PRIORITY 3 | PRIORITY 3 | PRIORITY 4 |
## Additional Instructions
- "Priority 1 - Emergency Response" is rather rare and extreme. Choose it ONLY if the issue is absolutely critical
- "Priority 4 - Scheduled Maintanence" is rather rare and extreme. Choose it ONLY if the issue is absolutely not important
- Usually you will choose "Priority 3 - Normal Response" or "Priority 2 - Quick Response"
- Choose "Priority 3 - Normal Response" for quote requests
- If you are not sure what to choose or there is not enough information to determine urgency, impact or priority - go with "Priority 3 - Normal Response"
- If it appears that the ticket is a question, you should assume it's a "Priority 4"
## Think step by step
1. Determine urgency
2. Determine impact
3. Use the Priority Matrix and Additional Instructions to pick Priority based on Urgency and Impact
4. Explain your reasoning, urgency choice, impact choice, priority choice in "justification" section of your response