Release announcements, helpful tips, and community discussion


Cerb (10.4.1) is a maintenance update released on August 30, 2023. It includes 42 minor features and fixes from community feedback covering the 10.4 update. You can follow these instructions to upgrade.



  • [Automations/Events] The record.changed automation event is now triggered when records are deleted. The event has a new change_type input with a value of created, updated, or deleted. For created the was_record_* dictionary is empty and record_* is the current state. For deleted the was_record_* and record_* are identical as the final state (this avoids existing listeners seeing deletion as changing every field value to blank). This behavior can be temporarily disabled with the APP_OPT_RECORD_CHANGED_NO_DELETE config option. Thanks to 1Password for the feature request!

  • [Automations] In automations, added cerb.commands.dataset.vector_similarity to api.command:. This loads a ‘Dataset (.jsonl)’ resource file and uses cosine similarity to find the closest matches between its document vectors and a given query vector. The JSON key containing vectors is required, and its dimensionality must match the query. A list of keys to return may be provided (e.g. id, name). This local implementation provides reasonable performance for semantic search on a small corpus (e.g. FAQ) up to a few thousand documents. Text embeddings can come from anywhere (OpenAI, Hugging Face, custom LLMs). A vector database or other HTTP microservice should be used for high-performance (Qdrant, Pinecone).

  • [Automations] In the automation command, added a length_split: option to prefer a specific sequence to split the bytes on. This will always be less than or equal to the requested length. For instance, a length: 2048 read with length_split@json: "\n" would return bytes up to the last linefeed character occurring before to the length position.

  • [Worklists/Toolbars] A records.worklist toolbar can override the default explore mode by defining interaction/explore:.

  • [Profiles/Widgets] On ‘Interaction Toolbar’ profile widgets, custom keyboard: shortcuts are now supported.

  • [Connected Services/Packages] Added ‘OpenAI’ to the package library when creating new connected services. This automatically configures a ‘Token Bearer’ service.

  • [Connected Services/Packages] Added ‘Hugging Face’ to the package library when creating new connected services. This automatically configures a ‘Token Bearer’ service.

  • [Platform/Stats] Implemented a ‘cosine similarity’ function in the platform’s statistics service. This compares the similarity of n-dimensional vectors (e.g. text embeddings). It will use the bcmath extension for performance when enabled.

  • [Resources/Datasets] Added a new ‘Dataset (.jsonl)’ resource type. This stores an arbitrary JSON Lines formatted dataset for fast access by automations.

  • [Worklists/Export] When exporting data from worklists using the Export KATA (“Build”) option, the KATA schema is now saved and used as the default on the next export.


  • [Worklists/Export] When exporting data from worklists using the Export KATA (“Build”) option, value: annotations are now properly preserved and evaluated. For instance, value@int: returns an integer and value@json: returns an object. This is important for JSON/JSONL exports where non-string data types are validated.

  • [Worklists/Import] When importing records into a worklist from a CSV file, it’s now possible to import ‘List’ custom fields. The value should be a newline-delimited list.

  • [Worklists/Log] On activity log worklists, the ‘ID’ column is now available.

  • [Worklists/Explore] Implemented explore mode for calendar event worklists.

  • [Worklists/Explore] Implemented explore mode for custom fieldset worklists.

  • [Worklists/Explore] Implemented explore mode for feed worklists.

  • [Worklists/Explore] Implemented explore mode for scheduled behavior worklists.

  • [Records/Notifications] On notification worklists, the record ‘ID’ column is now available.

  • [Records/Address] On address cards and profile pages, the ‘Record Fields’ widget can now display the ‘Worker’ field.

  • [Records/Address] On email address worklists, the ‘Worker’ column now displays the linked record rather than just a record ID.

  • [Interactions/UX] The built-in cerb.ticket.move interaction now shows 50 groups/buckets per page rather than 10.

  • [Interactions/UX] The built-in cerb.ticket.assign interaction now shows 25 workers per page rather than 10.

  • [Toolbars/KATA] Toolbar editors now autocomplete the keyboard: option.

  • [Watchers/Performance] On the watchers popup, worker profile images now lazy load in modern browsers (i.e. the images load from the server when scrolled into view). On large teams it was possible for the watchers popup to request 1,000+ images from the server at the same time. This was particularly an issue if a worker had their browser cache disabled (e.g. Web Developer Console). In Cerb Cloud it could lead to temporary rate-limiting (a “Forbidden” response to all access for several minutes). A forthcoming improvement will replace this popup’s table with a filterable/pageable sheet.

  • [Worklists/Explore/Comments] Explore mode on comments now automatically scrolls to each comment in the profile timeline.


  • [Connected Services/Packages] Removed the ‘Twitter’ package when creating new connected services.


  • [Records/Notifications] Fixed an issue with deleting notification records through the API or automations.

  • [Automations/Records] Fixed a cache invalidation issue causing record.changed automation events to not trigger for custom field and custom fieldset records.

  • [Custom Records] Fixed an issue that prevented custom record type class files to not be cleaned up on disk after deletion.

  • [Profiles/Merge] Fixed an issue with the ‘Merge’ button at the top of profile pages for non-admins. Clicking the button had no effect due to a failing permissions check.

  • [Records/Search] Fixed an issue with autocompletion on worklist search queries. The autocompletion suggestions menu closed prematurely after selecting a filter: from the menu.

  • [Sheets] Fixed an issue with Sheet KATA where specifying an invalid columns: type prevented the sheet from rendering.

  • [Worklists/Explore] Fixed an issue with explore mode on call record worklists.

  • [Interactions/Website] Fixed an issue in automations where the optional reset button didn’t restart the interaction (await:form:elements:submit:reset@bool: yes). Thanks to @yungtyyler for the bug report!

  • [Worklists/Explore] Fixed an issue with explore mode when using the Firefox browser. Occasionally the load event wouldn’t fire properly and explore toolbars and keyboard shortcuts wouldn’t function. Thanks to @mryanb for the bug report!

  • [Worklist/Export] Fixed an issue when exporting data from worklists. The previously used column names were blank if they were custom fields. This was due to the change from legacy custom_123 keys to custom field URIs (aliases).

  • [Interactions/Website] Fixed an issue in automations where there was no padding between await:form: elements when using a sheet with paging.

  • [Interactions/Website] On automations, text selection is no longer disabled on sheet tables. This was preventing visitors from copying bot responses.

  • [Worklists/Export] Fixed an issue when exporting custom records from a worklist and record ownership isn’t enabled.

  • [Search/Elasticsearch] Fixed an issue with Elasticsearch 8.x compatibility as a full-text search schema (e.g. message content). Thanks to @nicholsk18 for the patch!

  • [Bots/Behaviors/Actions] Fixed an issue with setting custom fields in legacy bot behavior actions.

  • [Bots/Behaviors/Conditions] Fixed an issue with using custom field conditions in legacy bot behavior outcomes.