A complete guide to Freshdesk ticket status codes

Stevia Putri
Written by

Stevia Putri

Amogh Sarda
Reviewed by

Amogh Sarda

Last edited October 23, 2025

Expert Verified

If you manage a support team, you know the feeling. You log into your Freshdesk dashboard hoping for a clear overview of the day's work, and what you see is a wall of tickets all marked "Open." It’s impossible to tell what’s brand new, what’s waiting on a customer, and what’s been kicked over to the engineering team.

Getting a handle on Freshdesk ticket statuses is how you bring some sanity to that chaos. It’s the difference between a messy, confusing queue and a well-organized system where your team can easily track, prioritize, and solve problems.

But there’s a little more to it than meets the eye. On the surface, you have the friendly labels your agents see, like "Pending" or "Resolved." Under the hood, however, the system is powered by numeric Freshdesk ticket status codes. These codes are what make all your automations and API integrations actually work.

This guide will walk you through both sides. We’ll cover the default and custom statuses, show you how to use their codes in your workflows, and explore how you can automate status management to finally get that clear dashboard you've been hoping for.

What are Freshdesk ticket status codes?

Every ticket in Freshdesk has a status. Simple enough, right? It's just a label that tells you where that ticket is in its journey from "new problem" to "all sorted." But here’s the bit that trips people up: every status is actually a two-part deal.

  • Status Name: This is the plain-text label everyone sees in the Freshdesk interface. It’s designed to be simple and descriptive, like "Open" or "Closed."

  • Status Code: This is the number Freshdesk uses behind the scenes to get things done. If you're building an integration or setting up an automation with the API, you’ll be using this code, not the name. For example, to the system, "Open" is just "2".

Why is this so important? Because if you want to automate anything beyond the most basic rules, you need to speak the system's language. Trying to tell the API to update a ticket to "Open" won’t work, you have to tell it to update the ticket to status "2". Getting these codes right is the key to building some seriously helpful, time-saving workflows.

Here’s a quick rundown of the default statuses and their codes that come with Freshdesk.

Status NameStatus CodeDescription
Open2The ticket is new or an agent needs to take action.
Pending3The agent is waiting on the customer or someone else for information.
Resolved4The agent has sent a solution to the customer.
Closed5The customer confirmed the solution, or the ticket is finalized.

A breakdown of default Freshdesk ticket status codes

Freshdesk starts you off with four default statuses. They cover the basic lifecycle of a support ticket and are the foundation for any workflow you build.

Open (Code: 2)

This is where it all begins. A customer sends an email or fills out a form, and poof, a new "Open" ticket appears. Think of it as the welcome mat for any customer issue. The "Open" status is also your safety net. If a customer replies to a ticket you’ve already marked as "Pending" or "Resolved," Freshdesk is smart enough to flip it right back to "Open," making sure it doesn’t get lost.

Pending (Code: 3)

This one is your "pause" button. You use it whenever you're waiting on something and can't move forward. Usually, you're waiting for the customer to reply with more details, like a screenshot or their account number. The best thing about the "Pending" status? It stops the SLA clock. This is a huge relief, because it means your team’s metrics won’t get dinged for delays you can't control.

Resolved (Code: 4)

When an agent feels they've fixed the problem and sent the solution, they mark the ticket as "Resolved." It’s like saying to the customer, "Hey, we think this is sorted, but just reply if you still need help." It isn't the final, final step, though. If the customer writes back because the issue is still there, the ticket jumps right back into the "Open" queue.

Closed (Code: 5)

This is the end of the line. A ticket is marked "Closed" either when a customer confirms the problem is gone or after a certain amount of time passes without a reply. Once a ticket is closed, it’s locked down for good. If the customer contacts you again about the same thing, Freshdesk will open a brand-new ticket instead of reopening the old one.

How to create and manage custom statuses and their Freshdesk ticket status codes

Those four default statuses are a solid starting point, but let’s be honest, real-life support is way messier. As your team grows, you'll find you need more specific labels to actually understand what’s happening in the queue.

This is where custom statuses save the day. You could create statuses like:

  • "Waiting on Engineering" for tickets that have been escalated for a bug fix.

  • "Awaiting Third-Party" for when you're stuck waiting on an outside vendor.

  • "Scheduled" for feature requests that are planned for a future update.

You can create these by navigating to Admin > Field Manager > Ticket Fields > Status in your Freshdesk account. But there's a catch. The more custom statuses you add, the more manual work you create. Agents might forget to update the status, choose the wrong one, or just spend too much time clicking around instead of helping customers. This slows everyone down and makes your reporting a mess.

A screenshot of the Freshdesk ticket dashboard, where agents can view and manage various Freshdesk ticket status codes.
A screenshot of the Freshdesk ticket dashboard, where agents can view and manage various Freshdesk ticket status codes.

This is where a bit of AI can be a lifesaver. While Freshdesk’s own automation tools are helpful, they run on rigid "if-this-then-that" rules that can’t always handle the complexities of customer conversations. A tool like eesel AI, on the other hand, connects right into your Freshdesk setup and uses AI to figure out the meaning and intent behind every ticket.

Instead of you having to build dozens of rules, a product like eesel AI's AI Triage can automatically read a new ticket, understand the problem, and apply the correct custom status. For instance, if it sees language that points to a software bug, it can instantly change the status to "Waiting on Engineering" without anyone having to do a thing.

The really cool part is that eesel AI learns from your team's past ticket history, so it gets your business context and how you typically solve different problems from day one. You don't have to spend weeks building and testing complex rules, it's ready to go.

How to use Freshdesk ticket status codes with the API and automations

Alright, this is where you can start feeling like a wizard. Let's put those numeric codes to work and automate some of the grunt work.

Using status codes in the API

If you want to update a ticket from a different app or with a custom script, you'll need to use the Freshdesk API. And when you do, you must use the numeric status code.

For example, here’s a simple Python script that updates a ticket’s status to "Resolved" (which, as we know, has the status code "4"):


import requests  

import json  

# Your Freshdesk domain and API key  

domain = "yourcompany.freshdesk.com"  

api_key = "your_api_key"  

password = "X" # The password can just be 'X'  

ticket_id = "123"  

# The status code for 'Resolved' is 4  

ticket_data = { "status": 4 }  

url = f"https://{domain}/api/v2/tickets/{ticket_id}"  

headers = { "Content-Type": "application/json" }  

response = requests.put(url, auth=(api_key, password), data=json.dumps(ticket_data), headers=headers)  

if response.status_code == 200:  

    print("Ticket updated successfully.")  

else:  

    print(f"Failed to update ticket. Status code: {response.status_code}")  

Using statuses in automations

Freshdesk also has built-in automation tools called Dispatcher and Observer that can change a ticket's status when something happens. For example, you could set up a rule that automatically changes the status to "Pending" any time an agent adds a private note.

<protip text="A surprisingly useful low-tech feature is 'Email Commands.' Agents can update a ticket simply by typing a command in their email reply, like "@simonsays 'status':'pending' @simonsays". The command gets removed from the email before it's sent to the customer, but the ticket status is updated automatically.">

But these rule-based systems have their limits. What happens when a customer's email is about a billing question and a possible bug? A simple rule can't really handle that kind of nuance.

This is where a tool like the eesel AI Agent really makes a difference. It does more than just change a status, it can perform a series of smart actions based on what the ticket is about. For example, it could read an email, see that it’s a high-priority bug, change the status to "Urgent," tag it as "Bug Report," assign it to the engineering team, and write an internal note summarizing the problem for them, all in a few seconds.

What really gives managers peace of mind is eesel AI's simulation mode. Before you let the AI handle any live tickets, you can run it on thousands of your past tickets in a safe test environment. You get to see exactly how it would have replied, which statuses it would have set, and what your resolution rate would have looked like. It gives you total confidence and a clear picture of the results before you flip the switch.

Freshdesk pricing plans for custom Freshdesk ticket status codes

One quick heads-up: to get into the world of custom statuses and automations, you'll need to be on one of Freshdesk's paid plans. Here’s a simple look at the plans and what they offer for ticket management.

PlanPrice (per agent/month, billed annually)Key Automation & Status Features
Free$0Basic Ticketing, Knowledge Base
Growth$15Custom Ticket Statuses, Automation Rules
Pro$49Advanced Automation, Custom Roles, SLA Management
Enterprise$79Skill-based Routing, Sandbox for testing

Go beyond manual updates with Freshdesk ticket status codes

So, that's the full story on Freshdesk ticket status codes. They're the secret engine running behind the scenes, powering your automations, while custom statuses let you build a workflow that actually fits how your team works. Getting a handle on them is a huge step toward an organized, efficient support queue.

But let's face it, manual updates and basic rules have a ceiling. As your team gets busier and your ticket volume grows, those manual processes start to become a real bottleneck.

When you're ready to move beyond simple rules and let smart automation take over, eesel AI is the natural next step. It lets you automate all those complex workflows without forcing you to switch away from the helpdesk you already use.

Ready to put your ticket management on autopilot? Try eesel AI for free and see how our AI Agent can start triaging, categorizing, and updating your Freshdesk tickets for you.

Frequently asked questions

Freshdesk ticket status codes are the numeric identifiers the system uses behind the scenes for each ticket status, like "2" for "Open". They are crucial because they enable all your automations and API integrations to function correctly, allowing for precise and automated ticket management.

Yes, you can create custom Freshdesk ticket status codes to better reflect your team's specific workflows and ticket states beyond the defaults. These are managed in the Admin section under Field Manager > Ticket Fields > Status.

Freshdesk ticket status codes are essential for API interactions. When you're updating a ticket programmatically from another application or a custom script, you must use these numeric codes (e.g., "4" for "Resolved"), as the API does not recognize the plain-text status names.

Yes, marking a ticket as "Pending" (status code "3") is particularly useful because it automatically pauses the SLA clock. This ensures your team's performance metrics aren't negatively affected by delays caused by waiting on external information, such as from the customer.

A "Resolved" ticket means an agent has sent a solution and is awaiting customer confirmation; it can revert to "Open" if the customer replies. A "Closed" ticket signifies finalization, usually after customer confirmation or a set time, and cannot be reopened directly; a new ticket is created if the issue resurfaces.

You can automate changes to Freshdesk ticket status codes using Freshdesk's built-in Dispatcher and Observer rules, or even via "Email Commands." For more complex, intelligent automation based on ticket content, tools like eesel AI can automatically triage and update statuses.

No, custom Freshdesk ticket status codes and advanced automation features like those found in Dispatcher and Observer rules are typically available starting from Freshdesk's paid plans, such as the Growth, Pro, or Enterprise tiers. The Free plan offers only basic ticketing.

Share this post

Stevia undefined

Article by

Stevia Putri

Stevia Putri is a marketing generalist at eesel AI, where she helps turn powerful AI tools into stories that resonate. She’s driven by curiosity, clarity, and the human side of technology.