🧩 ClientVerse Modules — Dispatch Requires the ClientVerse Modules package. Clients on Core only won't see this.
Dispatch¶
Available since: ClientVerse Modules 0.1 (shipped).
What it is¶
Dispatch is ClientVerse's data-driven notification and digest engine. An admin defines what to send, who receives it, how often, and through which channel; a scheduled job then evaluates that definition, builds one message per recipient from live Salesforce data, and delivers it by email and/or in-app notification. The same engine powers ClientVerse's ERM (Experience / Relationship Management) review workflows — for example single-threaded-relationship review and auto-promotion.
Think of it as "reports that find you" plus the review actions that go with them, instead of dashboards people have to remember to open.
Who it's for¶
- Admins build and tune dispatches (the bulk of the configuration objects target this persona).
- Attorneys and BD are the recipients — they read digests/notifications, take actions from them, and manage their own subscriptions.
How it works¶
Dispatch is built from a small set of objects in a clear hierarchy. Full object meanings are in
objects/dispatch.yaml; field-level reference is in
the Data Dictionary.
1. Definition¶
A Dispatch Definition (Dispatch_Definition__c) is the central configuration record — the
roadmap board tracks the digest-generation work behind it (P3.3, P3.6). One definition describes:
- What to query —
Primary_Object__candEntry_Criteria__cselect the qualifying records. - Who receives it —
Subscriber_Source__c(criteria, list, or role) plusSubscriber_Criteria__c. - When it runs —
Frequency__c,Run_Times__c,Day_of_Week__c,Day_of_Month__c,Timezone__c. - How it's branded and sent —
Email_Subject_Template__c,From_Name__c,From_Address__c,Reply_To__c, andEnable_Reply_Routing__c(route replies back into Salesforce via a flow). - Delivery mode —
Context_Mode__c(per-recipient vs shared digest) andUse_External_MAP__c(send through an external marketing platform instead of Salesforce email).
Dispatch_Definition__c has 48 fields total; the rest cover throttling, retry, branding HTML, and
activity creation.
2. Run¶
When the schedule fires, a Dispatch Run (Dispatch_Run__c) records that execution. It is the
audit trail for one send: Run_Type__c (scheduled / manual / test), Status__c,
Records_Evaluated__c, Items_Created__c, Items_Sent__c, Items_Failed__c, and an
Error_Summary__c for troubleshooting.
3. Run Item — per-recipient delivery¶
A run produces one Dispatch Run Item (Dispatch_Run_Item__c) per recipient: the fully rendered,
addressed message. It stores Rendered_Subject__c / Rendered_Body__c, the delivery Status__c,
and engagement timestamps (Sent_At__c, Opened_At__c, Clicked_At__c, Reply_Received__c).
Skip_Reason__c explains anything that wasn't sent.
4. Delivery & subscriptions¶
Recipients are enrolled through Dispatch Subscriptions (Dispatch_Subscription__c). A
subscription links a subscriber (Subscriber_User__c or Subscriber_Contact__c) to a definition,
with per-subscriber overrides: Delivery_Channel__c (email, in-app, or both),
Frequency_Override__c, and Filters_JSON__c. Assignment_Source__c records whether it came from
auto-enrollment or a manual opt-in; Unsubscribed_Date__c records opt-out. Role-based
auto-enrollment is driven by Dispatch_Role_Mapping__mdt (e.g. enroll all relationship managers in
a given digest).
5. Sections & data tables¶
A digest body is composed of ordered Dispatch Sections (Dispatch_Section__c) — each a rich-text
block or a data table, with its own Visibility_Rule__c and Hide_If_Empty__c. A table section is
configured by Dispatch DataTable Config (Dispatch_DataTable_Config__c) — its
Data_Source_Type__c (SOQL template, report, list view, or Apex), row limit, sort, and
Enable_Inline_Edit__c — and its columns by Dispatch DataTable Column (Dispatch_DataTable_Column__c),
which set field, format, alignment, width, and highlight rule. This is the Data Table Component
from the roadmap (P3.5).
6. Actions¶
A digest or notification can carry call-to-action buttons defined by Dispatch Action
(Dispatch_Action__c): Action_Type__c of Flow, URL, or record update, with placement and a
Visibility_Condition__c. Each action declares what it records via Log_Action_Type__c.
Correction. Earlier revisions of this guide referred to a
Dispatch_Action_Log__caudit object. It was removed before Modules 0.1.0 and has never shipped. Recipient actions and engagement live on the Run Item (Dispatch_Run_Item__c):Actions_Taken__c, plusOpened_At__c,Clicked_At__c,View_Count__c,Reply_Count__c, andReply_Received__c.
7. ERM review workflows¶
Dispatch underpins ClientVerse's relationship-review behaviors (roadmap NCR 1–5):
- Single-threaded review — surface relationships served by only one person for review, with action gating and defined deletion behavior (NCR 1–3).
- Auto-promotion on review-window expiry —
Review_Window_Hours__csets how long reviewers have;Auto_Promotion_Behavior__cdecides what happens when the window lapses (NCR 4). - Mark-private visibility enforcement — private relationships stay hidden from digests (NCR 5).
How to use it¶
User view (attorneys / BD)¶
- You receive digests and notifications on the channel your subscription specifies; opens and clicks are tracked on the Run Item.
- Manage your enrollment from your Dispatch Subscriptions — change channel or frequency, adjust filters, or unsubscribe.
- Use the action buttons in a digest (run a flow, open a record, complete an ERM review) directly from the message; every action is logged.
- The Outlook App integration (roadmap P3.4) brings ClientVerse content into Outlook for recipients who live in email.
Admin view¶
- Create a
Dispatch_Definition__c, set its primary object and entry criteria, schedule, and branding. - Add
Dispatch_Section__crecords for the body; for tabular sections add aDispatch_DataTable_Config__cand its columns. - Define recipients via
Subscriber_Source__cand/orDispatch_Role_Mapping__mdtauto-enrollment. - Add any
Dispatch_Action__ccall-to-actions. - Set
Active__cto enable scheduling. Use a test run to preview before going live. - Monitor
Dispatch_Run__c/Dispatch_Run_Item__cfor delivery health andError_Summary__c.
Configuration pointers¶
- Setup app:
CV_Dispatch_Setup; permission setsCV_Dispatch_AdminandCV_Dispatch_User(CV_Dispatch_Lawyeris the pre-0.4.0 end-user set and still works). All of them requireCV_Modules_Accessfirst. - Batch sizing (definition batch, run-item batch, insert chunk) is tuned via
Dispatch_Config__mdt. - See the Admin Guide for step-by-step setup and the Configuration Reference for the custom-metadata settings.
Key objects¶
Cited from objects/dispatch.yaml (Dispatch owns 12
objects and extends 2):
| Object | Role |
|---|---|
Dispatch_Definition__c |
Central configuration for one notification/digest |
Dispatch_Subscription__c |
A recipient's enrollment + overrides |
Dispatch_Run__c |
One execution (audit record) |
Dispatch_Run_Item__c |
One rendered, addressed message per recipient |
Dispatch_Section__c |
A content block (rich text or data table) |
Dispatch_DataTable_Config__c / Dispatch_DataTable_Column__c |
Table source + columns |
Dispatch_Action__c |
Call-to-action buttons (audit now recorded on Dispatch_Run_Item__c) |
Dispatch_Settings__c |
Org throttle state (contact-email limit) |
Dispatch_Config__mdt, Dispatch_Role_Mapping__mdt |
Batch config, role auto-enrollment |
Dispatch also extends the Core Activity object (lookup back to the Run Item that created a
task/event) and Clientverse_Log__c (so Dispatch activity surfaces in Core logging).
Limits & known issues¶
- Core dependency. Modules 0.4.0 requires Core 1.1.7 (declared dependency
ClientVerse Core Unlocked@1.1.7-6). The floor moved up from 1.1.4 in this release, so an org running Modules 0.3.0 without trouble can still be below it — upgrade Core before Modules. See../../_package-facts/sync-report.md. - Contact email throttling. Org-level daily contact-email limits are enforced through
Dispatch_Settings__c; sends beyond the limit are skipped (Skip_Reason__c) until the next reset. - External delivery via
Use_External_MAP__cdepends on an external marketing platform being configured. - AI-authored digest content is not a Dispatch feature. The AI module ships separately in Modules 0.4.0 and is not wired into digest rendering — a digest's content comes from its sections and data tables, not from a model. See AI — shipped, early access.