# Interaction

One contact or scheduled meeting, its result and supporting evidence.

An Interaction records a call, WhatsApp, email, meeting or message. Link the guest in People°, their company in Company° and the proposal in Deal°. Keep the original meeting when Cal.com reschedules or cancels it.

## Rules and relationships

Date*, Title*, Type, Result and the accountable company/membership describe the contact. Note records what happened; Evidence° and Evidence URL support the record. Meeting booked is a scheduled state, not a completed conversation. Booking UID is the external meeting key and must survive note edits.

Next Contact Date° and Next Action° describe the agreement made during this contact. Nothing copies them to another table: when the agreement is work for someone, add it to [Tasks](/systems/crm/entity-task). Cal.com writes them on booking, reschedule and cancellation. Name, Health check and Record health read People°, Company° and Deal°; one of the three is enough. Campaign is a lookup of Campaign° on the Deal linked in Deal°: set the campaign on the Deal and every contact of that Deal follows it. An Interaction with no Deal, or with a Deal that has no campaign, shows a blank Campaign, which is fine for general work. The Campaign Participation fields and Campaign Attribution Check were deleted on 2026-11-04.

## Fields

| Field | Storage | Current configuration |
| --- | --- | --- |
| Name | Formula | Calculated; see rules below. |
| Date* | Date and time | Timezone: client |
| Title* | Text | Stored value or system-managed audit; edit according to the workflow. |
| Type | Single choice | Call, WhatsApp, Email, Meeting, Message |
| Result | Single choice | Answered, No answer, Meeting booked, Proposal requested, Not interested, Meeting cancelled |
| Accountable (Company) | Linked records | [Companies](/systems/crm/entity-companies); Multiple-record picker |
| Accountable (Person) | Linked records | [People](/systems/crm/entity-people); Multiple-record picker |
| Health check | Formula | Calculated; see rules below. |
| Description° | Formatted text | Stored value or system-managed audit; edit according to the workflow. |
| Note | Long text | Stored value or system-managed audit; edit according to the workflow. |
| Next Contact Date° | Date | Stored value or system-managed audit; edit according to the workflow. |
| Next Action° | Text | Stored value or system-managed audit; edit according to the workflow. |
| Deal° | Linked records | [Deal](/systems/crm/entity-deal); Multiple-record picker |
| Evidence° | Attachments | Stored value or system-managed audit; edit according to the workflow. |
| Evidence URL | URL | Stored value or system-managed audit; edit according to the workflow. |
| Created By | Created by | Stored value or system-managed audit; edit according to the workflow. |
| Created At | Creation time | Stored value or system-managed audit; edit according to the workflow. |
| Tags | Linked records | [Tags](/systems/crm/entity-tags); Multiple-record picker |
| Booking UID | Text | Stored value or system-managed audit; edit according to the workflow. |
| Accountable | Lookup | Via Accountable (Person) → Account Binding |
| Thread Id | Formula | Calculated; see rules below. |
| Messages | Linked records | Message (mirror); filled by the CRM automation that links each captured e-mail to its thread |
| Accountable (Membership) - to delete (deprecated) | Linked records | [Membership (mirror)](/systems/crm/entity-membership); Deprecated since 2026-11-06; read-only until deleted, replaced by Accountable (Person) |
| Accountable (Membership Auth User) - to delete (deprecated) | Lookup | Via Accountable (Membership) → Auth User; Deprecated since 2026-11-06; read-only until deleted |
| Record health | Formula | Calculated; see rules below. |
| Campaign | Lookup | Via Deal° → Campaign°. Read only; set the campaign on the Deal. If wrong, fix Campaign° on the Deal or link the right Deal° here |
| People° | Linked records | [People](/systems/crm/entity-people); Multiple-record picker. The guest; the Cal.com flow fills it for bookings |
| Company° | Linked records | [Companies](/systems/crm/entity-companies); Multiple-record picker. The client company, when known |

## Calculated rules

The expressions below use field names for readability. View filters and checks guide work; they are not access controls.

### Name

```text
CONCATENATE(
  IF({People°}, ARRAYJOIN({People°}, ", ") & " at ", IF({Company°}, ARRAYJOIN({Company°}, ", ") & " at ", "no guest at ")),
  DATETIME_FORMAT({Date*}, "hh:mma"),
  IF({Type}, " - " & {Type}, ""),
  IF({Title*}, " - " & {Title*}, "")
)
```

### Health check

```text
IF(
  AND(
    OR(COUNTA({People°})>0, COUNTA({Company°})>0, COUNTA({Deal°})>0),
    {Date*},
    {Title*},
    {Type},
    {Result},
    COUNTA({Accountable (Person)})>0,
    COUNTA({Accountable (Company)})>0
  ),
  "✅",
  "Missing: " & REGEX_REPLACE(
    CONCATENATE(
      IF(OR(COUNTA({People°})>0, COUNTA({Company°})>0, COUNTA({Deal°})>0), "", "People, Company or Deal, "),
      IF({Date*}, "", "Date, "),
      IF({Title*}, "", "Title, "),
      IF({Type}, "", "Type, "),
      IF({Result}, "", "Result, "),
      IF(COUNTA({Accountable (Person)})>0, "", "Accountable (Person), "),
      IF(COUNTA({Accountable (Company)})>0, "", "Accountable (Company), ")
    ),
    ", $", ""
  )
)
```

### Record health

```text
SUM(
IF(OR(COUNTA({People°})>0, COUNTA({Company°})>0, COUNTA({Deal°})>0),1,0),
IF({Date*},1,0),
IF({Title*},1,0),
IF({Type},1,0),
IF({Result},1,0),
IF(COUNTA({Accountable (Person)})>0,1,0),
IF(COUNTA({Accountable (Company)})>0,1,0)
)/7
```

## Next steps

[Open the task guide](/systems/crm/log-contact) · [Find the view](/systems/crm/data-views)