# Channel Binding

One channel serving one subject for one purpose during a period.

A Channel Binding says where messages about one subject go: one Channel serving one Team, Department, Organization or Agreement, for one Purpose, during a validity period. Work that notifies (a task, a milestone, a procedure) should resolve its channel through whoever is responsible for it, never by naming a channel itself. A binding grants no access and removes nobody from a channel.

The table is empty on 2026-10-28, and no flow reads it yet. The Daily Digest resolves Slack recipients through Tooling and Access, not through bindings.

[![Channel Binding Grid view: no bindings are registered yet.](/systems/communication/screens/comm-binding-grid.png)](/systems/communication/screens/comm-binding-grid.png)

## Fields

### What is bound

| Field | Storage | Meaning |
| --- | --- | --- |
| Name | Text | Label written as channel · subject · purpose. Primary field. |
| Channel | Linked records | [Channel](/systems/communication/entity-channel); link exactly one Active channel |
| Channel (Name) | Lookup | Name of the linked channel, via Channel |
| Purpose | Single select | Billing, Support, Ops, Alerts, General. A second purpose is a second binding. |

### Who it serves

| Field | Storage | Meaning |
| --- | --- | --- |
| Subject Type | Single select | Team, Department, Organization, Agreement |
| Subject Key | Text | The subject's business key, exactly as its source spells it |
| Subject (Team) | Linked records | [Team (mirror)](/systems/communication/entity-team); only when Subject Type is Team |
| Subject (Department) | Linked records | [Department (mirror)](/systems/communication/entity-department); only when Subject Type is Department |
| Subject (Organization) | Linked records | [Organization (mirror)](/systems/communication/entity-organization); only when Subject Type is Organization |
| Tags | Linked records | [Tags (mirror)](/systems/communication/entity-tags); optional labels |

Agreement has no mirror table here, so an Agreement binding carries only Subject Type and Subject Key.

### When it applies

| Field | Storage | Meaning |
| --- | --- | --- |
| Valid From | Date | First day in force; blank means it always applied |
| Valid Through | Date | Last day in force; blank while it still applies |
| Is Current | Formula | 1 while today is inside the validity, 0 otherwise |

## Calculated rules

### Is Current

```text
IF(AND(OR({Valid From} = BLANK(), NOT(IS_AFTER({Valid From}, TODAY()))),
       OR({Valid Through} = BLANK(), NOT(IS_BEFORE({Valid Through}, TODAY())))), 1, 0)
```

Blank dates count as open ends. The Channel table sums Is Current into Active Bindings. TODAY() follows Airtable's formula timezone, so the change happens at midnight of that timezone, not of the reader's.

## Lifecycle and checks

A binding is current, future (Valid From after today) or ended (Valid Through before today). End a binding with Valid Through instead of deleting it. Nothing checks that Subject Type, Subject Key and the matching Subject link agree, that only one Subject link is filled, or that a subject and purpose have exactly one current binding; the descriptions state these rules for manual review.

## Example

Fictitious: Name `billing-alerts · Bluebird · Billing`, Subject Type Organization, Subject Key `ORG-0042`, Subject (Organization) Bluebird, Purpose Billing, Valid From 2026-09-01, Valid Through blank, Channel billing-alerts. Is Current is 1.

## Next steps

[Register channels and rules](/systems/communication/register-channels#bind-the-channel-to-a-subject) · [All entities](/systems/communication/entities)