Macha

Freshdesk Placeholders & Dynamic Content Explained

Abbas, Customer Support & AI, Macha

Written by

Ankeet Guha, Co-founder & CTO, Macha

Reviewed by

Published July 26, 2026

Updated July 26, 2026

A placeholder is a small piece of shorthand — something like {{ticket.id}} — that Freshdesk swaps out for the real value the moment a message goes out, so one template can greet thousands of customers by name and quote their exact ticket back to them. They are what makes an automated acknowledgement feel written rather than stamped, and they are the reason a single canned response can serve an entire team without anyone editing the details by hand. This guide walks through the {{ticket.*}} library, where each placeholder is allowed to live, how the Insert Placeholders picker actually works, which fields are plan-gated or context-dependent, and the honest points where dynamic content stops being enough.

Freshdesk Placeholders & Dynamic Content Explained

What a placeholder actually is

Placeholders are dynamic variables that automatically insert ticket-specific or user-specific information into your outbound messages. Per Freshworks' Understanding dynamic content and placeholders documentation, they're written in double curly braces and resolved at send time — you type {{ticket.requester.firstname}} once, and every recipient sees their own first name.

The mental model worth holding onto: a placeholder is a read against the ticket (or the requester, or the company, or your help desk settings) at the instant the message fires. It doesn't compute anything, it doesn't branch, and it doesn't fetch data from outside Freshdesk. It looks up a value that already exists on the record and drops it into the text. That simplicity is exactly why placeholders are reliable — and, as we'll see later, exactly where they run out of road.

The three places placeholders live

The same {{ticket.*}} syntax works in three different surfaces, and knowing which is which saves a lot of confusion about why a placeholder "isn't showing up."

  1. Email Notifications — the automatic emails Freshdesk sends customers and agents on events like ticket creation, reply, or resolution. Configured under Admin → Workflows → Email Notifications, these templates are the most placeholder-heavy thing in the product because every notification has to speak to a different ticket.
  2. Canned Responses — reusable reply snippets agents insert by hand. Managed under Admin → Agent Productivity → Canned Responses (and inserted inline from the reply editor). A canned response with {{ticket.requester.firstname}} and {{ticket.id}} reads as a personal reply even though it's boilerplate. We cover the wider workflow in Freshdesk canned responses.
  3. Automations — the rules engine at Admin → Workflows → Automations. When a rule sends a reply or a notification as its action, that action body can carry placeholders too, so a "ticket created" rule can auto-acknowledge with the customer's name and the ticket number baked in. If automations are new to you, start with Freshdesk automations explained.

The Insert Placeholders picker

You don't have to memorise the syntax. Above any text box that supports dynamic content, Freshdesk shows an Insert Placeholders button. Click it and a panel opens listing the available variables grouped into categories — typically Helpdesk, Tickets, Ticket Fields, Requester, and Company. Each entry has a green plus icon; click it and the correctly-formatted placeholder drops into your template at the cursor. It's the difference between guessing whether the token is ticket.requestor or ticket.requester and just picking it from a list.

The "Insert Placeholders" picker open in the Email Notification template editor (New Ticket Created), listing placeholder groups (Helpdesk, Tickets, Ticket Fields, Requester, Company) over a template body using {{ticket.subject}}, {{ticket.id}}, {{ticket.description}} and {{ticket.url}}.
The "Insert Placeholders" picker open in the Email Notification template editor (New Ticket Created), listing placeholder groups (Helpdesk, Tickets, Ticket Fields, Requester, Company) over a template body using {{ticket.subject}}, {{ticket.id}}, {{ticket.description}} and {{ticket.url}}.

The grouping is a useful map of what's readable. Helpdesk covers your portal-level values like {{helpdesk_name}}. Tickets holds the core fields — id, subject, status, priority, url. Ticket Fields is where any custom fields you've built show up. Requester and Company reach into who filed the ticket and which account they belong to.

The core {{ticket.*}} library

Most day-to-day templates are built from a small, dependable set of ticket placeholders. Here's the working shortlist, drawn from the Freshdesk documentation:

PlaceholderInserts
{{ticket.id}}The unique ticket number
{{ticket.subject}}The ticket's subject line
{{ticket.description}}The original ticket body
{{ticket.url}}A link to the ticket for a logged-in user
{{ticket.status}}The current status
{{ticket.priority}}The priority level (Urgent/High/Medium/Low)
{{ticket.requester.firstname}}The customer's first name
{{ticket.requester.name}}The customer's full name
{{ticket.agent.name}}The assigned agent's name
{{ticket.portal_name}}The name of the support portal

Custom fields join the library automatically. This is the part people underuse: every custom field you create under Ticket Fields or Customer Fields gets its own placeholder generated for it once you save the form. So if you add an "Order Number" ticket field, {{ticket.order_number}} (or the equivalent generated token) becomes insertable — no extra configuration. If your status placeholders read as numbers rather than words, that's expected behaviour tied to how statuses are stored, which we unpack in Freshdesk ticket statuses explained.

Plan-gated and context-dependent placeholders

Not every placeholder is available everywhere, and two rules explain most of the surprises.

Some placeholders depend on a feature or plan. Time-tracking fields such as {{ticket.billable_hours}} and {{ticket.total_time_spent}} only resolve if time tracking is enabled and available on your plan — reference them without the underlying feature and they won't populate. If you're modelling a template around a niche field, confirm your plan actually surfaces it before you rely on it.

Some placeholders are context-dependent and are deliberately hidden from the picker. Per Freshworks' note on why some placeholders are unavailable in the popup, variables like {{comment.body}} and {{comment.commenter.name}} only make sense when a specific comment is already known — for example, inside the email notification that fires because an agent or requester just added a comment. Because they'd have nothing to reference in a general canned response, they're intentionally excluded from the standard Insert Placeholders panel. For a context-independent alternative, {{ticket.latest_public_comment}} pulls the most recent public reply and works more broadly.

The practical takeaway: match the placeholder to the surface. A comment placeholder in a canned response is a blank; the same placeholder in the "new comment" notification is exactly right.

The honest limits — and where an AI layer picks up

Placeholders are excellent at what they are: a fast, deterministic, zero-cost way to personalize outbound text. They never hallucinate, they render instantly, and once a template is right it stays right. Credit where it's due — for acknowledgements, signatures, and consistent formatting, dynamic content is the correct tool and you don't need anything cleverer.

But be clear about the ceiling. A placeholder can only insert a value that already exists on the ticket. It can drop in {{ticket.subject}}, but it can't read that subject, understand that the customer is asking about a delayed refund, and write the paragraph that resolves it. It can print {{ticket.id}}, but it can't fetch the order status behind that ticket from your commerce backend — placeholders don't reach outside Freshdesk. And a canned response full of placeholders is still a template a human chose and sent; the reasoning, the judgement about which template even applies, stays entirely with the agent.

This is the seam where an AI agent layer fits, and it's worth understanding the broader category of AI agents for customer service before reaching for one. Macha is one such layer: it runs on top of the Freshdesk you already use as a native connector — it does not replace Freshdesk, its notifications, or its canned responses. You connect Macha to Freshdesk with your subdomain and API key, and it reads and writes the same tickets your templates already personalize: drafting a grounded, ticket-specific reply rather than a fill-in-the-blank one, and — where a placeholder would only print an order number — using a custom tool to actually call your REST API and fetch the live order status to answer with. If you want to see how that stacks alongside native dynamic content, how to automate Freshdesk with AI walks through it. (Macha's connector is for Freshdesk specifically — not Freshchat, Freshservice, or Freshcaller. And credits are consumed per AI action, not per resolution — see the pricing breakdown.)

The clean division of labour: keep placeholders doing the deterministic personalization they're perfect for — names, IDs, links, formatting — and layer an agent on top for the reasoning-heavy part a {{ticket.*}} token can never do, which is understanding the ticket and composing the answer.

FAQ

Where do I find the list of placeholders in Freshdesk? Click the Insert Placeholders button above any text box that supports dynamic content — in an Email Notification template, a Canned Response, or an Automation reply action. The picker groups placeholders under Helpdesk, Tickets, Ticket Fields, Requester, and Company, and a green plus icon inserts the correctly-formatted token.

What are the most common ticket placeholders? The everyday set includes {{ticket.id}}, {{ticket.subject}}, {{ticket.description}}, {{ticket.url}}, {{ticket.status}}, {{ticket.priority}}, {{ticket.requester.firstname}}, and {{ticket.agent.name}}. Custom fields you create under Ticket Fields or Customer Fields also generate their own placeholders automatically.

Why is a placeholder I expected missing from the popup? Usually because it's context-dependent. Placeholders like {{comment.body}} and {{comment.commenter.name}} only make sense when a specific comment is known, so they're deliberately excluded from the general picker and only work in comment-triggered notifications. Others, like time-tracking fields, depend on a feature or plan being enabled.

Can I use placeholders in automations and canned responses, not just emails? Yes. The same {{ticket.*}} syntax works across Email Notifications, Canned Responses, and Automation reply/notification actions. The only caveat is context: a placeholder still needs the underlying value to exist on the ticket in that surface.

Can I add AI to Freshdesk without replacing my templates? Yes. An AI agent layer like Macha connects to Freshdesk as a native connector and runs on top of your existing notifications and canned responses — it doesn't replace them. It handles the reasoning placeholders can't, like understanding a ticket and drafting a grounded reply, or fetching live data through a custom tool, while your dynamic content keeps doing the deterministic personalization it's good at.

Ready to go beyond fill-in-the-blank templates? Start a free trial of Macha and connect it to your Freshdesk in minutes.

Macha

About Macha

Macha is an AI agent platform that works on top of the help desk you already use — Zendesk, Freshdesk, Gorgias, or Front — and connects to the rest of your stack, even your own internal systems. Its AI agents resolve tickets and automate entire workflows end to end, all set up in plain English, no code. Learn more about Macha →

Zendesk
5.0 on Zendesk Marketplace

Loved by support teams worldwide

See what support teams are saying about Macha AI.

The application seems excellent to me! We are still testing, and we need support for some details and they were extremely efficient too!

Daniela Costa

Daniela Costa

Head of Support, Seabra

Macha has been a great addition to our support toolkit. It generates clear, well-organized responses that fit naturally into our workflow. One feature we particularly appreciate is its ability to automatically reply in the same language as the ticket.

Marius F

Marius F

Support Head, Zentana

We've been using Macha for a little while now and it's been really great addition so far! It's powerful, convenient, and makes getting work done a lot easier for our agents.

Alexander Wedén

Alexander Wedén

Head of Support

Support team is very helpful and responsive. Really enjoy how lightweight this is within Zendesk itself vs other more intrusive tools.

Cathleen Wright

Cathleen Wright

Zendesk Admin, Cortex IO

So far it's pretty good! Our queries are a little nuanced, so we can't always use it, but it's got enough utility for us. It can even incorporate our bilingual country with greetings in a second language.

Jae Oliver

Jae Oliver

Head of Support, Wise

Really enjoying using Macha, it has made a noticeable difference to our support team in a short amount of time. I really like the ticket summary feature, saves us a lot of time.

Harry Jackson

Harry Jackson

Head of Support, Crumb

Macha AI is a great addition to my workspace! It's powerful, convenient, and it really makes productivity so much easier for our agents!

Dave G

Dave G

Head of Support, Cyber Power Systems

Very impressed! AI integration for Zendesk has certainly come a long way and Macha seems to set the standard for now. This will for sure save lot of time in our support team.

Pauli Juel

Pauli Juel

Head of CS, Dokument24

Macha has been working great for us so far! The auto-responses are accurate and our resolution time has dropped significantly.

Lana T

Lana T

Zendesk Admin, Swotzy

Macha AI is a great addition. The knowledge base feature means our agents always have the right answers at their fingertips.

Mischa Wolf

Mischa Wolf

Head of Support, Topi

We're enjoying this integration so far. It's made our support team more efficient and our customers get faster responses.

Paula G

Paula G

Head of Customer Support, Xly Studio

The team enjoys using it. It saves considerable time on common questions and the integration options are excellent.

Kilian Leister

Kilian Leister

Support Head, Didriksons

Ready to supercharge your team with AI?

Get started in minutes. Connect your tools, configure your agents, and let AI handle the rest.

500 free credits · no time limit, no credit card