BDS0.1

Message

One delivery attempt through one channel, with its status, recipients and tool id.

Reviewed 2026-10-28Markdown

A Message is one text sent, or queued to be sent, through one channel to its recipients, by a rule and a run or by a person. One row per delivery attempt that reached the channel; the tool’s own id makes it unique among sent messages of that channel.

A Message is not a conversation, a sales contact or a KPI answer. The CRM records an Interaction; KPIs & OKRs records an Observation. As of 2026-10-28, every row was written by the Daily Digest.

Message Grid view: Daily Digest deliveries, Sent and Failed.

Fields

Content

Field Storage Meaning
Name Text Subject line or one-line summary. Primary field.
Body Long text Text as sent. Never edit a sent message; queue a new one.
About Keys Long text Occurrence keys the message asked about, one per line, written by the automation
Tags Linked records Tags (mirror); Daily Digest rows carry kpis-okrs-daily-digest-n8n

Delivery

Field Storage Meaning
Status Single select Queued, Sent, Failed
Sent At Date and time When the message left for the channel (UTC); blank while Queued
Failure Reason Long text The error returned; blank unless Failed
External Message Id Text The tool’s id for the message; used to avoid sending twice
Is Sent Formula 1 when Status is Sent
Created Created time Row creation; queued rows are worked oldest first

Route and recipients

Field Storage Meaning
Channel Linked records Channel; exactly one
Channel (Name) Lookup Name of the linked channel
Rule Linked records Notification Rule; blank when a person sent it
Rule (Name) Lookup Name of the linked rule
Recipients (Membership) Linked records Membership (mirror); when the message is about work
Recipients (Membership Name) Lookup Invalid configuration: no target field, shows nothing
Recipients (Person) Linked records Person (mirror); when the message is not about a membership

Thread and context

Field Storage Meaning
In Reply To Linked records The earlier Message this one answers, when the tool exposes a thread
Replies Linked records Inverse of In Reply To
Direction Single select Outbound, Inbound
Thread Id Text The tool’s conversation id; for Gmail, the threadId
Context Base Single select CRM, Fintable, Products & Services, Operation, Systems Central, Core Record Types
Context Key Text The record in the Context Base, as Table/recordId; text, not a link

Direction, Thread Id, Context Base, Context Key, In Reply To and Recipients (Person) are empty on every row today. They were added for e-mail logging, which is inactive.

Calculated rules

Is Sent

IF({Status} = "Sent", 1, 0)

Notification Rule sums it into Messages Sent. A dry run of the Daily Digest stores Status Sent with an External Message Id starting with dry-run-; Is Sent is 1 for those rows although nothing reached Slack.

Lifecycle and checks

Queued → Sent or Failed. The Daily Digest writes rows directly as Sent or Failed; no row is Queued today. Sent rows should have Sent At and External Message Id; Failed rows should have Failure Reason. Nothing enforces these pairs, the uniqueness of External Message Id, or that a reply shares its parent’s channel.

A Failed row is final. No retry flow exists; the retry design is awaiting approval (Work Item “Approve the Daily Digest retry proposal”).

Example

Fictitious: Name Daily digest · Ana Reis · 2026-09-17, Body Thu, Sep 17: 2 readings awaiting a response., Status Sent, Sent At 2026-09-17 12:00, External Message Id 1726597800.000200, Channel Slack DM, Rule Reading due today, Recipients (Membership) Ana Reis · Snack Prompt, About Keys one recordId:2026-09-17 line per reading.

Next steps

Review deliveries · Daily Digest delivery · All entities