Macha

Zendesk Custom Object Placeholders and Object Triggers

Abbas, Customer Support & AI, Macha

Written by

Ankeet Guha, Co-founder & CTO, Macha

Reviewed by

Published September 9, 2026

Updated September 9, 2026

Zendesk has two separate automation paths that touch custom objects, and picking the wrong one produces a rule that saves cleanly and never fires. Object triggers run when a record changes. Ticket triggers run when a ticket changes and can read across a lookup relationship into a record. They aren't interchangeable, and the boundary between them decides which one you reach for.

Zendesk Custom Object Placeholders and Object Triggers

This covers the exact placeholder syntax for reaching object data, what each trigger type can actually do, and the limits. It assumes the object itself already exists; if not, start with the practical introduction.

The placeholder syntax

Placeholders are where most of the time gets lost, because a wrong one renders as nothing instead of erroring. Zendesk's placeholder documentation gives two forms.

Inside an object trigger, referencing a field on the record that fired it:

{{custom_objects.<object_key>.custom_fields.<field_key>}}
{{custom_objects.<object_key>.custom_fields.<field_key>.title}}

Use the second form for a drop-down: .title returns the label an agent picked. One nuance that costs people an afternoon, because the syntax is not uniform across object types: custom drop-down fields on tickets use an option_title_ form rather than a .title suffix. Check which object you are addressing before assuming the suffix carries over.

From a ticket, reaching through a lookup relationship field into the related record:

{{ticket.ticket_field_2698798899085.custom_fields.order_status.title}}

Three things are happening in that second one, and each of them breaks it independently.

The path goes through the numeric ID of the lookup field. Its name won't work, and neither will the object's key. 2698798899085 is the ticket field. You get that ID from the field's admin URL or from GET /api/v2/ticket_fields, and there's no way to guess it:

Terminal: listing ticket fields of type lookup returns the numeric field id, its title and the custom object it targets
Terminal: listing ticket fields of type lookup returns the numeric field id, its title and the custom object it targets

Filtering the list to lookup fields gives you the id, the field's title and the object it points at in one line, which is everything the placeholder path needs.

custom_fields.order_status is the field key on the related object, which is the machine key, visible on the field in Admin Center.

.title returns the human-readable label of the selected option. Zendesk documents .title as the way to display that value on drop-downs across object types, and documents the tag-returning form specifically for multi-select ticket fields. The practical rule is narrower than "omit it and you get tags": on a drop-down, reach for .title when you want what the agent read on screen, and test the bare form before assuming what it returns. It is the same value-versus-label split that catches people in lookup filters, covered in our lookup relationship fields guide.

Test a placeholder before you build a workflow around it. A typo in the field ID produces an email with a blank where the order status should be, and the trigger reports success.

What object triggers do

They take a moment to find, because they don't have their own nav item. The list lives under Business rules, Triggers, on an Object tab beside the ticket triggers, and it groups every object trigger under the object it belongs to:

The Zendesk Triggers page on its Object tab, listing object triggers grouped under Blog Demo Object, Product Registration and Service Plan with per-object counts and a Triggered 7d column
The Zendesk Triggers page on its Object tab, listing object triggers grouped under Blog Demo Object, Product Registration and Service Plan with per-object counts and a Triggered 7d column

There's a second route in from the object itself, which is the one most people find first:

The Actions menu on a Zendesk custom object offering View records, Import data, Create object trigger and Delete object
The Actions menu on a Zendesk custom object offering View records, Import data, Create object trigger and Delete object

That grouping matters more than it looks, because the limits below are per object rather than per account, and this page is where you see how close each one is.

An object trigger runs any time one of that object's records is created or updated. Per Zendesk's object trigger documentation, all applicable triggers for the object are evaluated and then "one update is made to the record with all applicable changes."

That batching has a consequence you should design around: "If there are two applicable actions that set a value for the same field, the last write will be the one you see." Two triggers both setting a status field don't conflict loudly. One of them just wins.

Which one is not a mystery, and it is not left to chance either. The Object tab carries an Edit order control beside Create trigger, so the sequence is yours to set. If two of your rules touch the same field, ordering them deliberately is the fix, and leaving the order alone is the decision that produces the surprise.

Conditions cover the field types you'd expect, per Zendesk's object trigger conditions and actions reference. Checkbox takes is, true or false. Date supports is, is not, present, not present, before, before or on, after, after or on, within previous X days and within next X days. Numeric types support the comparison operators. Text, multi-line and regex support includes and doesn't include as well as equality. Lookup relationships support is, is not, present and not present. Two special conditions matter: Current user, which lets you branch on who made the change, and Update, which distinguishes a record being created from one being updated.

Actions set field values on the record, act on lookup relationships, and send notifications. The notification set is active webhook, group email, text group, text user and user email.

Object triggers ship on all Suite plans and on Support Enterprise.

What ticket triggers do with objects

A ticket trigger fires on ticket events and can read a custom object through a lookup relationship field on the ticket. Conditions can reference the lookup field itself or a field on the related record, which is what makes "if this ticket's product is out of warranty" expressible.

The limitation catches people out. Per Zendesk's documentation on using custom objects in ticket triggers, "Lookup relationship fields can only be used in notification actions." Concretely: where the lookup lives on the ticket and points at a custom object related to a user, you can email that user and assign the ticket to them. You can't read a value off the related record and write it into a ticket field from a ticket trigger.

So the split is this. Reading object data to decide something or to say something works in a ticket trigger. Writing object data, or writing ticket data derived from object data, needs something else. That second case is the one that sends people to the API or to a webhook.

The limits

Object triggers have real ceilings, and they apply per object:

LimitValue
Active triggers per object100
Total triggers per object (active and inactive)500
Conditions per trigger50
Values in a multi-select condition50
Actions per trigger25
Trigger size64 KB

A hundred active triggers on a single object is generous, and the shape of that allowance encourages something. Per-object ceilings this high mean the constraint you hit first is comprehension. Nobody audits 80 object triggers successfully, and the last-write-wins behavior above means overlapping rules degrade quietly. Zendesk isn't optimizing for your ability to reason about the set; it's removing quota as a reason not to build. Treat the number you can maintain as your real limit.

The deletion lock

One operational constraint that surprises people during cleanup: a custom object can't be deleted while a Support ticket trigger references it. Tearing down an experiment means finding those triggers first, unpicking the references, then deleting the object.

Combine that with the object key rule covered in creating your first custom object, where a deleted key can never be reused, and the cost of a throwaway object is higher than it looks. Name things as though you'll keep them. Whether the thing needed to be an object at all is a separate question, worked through in custom objects versus custom fields.

Choosing between them

Three questions settle it in most cases.

What changed? If a record changed, that's an object trigger. If a ticket changed, that's a ticket trigger. This is the question that resolves the majority of confusion, because people reach for object triggers to react to ticket events, and the rule then never fires.

What needs to change? Object triggers write to the record. Ticket triggers write to the ticket but can't write a looked-up value into it.

Who needs telling? Both types send notifications, so the notification is rarely the deciding factor. Pick based on the first two questions and the notification follows.

Anything that crosses the boundary, reading a record and writing a ticket field, needs a webhook or an API call. Recognizing that early saves rebuilding a rule three times.

Common questions

What fires an object trigger? Creating or updating a record of that object. Object triggers don't respond to ticket events at all, which is the most common reason a new one appears to do nothing.

What's the placeholder for a custom object field in a ticket? {{ticket.ticket_field_<lookup_field_id>.custom_fields.<field_key>.title}}, where the ID is the numeric ID of the lookup relationship field on the ticket, not its name and not the object's key. The .title suffix returns the selected option's label.

Can a ticket trigger update a custom object record? No. In ticket triggers, lookup relationship fields are usable only in notification actions, so writing to the related record requires the API or a webhook.

How many object triggers can I have? Up to 100 active per object and 500 total per object, with a maximum of 50 conditions and 25 actions per trigger.

What happens if two object triggers set the same field? The last write wins. All applicable triggers are evaluated and a single update is applied, so overlapping rules resolve silently rather than erroring. Use the Edit order control on the Object tab to set which rule runs last.

Why can't I delete my custom object? Almost certainly a Support ticket trigger still references it. Zendesk blocks the deletion until the reference is removed.

Where an AI layer fits

Triggers are deterministic, and that's their strength and their ceiling. A trigger fires when a field equals a value. It stays quiet when a customer describes a problem in a way that implies the field should have been set.

The gap shows up in a specific place. Object data is usually maintained well and the ticket's connection to it is usually maintained badly, because setting the lookup field is manual work an agent does under time pressure. So the record is right, the relationship is missing, and every rule downstream of the relationship silently doesn't apply. Adding more triggers doesn't fix that, since the trigger's condition depends on the field somebody didn't fill in.

The part to automate is the linking itself. Read the ticket, work out which record it's about, and set the relationship so the deterministic rules you already wrote start firing.

Macha reads tickets in your Zendesk, follows lookup relationships to the records behind them, and can act inside the ticket itself. It fits teams who've built the object model and the triggers and keep finding that the rules don't fire because the link was never set. It fits poorly if your workflow is genuinely deterministic end to end, because a trigger that already works is cheaper and more predictable than any agent. Our Zendesk integration page covers what it reads, and our triggers guide covers the ticket side in full.

Get the placeholder right first. Start a free trial when the deterministic rules have gone as far as they go.

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