Update ConnectWise Ticket
The Update ConnectWise Ticket action locates an existing ConnectWise ticket from an incoming email and adds a note to it. It can also optionally change the ticket's status.
This is a workflow action. It scans the email for a ConnectWise ticket number and uses MSPintegrations business logic to locate the matching ticket before adding a note. If you already know the ticket ID, use Create ConnectWise Ticket Note 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 to automatically update ticket status when customers reply
Don't use this action for:
- Creating new tickets: Use Create ConnectWise Ticket instead.
- Automated alert emails: System-generated emails from monitoring tools or automated systems often do not carry a ticket number. Use Query ConnectWise Tickets to find the ticket, then Create ConnectWise Ticket Note to add the note.
- Known ticket IDs: If you already know the ticket ID, use Create ConnectWise Ticket Note to add a note to it.
- Scheduled tasks: This action requires an email to search for ticket numbers and is only available for Hosted Mailboxes and Remote Mailboxes.
Common Pattern: Pairing with Create ConnectWise Ticket
This action is typically used together with Create ConnectWise Ticket in a two-step pattern:
- Update ConnectWise Ticket runs first and attempts to find an existing ticket
- If no ticket is found, Create ConnectWise 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 ConnectWise Ticket
- If ticket found: adds note, automation stops (or continues based on your setting)
- If no ticket found: sets flag and continues to next action
2. Create ConnectWise Ticket
- Creates new ticket only if step 1 didn't find one
How It Works
Think of this action as filing a customer's reply on the ticket it belongs to: it finds the ticket number in the email, adds the reply to that ticket as a note, and can move the ticket to a new status. If it cannot find a ticket, it hands off to your next action so you can create one.
The action finds the ticket from the email
The action looks for ticket numbers such as #12345 in the fields you list in Fields to Search for Ticket Number (see Ticket Number Detection below). If it finds more than one, it checks each in order and uses the first one that exists in ConnectWise and passes your ticket filter, if you enabled one.
If no ticket matches, the action sets UnableToLocateExistingTicket to true and follows Action If No Ticket Matched. With the default, Continue, your next action (typically Create ConnectWise Ticket) runs.
The reply becomes a note on the ticket
Once the action finds the ticket, it adds a note with your Note Text and the visibility options you chose. If the sender's email address matches a ConnectWise Contact, the action returns that contact in Contact.
The status can change after the note is added
If you set Status After Update, the action moves the ticket to that status after it adds the note. If the ticket already has that status, or the note could not be added, the status stays as it is.
Ticket Number Detection
The action searches the fields you specify for text matching the ConnectWise ticket number pattern: # followed by 1-15 digits (e.g., #12345, #987654).
By default, it searches the email subject line. You can configure it to search:
- Email subject
- Email body
- Custom parsed values from previous actions
- Any other available variable
Configuration
Connection
| Field | Description |
|---|---|
| ConnectWise Connection | Optionally select a connection override. Leave blank to use your default ConnectWise connection, or your oldest available connection if you have not designated a default. |
Create a ConnectWise connection before running this action. If you select a connection that is no longer available, the action fails instead of switching to another connection.
Ticket Matching
| Field | Description |
|---|---|
| Fields to Search for Ticket Number | Select which fields to search for the ticket number. Default: email subject. Looks for # followed by 1-15 digits. |
| Enable Ticket Filter | Enable to add additional conditions that limit which tickets can be matched. |
| Additional Ticket Query Filter | Query conditions to filter ticket matches. Only shown when Enable Ticket Filter is enabled. |
Use the ticket filter to restrict matches to specific boards, statuses, or other criteria. For example, filter to only match open tickets on a specific service board.
Ticket Note
| Field | Description |
|---|---|
| Note Text | The content of the note. Supports template variables like {{email.body}}. Default includes email headers and body. |
| Show in Detail Description | When enabled, the note appears in the ticket's detail description section. Default: enabled. |
| Internal Analysis | When enabled, the note appears in the internal analysis section (not visible to customers). Default: disabled. |
| Visible to Customer | When enabled, the note is visible to the customer via the portal. Default: enabled. |
Status Update
| Field | Description |
|---|---|
| Status After Update | Optionally change the ticket status after adding the note. Leave empty to keep the current status. |
Action Controls
| Field | Description |
|---|---|
| Action If No Ticket Matched | What to do if no matching ticket is found. "Continue" allows the next action (e.g., Create ConnectWise Ticket) to run. |
| Action After Adding Note | What to do after successfully adding the note. Default: Stop All. |
| Error Handling | What to do if an API error occurs. Options: Exception, Bounce, Continue, Stop, Stop All. |
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 a ConnectWise ticket number pattern was found |
LocatedExistingTicket | bool | true if the ticket was found in ConnectWise |
UnableToLocateExistingTicket | bool | true if no matching ticket was found (signals Create ConnectWise Ticket should run) |
CreatedNewTicketNote | bool | true if the note was created successfully |
CreatedNewTicketNoteCausedError | bool | true if note creation failed |
UpdatedTicketStatus | bool | true if the ticket status was updated |
UpdatedTicketStatusCausedError | bool | true if status update failed |
Created Objects
| Variable | Type | Description |
|---|---|---|
Ticket | object | The matched ConnectWise ticket |
TicketNote | object | The created ticket note |
Contact | object | The contact matched from the sender's email address (if found) |
Example usage: {{custom.myVariable.Ticket.id}}
FAQs
What ticket number formats are recognized?
The action looks for # followed by 1-15 digits. Examples:
#12345#987654321Ticket #12345Re: Issue with printer #12345
The # symbol must immediately precede the digits with no spaces.
What happens if no ticket number is found in the email?
If no ticket number is found, the action sets UnableToLocateExistingTicket to true and takes the action specified in "Action If No Ticket Matched". By default, this is "Continue", which allows the next action (typically Create ConnectWise Ticket) to run.
Can I update tickets without adding a note?
No, this action always creates a note. To change ticket fields without adding a note, use Perform an HTTP Request with the ConnectWise PSA personality and its Update Ticket method.
What's the difference between the note visibility options?
| Option | Effect |
|---|---|
| Show in Detail Description | Note appears in the main ticket description area |
| Internal Analysis | Note appears in the internal analysis section, hidden from customers |
| Visible to Customer | Note is visible to customers via the ConnectWise customer portal |
You can enable multiple options. For example, enable both "Show in Detail Description" and "Visible to Customer" for customer-facing notes, or enable only "Internal Analysis" for internal-only notes.
How do I filter to only match tickets on a specific board?
- Enable Enable Ticket Filter
- In the Additional Ticket Query Filter, add a condition:
- Field:
board/id - Operator:
= - Value: The board ID
- Field:
You can add multiple conditions to create more specific filters.