Zendesk provides many types of native data objects for storing and managing your customer data, including tickets, users, organizations, and more. We call these standard objects. However, standard objects can't provide every possible type of data object that your organization might want. With the custom objects, admins can create custom objects to capture data that doesn't fit into those standard objects. Extending the Zendesk data model with custom objects enables you to seamlessly integrate your custom data with tickets, triggers, and Explore analytics. All of this functionality is built directly into Zendesk, so these features can be configured and used in Admin Center and the Zendesk Agent Workspace. No coding is required.
About custom objects and records
A custom object is a user-defined object with unique fields and permissions. Custom objects can be almost anything, including a product, contract, delivery driver, asset, or event. Think of a custom object as a data table. Each of the custom object's fields is a column in the table. After the table is created and the columns are added, agents can add data to the table. Each row of data in the table represents a custom object record. Another way to think of a custom object is as a schema or model, which is created and made available to users to add data, such as in a ticket or form. Every time an agent uses the custom object to add data to Zendesk or an admin bulk uploads data for an object, new records are created. These records can then interact with business rules, such as triggers and lookup relationship fields.
Here's an example. Let's say you're a car rental company. A Zendesk admin at your company created two custom objects to track vehicles and reservations: vehicles and rental agreements. Using these custom objects, every vehicle and reservation can be tracked within Zendesk. Now, when a customer contacts the company to rent a car, a ticket is created for them. The standard ticket and user objects hold information about the customer and their request. In your account, an admin defined lookup relationship fields connecting the rental agreements and vehicles to tickets and users, so everything the agents need to resolve the request is now available in the ticket. They're able to search records of available cars in the requested location and date, create a rental agreement, and relate the rental agreement to the vehicle and user.
Later, the customer has an issue with their rental car, and they contact your company again. Again, a ticket is created for them and is associated with the user, the vehicle, and the rental agreement. Because each of these custom objects has been added to the ticket form, agents can see details about both the vehicle and the rental agreement within the ticket while they assist the customer.
How does it work?
Watch the demo below to see Custom Objects in action, or read on for information about the feature.
The following video shows a basic workflow for getting started with custom objects.
"How to use custom objects (3:20)"
Requirements and limitations of custom objects
There are a few requirements for using custom objects and some limitations you should consider before turning on the feature.
Requirements
- You must have a Zendesk Suite or Support Enterprise plan.
- The Agent Workspace must be activated for your account.
Limitations
Custom objects are a powerful tool for gathering more data in Zendesk, but the following limits exist to avoid performance issues.
Custom object and field limitations
- Your maximum number of custom objects depends on your plan:
- Suite Team: 3 custom objects
- Suite Growth: 5 custom objects
- Suite Professional, Support Enterprise: 30 custom objects
- Suite Enterprise and Enterprise Plus: 50 custom objects
- The following limits exist for fields on custom objects:
- Each custom object can have a maximum of 100 fields.
- Suite Team and Growth plans can have a maximum of 5 lookup relationship fields per object.
- Support Enterprise and Suite Professional and above can have a maximum of 10 lookup relationship fields per custom object.
- Only admins can create custom objects. Admins and agents in custom roles with permission can view, edit, add, and delete custom object records.
- Premium sandboxes don't copy custom objects, or lookup fields and triggers that reference custom objects.
Custom object record limitations
- Each record has a maximum size of 32 KB.
- Custom object records are counted toward your account's storage.
- Regardless of the storage capacity, accounts can't exceed 50 million custom object records.
- Light agents and contributors have view-only access to custom object records.
Modeling your data
There are two aspects to defining your data model: individual custom objects and how custom objects are related to other objects in your Zendesk account.
Each object has its own schema, defined by custom fields. These fields represent the properties of the custom object and are used by agents when creating records. You can use many types of custom fields to capture the data exactly how you want to.
Then, you must connect the custom object to other standard and custom objects within Zendesk. This network of relationships completes the data model. To define a custom object's relationship to standard Zendesk objects (tickets, users, and organizations) and other custom objects, use lookup relationship fields. Lookup fields are a special type of custom field used to describe single-direction relationships as source object → related object. The source object is the object that contains the lookup relationship field (among other fields). The related object is the object specified by the lookup relationship field.
It's important to understand that relating objects doesn't automatically create an association between two specific records. Instead, it describes the possible relationship and enables agents to associate records this way.
- another custom object
- a standard object
If you want the custom object to contain the lookup relationship field, see Adding object relationships to a custom object. Alternatively, if you'd like a different object to include the custom object as a lookup relationship field, see Adding custom fields to your tickets, Adding custom fields to users, or Adding custom fields to organizations.
Putting it altogether
You can use your custom objects and relationships to solve real-world problems or improve existing processes. When you add lookup relationship fields to your ticket forms that point to custom objects, you gain the ability for agents to capture more customized data in Zendesk and enable agents to view more relevant data within the ticket interface. By eliminating the need for agents to move back and forth between external systems and Zendesk, they can deliver faster and more complete support to your customers.
Custom data captured in object records can also be used in business rules, such as routing and triggers. Additionally, you can integrate your custom data into Explore analytics and reports. Reporting on custom data can provide a better picture of your customers and business as a whole.
30 comments
Shishir Sharma
Triggers on custom objects EAP is now live and allows the ability to build trigger conditions based on custom object field values. Additionally, you can create trigger actions to set or update the value of fields on the same custom object.
0
Idil Balkay
Can this be used to update closed tickets as well?
0
Jacquelyn Brewer
Idil Balkay At this time Support ticket triggers can't update closed or archived tickets. Object triggers are wholly separate from ticket triggers. They fire when a record is created or updated for that object rather than a ticket. Further more, object triggers only have the ability to update values for the object's fields. You can find more information in Creating and using object triggers (EAP).
0
Thomas D'Hoe
Hi, are there any plans to also have custom objects as fields in the views? It would make sense to sort your view on a custom object field in your view (for example: location).
Fyi Anton Verhelst
1
Mike DR
Hope you're doing well! You can use a lookup field to store the custom objects in, the lookup field can be then used for as a column in the view.
0
Adam
Hi,
I hope you can help with what i want to achieve. We operate a B2B model whereby our customers (organisations) have their own set of customers that they resell our product to. What i want to be able to do is create a custom object of "Deployments" and associate it to organisations. This i have been able to achieve with custom objects no problem.
What i want to be able to do, is then create a ticket field that allows the users to select from a list of their "Deployments" when submitting a ticket.
I assumed i needed to create a ticket lookup relationship field on my "Deployments" object, which i can do but there are two issues:
Is there any way I can achieve the workflow I am describing with custom objects?
0
Ashwin Raju
hi Adam - Dynamic filters will solve for your use case from an Agent perspective... We are in the process of fixing some minor bugs and should be ideally releasing the feature next week. Please reach out to me at ashwin.raju@zendesk.com if there is an urgency and you would like to enable it before that
We are also in the works to enable lookup fields (pointing to custom objects) in Guide help center forms
0
Adam
Hi Ashwin Raju thanks for coming back to me. Very interested in dynamic filters, do you have more information on it? Happy to wait until its ready if it will be launched soon.
Regarding the ability to enable lookup fields on the guide help center forms, this will be huge for us - do you have any rough eta when this functionality will be available?
0
Ashwin Raju
Dynamic Filtering addresses this challenge by allowing Admins to contextualize their ticketing experience, surfacing only the relevant business data associated with the Requester or the Organization. With Dynamic filters, Admins can easily create filters on Lookup fields so that Agents see only the Orders/Assets associated with the Requester or see only the Contracts/Entities associated with the Requester Organization.
0
Ashwin Raju
As for Guide help center - we are targeting the first half of Q3 for the release.. But like any feature development, it comes with certain unknowns.
1
Adam
Thanks Ashwin Raju - I will check back regarding that, as that is the most important functionality for us - I hope the use-case makes sense, we really need our users to be able to select from their list of contracts when submitting tickets, right now its very laborious needing them to manually input a contract ID. Looking forward to it!
0
Ashwin Raju
hi Adam.. Curious to know your thoughts on two things:
1) End user selects the contract they want to input from a list that is filtered based on the ticket organization. How important is it for the end user to see the details of the contract
2) Currently, we have permissions at an Object level, which means that if a role has access to viewing an object, they have access to viewing all the records of the object.. Let's imagine End user as a role that you can enable access to the contract object. And you have filters in the admin center to ensure that John Doe of Walmart sees only contracts associated with Walmart. However, a tech savvy end user may be able to access contracts that belong to other organizations using API.. However, the probability is fairly low. How sensitive would be your contract information? Although this is true for legacy custom objects as well, I wanted to ensure that we communicate the difference between permissions and filtering to customers. How important is it for you to know this difference when you are enabling end user permission?
0
Adam
Hi Ashwin,
1. There is not necessarily for us a requirement to see the details of the contract, just that they can see the reference associated to that contract, or the ID, it does not necessarily matter.
2. This would be of concern to us - if we were to use a reference for the contract (essentially the end customer name) - we would not want other customers being able to access this data of what other customers are doing if that makes sense. We could make this non-friendly by using a unique reference number which would not mean anything to another user, but it is far from ideal and would prefer not to do this.
Regarding the dynamic filtering - I have seen we have it live on our account and have tested it and it works exactly as required (I can now select from my list of contracts for the users organisation) - all we need now is the ability to include that field on the guide help center forms and we will have everything we need!
0
Adam
Hi Ashwin Raju - I was just wondering if there was any update on enabling custom objects visibilty - is this still planned for Q3? The new dynamic filtering is working really well, we just need to be able to present this to end users now rather than limiting to agents!
Thanks,
Adam
0
Ashwin Raju
hi Adam.. We are still tracking this for a Q3 release.
As I mentioned above, we will be offering filtering capabilities on Lookup relationships. And we will also offer filtering capabilities on the Search API to build custom solutions if you'd want to.. But, the permissions will be at an Object level.
0
Shayan Moussawi
Ashwin Raju Hey Ashwin,
Glad to see how far Custom Objects have come this year. I already suspected the potential when you first launched them in Beta.
I do have a few questions for out advanced use case though:
Is it in any way possible to see a full list of custom object records and filter by status or other attributes?
Use case:
We are thinking of having “Licenses” as custom objects.
So once a “License” is created it would be in the status of “open to provide”.
Now there is no way for an agent to filter all license records that are “open to provide” so he can start working on them: i.e. creating Tickets from them to assign etc.
Having explore capabilities for custom objects would also fix this I believe - as we would then be able to get a list of all custom object records with specific filters applied and the agents could work from there.
Explore as far as I understand only provides an option to report on lookup relationship fields on Tickets which reference custom objects - but for my use case the Tickets would not have been created yet.
0
Ashwin Raju
Hi Shayan.. Long time. I am so glad you find the custom objects feature super useful.
We have 2 capabilities coming up this quarter (in June) that might of interest to you
1) Search API that supports filtering capabilities.
2) Object triggers with some enhanced actions. (Object trigger = trigger which gets evaluated when a custom object record changes)
We are also looking at native sorting and filtering on List view for custom object records mostly in the second half of this year.. Would love to connect and discuss about your use case better. CC: Salvador Vazquez
We are also in early stages of reporting on custom objects directly.. CC: Wojciech Smajda .. What kind of reports are you looking to build on your Licenses?
0
Shayan Moussawi
1) Yea I think the search API could help us build an out of Zendesk workaround.
2) I have read about Object Triggers, though I still struggle to find actual use cases for them. As far as I understand they only allow changing values of the custom object itself, and are triggered by a value change from the custom object. Meaning at best, it saves the agent a click or two, as he doesn’t have to change 2 values instead of 1. I do so the potential for them if they had more advanced action statements though: Things like creating a Ticket when a custom object value changes would be valueable for us for example.
3) About my use case for filtering/sorting:
Basically the licenses we sell are connected to work that our Agents have to do. Each license belongs to a country. Some agents are specialized in specific countries. And there is a hand off after the user buys a license:
Flow is as follows:
1) User asks for contract / to buy licenses for a country within a Ticket
2) Agent assists the user and help them make their contract. For example user might want to buy a license for 3 countries.
3) Then Agent would create 3 license objects with those countries and associate them with the customer.
4) These license objects have an active „to-do“ they have to be setup by a specialized agent from our Team
5) So as these are work items, right now the first Agent would in addition to creating 3 license objects also have to create 3 Tickets, one for each license and assign them to the right team.
6) Instead I would like the respective specialized agents to filter the license objects by status - so they are able to create their own Tickets themselves once they start working on the licenses.
For the reporting capabilities- I believe our use case would be pretty standard:
Just being able to see counts/averages of custom objects, similar to Tickets, and to use them in reports.
Also being able to drill down into reports and jump from custom object records straight into Zendesk by clicking on an associated user/ticket/org/object.
1
Ashwin Raju
1) June is going to have a lot of capabilities launched. One of them is the Filtering APIs for custom objects
2) As we go GA on Object triggers, you will see powerful actions on object triggers showing up. This includes notifications and webhooks. We feel that is going to open up a lot more powerful workflows with custom objects, especially around case management and proactive notifications..
3) Webhooks can create the proactive tickets that you are looking to create and automatically assign them to the right team based on the license details.
I think we can avoid the step of the agent creating a ticket and filtering the license object with object triggers. But you'd know your business better. Would love to connect and see how we can make it happen.
Drill down reporting on tickets is also in our roadmp for the second half of 2024 CC: Wojciech Smajda
0
Zach Brak
Ashwin Raju Heya! I was hoping to get your thoughts on using custom objects to emulate some of ServiceNow functionality.
For example in service now, you have devices tied to users, and those can be referenced and marked within the ticket.
![](/hc/user_images/01HZFBS1MHJ51C7FEW9PNCEMR1.png)
What I'm trying to achieve:
- Load all of my devices for my users as custom objects (similar to demo video)
- When a user opens a ticket - have their device (or multiple devices) visible within the agent workspace.
My ideal situation would be adding custom object context to the agent workspace. Imagine a list similar to the customer context, where a list of select fields from the custom object is displayed here.
Was hoping you might have ideas or suggestions on how to display as much stateful custom object information on the agent layout as possible.
Specifically - would look to have specific important fields directly on the layout without having to navigate away:
- Remote access connection link
- device name
- device serial
- device model
Any help you can give is much appreciated, and thank you for your work in developing this product.
0
Max
Hi Ashwin Raju
is it still on track for q3 for the custom objects available in Guide / ticket forms ?
That would be awesome !
0
Daniil Teplov
Hi Ashwin Raju ,
the availability of the custom objects in the ticket forms for our end-users to select from would be a great help for our organization as well.
Would appreciate a lot if you could share the latest status of the development around it :)
Thanks and best,
Daniil
2
Aaron Gulley
Hello,
I have linked a custom object to agent user fields view using relationships. It displays perfectly fine on the zendesk but when pulled via the api from user fields. I get the following data
It should say ‘COMPANYXYZ’ in plain text rather than `
01J2VF9KVHK2SH1H76847E1D36
` what even is this? Is it encrypted? Have I linked them incorrectly?0
Eric Brower
Not ideal that custom objects aren't copied over in a Premium Sandbox… we use Custom Roles, which means none of our agents were copied over into our sandbox except for Admins, Contributors, and Light Agents.
Is there any workaround or plan to add custom objects in the future?
0
Kyle K.
Is there a method to show the details of custom objects linked on a user's profile on the ticket view? Showing it on the user card just gives the name of the record, but I'm not seeing a way to show specific fields from that record as well.
0
Nicholas H
Hello, I've been testing out lookup relationship fields in Guide now that this functionality has been released. However, it looks like dynamic filtering on custom objects (by organization) does not work on the initial ticket request form.
We have a custom object labeled Projects, with each record tied to an organization. For example-
The lookup relationship field (Workstream) has a filter that should only show records matching the organization-
This works as expected on the agent side- on tickets for organization A, the dropdown only shows 123. However, when organization A tries to create a ticket via the ticket request form in Guide, this field shows no options at all. Is this because the ticket is not “created” yet and technically has no organization? Is this expected behavior? If so this is a major drawback and really limits this functionality.
Tagging Ashwin Raju as well - thank you!
1
Ashwin Raju
hi Nicholas H - That is a bug in the older versions.. We just found that today morning.. We are fixing as soon as we can..
2
Ashwin Raju
hi Nicholas H - its fixed now.
1
Gabriel Manlapig
0
John
Hello,
Is it possible to retrieve a specific field value from a custom object record as a placeholder? If so, what would be the syntax?
In my example I setup a trigger “assign postal address” once the service partner is selected from the drop-down list and apply the record of the custom object in an additional lookup relationship ticket field. The only information which I can display using this placeholder {{ticket.ticket_field_option_title_ID}} is the name of the record but not any other fields specified in this custom object like “suburb”.
Is that even possible or is there another way to manage location address based on selected ticket field values?
Thx
0