# Automations

The three coreId automations in Core and the n8n workflows that read or create Core records.

Core has three Airtable automations, all with the same script: they give Campaign, People and Organizations an immutable coreId. Four n8n workflows touch Core records: one creates People, two read them by e-mail and one reads Cadence through KPIs & OKRs. Everything else in Core is maintained by hand through Data views.

## Airtable automations in Core

| Automation | Trigger | Action | Status |
| --- | --- | --- | --- |
| Campaign — assign immutable coreId | A Campaign row is created | Script fills coreId with a UUID only when it is blank | Deployed |
| People — assign immutable coreId | A People row is created | Same script, pointed at People | Deployed 2026-11-06; 1,387 existing rows backfilled the same day |
| Organizations — assign immutable coreId | An Organizations row is created | Same script, pointed at Organizations | Deployed 2026-11-06; 904 existing rows backfilled the same day |

The script reads the new row and writes coreId once. It keeps any identity already present, sends no external request and changes no business field. It is not an atomic lock: two writers at the same instant could still race. If coreId is cleared by mistake, restore the original value instead of letting a new UUID be issued. Campaign Check shows "Waiting for campaign identity" while coreId is blank. Safe test: create a clearly labeled Draft campaign, confirm coreId fills, then set Lifecycle Status* to Cancelled and deletedAt; do not delete the row, because the CRM mirror retains deleted rows.

Why People and Organizations need it: a mirror of a mirror keeps its relations as text. The CRM receives Message through Communication, so the Person links on a Message cannot become CRM links by sync. The receiving base re-links by matching coreId, as the CRM automation "Message — link Interaction, Sender and Receivers" does. Only Pedro and Eder can edit coreId by hand; the automations keep their write access.

[![The Campaign automation fills coreId when a campaign is created; People and Organizations run the same script.](/systems/core/screens/core-campaign-automation.png)](/systems/core/screens/core-campaign-automation.png)

## n8n workflows that touch Core

Confirm a workflow's current state and version in n8n before relying on the table below.

| Workflow | State | Core use |
| --- | --- | --- |
| Cal.com Booking Intake | Active | Looks for the booker in the CRM People mirror, then in Core People by e-mail. If absent, creates a Person in Core with Status Proposed and the tag cal-lead-n8n, then polls the CRM mirror once a minute, up to ten times. |
| [CRM — Resolve Context](/automations/crm-resolve-context) | Active (called by Email Capture) | Matches every participant e-mail to a Person through the CRM People mirror and reads the seller's Membership through the Core Membership mirror. Never creates a Person. |
| Legacy — Email Logging | Inactive, superseded 2026-11-06 | Replaced by Email Capture. |
| Communication — Daily Digest | Active | Reads the cadence catalog to compute due items and period keys. Check in n8n whether it reads Core or the KPIs & OKRs Cadence (mirror). |

The booking workflow is the only automated writer of shared records. A person created there is a golden record in waiting: review Proposed people in People › by Tag, check for a duplicate by e-mail and promote to Active. Behavior, recovery and limits of the workflow are documented in [Cal.com booking](/automations/calcom-booking-intake); the Daily Digest is documented in [Daily Digest](/automations/daily-digest).

## What is not automated

- New People and Organizations created without Status do not become Proposed automatically. A Work Item proposes a Core automation for this.
- No automation detects or merges duplicates, and there is no Supersedes / Superseded By link to record a merge.
- Health check and Record health are formulas; nothing alerts when they fall.
- No automation propagates a correction to consumers. Each mirror refreshes on its own sync.