> ## Documentation Index
> Fetch the complete documentation index at: https://docs.woes.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# When Triggers

> Every selectable When trigger in Woes Automations, including when it fires and what to use it for.

# When Triggers

A **When** node is the starting point for an automation. Every automation has exactly one trigger node. Inside that node, the **Trigger event** dropdown decides which runtime event starts the workflow.

Woes only shows trigger events that are currently wired to runtime sources. Older compatibility ids may still exist in saved data, but they are not selectable in the builder unless they are listed here.

## Conversations

### New conversation or issue

| Field          | Details                                                                                                                                                                                                    |
| -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Event id       | `issue_created`                                                                                                                                                                                            |
| Dropdown label | New conversation or issue                                                                                                                                                                                  |
| Runs when      | A new support record is created. This includes new widget/live-chat conversations, new Discord threads routed into Woes, and standalone Issues-board issues.                                               |
| Good for       | Initial triage, default tags, priority setting, assigning AI, assigning a team, or adding an internal note.                                                                                                |
| Notes          | Converted Issues-board issues do not fire this again if they were already created from a conversation. Email inbound and public REST create paths should not be assumed unless verified in your workspace. |

### New customer message

| Field          | Details                                                                                                                                                       |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Event id       | `issue_new_message`                                                                                                                                           |
| Dropdown label | New customer message                                                                                                                                          |
| Runs when      | A customer adds a new message to an existing conversation.                                                                                                    |
| Good for       | Routing human requests, classifying API questions, tagging bug reports or documentation gaps, reopening solved conversations, or escalating after AI handoff. |
| Notes          | This is a customer-message trigger, not an operator-reply trigger. Channel routes may skip automations when a conversation is already operator-owned.         |

### Operator replied

| Field          | Details                                                                                                                                                                                                         |
| -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Event id       | `conversation_operator_replied`                                                                                                                                                                                 |
| Dropdown label | Operator replied                                                                                                                                                                                                |
| Runs when      | A signed-in operator sends a reply from the Woes inbox conversation reply path.                                                                                                                                 |
| Good for       | Moving a conversation to waiting, snoozing a conversation after a reply, adding a follow-up note, applying tags, or notifying a team.                                                                           |
| Notes          | This does not fire for customer messages. It also does not represent the AI agent's generated customer reply; use AI outcome conditions on customer-message workflows when you want to react to agent handling. |

### No first response in time

| Field          | Details                                                                                                                                          |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| Event id       | `issue_no_first_response`                                                                                                                        |
| Dropdown label | No first response in time                                                                                                                        |
| Runs when      | The automation scheduler detects that the first-response SLA target has been missed.                                                             |
| Good for       | Paging support, raising priority, notifying a team, or adding an escalation note.                                                                |
| Notes          | This depends on the scheduled automation worker and SLA metadata. First-response breaches also satisfy the broader `issue_sla_breached` trigger. |

## Channels

### New live chat conversation

| Field          | Details                                                                                                                                                 |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Event id       | `live_chat_started`                                                                                                                                     |
| Dropdown label | New live chat conversation                                                                                                                              |
| Runs when      | A visitor starts a new live chat conversation through the widget or live-chat route.                                                                    |
| Good for       | Live-chat acknowledgement, live-chat-specific tags, routing chat differently from Discord or other channels, or assigning the AI agent for chat starts. |
| Notes          | This does not run for existing live chat messages. A new chat can also satisfy `issue_created` in the same automation pass.                             |

### New Discord message

| Field          | Details                                                                                                                                                 |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Event id       | `discord_message`                                                                                                                                       |
| Dropdown label | New Discord message                                                                                                                                     |
| Runs when      | An inbound Discord message is routed into a Woes conversation.                                                                                          |
| Good for       | Tagging Discord conversations, routing app mentions, notifying a team, or keeping Discord-specific support flows separate.                              |
| Notes          | Discord reactions are not a current automation trigger. The runtime may skip Discord automation effects for conversations already owned by an operator. |

## Conversation lifecycle

### Conversation status changed

| Field          | Details                                                                                   |
| -------------- | ----------------------------------------------------------------------------------------- |
| Event id       | `issue_status_changed`                                                                    |
| Dropdown label | Conversation status changed                                                               |
| Runs when      | An operator-side conversation or issue status update is submitted.                        |
| Good for       | Delayed follow-up, auto-close flows, customer-waiting reminders, or status-based routing. |
| Notes          | This is wired to the status update path, not every direct database mutation.              |

### Conversation solved

| Field          | Details                                                                             |
| -------------- | ----------------------------------------------------------------------------------- |
| Event id       | `issue_solved`                                                                      |
| Dropdown label | Conversation solved                                                                 |
| Runs when      | A conversation or issue is marked solved through the operator workflow.             |
| Good for       | Sending CSAT or NPS, adding a resolution note, archiving, or notifying an owner.    |
| Notes          | Use a Delay before survey actions when you want to wait before requesting feedback. |

### Conversation reopened

| Field          | Details                                                                                                  |
| -------------- | -------------------------------------------------------------------------------------------------------- |
| Event id       | `issue_reopened`                                                                                         |
| Dropdown label | Conversation reopened                                                                                    |
| Runs when      | A previously solved conversation is moved away from solved.                                              |
| Good for       | Reassigning the conversation, restoring priority, notifying the prior owner, or restarting SLA tracking. |
| Notes          | The runtime detects this from the status transition path.                                                |

### Conversation priority changed

| Field          | Details                                                                                     |
| -------------- | ------------------------------------------------------------------------------------------- |
| Event id       | `issue_priority_changed`                                                                    |
| Dropdown label | Conversation priority changed                                                               |
| Runs when      | A priority update is submitted.                                                             |
| Good for       | Applying urgent SLA metadata, notifying support, or routing high-priority issues to a team. |
| Notes          | Use an If condition when you only want to react to a specific priority value.               |

### Conversation assigned

| Field          | Details                                                                              |
| -------------- | ------------------------------------------------------------------------------------ |
| Event id       | `issue_assigned`                                                                     |
| Dropdown label | Conversation assigned                                                                |
| Runs when      | An assignee update is submitted through the operator workflow.                       |
| Good for       | Adding an ownership note, notifying the assignee, setting a team, or applying a tag. |
| Notes          | This is verified through the operator update path.                                   |

### Tag added to conversation

| Field          | Details                                                                             |
| -------------- | ----------------------------------------------------------------------------------- |
| Event id       | `issue_tag_added`                                                                   |
| Dropdown label | Tag added to conversation                                                           |
| Runs when      | One or more tags are added to an issue or conversation.                             |
| Good for       | Tag-driven escalation, VIP routing, bug routing, docs-gap routing, or adding notes. |
| Notes          | This reacts to tag additions, not tag removals.                                     |

### Conversation archived

| Field          | Details                                                                                 |
| -------------- | --------------------------------------------------------------------------------------- |
| Event id       | `issue_archived`                                                                        |
| Dropdown label | Conversation archived                                                                   |
| Runs when      | A conversation is archived from the active inbox.                                       |
| Good for       | Recording cleanup notes, notifying a team, or applying an archive tag.                  |
| Notes          | Archive is an inbox visibility action; it does not by itself mean the issue was solved. |

### Conversation snoozed

| Field          | Details                                                                              |
| -------------- | ------------------------------------------------------------------------------------ |
| Event id       | `issue_snoozed`                                                                      |
| Dropdown label | Conversation snoozed                                                                 |
| Runs when      | A conversation is moved into the waiting/snoozed state.                              |
| Good for       | Deferred reminders, adding a waiting tag, or notifying a team after a snooze action. |
| Notes          | In the runtime, snoozed maps to the `waiting` lifecycle state.                       |

## Service level

### SLA breached

| Field          | Details                                                                                                                         |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| Event id       | `issue_sla_breached`                                                                                                            |
| Dropdown label | SLA breached                                                                                                                    |
| Runs when      | The scheduler detects a first-response, next-response, or resolution SLA breach.                                                |
| Good for       | Escalation, urgent priority, team notification, internal notes, or assignment to a support queue.                               |
| Notes          | Requires SLA metadata and the scheduled automation processor. First-response breaches can also match `issue_no_first_response`. |

## Satisfaction

### CSAT completed

| Field          | Details                                                                                             |
| -------------- | --------------------------------------------------------------------------------------------------- |
| Event id       | `csat_completed`                                                                                    |
| Dropdown label | CSAT completed                                                                                      |
| Runs when      | A customer submits a CSAT response.                                                                 |
| Good for       | Low-score follow-up, adding a `csat-followup` tag, notifying support, or adding an internal note.   |
| Notes          | CSAT events expose `survey_score`, `survey_type`, and the legacy `csat_score` field for conditions. |

### NPS completed

| Field          | Details                                                                                            |
| -------------- | -------------------------------------------------------------------------------------------------- |
| Event id       | `nps_completed`                                                                                    |
| Dropdown label | NPS completed                                                                                      |
| Runs when      | A customer submits an NPS response.                                                                |
| Good for       | Detractor follow-up, promoter tagging, product feedback routing, or customer-success notification. |
| Notes          | Use `survey_score` and `survey_type` conditions for NPS-specific branching.                        |

## Not current trigger choices

These ids may appear in older data or internal compatibility types, but they are not current selectable When events:

| Id                      | Why it is not documented as current                       |
| ----------------------- | --------------------------------------------------------- |
| `issue_team_set`        | No current firing source in the builder/runtime path.     |
| `issue_reaction_added`  | Discord reactions are not forwarded as automation events. |
| `account_created`       | Compatibility id, not in the current trigger dropdown.    |
| `account_owner_changed` | Compatibility id, not in the current trigger dropdown.    |
| `contact_created`       | Compatibility id, not in the current trigger dropdown.    |
| `time_delay`            | Not a trigger. Delay is a separate node type.             |

## Pairing triggers with conditions

Most triggers should be narrowed with an If or AI condition. For example:

| Goal                                | Recommended setup                                                                         |
| ----------------------------------- | ----------------------------------------------------------------------------------------- |
| Route only urgent new conversations | When **New conversation or issue** -> If **Priority is urgent** -> Assign team or Notify. |
| Handle only Discord app mentions    | When **New Discord message** -> If **Message mentions workspace is true** -> Assign team. |
| Move operator replies to waiting    | When **Operator replied** -> Then **Set conversation status** to `waiting`.               |
| Snooze after a reply                | When **Operator replied** -> Then **Snooze conversation** for the chosen duration.        |
| Follow up on low CSAT               | When **CSAT completed** -> If **Survey score less than 4** -> Add tag and Notify.         |
| Escalate unanswered first responses | When **No first response in time** -> Set priority and Notify.                            |
