Macha

How Do Zendesk Custom Object Placeholders and Object Triggers Work?

Abbas, Customer Support & AI, Macha

Written by

Ankeet Guha, Co-founder & CTO, Macha

Reviewed by

Published September 9, 2026

Zendesk object triggers run when a custom object record changes, while ticket triggers run when a ticket changes and can only read a record through a lookup field. Picking the wrong one produces a rule that saves cleanly and never fires.

Key takeaways

  • Zendesk object triggers fire when a custom object record is created or updated, while ticket triggers fire on ticket events and can read a custom object only through a lookup field.
  • Zendesk object triggers are capped at 100 active and 500 total per object, with a maximum of 50 conditions and 25 actions per trigger.
  • When two Zendesk object triggers set the same field on a record, one update is applied and the last write wins, so the Edit order control on the Object tab decides the result.
  • Reaching a custom object field from a ticket placeholder needs the numeric ID of the lookup field on the ticket, such as ticket_field_2698798899085, not the field's name or the object's key.
  • Object triggers are available on every Zendesk Suite plan and on Support Enterprise, and a custom object cannot be deleted while a Support ticket trigger references it.
How Do Zendesk Custom Object Placeholders and Object Triggers Work?

To reach custom object data in Zendesk, use {{custom_objects.<object_key>.custom_fields.<field_key>}} inside an object trigger, and {{ticket.ticket_field_<lookup_field_id>.custom_fields.<field_key>}} from a ticket, where the ID is the numeric ID of the lookup field. Object triggers fire when a record is created or updated, allow 100 active triggers per object, and can write to the record. Ticket triggers fire on ticket events and can read a record but only use the lookup field in notification actions. The object itself should already exist; if not, start with the practical introduction.

Object triggerTicket trigger
Fires whenA custom object record is created or updatedA ticket is created or updated
Placeholder formcustom_objects.<object_key>.custom_fields.<field_key>ticket.ticket_field_<id>.custom_fields.<field_key>
Can write to the recordYesNo (lookup fields only in notification actions)
Limits100 active, 500 total per objectAccount-wide ticket trigger limits
PlansAll Suite plans, Support EnterpriseAll Suite plans, Support Enterprise (for object data)

What is the placeholder syntax for custom object fields?

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 can a Zendesk object trigger do?

Object triggers 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:

Zendesk's Triggers page, Object tab — object triggers grouped by Blog Demo Object, Product Registration and Service Plan.
Zendesk's Triggers page, Object tab — object triggers grouped by Blog Demo Object, Product Registration and Service Plan.

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 are available on every Suite plan (Team, Growth, Professional, Enterprise and Enterprise Plus) and on Support Enterprise.

What can a ticket trigger do with custom object data?

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.

How many object triggers can you create?

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.

Why can't you delete a custom object?

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.

Should you use an object trigger or a ticket trigger?

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.

What can't triggers do on their own?

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, Front, Intercom or HubSpot) and connects to the rest of your stack, even your own internal systems. It is done for you: the Macha team analyzes your past tickets, builds the knowledge base and the agents, and runs them in safe mode until the drafts are right. Pricing is about $0.40 a ticket, and that includes setup and a dedicated success manager who handles your changes. 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

Get your AI agents set up for you.

Book a 20-minute call with our team. We'll show you where we would start on your Zendesk and how the setup works. Setup and a dedicated success manager come with the trial and every plan.

Live in under a week
Safe mode until you approve
About $0.40 a ticket