Create Halo Ticket
The Create Halo Ticket action creates a new service ticket in Halo PSA. Configure the ticket properties, assignment, and classification to match your automation requirements.
This is a building-block API call action. You supply the ticket values directly; it does not look up a client or user for you. After creating the ticket, MSPintegrations retrieves its complete saved details and Custom Field values. Learn more about workflow actions and API call actions.
When to Use This Action
Use this action when:
- You need to create a Halo ticket with known client and user IDs from a previous query action
- You want precise control over all ticket fields at creation time
- You are building a multi-step automation where lookup actions (such as Find Halo User and Client by Email) run before ticket creation and you already have the determined client and user IDs
Don't use this action for:
- Updating existing tickets: Use Update Halo Ticket to modify an existing ticket by ID, or Update Halo Ticket from Email to detect and update a ticket from an email.
If you are creating a ticket directly from an inbound email and want MSPintegrations to determine the user and client for you, use Create Halo Ticket from Email instead. That workflow action wraps this action together with user and client determination, optional user creation, and attachment upload.
Configuration
Connection
| Field | Description |
|---|---|
| Halo Connection | Select the Halo connection to use for this action. |
Basic Information
| Field | Description |
|---|---|
| Summary | The ticket summary/title. Supports text expressions with {{variable}} syntax. |
| Details | The ticket description/details. Supports text expressions for dynamic content. |
Client & Contact
| Field | Description |
|---|---|
| Client | Select the Halo Client/Company for the ticket. Lock to choose from a dropdown, or unlock to enter a dynamic value using text expressions. |
| User | Select the Halo User/Contact for the ticket. |
| Site | Select the Halo Site associated with the ticket. |
| Asset | Select the Halo Asset/Configuration Item to associate with the ticket. When a Client is selected, only assets belonging to that client are shown. |
Classification
| Field | Description |
|---|---|
| Ticket Type | The type of ticket (e.g., Incident, Service Request). |
| Status | The ticket status. If not provided, uses the default status for the ticket type. |
| Priority | The ticket priority level. See the Priority, Impact, and Urgency section below. |
| Category | The primary ticket category (level 1) for classification and reporting. |
| Category 2 | Sub-category level 2. |
| Category 3 | Sub-category level 3. |
| Category 4 | Sub-category level 4. |
| SLA | The Service Level Agreement to apply to this ticket. |
Assignment
| Field | Description |
|---|---|
| Agent | The agent/technician to assign the ticket to. |
| Team | The team to assign the ticket to. |
Custom Fields
| Field | Description |
|---|---|
| Custom Fields | Select ticket custom fields and set their values. Text values support text expressions, including text nested inside array values. The action checks current Halo metadata, requires fields Halo explicitly marks as mandatory, and rejects known read-only or unsupported fields. Unknown positive field IDs entered dynamically are preserved. Leave this section empty when no mandatory fields apply. Boolean false, zero, arrays, empty strings, and null values retain their exact value. Available fields follow the selected Halo Connection and Ticket Type. |
Error Handling
| Field | Description |
|---|---|
| Error Handling | Action to take if ticket creation fails. |
| Option | Behavior |
|---|---|
| Exception | Halt processing and report the error |
| Bounce | Return the email/item to the sender |
| Continue | Continue to the next action |
| Stop | In Email Processing, stop this rule but allow other rules to process |
| Stop All | Stop all processing for this message |
Returned Variables
When you configure Store the results in Variable, the result is the complete saved ticket object. MSPintegrations combines the full ticket detail response with the saved Custom Field values for that exact ticket. Access properties using dot syntax. If any create or refresh step fails, the stored result is null; an HTTP error body is never stored as the ticket.
Example usage: {{custom.myVariable.id}}
| Variable | Type | Description |
|---|---|---|
.id | number | The created 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/contact ID |
.user_name | string | The user/contact name |
.site_id | number | The site ID |
.site_name | string | The site name |
.asset_id | number | The asset/device ID |
.asset_tag | string | The asset tag/inventory number |
.tickettype_id | number | The ticket type ID |
.status_id | number | The status ID |
.status_name | string | The status name |
.priority_id | number | The priority ID |
.priority_name | string | The priority name |
.categoryid_1 | number | The category ID (level 1) |
.categoryid_2 | number | The category ID (level 2) |
.categoryid_3 | number | The category ID (level 3) |
.categoryid_4 | number | The category ID (level 4) |
.customfields | array | Custom fields returned on the created ticket |
.customfields[].id | number | The Halo custom field ID |
.customfields[].value | mixed | The custom field value |
.impact | number | The impact level |
.urgency | number | The urgency level |
.sla_id | number | The SLA ID |
.agent_id | number | The assigned agent ID |
.agent_name | string | The assigned agent name |
.team_id | number | The assigned team ID |
.team_name | string | The assigned team name |
.datecreated | string | The creation timestamp |
.datelastupdated | string | The last update timestamp |
Example Use Cases
Create Ticket After User Lookup
After finding a user with Query Halo Users:
| Setting | Value |
|---|---|
| Client | {{custom.user.users.[0].client_id}} (unlocked) |
| User | {{custom.user.users.[0].id}} (unlocked) |
| Summary | {{email.subject}} |
| Details | {{email.body}} |
Create Ticket After Client Lookup
After finding a client with Query Halo Clients:
| Setting | Value |
|---|---|
| Client | {{custom.client.clients.[0].id}} (unlocked) |
| Summary | {{email.subject}} |
| Details | {{email.body}} |
| Ticket Type | Incident |
Priority, Impact, and Urgency
This action sets Priority directly. It does not have Impact or Urgency fields, so it never sends those values to Halo.
Halo can also calculate a ticket's priority from Impact and Urgency using ticket rules, which you manage in Halo under Configuration > Tickets > Rules. If your Halo instance relies on Impact and Urgency, or requires them to create a ticket:
- For tickets created from an inbound email, use Create Halo Ticket from Email, which has Impact and Urgency fields.
- Otherwise, set Priority on this action, and make sure your Halo ticket rules do not require Impact and Urgency for the ticket type you select.
FAQs
What fields are required?
At minimum, you must provide a Halo Connection and a Summary. Client, User, and other classification fields are optional but recommended for accurate ticket routing.
How do I use dynamic values for Client or User?
Unlock the field selector and enter a text expression referencing a previously queried ID, such as {{custom.client.clients.[0].id}}.
Reply-All Storm Catcher
When this action runs inside an inbound email automation and successfully creates the ticket, MSPintegrations records the email's Message-ID against the new Halo ticket ID on the selected Halo connection.
Later, if a reply in the same email thread arrives without the Halo ticket tag in the subject or body, Update Halo Ticket from Email can use that stored association to update the correct ticket instead of creating a duplicate.
The association applies only to the Halo connection you selected on this action, so replies are never matched to tickets on a different Halo connection.
Related Actions
- Create Halo Ticket from Email: Create a ticket from an inbound email with automatic user and client determination
- Find Halo User and Client by Email: Determine the user and client before calling this action
- Update Halo Ticket: Modify an existing ticket by ID
- Update Halo Ticket from Email: Detect and update a ticket from an email
- Query Halo Clients: Find clients to use as input
- Query Halo Users: Find users to use as input