App Builder Recipe: Custom Objects Bulk Editor | The place for Zendesk users to come together and share
Skip to main content

App Builder Recipe: Custom Objects Bulk Editor

  • May 15, 2026
  • 0 replies
  • 2 views

Category: Nav Bar App | Custom Objects | Data Management

What this app does

The Custom Object Directory Manager is a full-featured nav bar app that turns any Zendesk Custom Object into a searchable, filterable, and editable data directory — all without leaving the agent interface.

Agents can browse records, filter and search data, open a detail panel to view or edit records, and perform bulk operations such as updating or deleting multiple records at once. Every change is tracked in a session history, and inline edits can be undone and redone with dedicated Undo/Redo controls.

This recipe is intentionally designed to be adaptable for any Custom Object structure, regardless of the customer's use case or field configuration.

Use case

This recipe is a good fit if you:

  • Store operational, business, inventory, location, customer, asset, or reference data in Zendesk Custom Objects
  • Want agents to search, filter, and edit records without leaving Zendesk
  • Need bulk update or bulk delete workflows for large record sets
  • Want a reusable admin-style interface for managing Custom Object records
  • Need a scalable foundation that can adapt to many different field structures and object types

The app is designed to work with any Custom Object. Developers simply configure field mappings, visible columns, and filter behavior to match the customer's data model.

Prerequisites

  • Zendesk Suite Growth or above — required for Custom Objects
  • At least one Zendesk Custom Object
  • The app installed in the Nav Bar location
  • A configurable field mapping layer that defines:
    • Display labels
    • API field keys
    • Filterable fields
    • Editable fields
    • Searchable fields

Key features

Browsing and filtering

  • Loads records via the Zendesk Custom Objects REST API using cursor-based pagination
  • Dynamic filter bar generated from configured object fields
  • Supports:
    • Quick Search across visible columns
    • Field-specific filtering
    • Optional advanced search fields
  • Sortable column headers
  • Sticky table header while scrolling
  • Column visibility toggle with preferences saved to localStorage
  • Optional duplicate record highlighting
  • Optional incomplete/missing data highlighting
  • Export current filtered results to CSV
  • Filter and column configuration driven entirely from configuration files

Viewing and editing

  • Clicking a row opens a detail panel
  • Detail panel can support configurable tabs such as:
    • Details
    • History
    • Related Records
    • Related Tickets
    • Audit Activity
  • Edit mode supports partial PATCH updates
  • Inline cell editing via double-click
  • Keyboard shortcuts:
    • Enter to save
    • Escape to cancel
  • Optional copy-to-clipboard actions for supported field types
  • Session-based change history tracking
  • Optional lookup workflows to related Zendesk records

Bulk operations

  • Bulk selection mode for multi-record workflows
  • Select individual rows or all filtered records
  • Bulk edit modal with preview step
  • Bulk delete confirmation workflow
  • Configurable bulk-editable fields
  • Per-record success/error handling during bulk actions

Safety and resilience

  • Undo and Redo support for inline edits and bulk edits
  • Unsaved change protection
  • Inline discard confirmation banners compatible with Zendesk iframe restrictions
  • Centralized API retry handling with configurable timeout and retry limits
  • Auto-refresh timestamp indicators
  • Graceful empty states and error handling throughout the UI

Keyboard navigation

  • Arrow keys move between rows
  • Enter opens detail panel
  • Space toggles row selection in bulk mode
  • Escape closes modals and panels

APIs used

API Purpose
GET /api/v2/custom_objects/{object_key}/records Load records
POST /api/v2/custom_objects/{object_key}/records Create records
PATCH /api/v2/custom_objects/{object_key}/records/{record_key} Update records
DELETE /api/v2/custom_objects/{object_key}/records/{record_key} Delete records
GET /api/v2/search.json Optional ticket or record lookup
GET /api/v2/users/show_many.json Optional user resolution
zafClient.invoke('routeTo', ...) Navigate to related Zendesk entities

Adapting this recipe to any Custom Object

Configuration-first design

The app should rely on configuration files rather than hardcoded field names.

Developers should be able to configure:

  • Object key
  • Visible columns
  • Searchable fields
  • Editable fields
  • Filterable fields
  • Default sort behavior
  • Field display labels
  • Field formatting logic
  • Related lookup behavior

Example configuration areas:

 
constants.js
fieldMappings.js
filterConfig.js
displayTransforms.js

Dynamic field rendering

Instead of hardcoding field layouts:

  • Generate table columns dynamically
  • Generate filters dynamically
  • Generate detail panel fields dynamically
  • Support optional field types such as:
    • Text
    • Dropdown
    • Number
    • Date
    • Boolean
    • Multi-line text

Optional related workflows

The app can optionally support:

  • Related ticket lookups
  • Related user lookups
  • Cross-object relationships
  • External ID searching
  • Audit history
  • Duplicate detection

These features should gracefully disable if the required fields are not configured.

Tech stack

  • React 18
  • Zendesk Garden
  • styled-components
  • Zendesk Custom Objects REST API
  • Zendesk Search REST API
  • Zendesk Users REST API
  • Zendesk App Framework (ZAF)
  • localStorage for user preferences

Notes

  • Filtering and sorting can be handled client-side after initial load
  • For very large datasets, consider server-side filtering and search
  • Zendesk iframe environments suppress native browser confirmation dialogs, so inline confirmation components are recommended
  • Undo/Redo history is session-only unless persisted externally
  • Centralized API retry handling is recommended for resilience
  • The app is intentionally designed as a reusable framework rather than a single-purpose solution, making it adaptable to many different customer object models and workflows.