Zendesk messaging triggers allow you to send messages to customers and optimize your workflows.
This article contains the following tables:
Related articles:
Trigger firing events
Every trigger starts with a firing event. These events dictate whether the trigger will run, then evaluate its conditions and fire its specified actions. Use the Run trigger dropdown to choose a trigger’s firing events.
- When a customer requests a conversation: The trigger runs when a conversation started event occurs. For example, the initial request and conversation is handed over from the bot and a ticket is created. Multiple start events can occur over the lifecycle of a messaging ticket.
- When a message is sent: The trigger runs when a customer enters the conversation and sends a message in the messaging Web Widget.
- When conversation is added to the queue: The trigger runs when a messaging conversation is placed in the queue. Requires the improved messaging backend.
- When conversation is assigned from a queue: The trigger runs when a messaging ticket is assigned to an agent from the queue, via the Accept button or auto-accept. It doesn't run when an agent reassigns the ticket to another agent, or when the agent claims the ticket from a group view. Requires the improved messaging backend.
Trigger operators
Use the following operators to build trigger condition statements.
Operator | Description |
---|---|
is | Exact match.
|
Less than | Less than the number entered, but not including.
|
Greater than | More than the number entered but not including.
|
Less than or equal to | An exact match or less than the number entered.
<= 3 returns true on a 3, 2, 1, or 0 |
Greater than or equal to | An exact match or more than the number entered.
|
Is not | Anything but the value entered.
|
Contains | String includes the following text.
|
Contains (case sensitive) | String includes the following text.
|
Does not contain | String does not include the following text.
"help" matches true with "not just anybody" |
Reg Ex | Matches for regular expression values using the Python RegEx framework. This field looks for a full match, not a partial. For assistance, you can use Pythex as a quick reference and validation tool.
|
Reg Ex | Field looks for a full case-sensitive match, not a partial match. |
Trigger conditions
Condition statements are collections of conditions, field operators, and condition values. Available values can vary based on the condition selected. Condition statements are essentially ‘if’ statements that return all tickets that meet the specified criteria.
You must select one – and only one – of the condition statements to save and use a trigger in both the Visual and Developer views:
-
Check All of the Following Conditions requires all conditions to be met to execute a trigger’s actions.
-
Check Any of the Following Conditions requires only one condition to be met to execute a trigger’s actions.
Condition | Description |
---|---|
Date and time | |
Hour of day | Hour of the day (Universal Time Clock):
0 = midnight 23 = 11 p.m. Note that the Hour of day condition uses the hour only, and does not include minutes. |
Day of week | Day of the week:
0 = Monday 6 = Sunday |
Previous conversation | |
Customer previous conversations | Number of times the customer has previously had a conversation with an agent. (New conversation = 0) |
Customer Information | |
Customer name | Name of customer. |
Customer triggered |
Triggered customer (activated by Set triggered action). Values are True or False |
Online Status | |
Account Status | Status of your Zendesk account. Values are:
|
Group Status |
Status of the selected Zendesk group. Values are:
|
Conversation-related information | |
Customer is active in the conversation | Values are:
|
Customer is requesting conversation |
Values are:
|
Customer is served |
Values are:
|
Group | Name of the group assigned to the conversation. |
Sender | Name of the message sender. |
Sender Type | Values are Agent or Customer. |
Message | The message being sent. |
Initial routing |
The conversation is added to a queue for the first time, and applies only to tickets with the New ticket status. Does not apply to tickets that are transferred from one group or agent queue to another. This condition can be used to differentiate between the messaging tickets added to the queue for the first time and tickets transferred to the queue. Values are:
Requires the improved messaging backend. |
Customer queue | |
Queue Size |
The total number of incoming conversation requests for the account.
Note: This condition targets the overall account queue, not the department-specific queue.
|
Trigger actions
Action statements define what occurs if all the condition statements are true and the trigger fires. You can think of action statements as ‘then’ statements: if all of your conditions are true, then perform these actions to execute these actions to update the conversation.
Action | Description |
---|---|
Send message to customer | Sends a predefined message to the user. |
Wait | Introduces a delay before the next action is fired.
Note: Triggers run simultaneously. If multiple triggers need to be fired in a specific sequence, add at least a one-second delay to each subsequent trigger.
|
Request email | Sends an automated message to the customer requesting their email to facilitate continuous conversation re-engagement. |
Set triggered |
Applies a flag that can be used with the Customer triggered condition. Values are: True or False
Note: If the account is Invisible, this action will not work.
|
Add tag | Adds a tag to the ticket. |
Trigger placeholders
Placeholders are references to visitor details you can use in trigger action statements. When the trigger is fired, the placeholder pulls in the current visitor and session information.
Placeholder | Type | Description |
---|---|---|
@hour_of_day | Integer | Current hour of the day (UTC timezone). 0 - 23 |
@day_of_week | Integer | Current day of the week (0 = Monday, 6 = Sunday) |
@customer_prev_conversations | Integer | Number of previous independent conversations initiated with agent (New conversation = 0) |
@customer_name | String | Name of the customer. |
@customer_triggered | String | True if the customer has previously received a messaging trigger. |
@account_status | String | Status of the account (Online, Away, or Invisible). |
@groupStatus | String | Status of the group (Online, Away, or Invisible). |
@customer_is_in_active_conversation | String | True if the customer is active in the conversation. |
@customer_requesting_conversation | String | True if the customer is requesting a conversation. |
@customer_served | String | True if customer is currently being served by an agent. |
@sender | String | The name of the sender. |
@sender_type | String | The type of sender (Agent or Customer). |
@message | String | The message sent. |
@queue_size | Integer | The incoming conversation requests. |
@wait_time_min | Integer | Minimum estimated wait time for the first response from an agent to the ticket (in minutes). The wait time is available only for groups with at least 1 ticket routed in the last 7 days. This placeholder is only available when using the event When conversation is added to the queue. Requires the improved messaging backend.
|
@wait_time_max | Integer | Maximum estimated wait time for the first response from an agent to the ticket (in minutes). The wait time is available only for groups with at least 1 ticket routed in the last 7 days. This placeholder is only available when using the event When conversation is added to the queue. Requires the improved messaging backend. |
18 comments
Bruno Venini
In Admin Center/Messaging triggers the drop down options for the “Group Status” are “Online”, “Away”, and “Invisible”. The chart above suggest that “Offline” should be the third option, not “Invisible”. Will “Offline” be added as an option at some point?
0
Mateusz Gamroth
Is there any development planned to make the Queue Size department specific?
Documentation:
The total number of incoming conversation requests for the account.
Note: This condition targets the overall account queue, not the department-specific queue.
0
Amie Brennan
Is there any plan to add the ability to run a trigger when a messaging conversation has ended. E.g to add a tag for reporting.
Alternatively.. can you add an attribute or metric to explore so we can report on the number of sessions which have been ended please?
0
Efrat Barak Zadok
I am trying to create a trigger that will add a tag when a messaging session ends - what should be the correct condition in this case?
0
Aleksander Palm
Hello!
Messaging trigger conditions could be improved with adding option to listen for tags or requester language. Unfortunately it is not possible to use these triggers if you offer services in multi languages.
1
Mateusz Gamroth
@alexander palm:
I don't know what you are trying to achieve but maybe you could route the chats for languages to different groups - one for each language.
CSRs could then be in multiple groups if they speak multiple languages and you could run your triggers related to the group.
Don't know if that will help in that situation.
But triggering by tags would be also powerful in any case.
0
Siddhartha Sengupta
Hi Mateusz Gamroth,
Thank you for contacting us. In response to your inquiry about the possibility of making the Queue Size department-specific, we have included this in our roadmap and will be working towards implementing it.
0
Siddhartha Sengupta
Hi Aleksander Palm ,
Could you specify what types of tags you would like to see at the ticket level and the use cases they would address? Additionally, we are looking into the possibility of incorporating language as a condition in messaging triggers. Once we determine its feasibility, we will include it in our roadmap.
0
Aleksander Palm
Hello Siddhartha Sengupta !
I more had in mind that if you don't want to expand conditions in messaging triggers that much then adding tag as a condition option would be enough already to manipulate the behavior to a desired outcome. For example we have one brand that offers support in 4 languages and due to this messaging triggers can not be used. Created a group for each language just adds more complexity to our already complex setup :) !
Best regards,
0
Efrat Barak Zadok
I would like the option to fire messaging trigger when an agent did not respond for x amount of time (like 30/60 secs). How can this be done?
On chat triggers that was possible as the wait was available as part of the conditions and not only as part of the actions
3
Joshua Bentley
I do not have “Customer is active in the conversation”. Ours says “Customer is in active conversation”. We also do not have an option for “Customer is served”.
Also, giving a +1 to Efrat's request for a trigger to respond after no agent reply for X amount of time.
0
mfg
I'm a bit confused by the definitions/nomenclature above. Specifically, what does “invisible” mean? I've got "online" and “away” as agent statuses and I've got "offline".
Is “invisible” a category that includes all agents offline or away or out of business hours?
0
Siddhartha Sengupta
Hi Efrat Barak Zadok,
Thank you for reaching out. This feature is indeed part of our roadmap. We are currently exploring its implementation for messaging, with a planned release around mid-2025.
0
Ivan*
The Messaging Triggers feel really limited. Would be really good to see the Conditions from the standard Triggers implemented in the Messaging Triggers, as well as the Action to add a tag.
1
Syafiq
Adding on messaging trigger condition where messaging changed from Active to Inactive would also greatly helpful to manage customer expectation while keeping the customer engaged.
Its so that we can fire trigger to send message when customer not responding within x amount of time without the need for agent to kept following up with the conversation manually.
1
Donna Haddigan
We need to be able to:
1) Include placeholders in messages sent via messaging trigger, and
2) Automatically send a message to end users that haven't responded to the agent's message after 5 minutes have passed, then send another message and auto-solve the convo if there are no further end user replies after another 5 min.
2
Ivan*
I agree with Donna Haddigan , a custom time condition is a must have
1
Ariya Sacca Utama
can we make a trigger like this: (send message to customer)
You are currently in the 4th / 3rd / 2nd queue
cause when i use "@queue_size" placeholder, is the total of queue in messaging.
0