Planning your custom objects workflow

<body>

<div class="article-banners">
<div id="docs-wmp-link"><a href="https://support.zendesk.com/hc/en-us/articles/5411234991258-plan" rel="noopener" target="_blank">What's my plan?</a></div>
<div class="article-banner" id="suite_all">
<table>
<tbody>
<tr>
<td>
<strong>All Suites</strong>
</td>
<td>Team, Growth, Professional, Enterprise, or Enterprise Plus</td>
</tr>
</tbody>
</table>
</div>
<div class="article-banner" id="support_e">
<table>
<tbody>
<tr>
<td>
<strong>Support</strong>
</td>
<td>Enterprise</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="body">
<div class="p">
<div class="note important">
<span class="importanttitle">Important:</span> This article doesn't apply to <a class="xref" href="https://support.zendesk.com/hc/en-us/articles/4408834725402" target="_blank">legacy custom objects</a>.</div>
</div>
<p class="p">Admins can create custom objects to capture data that doesn't fit into the standard
objects in Zendesk. Extending the Zendesk data model with custom objects enables you to
seamlessly integrate your custom data with tickets, triggers, and Explore analytics.
However, deciding when and how to use custom objects to best meet your needs can be
challenging. This article guides you through questions you can use to inform this
decision.</p>
<div class="p">This article contains the following topics:<ul class="ul" id="topic_iyy_fr3_myb__ul_ozj_4r3_myb">
<li class="li"><a class="xref" href="#topic_l44_4r3_myb">Identifying your custom data goals</a></li>
<li class="li"><a class="xref" href="#topic_xgn_zr3_myb">Understanding your data</a></li>
<li class="li"><a class="xref" href="#topic_gxg_2tj_myb">Planning your data model</a></li>
<li class="li"><a class="xref" href="#topic_l4n_b13_4yb">Leveraging your custom data model</a></li>
</ul>
</div>
</div>
<div aria-labelledby="ariaid-title2" class="topic nested1" id="topic_l44_4r3_myb">
<h2 class="title topictitle2" id="ariaid-title2">Identifying your custom data goals</h2>
<div class="body">
<p class="p">To resolve a ticket, agents usually pivot between Zendesk and external systems to get
the necessary information. Custom objects let you include data from external systems
in Zendesk, reducing the need to bounce between systems. To provide your agents with
this streamlined experience, you first need to identify the information they are
seeking in external systems and when they need it. </p>
<div class="p">The best way to approach using custom data in your Zendesk workflow is to identify
your goals and let that guide which custom data you start with. For example, are you
trying to:<ul class="ul" id="topic_l44_4r3_myb__ul_opp_rs3_myb">
<li class="li">Reduce the time agents spend on tickets?</li>
<li class="li">Improve customer satisfaction?</li>
<li class="li">Upsell products?</li>
<li class="li">Save costs by consolidating system licenses?</li>
<li class="li">Something else?</li>
</ul>
</div>
<div class="p">After you identify your top priorities and goals, work with your agents and team
leads to understand what data they need to work toward each goal. The following
questions are a good starting point:<ul class="ul" id="topic_l44_4r3_myb__ul_ej1_wt3_myb">
<li class="li">What systems currently house the data?</li>
<li class="li">At what point in their current process do they reference the data in the
external system?</li>
<li class="li">How do they use the data after they retrieve it?</li>
<li class="li">Are there any data gaps that could be filled to further assist in meeting
your goals?</li>
<li class="li">Do they want to use this data in reporting or business rules? (Custom
objects are an option regardless of the answer, but if you don't plan to use
custom data in reporting and business rules, a <a class="xref" href="https://developer.zendesk.com/documentation/apps/app-design-guidelines/support/sidebar-apps-support/" target="_blank">custom sidebar app</a> might also meet
your needs.)</li>
</ul>
</div>
</div>
</div>
<div aria-labelledby="ariaid-title3" class="topic nested1" id="topic_xgn_zr3_myb">
<h2 class="title topictitle2" id="ariaid-title3">Understanding your data</h2>
<div class="body">
<p class="p">If you've determined that custom objects are the right solution for you, it's
important to understand <a class="xref" href="https://support.zendesk.com/hc/en-us/articles/5914453843994#topic_jvp_ryv_jyb" target="_blank">plan-based limitations</a> on the number of
custom objects you can create and lookup relationships fields you can define. You
should also consider your data model before creating custom objects. Sketching out a
plan before you start will save you time in the long-run. </p>
<p class="p">A good way to start visualizing your data model is to create a simple spreadsheet for
each custom object. Start with a type or category of data you think might work well as an
object. All records have a <em class="ph i">Name</em> field, which is text-based, so start with
that as the label for the first column. Then, continue labeling the columns with the
other data you need. These will become your custom object's fields. For example, if
your custom object is <em class="ph i">Rental property</em>, your spreadsheet might look similar to
the following:</p>
<div class="p">
<div class="tablenoborder">
<table border="1" cellpadding="4" cellspacing="0" class="table" frame="border" id="topic_xgn_zr3_myb__table_fy3_4br_myb" rules="all" summary="">
<colgroup>
<col>
<col>
<col>
<col>
<col>
<col>
<col>
</colgroup>
<thead class="thead" style="text-align:left;">
<tr class="row">
<th class="entry cellrowborder" colspan="7" id="d52e170" style="text-align:left;vertical-align:top;">Rental property</th>
</tr>
<tr class="row">
<th class="entry cellrowborder" id="d52e176" style="text-align:left;vertical-align:top;">Name</th>
<th class="entry cellrowborder" id="d52e179" style="text-align:left;vertical-align:top;">Street address</th>
<th class="entry cellrowborder" id="d52e182" style="text-align:left;vertical-align:top;">City state</th>
<th class="entry cellrowborder" id="d52e185" style="text-align:left;vertical-align:top;">Zip code</th>
<th class="entry cellrowborder" id="d52e188" style="text-align:left;vertical-align:top;">Property manager</th>
<th class="entry cellrowborder" id="d52e192" style="text-align:left;vertical-align:top;">Renter</th>
<th class="entry cellrowborder" id="d52e195" style="text-align:left;vertical-align:top;">Lease start</th>
</tr>
</thead>
<tbody class="tbody">
<tr class="row">
<td class="entry cellrowborder" headers="d52e170 d52e176" style="text-align:left;vertical-align:top;">Royal Heights - 203</td>
<td class="entry cellrowborder" headers="d52e170 d52e179" style="text-align:left;vertical-align:top;">203 Herrick Lane</td>
<td class="entry cellrowborder" headers="d52e170 d52e182" style="text-align:left;vertical-align:top;">Richmond, VA</td>
<td class="entry cellrowborder" headers="d52e170 d52e185" style="text-align:left;vertical-align:top;">23059</td>
<td class="entry cellrowborder" headers="d52e170 d52e188" style="text-align:left;vertical-align:top;">John Doe</td>
<td class="entry cellrowborder" headers="d52e170 d52e192" style="text-align:left;vertical-align:top;">Christopher Garvey</td>
<td class="entry cellrowborder" headers="d52e170 d52e195" style="text-align:left;vertical-align:top;">January 17, 2023</td>
</tr>
</tbody>
</table>
</div>
</div>
<p class="p">Continuing with this example, you might also want an <em class="ph i">Appliance</em> custom object,
which is related to your rental property object. So you'd create a second
spreadsheet similar to this:</p>
<div class="p">
<div class="tablenoborder">
<table border="1" cellpadding="4" cellspacing="0" class="table" frame="border" id="topic_xgn_zr3_myb__table_hhj_gcr_myb" rules="all" summary="">
<colgroup>
<col>
<col>
<col>
<col>
</colgroup>
<thead class="thead" style="text-align:left;">
<tr class="row">
<th class="entry cellrowborder" colspan="4" id="d52e255" style="text-align:left;vertical-align:top;">Appliance</th>
</tr>
<tr class="row">
<th class="entry cellrowborder" id="d52e261" style="text-align:left;vertical-align:top;">Appliance ID</th>
<th class="entry cellrowborder" id="d52e264" style="text-align:left;vertical-align:top;">Type</th>
<th class="entry cellrowborder" id="d52e267" style="text-align:left;vertical-align:top;">Apartment</th>
<th class="entry cellrowborder" id="d52e270" style="text-align:left;vertical-align:top;">Last Maintenance</th>
</tr>
</thead>
<tbody class="tbody">
<tr class="row">
<td class="entry cellrowborder" headers="d52e255 d52e261" style="text-align:left;vertical-align:top;">RF12345</td>
<td class="entry cellrowborder" headers="d52e255 d52e264" style="text-align:left;vertical-align:top;">Refrigerator</td>
<td class="entry cellrowborder" headers="d52e255 d52e267" style="text-align:left;vertical-align:top;">Royal Heights - 203</td>
<td class="entry cellrowborder" headers="d52e255 d52e270" style="text-align:left;vertical-align:top;">21 December 2022</td>
</tr>
</tbody>
</table>
</div>
</div>
<p class="p">Continue to create spreadsheets for each custom object you want to create and
populate them with your data and how the data is related to other objects in
Zendesk.</p>
</div>
</div>
<div aria-labelledby="ariaid-title4" class="topic nested1" id="topic_gxg_2tj_myb">
<h2 class="title topictitle2" id="ariaid-title4">Planning your data model</h2>
<div class="body">
<div class="p">After determining which custom objects you want to create and the data those objects
need to capture, you're ready to figure out how it will work in Zendesk. You've
already identified the names of the objects and the data you want to capture, but
now you need to create the objects and add each field within Zendesk. Consider the
following:<ul class="ul" id="topic_gxg_2tj_myb__ul_dw1_5c3_4yb">
<li class="li"><a class="xref" href="#topic_lt2_ld3_4yb">Decisions you'll make when creating your custom objects</a></li>
<li class="li"><a class="xref" href="#topic_mlb_yb3_4yb">Seeding your initial data</a></li>
</ul>
</div>
</div>
<div aria-labelledby="ariaid-title5" class="topic nested2" id="topic_lt2_ld3_4yb">
<h3 class="title topictitle3" id="ariaid-title5">Decisions you'll make when creating your custom objects</h3>
<div class="body">
<p class="p">When you <a class="xref" href="https://support.zendesk.com/hc/en-us/articles/5392409465370" target="_blank">create a custom object</a>, you're
defining a new schema. The object has unique characteristics and relationships
to other objects and data within Zendesk. As such, you need to be intentional
when <a class="xref" href="#topic_c5x_sd3_4yb">defining an object's
fields</a> and <a class="xref" href="#topic_vb5_5xh_4yb">relationships</a>.</p>
</div>
<div aria-labelledby="ariaid-title6" class="topic nested3" id="topic_c5x_sd3_4yb">
<h4 class="title topictitle4" id="ariaid-title6">Determining field types</h4>
<div class="body">
<p class="p">Next, decide what field types to use. For example, when creating the Rental
property object in Zendesk, the <em class="ph i">Street address</em> and <em class="ph i">City state</em>
might be text or drop-down fields. <em class="ph i">Zipcode</em> could be a number field,
and <em class="ph i">Lease start</em> would be a date field. The <em class="ph i">Property manager</em>
and <em class="ph i">Renter</em> fields would be lookup fields that define the object's
relationship to users. However, these lookup fields could be defined on the
custom object or as a user field. See <a class="xref" href="#topic_vb5_5xh_4yb">Defining relationships</a>.</p>
<p class="p">Something else to consider when deciding which field types to use is
discoverability of the data. When agents <a class="xref" href="https://support.zendesk.com/hc/en-us/articles/6088606067866#topic_bxl_dxq_fyb" target="_blank">search for custom data</a> in Zendesk,
only text-based fields are checked for matches.</p>
<p class="p"><img class="image" id="topic_c5x_sd3_4yb__image_ypx_ky2_3zb" src="https://zen-marketing-documentation.s3.amazonaws.com/docs/en/custom_object_fields.png" width="600"></p>
</div>
</div>
<div aria-labelledby="ariaid-title7" class="topic nested3" id="topic_vb5_5xh_4yb">
<h4 class="title topictitle4" id="ariaid-title7">Defining relationships</h4>
<div class="body">
<p class="p"><a class="xref" href="https://support.zendesk.com/hc/en-us/articles/4591924111770" target="_blank">Lookup fields</a> are how you build
relationships in Zendesk. They are the cornerstone of how your data from
standard and custom objects work together to create your data model. They're
most useful when used to define many-to-one (Many:1) relationships. For
example, each rental property will have at least one <em class="ph i">Renter</em>, but you
need to decide if that relationship should be defined as the custom object's
field or as a user field. If you define the relationship as one of the
Rental property object's fields, you can only relate each rental property
record to a single user, designated as the renter. However, if you add the
lookup field to users and specify the rental property object as the related
object, you open up the possibility of defining multiple renters associated
with a single property record. Typically defining the lookup field on the
"many" side of the relationship gives you the most flexibility.</p>
<p class="p">Another example would be appliances. Each rental property probably has
multiple appliances—refrigerator, stove, dishwasher. Therefore, it makes
sense to define the lookup field as one of the Appliance object's
fields.</p>
<p class="p"><img class="image" id="topic_vb5_5xh_4yb__image_vbq_1y2_3zb" src="https://zen-marketing-documentation.s3.amazonaws.com/docs/en/custom_object_lookup_appliance_to_property.png" width="200"></p>
<p class="p">In both cases above, the lookup field is defined on one object and points to
the Rental property object. In this case, each Rental property record will
display lists of renters and appliances under the Related tab.</p>
<p class="p"><img class="image" id="topic_vb5_5xh_4yb__image_nth_dy2_3zb" src="https://zen-marketing-documentation.s3.amazonaws.com/docs/en/custom_object_record_rental_apt.png" width="600"></p>
<p class="p">You'll also need to think about how your objects are related to tickets and
can be used to meet your custom data goals.</p>
</div>
</div>
</div>
<div aria-labelledby="ariaid-title8" class="topic nested2" id="topic_mlb_yb3_4yb">
<h3 class="title topictitle3" id="ariaid-title8">Seeding your initial data</h3>
<div class="body">
<p class="p">Bulk importing records enables you to move data from an external system into
Zendesk to reflect your data at that point in time, but it won't stay
synchronized. If you continue to store and update the data externally, the
records in Zendesk will become outdated; likewise, any updates agents make to
the records in Zendesk won't be reflected on the external system. After you
create the object and import your initial data, we recommend maintaining the
data (records) in Zendesk going forward. However, if it will continue to be
maintained in an external system, you should define a plan for periodic bulk
imports.</p>
<p class="p">To make it easier to get up and running with custom objects, you can perform bulk
imports to seed the initial records after you create your custom objects. If you
already compiled all of an object's records into a spreadsheet and mapped it to
the fields you defined when creating the object in Zendesk, you can probably
download or export the data into a comma-separated value (.CSV) file. Most
spreadsheet software has this option, as do many other systems that might
currently house your data. See <a class="xref" href="https://support.zendesk.com/hc/en-us/articles/6100391508250" target="_blank">Bulk uploading custom object
records</a>.</p>
<div class="note note">
<span class="notetitle">Note:</span> If your spreadsheet included data that you defined as a lookup on another
object, remove that data from your spreadsheet before importing the data. After
you've imported the custom object records, you can perform separate bulk uploads
to seed data into the lookup fields on other objects.</div>
</div>
</div>
</div>
<div aria-labelledby="ariaid-title9" class="topic nested1" id="topic_l4n_b13_4yb">
<h2 class="title topictitle2" id="ariaid-title9">Leveraging your custom data model</h2>
<div class="body">
<p class="p">After you create your custom objects and seed your record data, it's time to use that
data to meet your goals. Usually, this involves <a class="xref" href="https://support.zendesk.com/hc/en-us/articles/4408883152794" target="_blank">adding custom fields to your tickets</a> and support request
forms. As with other relationships you might have identified and created earlier,
you'll also use <a class="xref" href="https://support.zendesk.com/hc/en-us/articles/4591924111770" target="_blank">lookup relationship fields</a> to do this. By surfacing
custom objects in tickets, agents can set and view relevant data without leaving the
ticket interface. Keeping the data up-to-date and accessible without
context-switching to different systems means your agents can work faster and more
effectively to meet your customers' needs.</p>
</div>
</div>
</body>