What's new for Zendesk Custom Objects: filters, attachments and reporting
Zendesk’s Custom Objects gain major upgrades this fall—attachments, access rules, advanced filters, article linking, and Explore reporting. These updates strengthen how AI, data, and workflows connect across the platform, making Custom Objects a cornerstone of modern Zendesk setups.
Over the years the Zendesk platform has grown from a set of ticket focus products into a platform that spans the entire lifecycle of a conversation from customer up to reporting.
Within that platform we can find three powerful layers. On one side you have the core platform. The Agent Workspace with its tickets, rules and analytics lies at the center of this resolution platform. It’s the place where your agents work, you manage your CX workflows and get key insights on how your team is performing.
As AI gets more powerful, it's evolving into a key layer that’s not only expanding the platforms capabilities, but also gradually replacing core elements with more powerful versions. Human agent taking manual steps turned into Agent Copilot procedures. Team-leads checking each conversation turns into autoQA and a help center with self service turn into AI Agents with generative and agentic replies.
But while AI is pushing the platform forward, there’s also a need of extending its roots. Your CX or ES team needs to talk to other departments in the company. Both your human and AI Agents need data and context to provide proper support. And we need ways to integrate with other tools as part of our processes. This is where the Actions and integrations layer comes into play.
This third layer has seen some great improvements in the last year. We’ve seen the release of Action Builder with its custom flows and actions to make automating processes easier. Both its custom and native connectors allow you to easily plug into external tools with reusable components.
Knowledge graph is gradually turning the Zendesk Help Center into a source of information indexed from across the company, while expanding its reach at the same time. The recent release of the native Confluence connector for AI Agents and Help Center is just a first of many connectors that allow AI Agents, the Help Center and Agent Copilot to not only leverage articles in the Help Center, but also from external sources as a way to provide answers.
But while connecting to external platforms to get and set data, and indexing external knowledge sources are key parts of integrating Zendesk into your wider company, there is a third element that we need in order to build powerful processes, and that is access to data. And this is where Custom Objects comes into play.
Custom Objects
Over the years I’ve written plenty of articles about Custom Objects already. They’re a way to add to the native Zendesk objects of user , ticket and organization with custom data types of your own.

If you’re an IT department you might want to add IT assets as an object. This will allow you to import your laptops, phones and tables into Zendesk and link support request to specific devices, assign loaner device and track them on the employee using them, or have an easy way to find the right supplier.
As a retailer you want to import your products or recent orders , or you might want to import a list of coupon codes your team can share with your customers as compensation or perk.
And similarly as a consultancy business you might want to track service contracts, subscriptions or projects as part of your customers’ inquiries.
And while you could store this data outside of Zendesk, having this data (or a imported copy thereof) right window the platform makes it possible to build powerful workflows on top of them.
You can automatically escalate support requests for vending machines or coffee stations to their respective suppliers for tickets that mention specific issues with the devices. You can use Custom Object triggers to send out reminders for the next maintenance checkups for employees cars. Change the priority of incoming requests based on the type of service contract your customer has, and so on.
And since custom object data is using the same APIs as other Zendesk elements do, you can reference an object.warranty.expiration_date as part of a macro telling the customer how long their macro lasts. You can combine Custom Objects and AI Agents advanced to show a customer a list of their IT devices in a carousel before we start troubleshooting their issues. We can create a process in Agent Copilot that suggests the agent to send out a coupon.code when customer sentiment goes negative.


As you can see, by leveraging custom objects we can integrate more context into conversations and enrich workflows without requiring external tools or platforms.
In my last roundup for Custom Objects I noted a few items I’d love to see:
- A way to import images via CSV (maybe by adding a column with URLS the system can retrieve them from?
- A way to attach other attachments to records
- A way to link multiple objects together in a many to many relationship that does not require an intermediate object
- And my biggest request: multiple hops in triggers and placeholders.
Fast forward a few months, and some of these requests are now part of the system, while also getting a few new additions I didn’t consider yet 😅
Attachments
Just like Zendesk tickets contain metadata like requester, assignee, brand and a set of custom fields, custom objects also allow you to add plenty of metadata to their records in order to provide rich overviews to agents.
You can add regular input fields like text, checkboxes, dropdowns or date fields. Or you can add relationship fields that link to tickets, users, organizations or other custom objects.
This last one allows you to have a list of car brands and a list of cars in your custom objects, where each car is linked to a specific brand. This relationship can be used in many ways. You can report on all cars per brand to see how many service requests you get. Or you can add a link a vendor on the brand level, so you only need to maintain that relationship in one place, instead of updating each cars’ record when the vendor changes.
But while text based input fields are great for storing information, not all data can be mapped to text. In a product database you might want to store an image of the product, making it identifiable at a glance. Or in a maintenance scenario you maybe want to store the most recent work orders and service contracts on each record.

This is where the new attachments feature for custom objects come into play. This new capability allows you to attach up to 5 documents (20MB limit) to each record. These attachments then show up on a records overview in Agent Workspace where agents can download the attachments, or upload additional ones.
Underneath it all is a new API endpoint that allows agents and admins to get, add or delete attachments. If you combine this with the search api you can even imagine scenarios where external tools upload their output as an attachment on a custom object. Useful in scenarios where maintenance work is handled in another tool, but you want the reports to be available for your agents in Zendesk
//[GET] api/v2/custom_objects/car/records/{{id}}/attachments
{
"custom_object_record_attachments": [
{
"id": "01K94CBK8J124X36VSCW7T42JS",
"filename": "Car Manual.pdf",
"content_url": "<https://support.internalnote.com/api/v2/custom_objects/car/records/01K8NFQVGQQSBPKQGVDJAQYNH0/attachments/01K94CBK8J124X36VSCW7T42JS/download>",
"content_type": "application/pdf",
"size": 279190,
"custom_object_record_id": "01K8NFQVGQQSBPKQGVDJAQYNH0",
"malware_scan_status": "malware_not_found",
"malware_access_override": false,
"malware_scan_completed_at": "2025-11-03T08:11:56Z",
"created_at": "2025-11-03T08:11:54Z",
"created_by": "Thomas Verschoren"
}
]
}
There’s a few additional capabilities I’d love to see here in the future. I already mentioned the ability to preview attachments right within Zendesk itself.
Additionally I hope to see permissions on attachments to we can make some of them available to end-users too. Not in a way that would turn Zendesk into a full CDN, but I can imagine maybe having attachments visible in an Asset Catalog. Similarly, these end-user accessible attachments could then also show up in an Object preview in Agent Workspace right next to a ticket, where agents can then add them to a ticket as an attachment.
Expiration dates that automatically delete attachments might also be useful. It makes sure that 5 attachment limit is cleared for object that require a lot of attachments like maintenance reports. Or it’s useful in GDPR scenarios where we maybe need some signed document that can expire once it’s no longer useful. Or you might want to make these documents only available to some agents.
Permissions
Speaking of permissions, here we see the biggest set of improvements for Custom Objects.
Custom Objects have a basic role permission approach where we can give view, edit, add and delete permissions to users based on their role.
While end-users (customers) can only get view access to records via lookup fields on forms, agent (roles) can get more granular view or edit access to specific object types. This basic permissions schemes makes scenarios possible where agents can view coupon codes and update them to mark them as used, while team leads can also add new ones, or delete old used coupons.

This role permission set does have a few limitations though. An agent opening an object list can see all records within that record. But if you’re part of the facility department of a large enterprise you might only want to see the assets for the locations you’re responsible for.
Similar, you might store service contracts in Zendesk but want only the active contracts to show up for your agents as to not confuse them. Or you want only records where the current agent is noted as account manager to be listed.
With the new Access rules you can now add these kind of filters on the record level. This means that no matter if an agent looks at them in the Object Viewer, or selects them in a lookup field, these filters apply.

To create your first access rule you select the conditions that apply for this rule. This could be a basic one like color is gray or a more dynamic one like account manager is current user. Similar to views or lookup fields these conditions can be combined via All or Any rules.
Once you created an access rule you can edit a specific existing role based mappings to make use of an access rule. You can only select one though, there’s no combining access rules.
After applying the rule users in this role will only be able to interact with the object records that match your access rule, while only doing the actions allowed by your permissions.
They might for example be able to view all records, but only edit those that they are the account manager of.

Filters
There is a second way we can prevent access to records and show only a filtered selection of items to users and agents and that’s by making use of filters when setting up lookup fields.
A lookup field is a specific ticket field type that allows you to connect to different object types. A system lookup field would be the requester field on a ticket. It allows you to select a user and link it to a ticket . The relationship between users and organizations is a similar system relationship, as is the service field that shows up on tickets when you use the new Service Catalog.
With custom objects we can setup a similar relationship. We can link a custom object that stores cars to tickets so we can see which car a custom is talking about. Similar we can link a service contract to a specific organization or an it asset to an employee.
Once we create a lookup field that links to objects, a new dropdown field which show up on the element we want to link. On ticket forms we see a Select a car field. Our organization gets an Active contract field, and the user has a My laptop dropdown.
And if that custom fields’ permission gives end-users view access, we can also add that lookup field to forms and allow end-users to Select your preferred car on a rental form.

But similar to the permissions we described earlier we maybe don’t want to list all records in that dropdown. We might want to limit the list for privacy reasons, or for pure process limitations.
With Filters on Lookup fields we can do just that. We can limit the devices listed in an IT asset lookup field to show only those assigned to the current user or ticket requester. The dropdown that lists our service contracts might only show active contracts. While the cars dropdown might only show those cars that have not been rented out or destroyed.
Until recently Lookup Fields only allowed only filters that looked at requesters, assignees or organizations. Thanks to a recent update we can now leverage any field on a custom object.
This allows us to create a Lookup Field that shows all cars where the color is gray. Or we can make them conditional in relationship to existing other ticket fields. For example, we show all cars where the brand matches the one we selected in a previous field. In an IT context we can show a dropdown “Laptop models” that shows all IT assets that have a type of “portable”.
Aside from giving you more control over what records are accessible to users and agents, it also allows for some simplification. Instead of having an object for laptops, another for smartphones and a third for tablets, we can now have a single IT assets object. With three lookup fields that filter based on a type field in the object, we can then create three ticket fields, one for each IT asset type. Less object means less maintenance, and reusable triggers, webhooks and reporting.
Article lookup fields
Lookup fields allow you to link different objects together. We’ve seen examples of linking users or tickets with custom objects, or examples where we link two custom objects together.
But next to these ticket based objects, Zendesk also stores other types of data. We’ve got conversations in Messaging. We’ve got support articles. Procedures. Action Flows that might also be useful when linked to other objects.
Earlier this month Zendesk released the ability to link a support article to a custom object via lookup fields.


Scenarios where this might be useful are those were the information about the product or process already lives in your Knowledge Base. A product might have an article that explains its setup. Or we have an article that explains the maintenance steps for a device. An IT Asset might have an attached replacement policy and so on.
When we link an article to a custom object record, it shows up as a clickable link. It’s label will be the article title.
There are a few limitations and wishlist items here though.
For one, the articles do not show up in the context panel, even though the custom cards we can configure for Custom Objects allow us to add these.
Articles are also limited to those of your primary brand. When you select an article the underlying API stores the article.id but omits any reference to a brand. So while we can select an article on another Help Center, saving the record edits will throw an error.
//[GET] api/v2/custom_objects/car/records/01K8NFQVK7JCW2TYMDX6HPRHAZ
{
"custom_object_records": [
{
"url": "<https://internalnote.zendesk.com/api/v2/custom_objects/car/records/01K8NFQVK7JCW2TYMDX6HPRHAZ.json>",
"id": "01K8NFQVK7JCW2TYMDX6HPRHAZ",
"name": "Aston Martin DB10",
"custom_object_key": "car",
"support_article": "13900872231698"
},
}
]
}
The support articles aren’t exposed natively to end-user either. I’d love to see them appear under a lookup field on a for, integrate them in a custom page with asset picker e.a.
And while the new Service Catalog is based on custom objects, we can’t yet link articles to services and build a richer form and agent experience for them either.
The lack of many:many or many:1 relationships, also limits us to a single article. I’d love to be able to link to a couple of articles, or even better, a section or category.
Reporting and Data Export
Which brings me to the final set of improvements, focusing on getting the rich data included in Custom Objects out of Zendesk and into the broader company.
Within Explore we now have support for Custom Objects and the object fields within a record. We can create a report that shows all our tickets, and not only show the chosen record, but also include any other linked values.
Instead of just showing the name of a car, we can also include its brand as part of the report, grouping or filter. This is quite useful in scenarios where you want to show all tickets created by their customers managed by a specific account manager, where account manager is a lookup field on the user level.

While these field values are useful in reporting, there are two additional features I’d love to see. One is the ability to do additional lookups. As you can see in the example above, while I was able to include the movie a specific car appeared in, the report was not able to translate the id of the linked record into the actual name of the record.
The second option would be the option to do second hops. For example instead of showing a cars’ brand name, I’d maybe want to show the country those brands’ operate in, and organize my report by those values. These secondary hops however are not yet possible.
Support for custom objects in reporting not only adds context to your ticket data, but it also allows you to get insight in the objects themselves. You can for example see how many support request a specific coffee machine created as compared to all devices in your fleet.
Data export
But where analytics dashboards shows a static overview of your custom object data, there might also be a need to get a more real-time overview of what’s happening with your custom objects.
In scenarios where custom objects serve as a proxy for the actual data, keeping that real datastore up to date with the additions and changes your agents make in custom objects is key. Similarly, if you store your service contracts in Zendesk, renewal of such a contract might trigger an invoice to the customer.
While we wait for a native integration of custom objects in Action Builder and Webhooks, for now we can leverage the new incremental export to simulate a similar firehose of realtime data by allowing you to see all records that changes since a specific moment. (It supports both time and cursor based pagination)
//[GET] api/v2/incremental/custom_objects/car/cursor?start_time=1762156828
{
"custom_object_records": [
{
"url": "<https://internalnote.zendesk.com/api/v2/custom_objects/car/records/01K8NFQVG84AFWNKRTQ0XW0YRE.json>",
"id": "01K8NFQVG84AFWNKRTQ0XW0YRE",
"name": "BMW Z8",
"custom_object_key": "car",
"custom_object_fields": {
"assigned_agent": null,
"available_for_assignment": false,
"brand": "01K8NFJ8NFK9H9BXHY95MMQ368",
"color": "silver",
"description": "Sleek, sophisticated, and short-lived. The Z8’s surface-to-air missiles made it lethal; the giant saw-blade helicopter made it brief. Q was reportedly “not amused”.",
"fate": "destroyed",
"fate_description": "Sawn in half by a helicopter’s circular saw",
"movie": "01K8NFWYNKS3WNYXECHZV5VM6E",
"support_article": null
},
"created_by_user_id": "30365366426642",
"updated_by_user_id": "30365366426642",
"created_at": "2025-10-28T13:22:24Z",
"updated_at": "2025-11-03T08:16:48Z",
"external_id": "007-6"
}
],
"after_cursor": "MTc2MjE1ODU3Ni4wfHwwMUs4TkZRVks3SkNXMlRZTURYNkhQUkhBWnw=",
"before_cursor": null,
}
What’s next
So, that’s an overview of everything that’s new in Custom Objects this fall.
These new releases do fill some gaps I see in the product, while other releases create entire new opportunities.
I especially like the new focus on filtering and role permissions. As the data sets you can store in Zendesk grow and the data integrates deeper with processes, making sure your data is secure is key.
And while Custom Object matures, there are some key elements I still would love to see in the product. More complex relationships with many:many support is one of these. And better support for second hops and linked records in things like placeholders, filters and triggers is another one.
Thirdly, I’d love to see some finishing touches on the existing feature set. Support for support articles from multiple brands. A way to expose attachments and record fields to end-users on the Help Center without resorting to API calls.

And to wrap it up, I’d love to see native support for custom objects in AI Agent procedures and Action Builder. On the AI Agents side it would be nice to see them available as data sources for carousels with built in support for segments and user authentication. And on the Action Builder side having them available as both triggers and steps in flows would make it easier to have to integrate and pass data to external teams, as well as update records based on actions done on tickets or users.
But don’t get me wrong, even though I’ll always have a wishlist for cool new features, Custom Objects is powerful and a core part of any mature Zendesk environment.