Read the customer's turn on a Zendesk ticket
Module · Stable
What the customer is waiting on, whether to draft, and whom to greet — read off a Zendesk ticket’s thread.
The first step of a reply-drafting Job on Zendesk. It reads the ticket and its whole thread once and answers what every later step needs. action says what to do: draft (the customer is waiting and nothing has been drafted for this message), no_action (the desk already replied after the customer, or no customer wrote) or handled (a note this platform wrote is already newer than the customer’s message); why says it in a line. open_messages lists every customer message after the desk’s last public reply, not just the newest, so a first question sent before a second one is not dropped. The customer is told apart from the desk by who wrote a comment, not by whether it is public — customers do reply on private comments — and a customer mail forwarded through one of the desk’s own mailboxes is unwrapped and counted as the customer’s. turn_text is the customer’s own words with the quoted mail underneath cut away; timeline_md is the whole conversation as one dense line per message ([2026-10-01 14:02 · customer] …, [… · Jana (public)] …, [… · internal] …), for a prompt. customer.first_name is the name to greet by, taken down a careful ladder — their sign-off, then your own earlier mail they quoted back, then their profile name, then a first.last address — and left empty when none is certain, because “Hi,” is always safe and a wrong name never is. customer.email is the forwarded sender on a relayed mail, not your mailbox. form holds the ticket’s custom fields by name. A follow-up to a closed ticket gets the last messages of that ticket at the top of the timeline. Example: a parts shop’s Job starts with this step (staff_names [“Jana”, “Tomas”, “Acme Parts”]), switches on action, writes the reply from turn_text and timeline_md greeting customer.first_name, and posts it as an internal note with turn_key as the note’s source_ref. Read-only: it changes nothing in Zendesk.
When to use
Section titled “When to use”At the top of any flow that drafts or triages replies to Zendesk tickets, before anything is classified or written: switch on action, and read every later fact (ticket_id, turn_key, the customer, the form) from this step by its name. Pass force from a Regenerate or Refresh caller so a requested redraft is always drafted. Fill staff_names with the names your desk signs with.
When not to use
Section titled “When not to use”Not for the raw thread or for comparing a draft with the reply the desk actually sent — Read Zendesk ticket gives the comments as they are, plus the last public staff reply. Not for files: Get Zendesk ticket attachments fetches those. It reads one ticket by id; it is not a search.
Inputs
Section titled “Inputs”Configured per use: ticket_id, force, refresh_reason, request_id, staff_names, follow_source.
Outputs
Section titled “Outputs”foundticket_idsubjectstatustagscreated_atupdated_atactionwhyturn_atturn_keyopen_messagesopen_countturn_texttimeline_mdlast_is_customeralready_draftedrelayedfollowup_ofcustomerformforcerefresh_reasonrequest_iderror
Requires
Section titled “Requires”the zendesk integration
Auto-generated from the skill registry (load_skills()). Do not edit by hand.