---
id: ADR-CRM-ACT-002
title: Activities and tasks carry no custom fields
product_area: crm
module: activities-tasks
revision: 1
status: proposed
design_intent: confirmed
source_sha:
  services-crm: a8d1364f1dd44b723bb5f9acba12f983e9ec8d69
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
decision: >-
  Leave custom-field support undeclared for interactions, work and their supporting
  configuration, and reject custom-field input at their API boundaries.
constrains:
  - DOM-CRM-ACT-001
  - DOM-CRM-ACT-003
  - SVC-CRM-ACT-activities
  - SVC-CRM-ACT-tasks
  - SCR-CRM-ACT-004
origin: >-
  R2-ARCH-001 D1 (Andrew, 2026-10-19), custom fields are opt-in per entity; recorded at
  services-crm docs/migrations/activities/README.md §9 (D4 superseded) and
  docs/debt/activity-and-contact-role-custom-fields.md.
alternatives:
  - option: Retain the original interaction custom-field implementation.
    why_not: >-
      The cited architecture ruling removed that opt-in; restoration needs a new product
      decision.
  - option: Introduce custom fields for tasks to match the earlier product.
    why_not: No planning capability or confirmed product decision establishes that requirement.
consequences:
  - Record APIs accept the defined module fields and refuse extra custom-field values.
  - >-
    Earlier inventory assertions about interaction custom fields remain superseded and
    tracked as a conflict.
  - >-
    Restoring custom fields requires an explicit entity opt-in decision before
    implementation.
supersedes: []
evidence:
  - >-
    services-crm at a8d1364f: docs/debt/activity-and-contact-role-custom-fields.md;
    docs/migrations/activities/README.md §2 and §9;
    modules/activities/metadata/*.object.ts; modules/tasks/metadata/*.object.ts.
---

# Activities and tasks carry no custom fields

## Context

The architecture makes custom fields an entity capability chosen explicitly. The earlier interaction implementation lost that capability under the cited ruling.

## Decision

The registrations omit custom-field support, and the API schemas reject those values. This record cites the existing architecture decision rather than granting a new opt-in.

## Alternatives Considered

The structured alternatives describe concrete competing designs and their tradeoffs. Where the origin records an existing ruling, it remains the authority; an observed implementation does not establish Product’s rejection of every alternative.

## Consequences

Forms and integrations use the current defined fields. Additional bespoke data requires a new decision and capability declaration.
