Message
One delivery attempt through one channel, with its status, recipients and tool id.
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.
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.
