This article describes the triggers and actions available when you connect HappyFox Service Desk to HappyFox Workflows, and lists the incident management operations you can automate between HappyFox Service Desk and your other connected apps.
Applicable Plans: All Plans
Note: HappyFox Service Desk is HappyFox's ITSM platform for managing internal IT incidents and service requests. It is a separate product from HappyFox Help Desk. This integration connects HappyFox Service Desk to HappyFox Workflows so that incidents in Service Desk can trigger workflows, and workflow actions can create or update incidents in Service Desk.
Triggers
HappyFox Service Desk triggers allow HappyFox Workflows to start automatically when incident activity occurs in HappyFox Service Desk.
| Trigger | When it fires |
|---|---|
| Incident Created | A new incident is created in HappyFox Service Desk. |
| Incident Updated | An existing incident in HappyFox Service Desk is updated — for example, when its status, priority, or assignee changes. |
Trigger Details
Triggers start a workflow automatically when a specific event happens in HappyFox Service Desk. Both triggers are webhook-based.
Trigger data legend
- Fields listed under Event data are the variables available to every subsequent step in the workflow.
- Nested fields are shown with dot notation (for example,
incident.status.name). - Custom fields appear as
{field_id}_{field_name}keys (for example,117_Priority). - Change fields on the Incident Updated trigger are only present when that specific property actually changed in the triggering update.
Incident Created
Fires whenever a new incident is created in HappyFox Service Desk. The workflow receives a full snapshot of the incident at the moment of creation, including the requester's contact details, all custom field values, and the first message/description.
Top-level event fields:
| Field | Description |
|---|---|
uuid |
Unique identifier for this webhook delivery. |
event_id |
Event identifier from Service Desk. |
event_type |
Always incident_created for this trigger. |
subdomain |
The Service Desk account subdomain. |
account_url |
The full URL of the Service Desk account. |
display_id |
The human-readable incident ID (for example, INC-42). |
created_at |
The timestamp when the incident was created. |
agent_incident_url |
Direct URL for an agent to open the incident in the Service Desk UI. |
requester_incident_url |
Direct URL for the requester (end-user) to view the incident. |
Incident snapshot (under incident):
| Field | Description |
|---|---|
incident.id |
Internal numeric ID of the incident. |
incident.display_id |
Human-readable ID (for example, INC-42). |
incident.subject |
Subject line of the incident. |
incident.due_date |
Due date of the incident, if set. |
incident.source |
How the incident was created (for example, email, portal, API). |
incident.created_at |
Creation timestamp. |
incident.last_updated_at |
Timestamp of the most recent update. |
incident.status.id / incident.status.name |
Current status. |
incident.priority.id / incident.priority.name |
Priority level. |
incident.impact.id / incident.impact.name |
Impact level. |
incident.urgency.id / incident.urgency.name |
Urgency level. |
incident.team.id / incident.team.name |
Assigned team (category). |
incident.assignment_group.id / incident.assignment_group.name |
Assignment group, if set. |
incident.cc / incident.cc__0, incident.cc__1, … |
CC recipients (list, also indexed individually). |
incident.bcc / incident.bcc__0, incident.bcc__1, … |
BCC recipients (list, also indexed individually). |
incident.tag_{tag_name} |
One entry per tag applied to the incident. |
incident.task_{task_name} |
One entry per task linked to the incident. |
incident.asset_{asset_name} |
One entry per asset linked to the incident. |
incident.{field_id}_{field_name} |
Ticket custom field values, one key per field. Dropdown fields also include a value_name sub-key with the human-readable option label; multiple-option fields include a value_name list. |
Requester (contact) fields (under incident.requester):
| Field | Description |
|---|---|
incident.requester.id |
Internal ID of the requester contact. |
incident.requester.name |
Requester's full name. |
incident.requester.email |
Requester's email address. |
incident.requester.primary_phone |
Requester's primary phone number. |
incident.requester.primary_contact_group |
Requester's primary contact group. |
incident.requester.locked |
Whether the contact is locked. |
incident.requester.group_{group_name} |
One entry per contact group the requester belongs to. |
incident.requester.{field_id}_{field_name} |
Requester contact custom field values. |
First message/description (under incident.first_update):
| Field | Description |
|---|---|
incident.first_update.id |
ID of the first update entry. |
incident.first_update.timestamp |
Timestamp of the first message. |
incident.first_update.by.id / .name / .type / .email |
Who created the incident. |
incident.first_update.message.html |
Description in HTML format. |
incident.first_update.message.text |
Description as plain text. |
incident.first_update.message.message_type |
Type of message (for example, first_message). |
incident.first_update.message.cc / .cc__0, .cc__1, … |
CC addresses on the first message. |
incident.first_update.message.bcc / .bcc__0, .bcc__1, … |
BCC addresses on the first message. |
incident.first_update.message.attachments |
List of attachments on the first message. |
Incident Updated
Fires whenever an existing incident is updated — for example, when its status changes, a reply is added, a field is edited, or a tag is applied. The workflow receives both a snapshot of the current incident state and a summary of what changed in this specific update.
Note: Change fields (for example,
status_change_to,tags_change_from) are only present in the event data when that property was actually modified in the triggering update. If a field didn't change, its_change_to/_change_fromkeys won't appear.
Top-level event fields:
| Field | Description |
|---|---|
uuid |
Unique identifier for this webhook delivery. |
event_id |
Event identifier from Service Desk. |
event_type |
Always incident_updated for this trigger. |
subdomain |
The Service Desk account subdomain. |
account_url |
The full URL of the Service Desk account. |
timestamp |
Timestamp of this specific update. |
Update activity fields (present only when changed):
| Field | Description |
|---|---|
by.id / by.name / by.type / by.email |
The person or system that made the update. |
message_type |
The kind of update (for example, note, reply, field_change). |
html / text |
The message body, if this update included a reply or note. |
cc / bcc / recipients |
Recipients of the message, if applicable. |
is_call_note |
Whether the message was logged as a call note. |
status_change_to / status_change_from |
Status before and after the change. |
priority_change_to / priority_change_from |
Priority before and after. |
impact_change_to / impact_change_from |
Impact before and after. |
urgency_change_to / urgency_change_from |
Urgency before and after. |
assignee_change_to / assignee_change_from |
Assignee before and after. |
team_change_to / team_change_from |
Team (category) before and after. |
due_date_change_to / due_date_change_from |
Due date before and after. |
subject_change_to / subject_change_from |
Subject before and after. |
due_by_change_to / due_by_change_from |
SLA due-by time before and after. |
tags_change_to / tags_change_from |
Comma-separated tag lists before and after the change. |
incident_tag |
The single most relevant tag from this tag change — the first newly added tag, or the last tag in the updated list if only removals occurred. |
{field_id}_{field_name}_change_from / {field_id}_{field_name}_change_to |
Custom field value before and after a change, one pair per modified custom field. |
Incident snapshot (under incident): Same structure as the Incident Created trigger, with one difference — the tags field is omitted from the incident snapshot on this trigger. Use tags_change_to, tags_change_from, and incident_tag (listed above) to access tag information for an update event.
Actions
HappyFox Service Desk actions let you create and update incidents in HappyFox Service Desk directly from a workflow step.
| Action | What it does |
|---|---|
| Create Incident | Creates a new incident in HappyFox Service Desk with fields such as subject, description, priority, and category. |
| Update Incident | Updates the fields of an existing incident in HappyFox Service Desk, such as its status, priority, or assignee. |
Action Details
Each action below lists the fields you configure, along with whether each field is required.
Validation note legend
| Term | Meaning |
|---|---|
| Required | The workflow will not run this action if the field is missing or blank. |
| At least one required | The action requires at least one field from a named group — you don't need to fill in all of them, but you must fill in at least one. |
| Optional | The field can be left empty; the action will still run. |
| Text | A plain text string. |
| Rich text | A text field that accepts HTML formatting (bold, lists, inline images, etc.). |
| Yes/No toggle | A boolean true/false switch. |
| List (multiple entries) | One or more structured objects; see sub-fields below each entry. |
| Selection (pick one) | A searchable dropdown; type to filter and pick a single value from the live options fetched from your Service Desk account. |
Note on selection fields: Fields backed by an entity — Team, Priority, Status, Assignee, Impact, Urgency — accept a human-readable name and resolve it to the correct Service Desk ID automatically at runtime.
Create Incident
Creates a new incident in HappyFox Service Desk. The requester's name, a team (category), a subject, and a description are always required. At least one contact method — email or phone — must also be provided for the requester.
| Field | Description | Validation |
|---|---|---|
| Requester Name | The full name of the person raising the incident. | Required · Text |
| Requester Email | The email address of the requester. Must be a valid email address. | At least one required (with Requester Phone) · Text |
| Requester Phone | The phone number of the requester. Must be a valid phone number. | At least one required (with Requester Email) · Text |
| Team | The Service Desk team (category) the incident should be routed to. | Required · Selection (pick one) |
| Requester Custom Fields | Custom field values to set on the requester's contact record. Each row includes id (the custom field's numeric ID, required), name (display name, optional), type (text, number, date, dropdown, or multiple_option), and value (for dropdown, the exact option name; for multiple_option, a comma-separated list of option names; for date, a standard format such as YYYY-MM-DD — past dates are not allowed). |
Optional · List (multiple entries) |
| Priority | The priority level of the incident. | Optional · Selection (pick one) |
| Assignee | The staff member to assign the incident to. | Optional · Selection (pick one) |
| Status | The initial status of the incident. | Optional · Selection (pick one) |
| Custom Fields | Custom field values to set on the incident itself. Same structure as Requester Custom Fields. Ticket custom fields may be scoped to a specific team — if the field isn't available for the selected Team, Service Desk returns an error. | Optional · List (multiple entries) |
| Subject | The title or subject line of the incident. Must not exceed the Service Desk character limit. | Required · Text |
| Description | The full description of the incident. Cannot be blank. Inline images are detected and automatically uploaded as attachments. | Required · Rich text |
| Impact | The impact level of the incident. | Optional · Selection (pick one) |
| Urgency | The urgency level of the incident. | Optional · Selection (pick one) |
| Resolution | The resolution notes for the incident. Can be set at creation time. | Optional · Rich text |
| Is Private | When enabled, marks the incident as private so it is not visible to the requester. Defaults to No. | Optional · Yes/No toggle |
Update Incident
Updates an existing incident in HappyFox Service Desk, identified by its Incident ID. The Incident ID is always required. At least one other field must be provided — the action will not run if only the ID is given with everything else blank.
| Field | Description | Validation |
|---|---|---|
| Incident ID | The numeric ID of the incident to update. | Required · Text (numeric string) |
| Team | The team (category) to reassign the incident to. | At least one required* · Selection (pick one) |
| Status | The updated status of the incident. | At least one required* · Selection (pick one) |
| Priority | The updated priority level. | At least one required* · Selection (pick one) |
| Assignee | The updated assignee for the incident. | At least one required* · Selection (pick one) |
| Due Date | The due date for resolving the incident. Accepted formats: YYYY-MM-DD, MM-DD-YYYY, DD-MM-YYYY, 1 Jan 2026. Alternatively, enter a plain positive integer (for example, 5) to set the due date that many days from today. Past dates and negative numbers are not allowed. |
At least one required* · Text |
| Tags | Tags to apply to the incident, separated by commas (for example, bug,urgent,backend). Blank tags are not allowed. |
At least one required* · List (multiple entries) |
| Time Spent | The amount of time logged on this incident, in seconds (for example, 60 for 1 minute, 3600 for 1 hour). Must be a non-negative integer. |
At least one required* · Text |
| Impact | The updated impact level. | At least one required* · Selection (pick one) |
| Urgency | The updated urgency level. | At least one required* · Selection (pick one) |
| Subject | The updated subject line of the incident. | At least one required* · Text |
| Custom Fields | Ticket custom field values to update on the incident. Same structure and rules as in Create Incident. | At least one required* · List (multiple entries) |
* At least one of Team, Status, Priority, Assignee, Due Date, Tags, Time Spent, Impact, Urgency, Subject, or Custom Fields must be provided alongside the Incident ID.
Use cases
Create a Service Desk incident when a critical ticket is escalated in Help Desk: When a ticket in HappyFox Help Desk is escalated to critical priority or marked as a major incident, automatically create a corresponding incident in HappyFox Service Desk — ensuring the IT team has a structured ITSM record to manage the incident through its full lifecycle, separate from the customer-facing ticket.
Update a Service Desk incident when a Help Desk ticket is resolved: When a related HappyFox Help Desk ticket is resolved, automatically update the linked Service Desk incident's status — keeping both systems aligned without requiring agents to manually update records in both platforms.
Escalate a Service Desk incident to other apps when it is created: When the Incident Created trigger fires in HappyFox Service Desk, use subsequent workflow actions to notify a Slack channel, create a Jira issue, or send an SMS via JustCall — routing the incident to the right tools automatically based on its category or priority.
Track incident resolution back to the originating ticket: When a Service Desk incident is updated to a resolved status (Incident Updated trigger), automatically add a private note or update the status of the linked HappyFox Help Desk ticket — giving the customer-facing team immediate visibility into the resolution without checking Service Desk manually.