🧩 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 52 fields in Modules 0.8.0 (per
catalog.json); the rest cover throttling, retry, branding
HTML, and activity creation.
Since Modules 0.8.0, a cloned definition starts without the original's run state.
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).
Since Modules 0.8.0:
- Group By. Digest emails and review tables can group rows by one column, or by several nested columns.
- The digest data table loads in installed orgs. Before 0.8.0 it never ran in an installed org. Its Single Threaded column is also corrected.
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).
What changed in Modules 0.8.0:
- Review timing. A record can no longer be auto-promoted before its principal's digest has shown it. The review window runs from when the digest was actually sent, and each digest run schedules its own follow-up. Auto-promotion no longer fails on the "ERM New Contact Review" template.
- Digest email. Deadlines appear in Eastern and Pacific time, and there are new pending-count
and
ReviewDeadlinemerge tokens. Action buttons are driven by their own configuration, so renaming an action no longer breaks them. - Review links need a Confirm click. Opening an ERM review link no longer completes the action; the reviewer has to click Confirm. This stops mail scanners from approving or promoting a record when they prefetch the link.
- Magic-link actions. A digest column can let a reviewer Promote or Mark Private from the email
without logging in. It needs an ERM Experience site,
CV_ERM_Magic_Link_Gueston its guest user, aMagic_Link_Policy__mdtrecord, and a MagicLinkAction column added to your ERM definition. The shipped ERM definition doesn't use the column yet. - Lead promotion. Promoting a Lead carries its relationship and capture date to the new Contact, and every promoting action, including Tag, now converts the Lead instead of leaving it stranded.
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. Since Modules 0.8.0 the Outlook pane resolves digests.
- An ERM review link opens a confirmation step; the action happens only when you click Confirm.
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 and
clientverse-modules-0.8.0.json (Dispatch
owns 12 objects in Modules 0.8.0):
| 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 |
ERM_Privacy_Preference__c |
One entry on a lawyer's personal list of people, addresses, threads or domains excluded from ERM capture (new in 0.8.0; deliberately not reportable or searchable) |
Dispatch also extends Activity (lookup back to the Run Item that created a task/event) and
the Core Clientverse_Log__c (so Dispatch activity surfaces in Core logging). Since Modules 0.8.0
it also adds two ERM fields to User: ERM_Capture_Enabled__c and ERM_Privacy_Region__c.
Limits & known issues¶
- Core dependency. Modules 0.8.0 requires Core 1.1.10 (declared dependency
ClientVerse Core Unlocked@1.1.10-2). The floor moved up from 1.1.7 in this release, so an org running Modules 0.4.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. Since Modules 0.8.0, sends to User overrides also count against the org's daily email limit. - 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, which arrived in Modules 0.4.0, ships separately 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.