BDS0.1

Campaign in CRM

Local use of Campaign (mirror) in the CRM.

Reviewed 2026-10-28Markdown

Shared definition and source fields.

Core owns the campaign objective, audience, dates and lifecycle. CRM reads the 16-field Sync - Campaign contract and adds Deals (Campaign) plus six readiness helpers. Deals (Campaign) is the inverse of Deal.Campaign°: it lists the Deals that came from the campaign, and those Deals are the campaign’s results. The verified sync is automatic and one-way; consumer editing is off, new source fields are not included automatically, and deleted source rows are retained. Retire in Core with deletedAt; hard deletion may leave a stale mirror.

Local usage

Field Storage Current configuration
CRM Campaign Check Formula Calculated; see rules below.
Deals (Campaign) Linked records Deal; inverse of Campaign° on the Deal. Lists the Deals linked to this campaign; edit the link on the Deal
CRM Accountable ID Lookup Via Accountable (Organization)* → CRM Record ID
CRM Membership Company ID Lookup Via Accountable (Membership)* → CRM Business Unit ID
CRM Membership Status Lookup Via Accountable (Membership)* → Membership Status
CRM Organization Count Linked record count Via Accountable (Organization)*
CRM Membership Count Linked record count Via Accountable (Membership)*

Local rules

CRM Campaign Check

IF(NOT({coreId}),"⚠ Missing campaign UUID. ","") & IF(NOT({Description*}),"⚠ Complete objective in Core. ","") & IF(NOT({Audience Definition*}),"⚠ Complete audience in Core. ","") & IF({CRM Organization Count}!=1,"⚠ Select one campaign organization in Core. ","") & IF({CRM Membership Count}!=1,"⚠ Select one campaign membership in Core. ","") & IF(ARRAYJOIN({CRM Membership Status})!="Active","⚠ Campaign membership must be active. ","") & IF(AND({CRM Accountable ID},ARRAYJOIN({CRM Accountable ID})!=ARRAYJOIN({CRM Membership Company ID})),"⚠ Campaign membership company mismatch. ","") & IF(NOT({Start Date*}),"⚠ Set campaign start in Core. ","") & IF(AND({End Date°},{Start Date*},{End Date°}<{Start Date*}),"⚠ Campaign end precedes start. ","") & IF({deletedAt},"⚠ Campaign retired. ","")

Maintenance

Correct shared facts at their owning source and local links in CRM. A table name or field description alone does not verify sync direction, field mapping, refresh interval or API write support. Campaign has a separately verified contract; do not generalize it to the other mirrors.

Domain boundaries · All entities