Why is the customer's reply not changing the ticket status to open?

<h2 id="h_01HGDG2ZJHD2TDF9KJS3CMVQ9J">Question</h2><p>Why didn't my ticket reopen with a comment from the end user?</p><h2 id="h_01HGDG2ZJJ2BBXR2BABHJ8J8KC">Answer</h2><p>When an end user comments on a pending, solved, or on-hold ticket, the ticket status automatically changes to <strong>Open</strong> as part of the <a href="https://support.zendesk.com/hc/en-us/articles/4408829602970" target="_blank" rel="noopener noreferrer">inborn system ticket rules</a>.</p><p>Quick Diagnosis<strong>:</strong> Open the ticket in Zendesk, click <strong>Events</strong> (top right), and check what caused the last update:</p><ul>
<li data-list-item-id="ecd4c18e9ea11664fb25f27de98d6e1b4">
<strong>A trigger name is listed:</strong> A trigger changed the status back to Solved or Pending.</li>
<li data-list-item-id="efaeeeeb8eb4c539628a5e9dce1ffe091">
<strong>Shows "By Web Service":</strong> An API update occurred using agent credentials.</li>
<li data-list-item-id="edbedea39fb7ba49e81f5fd817c504a6d">
<strong>Shows an agent's name:</strong> The requester has agent/admin permissions.</li>
<li data-list-item-id="e867fe53c007b10452430c8ee0c96b2bf">
<strong>A new follow-up ticket was created:</strong> The original ticket was already <strong>Closed</strong> (Closed tickets cannot be reopened by design).</li>
</ul><p>There are three likely causes for this behavior:</p><h3 id="h_01ENTK505AZYAYDMKT22A0855S">A trigger changed the status</h3><p>A trigger may have run immediately after the user's reply and reset the status back to <strong>Solved</strong> or <strong>Pending</strong>.</p><p>How to fix: <a href="https://support.zendesk.com/hc/en-us/articles/4408829602970-Viewing-all-events-of-a-ticket" target="_blank" rel="noopener noreferrer">Check the ticket events</a> to see which triggers executed during that update, then adjust the trigger conditions to prevent them from firing on end-user replies.</p><h3 id="h_01ENTK5672P3A0NBPGCN0R09SE">API updated the ticket using agent credentials</h3><p>If updates made via the API display a <strong>By Web Service</strong> message in ticket events, the endpoint used determines whether the ticket reopens automatically:</p><ul>
<li data-list-item-id="e7497b2a024f29301f8a5fcdb6dbd0668">
<strong>Requests Endpoint (End Users):</strong> Updates submitted via the <a href="https://developer.zendesk.com/api-reference/ticketing/tickets/ticket-requests/" target="_blank" rel="noopener noreferrer">Requests API</a> automatically set the ticket to <strong>Open</strong> because the actor is an end user.</li>
<li data-list-item-id="e6f7f3e0dae29e5ef7fda423c79a2e81c">
<strong>Tickets Endpoint (Agents/Admins):</strong> Only agents or admins can use the <a href="https://developer.zendesk.com/api-reference/ticketing/tickets/tickets/" target="_blank" rel="noopener noreferrer">Tickets API</a>. Even if you pass an end user's <code>author_id</code> with the comment, the system treats the update actor as an agent—so the ticket will <strong>not</strong> automatically reopen.</li>
</ul><p>How to fix: When updating tickets via the Tickets API, explicitly pass the status parameter in your request body:</p><pre class="language-auto">{
"ticket": {
"comment": { "body": "User reply text", "author_id": 12345 },
"status": "open"
}
}</pre><p>To verify if an update used the Tickets endpoint with a different <code>author_id</code>, inspect the ticket audit log at <code>api/v2/tickets/TICKET_ID/audits.json</code> and compare the audit author ID against the comment author ID.</p><h3 id="h_01ENTK5CA5YGCM37VQ9E7ZCWVH">The requester is an agent</h3><p>By design, when an agent or admin replies to a ticket where they are also listed as the requester, the ticket status remains in whatever status was selected when submitting the reply.</p><p>How to fix: Create a custom trigger to force tickets requested by agents to reopen when updated:</p><ol>
<li data-list-item-id="ebeb90a60a66bb77af5bbc38e4e14a03f">Go to <strong>Admin Center &gt; Objects and rules &gt; Business rules &gt; Triggers</strong>.</li>
<li data-list-item-id="e87e93689cb400d393eae1d024f5c2c84">Under <strong>Meet ALL of the following conditions</strong>, add:<ul>
<li class="wysiwyg-list-bold" data-list-item-id="ed2ebbf088de5a1a69a2ecaf522fe03ea"><strong>Ticket | Is | Updated</strong></li>
<li class="wysiwyg-list-bold" data-list-item-id="e27e29a903d0eb9a7d58178f038dc2bbb"><strong>Comment | Is | Present</strong></li>
<li class="wysiwyg-list-bold" data-list-item-id="ea574aef7036e34c1d65ac1a88d1440fb"><strong>Requester | Is | (current user)</strong></li>
<li class="wysiwyg-list-bold" data-list-item-id="eb3b33d6a5cdf1c8de2695fe37f7977ba"><strong>Current user | Is | (agent)</strong></li>
<li class="wysiwyg-list-bold" data-list-item-id="e0bad378989d5f2f3b5d55809fd8bb4f8"><strong>Status | Not changed | Solved</strong></li>
</ul>
</li>
<li data-list-item-id="ebaf7dc35b6f4e9aa6187d92fa7f8f69a">Under <strong>Actions</strong>, add:<ul><li class="wysiwyg-list-bold" data-list-item-id="e7b54e397a6b6490ec4e1e1ea686e4fc9"><strong>Status | Open</strong></li></ul>
</li>
</ol><p>Agents replying via email can also include the <code>#open</code> command using the <a href="https://support.zendesk.com/hc/en-us/articles/4408839419034" target="_blank" rel="noopener noreferrer">Mail API</a> to reopen the ticket upon update.</p><style>
.ai-only {
position: absolute !important;
width: 1px !important;
height: 1px !important;
padding: 0 !important;
margin: -1px !important;
overflow: hidden !important;
clip: rect(0, 0, 0, 0) !important;
white-space: nowrap !important;
border: 0 !important;
}
</style>
<div class="ai-only" aria-hidden="true">
<details>
<summary>THIS SECTION IS AI CONTENT. DON'T EDIT OR DELETE.</summary>
<h2 id="h_01KXEBFY9WV4AAN3A2T55T4BXX">
Why is the customer's reply not changing the ticket status to open?
Why didn't my ticket reopen with a comment from the end user? Why
does the ticket status or progress or state not update when a customer
or user or visitor replies?
</h2>
<p>
When an end user comments on a pending, solved, or on-hold ticket,
the ticket status changes to Open as part of the inborn system ticket
rules. If an update of a requester does not change the status to
Open, it could be because a trigger changed the status, an API updated
the ticket status using agent credentials, or the requester is an
agent.
</p>
<h2 id="h_01KXEBFY9W9VT55JP5QR022AM2">
How do I check if an auto-reply or notification rule changed the
status? Why did a trigger change the ticket status back to solved?
</h2>
<p>
A trigger can update the ticket and change the status to Solved.
Check the events of the ticket to see what triggers fired on a particular
update.
</p>
<h2 id="h_01KXEBFY9XP65FRTM3NWYSAVYV">
Why did the API call not update the ticket status to Open? Why does
an update show a "By Web Service" message in ticket events?
</h2>
<p>
If you do not specify the status in the API request, then the API
call may not update the ticket status to Open. Updates made using
the API show a "By Web Service" message when you view the ticket
events.
</p>
<h2 id="h_01KXEBFY9XTYQZE3ER2MPDSSWG">
Can I use the Requests endpoint to reopen a ticket? Does the ticket
automatically reopen when an end user adds a comment via the Requests
endpoint?
</h2>
<p>
Yes. The Requests endpoint can be used by authenticated end users.
When you add a comment to a ticket from this endpoint, the ticket
automatically reopens because the actor is an end user.
</p>
<h2 id="h_01KXEBFY9XQ8FKAF7AX2BB1E3G">
Why does a ticket not reopen when using the Tickets endpoint with
an author_id? How do I reopen a ticket when updating via the Tickets
endpoint?
</h2>
<p>
Only agents or admins are allowed to use the tickets endpoint but
can pass in an author_id along with a comment to make it appear to
have been sent by an end user. Because the actor on this endpoint
is an agent, the ticket does not automatically reopen. To reopen
the ticket when you use this endpoint, include a "status":"open"
attribute with the ticket update request.
</p>
<h2 id="h_01KXEBFY9X2HXFW1PSVTS07N9V">
How do I confirm that an API call used the Tickets endpoint? How
do I check ticket audits for the comment author?
</h2>
<p>
Check the audits of the ticket by using api/v2/tickets/TICKET_ID/audits.json.
Check if the audit's author is the same as the comment's author.
If they match, then the user listed is the actor. If they do not
match, the update was made using the tickets endpoint and passing
a different author_id in when you update the ticket.
</p>
<h2 id="h_01KXEBFY9XQ6M5YFP3VAKSV6R6">
Why does a ticket stay in its current status when a requester replies?
What is the expected behavior when the requester of a ticket is an
agent or support person?
</h2>
<p>
It is expected behavior that if a requester replies to a ticket,
and is also an agent, the ticket stays in whichever status was selected
at the time of their reply.
</p>
<h2 id="h_01KXEBFY9X76T8AWSGCEX0KTRB">
How do I create a trigger to change the ticket status to open when
an agent replies as the requester? What conditions do I use to reopen
tickets requested by team members?
</h2>
<p>
If the requester of the ticket is an agent, make the status change
to open with a trigger.
</p>
<ol>
<li>
Under <strong>Meet ALL of the following conditions</strong>,
select <strong>Add condition</strong>:
</li>
<li>
Select <strong>Object</strong> &gt; <strong>Ticket</strong> &gt;
<strong>Ticket | Is | Updated</strong>
</li>
<li>
Select <strong>Lookup relationship</strong> &gt;
<strong>Requester</strong> &gt;
<strong>Requester | Is | (current user)</strong>
</li>
<li>
Select <strong>Ticket details</strong> &gt;
<strong>Current user | Is | (agent)</strong>
</li>
<li>
Select <strong>Object</strong> &gt; <strong>Ticket</strong> &gt;
<strong>Ticket status | Not changed to | Solved</strong>
</li>
<li>
Under <strong>Actions</strong>, select: <strong>Object</strong>
&gt; <strong>Ticket</strong> &gt;
<strong>Ticket status | Open</strong>
</li>
</ol>
<p> </p>
<h2 id="h_01KXEBFY9XEJ7SM7WQ0K4QVSFT">
Can agents use the Mail API to pass through a ticket status? How
do I use the #open command in an email reply?
</h2>
<p>
Yes. Alternatively, your agents can use the Mail API to pass through
the ticket status #open as they reply by email.
</p>
</details>
</div>