Custom fields
Extend any first-class entity with typed, validated fields.
Last updated 2026-05-05
Custom fields let you attach typed values to any first-class entity — Customer, Lead, Invoice, Project, Task, Ticket, Staff, Contract. Supported types: text, textarea, number, date, datetime, boolean, single-select, multi-select, URL, email, currency. Each field defines a label, a key, an optional default, validation rules (required, min/max, regex), and a visibility scope (admin-only, all staff, or also visible in the customer portal). Values render inline on the detail page and are queryable from the API.
Field changes are versioned: renaming a label is non-destructive, but deleting a field requires explicit confirmation and triggers a backfill that preserves historical values for audit.
Related endpoints
GET /api/tenant/custom-fields/:entity— list fields for an entity type.POST /api/tenant/custom-fields/:entity— create.PATCH /api/tenant/custom-fields/:entity/:id— update label/validation/order.DELETE /api/tenant/custom-fields/:entity/:id— soft-delete with confirmation.GET /api/tenant/<entity>/:id/custom— field values for a specific record.
See the source at apps/web/src/app/(tenant)/settings/custom-fields and apps/api/src/custom-fields.