# 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.

[![Message Grid view: Daily Digest deliveries, Sent and Failed.](/systems/communication/screens/comm-message-grid.png)](/systems/communication/screens/comm-message-grid.png)

## 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)](/systems/communication/entity-tags); 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](/systems/communication/entity-channel); exactly one |
| Channel (Name) | Lookup | Name of the linked channel |
| Rule | Linked records | [Notification Rule](/systems/communication/entity-notification-rule); blank when a person sent it |
| Rule (Name) | Lookup | Name of the linked rule |
| Recipients (Membership) | Linked records | [Membership (mirror)](/systems/communication/entity-membership); when the message is about work |
| Recipients (Membership Name) | Lookup | Invalid configuration: no target field, shows nothing |
| Recipients (Person) | Linked records | [Person (mirror)](/systems/communication/entity-person); 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

```text
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](/systems/communication/review-deliveries) · [Daily Digest delivery](/automations/daily-digest) · [All entities](/systems/communication/entities)