Update Halo Ticket from Email
The Update Halo Ticket from Email action locates an existing Halo ticket from an incoming email and adds a note to it. It can also optionally change the ticket's status or priority.
This is a workflow action. It scans the email for a Halo ticket number and uses MSPintegrations business logic to locate the matching ticket and associated user before adding a note. If you already know the ticket ID, use Update Halo Ticket for direct control. Learn more about the difference between workflow actions and single API call actions.
When to Use This Action
Use this action when:
- You want to add notes to existing tickets based on incoming human-generated emails
- You need to detect ticket numbers from email subject lines or body content
- You want automatic user matching to associate the note with the email sender
Don't use this action for:
- Creating new tickets: Use Create Halo Ticket instead.
- Automated alert emails: System-generated emails from monitoring tools or automated systems are better handled with different actions.
- Known ticket IDs: If you already know the ticket ID, use Update Halo Ticket instead.
Common Pattern: Pairing with Create Halo Ticket
This action is typically used together with Create Halo Ticket in a two-step pattern:
- Update Halo Ticket from Email runs first and attempts to find an existing ticket
- If no ticket is found, Create Halo Ticket runs next to create a new one
This pattern handles both replies to existing tickets and new support requests with a single rule:
Rule: "Process Support Email"
1. Update Halo Ticket from Email
- If ticket found: adds note, workflow stops (or continues based on your setting)
- If no ticket found: sets flag and continues to next action
2. Create Halo Ticket
- Creates new ticket only if step 1 didn't find one
How It Works
This action operates in two phases: first it finds the ticket, then it updates it.
Phase 1: Find the Ticket
- Search for a ticket number: Scan configured fields (subject, body, etc.) for a Halo ticket number using the configured pattern
- Query Halo: Verify the ticket exists in Halo
- Look up sender: Search for a Halo user matching the email sender's address
If no ticket is found, the action sets UnableToLocateExistingTicket to true and continues to the next action (typically Create Halo Ticket).
Phase 2: Update the Ticket
Once a ticket is found:
- Add a note: Update the ticket details with the configured note content
- Associate user (if found): Link the note to the matched Halo user
- Update status (optional): Change the ticket status if configured
- Update priority (optional): Change the ticket priority if configured
Ticket Number Detection
The action searches the fields you specify for text matching the ticket number pattern. By default, it searches the email subject line using the pattern #(\d+)|(\d+), which matches:
#12345: Ticket number with hash prefix12345: Plain ticket number
You can configure it to search:
- Email subject
- Email body
- Custom parsed values from previous actions
- Any other available variable
You can also customize the regex pattern if your Halo instance uses a different ticket number format.
User Matching
The action automatically searches for a Halo user matching the sender's email address. If found:
- The user is associated with the note
- The user information is available in the returned variables
Configuration
Connection
| Field | Description |
|---|---|
| Halo Connection | Select the Halo connection to use for this action. |
Ticket Matching
| Field | Description | Default |
|---|---|---|
| Fields to Search for Ticket Number | Select which fields to search for the ticket number. You can add multiple fields including body, custom variables, or parsed values. | {{custom.subject}} |
| Ticket Number Pattern | Regex pattern to extract the ticket number. The first capturing group is used. | `#(\d+) |
Note Content
| Field | Description | Default |
|---|---|---|
| Note Text | The note content to add to the ticket. Supports text expressions. | Email headers and body content |
Ticket Updates (Optional)
| Field | Description |
|---|---|
| Status After Update | Optionally change the ticket status after adding the note. Leave empty to keep the current status. |
| Priority After Update | Optionally change the ticket priority after adding the note. Leave empty to keep the current priority. |
Workflow Control
| Field | Description | Default |
|---|---|---|
| Action If No Ticket Matched | What happens if no matching ticket is found. Set to Continue to allow subsequent actions (like Create Halo Ticket) to run. | Continue |
| Action After Update | What happens after successfully updating the ticket. | Stop All |
| Error Handling | What happens if the Halo API returns an error. | Exception |
Returned Variables
When you configure Store the results in Variable, these variables become available for use in subsequent actions:
Status Flags
| Variable | Type | Description |
|---|---|---|
IdentifiedTicketNumber | bool | true if text matching the ticket number pattern was found |
LocatedExistingTicket | bool | true if the ticket was found in Halo |
UnableToLocateExistingTicket | bool | true if no matching ticket was found (signals Create Halo Ticket should run) |
LocatedUser | bool | true if a Halo user matching the sender's email was found |
UpdatedTicket | bool | true if the ticket was updated successfully |
UpdatedTicketCausedError | bool | true if the update failed |
Retrieved Objects
| Variable | Type | Description |
|---|---|---|
Ticket | object | The matched Halo ticket (see properties below) |
User | object | The matched Halo user from the sender's email (see properties below) |
Ticket Properties
| Property | Type | Description |
|---|---|---|
id | number | The ticket ID |
summary | string | The ticket summary |
details | string | The ticket details |
client_id | number | The client ID |
client_name | string | The client name |
user_id | number | The user ID |
user_name | string | The user name |
status_id | number | The status ID |
status_name | string | The status name |
priority_id | number | The priority ID |
priority_name | string | The priority name |
User Properties
| Property | Type | Description |
|---|---|---|
id | number | The user ID |
name | string | The user name |
emailaddress | string | The user's email address |
client_id | number | The client ID |
client_name | string | The client name |
Example usage: {{custom.myVariable.Ticket.id}}
FAQs
What happens if no ticket number is found in the email?
The action sets UnableToLocateExistingTicket to true and continues to the next action (when Action If No Ticket Matched is set to Continue). This allows Create Halo Ticket to run and create a new ticket.
What ticket number formats are recognized?
By default, the action recognizes numbers with or without a hash prefix (e.g., #12345 or 12345). You can customize the pattern in the Ticket Number Pattern field if your organization uses a different format.
Can I update tickets without adding a note?
No, this action always adds note content to the ticket details. If you only need to update ticket fields without modifying the details, use Update Halo Ticket instead.
What if the sender's email doesn't match any Halo user?
The action still updates the ticket, but without associating a specific user. The LocatedUser flag is set to false, and the User object is null.