Zendesk Support placeholders are containers for dynamically generated ticket, user, and custom data. The format is a data reference contained within double curly brackets. Since you can also access ticket, user, and custom data when defining programming logic, it may be helpful to think beyond placeholders and think instead of data objects and their properties that can be used for either purpose.
There are two primary data objects in Zendesk Support: Ticket and User. Each has its own set of properties; the User object, for example, contains user properties such as name and email. In addition to these two data objects, there are associated data objects. For tickets, there are the Comment and Satisfaction Rating objects. For users, there are the Organization and Agent objects. There are also custom objects, which are defined by users and can be associated with tickets, users, and other Zendesk objects.
Although placeholders can be in HTML format, when a placeholder is sent to a URL target or webhook, unformatted text is used to render the placeholder, not HTML. Also, placeholders won't work within code blocks.
Support includes inborn system rules that suppress placeholders in ticket triggers in certain situations. Inborn system rules are rules that you cannot change, modify, or override, which dictate the default behavior of Support. These rules may sometimes make it seem like placeholders in ticket triggers failed to work, but this isn’t a mistake. These rules protect you because they prevent spammers from using your account to distribute spam messages. For more information, see Understanding placeholder suppression rules.
This article categorizes the placeholders by the data they display. When you specify placeholders, remember they are case sensitive.
- User data
- Organization data
- Agent data
- Ticket data
- Comment data
- Satisfaction rating data
- Custom object data
Related articles:
User data
- ticket.requester, who is the person who requested the ticket
- ticket.assignee, who is the agent assigned to the ticket
- ticket.submitter, who is either the user who submitted the request or the agent that opened the ticket on behalf of the requester
- current_user, who is the user currently updating the ticket (an end user, agent, or Zendesk as the system user)
This means that most of the user data listed in the following table can be returned for each type of user (for example, {{ticket.submitter.name}}, {{current_user.name}}, and so on).
Properties/placeholders | Description |
---|---|
user.name
Important: Remember to replace user with one of the user
types shown above (for example, ticket.requester).
|
The user's full name. |
user.first_name | The user's first name. |
user.last_name | The user's last name. |
user.email | The user's email address. |
user.language | The user's language preference. |
user.phone | The user's telephone number. |
user.external_id | The user's external ID (if one exists). Optional for accounts that have enabled enterprise single sign-on using JWT or SAML. |
user.details | The user's details. |
user.notes | The user's notes. |
user.time_zone | The user's time zone. |
user.role | The user's role (Admin, Agent, or End user). |
user.extended_role | When using Support Enterprise agent roles, this returns the name of the
agent's Enterprise role. These are the predefined roles:
If you've created custom agent roles, those role names are returned. If you're not an Enterprise account, using this placeholder returns 'Agent' for all agent users and 'End user' for all end users. For more information about custom agent roles, see Creating custom agent roles and assigning agents. |
user.id | The user's ID. |
user.locale | The user's locale (for example: en-US). |
user.signature | The agent's signature. Only agents have signatures. |
user.organization... | See Organization data below. |
user.tags | Tags. See Adding tags to users and organizations. |
user.custom_fields.<field_key> | Property/placeholder format for the value of a custom user fields (except drop-down fields). For example, {{ticket.requester.custom_fields.my_custom_field}}. See Adding custom fields to users. |
user.custom_fields.<field_key>.id | The ID of the target record in a lookup relationship field. |
user.custom_fields.<field_key>.title | Property/placeholder format for the value of a custom user drop-down field. For example, {{ticket.requester.custom_fields.manager_for_approval.title}}. See Adding custom fields to users. |
About user name placeholders
The behavior of the first name and last name placeholders depends on the formatting of the name on the profile. For example, if you use the name Dutch van der Linde, the placeholder user.last_name will show 'Linde'. If you use the name van der Linde, Dutch on the profile, then the placeholder user.last_name will show 'van der Linde'.
Additionally, in Japan, the first name placeholder refers to the user's last name and the last name placeholder refers to the user's first name.
Organization data
Each type of user can be added to an organization. An organization contains the following data properties.
Properties/placeholders | Description |
---|---|
user.organization.id
Important: Remember to replace user with one of the user
types shown below.
|
The ID of the organization that the user is assigned to. |
user.organization.name | The name of the organization that the user is assigned to. |
user.organization.is_shared | True or False. Indicates if the organization is a shared organization. |
user.organization.is_shared_comments | True or False. Indicates if the organization allows users to add comments to other user's tickets. |
user.organization.details | Details about the organization. |
user.organization.notes | Notes about the organization. |
user.organization.tags | Tags. See Adding tags to users and organizations. |
- {{ticket.organization.name}}, which is the ticket requester's organization
- {{ticket.requester.organization.name}}, which the same as {{ticket.organization.name}} (the requester)
- {{current_user.organization.name}}, who is the user currently updating the ticket (an end user or agent)
- {{ticket.assignee.organization.name}}, who is the agent assigned to the ticket
- {{ticket.submitter.organization.name}}, who is either the user who submitted the request or the agent that opened the ticket on behalf of the requester
Agent data
You can use the following placeholders in agent signatures only. For information on agent signatures, see Adding an agent signature to ticket email notifications.
Properties/placeholders | Description |
---|---|
agent.name | The agent's full name (or alias, if present). |
agent.first_name | The agent's first name. |
agent.last_name | The agent's last name. |
agent.role | The agent's role. |
agent.signature | The agent's signature. |
agent.email | The agent's email address. |
agent.phone | The agent's phone number. |
agent.organization | The agent's organization. |
agent.language | The agent's language. |
agent.time_zone | The agent's time zone. |
Ticket data
Zendesk Support tickets contain the following data properties.
Properties/placeholders | Description |
---|---|
ticket.account | The Zendesk account name. |
ticket.assignee.name | Ticket assignee full name (if any). See User data above. |
ticket.brand.name | The ticket's assigned brand name. |
ticket.cc_names | Returns the names CCs on the ticket.
Note: If you are using the new CCs and followers experience and you are
adding or updating your placeholders, we recommend using
ticket.email_cc_names instead of
tickets.cc_names . They do the same thing.If you want to return the email addresses of the people CC'd on the message, you can use this Liquid code:
|
ticket.email_cc_names |
With the new CCs and followers experience, returns the names of CCs on the ticket. With the old CCs experience, returns empty.
Note: If you are using the new CCs and follower experience and you are adding or
updating your placeholders, we recommend using
ticket.email_cc_names instead of
tickets.cc_names . They do the same thing. |
ticket.follower_names | With the new CCs and followers experience, returns the names of followers. With the old CCs experience, returns empty. |
ticket.follower_reply_type_message | With the new CCs and followers experience,
indicates what type of comment (public or private) triggered the notification.
Causes the phrase "Reply to this email to add a comment to the request" or "Reply
to this email to add an internal note to the request" to appear in the email
notification (see Customizing default email notifications for CCs and
followers). With the old CCs experience, returns empty. |
ticket.created_at | Date the ticket was created (for example, May 18, 2014).
Note: The year is
not included if the ticket was created in the current year.
|
ticket.created_at_with_timestamp | Time the ticket was created expressed as an iso8601 format date/time. Example: 2013-12-12T05:35Z, which translates to December 12th, 2013 at 05:35am UTC. |
ticket.created_at_with_time | Date and time the ticket was created. For example, February 10, 14:29. |
ticket.current_holiday_name | If the placeholder is used outside of a holiday, it is null. If it is used within a holiday, the holiday's name is displayed. If you've set up multiple schedules, this placeholder respects the list of holidays set in the schedule applied to the ticket. |
ticket.description | The ticket description. This includes the agent's name, the comment date, and
the ticket description (the first comment).
Note: If the
subject field is empty or not visible to the requester, then this first comment
will be used and sent to the requester. This is true for private tickets as
well.
|
ticket.due_date | The ticket due date (relevant for tickets of type Task). The format is: May-18. |
ticket.due_date_with_timestamp | The ticket due date (relevant for tickets of type Task) expressed as an iso8601 format date/time. Example: 2013-12-12T05:35+0100 which translates to December 12th, 2013 at 06:35am UTC+1. |
ticket.external_id | The external ticket ID (if one exists). |
ticket.encoded_id | The encoded ID is used for threading incoming email replies into existing tickets. |
ticket.group.name | The group assigned to the ticket. |
ticket.id | The ticket ID. #{{ticket.id}} creates a clickable link.
{{ticket.id}} renders the ticket number in plain text. |
ticket.in_business_hours | True or False. True if the ticket update is during business hours. See Setting your business hours. |
ticket.link | Full URL path to ticket. |
ticket.organization.custom_fields.<field_key> | Property/placeholder format for custom organization fields. See Adding custom fields to organizations. |
ticket.organization.custom_fields.<field_key>.id | The ID of the target record in a lookup relationship field. |
ticket.organization.custom_fields.<field_key>.title | Property/placeholder format for the value of a custom organization drop-down field. See Adding custom fields to organizations |
ticket.organization.external_id | External ID of the ticket requester's organization. |
ticket.organization.id | The ID of the ticket requester's organization. |
ticket.organization.name | See Organization data above. |
ticket.priority | The ticket priority (Low, Normal, High, Urgent). |
ticket.requester.first_name | Ticket requester first name. If you have an open Zendesk Support instance, this placeholder can be a target for spam in first-reply triggers. See Using Zendesk Support-specific features to combat spam. |
ticket.requester.last_name | Ticket requester last name. If you have an open Zendesk Support instance, this placeholder can be a target for spam in first-reply triggers. See Using Zendesk Support-specific features to combat spam. |
ticket.requester.name | Ticket requester full name. If you have an open Zendesk Support instance, this placeholder can be a target for spam in first-reply triggers. See Using Zendesk Support-specific features to combat spam. |
ticket.requester.email | Ticket requester email address. |
ticket.requester.custom_fields.<field_key> | Property/placeholder format for custom user fields. For example, {{ticket.requester.custom_fields.my_custom_field}}. See Adding custom fields to users. |
ticket.requester.custom_fields.<field_key>.id | The ID of the target record in a lookup relationship field. |
ticket.requester.custom_fields.<field_key>.title | Property/placeholder format for the value of a custom user drop-down field. For example, {{ticket.requester.custom_fields.manager_for_approval.title}}. See Adding custom fields to organizations. |
ticket.requester.details | The contents of the Details field on the requester’s user profile. |
ticket.status | The standard ticket status (New, Open, Pending, On-hold, Solved,
Closed).
Note: If you've activated custom ticket statuses, this
placeholder displays the same value as
{{ticket.status_category}} . |
ticket.status_category | If custom ticket statuses are activated, returns the status category the ticket's status belongs to (New, Open, Pending, On-hold, Solved, Closed). Learn more about ticket status categories. |
ticket.custom_status | If custom ticket statuses are activated, returns the custom ticket status. |
ticket.tags | All of the tags attached to the ticket. |
ticket.ticket_field_<field ID number> | Property/placeholder format for custom fields. For example, {{ticket.ticket_field_123}}. See Placeholders for custom fields. |
ticket.ticket_field_<field ID number>.id | The ID of the target record in a lookup relationship field. |
ticket.ticket_field_option_title_<field ID number> | Property/placeholder format for the value of a dropdown custom field. For example, {{ticket.ticket_field_option_title_456}}. See Placeholders for custom fields. |
ticket.ticket_form | Form name for end users. |
ticket.ticket_type | Ticket type (Question, Incident, Problem, Task). If the ticket type is not specified, this placeholder returns "Ticket". |
ticket.title | The ticket subject. End users may see different text in this field. For
troubleshooting information about this placeholder, see The ticket title placeholder displays first comment instead of
the subject and Why does the subject line in my email notifications say
"Untitled ticket". If you have an open Zendesk Support instance, this placeholder can be a target for spam in first-reply triggers. See Using Zendesk Support-specific features to combat spam. |
ticket.updated_at | Date the ticket was last updated (for example, May18). |
ticket.updated_at_with_time | Time and date the ticket was last updated. For example, February 10, 14:29. |
ticket.updated_at_with_timestamp | Time the ticket was last updated expressed as an iso8601 format date/time. Example: 2013-12-12T05:35Z, which translates to December 12th, 2013 at 05:35am UTC. |
ticket.url | The full URL path to the ticket (excluding "http://"). |
ticket.verbatim_description | The plain text value of the ticket description (the first comment). If Include attachments in email is enabled, attachments are
included.
Note: This placeholder cannot be used to send attachments in a webhook.
|
ticket.via | The source type of the ticket (Web form, Mail, etc.). |
account.incoming_phone_number_ID | Zendesk Talk inbound phone number. For example,{{account.incoming_phone_number_123}}. |
Comment data
- HTML comment placeholders are used for simplified email threading in email applications such as Gmail. For best results, they should not be used with other comment placeholders. See Understanding simplified email threading and Implementing simplified email threading for email applications.
-
Standard comment
placeholders allow you to use liquid hashes to choose what you want to display, and return a
collection of comment and attachment data. For example, you can set up templates to iterate over comments using
{{ticket.comments}}
. -
Formatted comment
placeholders allow you to return preformatted, rendered HTML
representations of the standard placeholders, but without a large degree of
customization. They simply return comments in predefined formats. For example,
{{ticket.comments_formatted}}
returns a chunk of rendered HTML. The ticket comments will include dates, author, the author’s avatar, and the like. - Rich text comment placeholders allow you to use rich text in your customized template (as with the formatted object placeholders) without being restricted to the predefined formatting rules, so you can have more control over the look and feel of your notifications. Rich text objects allow inclusion of attachments only if Include attachments in email is enabled.
- Agents who are assigned to or following the ticket receive both public comments and internal notes. End users receive only public comments.
- If you have CCs enabled, CCs (including agent CCs) receive email notifications only for public comments. See Understanding how email notifications are sent to CCs by default.
- If you use comment placeholders in side conversations, only public comments are included. Comment placeholders used in side conversations don't return internal notes.
Properties/placeholders | Description |
---|---|
ticket.latest_comment_html | The most recent comment including any attachments. Agents receive the most recent public or private comment. End users receive the most recent public comment. |
ticket.latest_public_comment_html | The most recent public comment, excluding any attachments. |
Properties/placeholders | Description |
---|---|
ticket.comments | Used as a placeholder, {{ticket.comments}} displays all the comments in a
ticket in unformatted text. The ticket.comments placeholder also serves as a collection for comment and attachment details. You can access the following data using Liquid markup:
For an example of accessing this data in business rules, see Customizing the format and placement of text in comments and email notifications.
Note: This same comment data collection is available when using the
ticket.public_comments, ticket.latest_comment, and
ticket.latest_public_comment placeholders.
|
ticket.public_comments | All public comments, most recent first. Unformatted text. |
ticket.latest_comment | The most recent comment. Unformatted text. Does not include attachments, unless Include attachments in email is enabled. To return attachments, use ticket.latest_comment_formatted. |
ticket.latest_public_comment | The most recent public comment. Unformatted text. |
Properties/placeholders | Description |
---|---|
ticket.comments_formatted | All comments, most recent first. |
ticket.public_comments_formatted | All public comments, most recent first. |
ticket.latest_comment_formatted | The most recent comment including any attachments. |
ticket.latest_public_comment_formatted | The most recent public comment. |
Properties/placeholders | Description |
---|---|
ticket.latest_comment_rich |
The most recent comment. Rich text formatting. If Include attachments in email is enabled, attachments are included. |
ticket.latest_public_comment_rich | The most recent public comment. Rich text formatting. If Include attachments in email is enabled, attachments are included. |
Satisfaction rating data
On Suite Growth and above or Support Professional and Enterprise, the following data properties are available for customer satisfaction rating for email and messaging.
This table lists both current and legacy CSAT placeholders. Legacy placeholders work only for the legacy CSAT experience. The updated CSAT option lets you customize the CSAT question, rating scale, and rating labels.
Properties | Description |
---|---|
satisfaction.survey_section | A block of text in the CSAT email directing users to complete the CSAT survey. |
satisfaction.survey_url | The URL for customers to rate their support experience. |
satisfaction.rating_section (Legacy CSAT) |
A formatted block of text prompting the user to rate satisfaction. |
satisfaction.rating_url (Legacy CSAT) |
A URL to rate the support. |
satisfaction.current_rating (Legacy CSAT) |
The text of the current satisfaction rating (e.g. "Good, I am satisfied"). |
satisfaction.positive_rating_url (Legacy CSAT) |
A URL to rate the support positively. |
satisfaction.negative_rating_url (Legacy CSAT) |
A URL to rate the support negatively. |
satisfaction.current_comment (Legacy CSAT) |
The comment that the user added when rating the ticket. |
Custom object data
Properties | Description |
---|---|
custom_objects.<object_key>.custom_fields.<field_key> | The value of a custom object's field. |
custom_objects.<object_key>.custom_fields.<field_key>.title | The value of a drop-down field. |
custom_objects.<object_key>.custom_fields.<field_key>.id | The ID of the target object in a lookup relationship field. |
custom_objects.<object_key>.custom_fields.<field_key>.name | The name of the lookup relationship field. |
custom_objects.<object_key>.external_id | The external ID of the custom object record. |
custom_objects.<object_key>.id | The ID of the custom object record. |
custom_objects.<object_key>.name | The name of the custom object record. |
169 comments
Julian
Hey all,
I'm trying to understand how to make a custom placeholder that captures a section of data from Zendesk sunshine. Can someone help me understand what the code would look like?
0
Judy Luong
Hi,
What would the placeholder be for a date field?
0
Charles Gresula
Hi Roee aizman,
I see it here as something that's available for use - ticket.organization.custom_fields
0
Ryan Boyer
For the "Alias" field, I understand that the placeholder "agent.name" pulls the Alias if present; however, is there a specific placeholder for just the "Alias" field?
We have a use case where we would like to pull the "Alias" in certain situations and the "agent.first_name" in other situations. I don't see how we can do that without if/else statements in liquid markup.
1
Ola Timpson
I saw someone asked above if there is a placeholder to link to a brand's help centre, but don't see an answer. Is there a way to do this please?
0
Tony Williamson
Hi Ola
This is what we did in our Macros
Try it out
0
Ola Timpson
Hi Tony - thanks for sharing!
I've just been having a play and have come up with the following, which seems to work.
I have over 20 brands and so try to avoid switching on brands if I can!
1
Tony Williamson
20 - wow
I thought our 5 or 6 were a handful... happy to pay it forward
0
Galen Rutledge
I have not tested this thoroughly, but it seems I am having no success with using:
ticket.public_comments_formatted
0
Jason Brown
When using the #{{ticket.id}} placeholder to generate a link in a email notification (for example, a ticket creation email notification), it appears that the link it always the end-user link. This causes these links to fail for our light agents/agents when they open a ticket. This link ends up redirecting them to the help center/guide home page.
Is there a way to make sure this user is the Agent interface link when the requester is an internal user?
Thanks
0
Dane
Due to the nature of your concern, I'll create a ticket for you. Please wait for my update via email.
@Jason,
On email notifications, the URL generated will be in the format of /hc/requests/TicketID instead of /agent/requests/TicketID. Changing these values is not supported. However, on the actual tickets, these format will still open the correct ticket on the Support interface and will not route you to the Help Center.
Hope this helps!
0
Holly Wessel
Hi there,
Is there a placeholder that can read two names but not the whole name? I have a fair amount of regular communication with people with two first names. For example, a woman named Joy Lynn Baker with the placeholder for the first name will pull as Joy and then I have to go in a manually had Lynn. If there is a way to denote two words as one name in their profile we create or some other way to do it, that would be swell.
0
Brett Bowser
I'm not aware of a placeholder that will accomplish what you're looking for at this time unfortunately. I think the best option would be to format the names to look like "Joy-Lynn Baker" which should allow you to use the first name placeholder. This will then display "Joy-Lynn" when the placeholder is applied. I know this isn't exactly what you're looking for but hopefully this helps!
0
Joe Brockhaus
Would it be possible to add support for `attachment.id` under the Comment details?
Zendesk Support placeholders reference – Zendesk help
The goal is to include enough attachment detail in the trigger to avoid immediately pinging the API. The Redact Comment Attachment endpoint requires the ticket, comment, and attachment ids.
For instance, consider the following liquid markup in a trigger + resulting payload with one attachment. The resulting JSON property `id` does not have a value since `attachment.id` is not included in the available placeholders. To redact an attachment, we have to retrieve all comments after receiving the webhook, just to get the attachment Ids.
0
Dave Dyson
Eric Nelson from our developer support team mentioned a possible workaround in this thread: Attachment ID placeholder for a comment
0
Test User
Hi we have web hooks and triggers setup for our account to get back public comments which are posted on the tickets, I tried using the following place holders
{{ticket.latest_public_comment_html}}
{{ticket.latest_public_comment_formatted}}
{{ticket.latest_public_comment.value}}
{{ticket.latest_public_comment_rich}}
But still for messages with hyperlinks embedded in texts like the following
we are not getting back the links in the JSON payload sent back to us. Is there any way to get those links embedded in text. It works for us even if we get the links with markdown format like the following.
0
Ram Moskovitz
I want to customize the user account creation email so it reflects the current organization - ie if someone is at HC for org A then it should say "thanks for creating a support account with org A" where-as for org B it would say "... with org B". I can't seem to get any of the substitutions working (ie this stuff {{.....)
0
Dane
Unfortunately, welcome emails are only per account. Per brand welcome email, let alone per organization, is not yet supported.
You can engage on a similar feature request below to further drive the demand for it.
Feature Request
0
Ram Moskovitz
Thanks Dane. Is it possible to customize the email template using the automation or script or?
0
Dane
0
Nikolay Kolev
Hello, I'm trying the Zendesk - HubSpot integration and I want to create a trigger notifying HubSpot that there was a tag added to the ticket. Similar to the one for CSAT rating - {"ticketId":"{{ticket.id}}","eventType":"ticketCSAT"} but I'm not sure what the event type should be. I couldn't really find all the types of event listed anywhere.
0
Dane
I'm thinking that the payload you have sent is specifically for HubSpot. You can just designate an actual text value if you can't find a corresponding value on our placeholders or Ticket API JSON format.
0
Rawan Dawairi
Hi,
I have been trying to add the job title to the signature which is a custom user field. I tried to insert the below but it didn't work.
{{user.custom_fields.field_key}}
{{agent.custom_fields.field_key}}
0
Riah Lao
Are there side conversation ticket placeholders?
0
Ola Timpson
Rawan Dawairi we have this in our signatures and use {{agent.custom_fields.title}} for a custom field with key title.
1
Maddie F.
Hi! Can this article please be edited to mention that placeholders are case-sensitive? I found this out today while working with a Zendesk agent to troubleshoot an issue I was encountering and I think it may be helpful to include it on this page.
0
Lisa Kelly
I updated both these Placeholder articles to include the following sentence:
"When you specify placeholders, remember they are case-sensitive."
https://support.zendesk.com/hc/en-us/articles/4408886858138
https://support.zendesk.com/hc/en-us/articles/4408887218330
I'm marking this ticket as Solved. Let me know if you disagree.
0
Example Agent
How do I pull the URL of the respective commenter's avatar? My use case is that I'm using liquid mark-up in my email notification triggers and need to display the avatar of the commenter next to each comment, whether the commenter was an end-user or agent.
I tried the code someone posted here in Aug 2021 (pasted below), but it seems to always return the agent's avatar's URL, even when the comment is from an end-user. Any ideas?
0
Alan Butcher
Hello,
Quick question.
I am creating a trigger to notify an external email target of a ticket created at their organization, but I am having trouble finding the right placeholder in the email body that will link them back to the help-center to view the ticket.
Basically, an email will be sent to an external user when someone at their organization opens a ticket via our help center, I want the external user to be able to click the ticket link and be taken to the help center to view the ticket.
Currently I have tried:
#{{ticket.id}}
{{ticket.link}}
{{ticket.url}}
But these all point me to the agent's view of the ticket. How do I get the external user a link to the help center view of the ticket?
1
Luan Dias
Can we take the time and date of a side conversation when she is created?
0