How Custom Fields Work
ParsaLink uses Tenant Field Schemas — one schema per entity type per tenant. Each schema is divided into Sections (groups of fields) and contains Field Definitions (individual fields). Default sections (you can rename them or add more):- Primary — the main identifying fields (name, email, phone)
- Additional — secondary fields (title, LinkedIn, notes)
- Address — postal address fields
first_name, email, etc.) AND a data JSON field where your custom fields live. The schema tells the UI how to render and validate them.
Adding a Custom Field
Open the field settings
Go to CRM → Field Settings (or Settings → CRM → Fields) and pick the entity you want to extend.
Pick a section
Place the new field in an existing section or create a new one (e.g. “Marketing Preferences”).
Define the field
Set the field key (machine name, e.g.
vat_number), label (display name), and type:text— single-line stringnumber— integer or decimalboolean— yes/no toggledate— date pickerlist— multi-select arrayselect— single choice from a fixed list
Set CSV aliases (optional)
List the column header names CSV imports should map to this field. If your contact CSV has columns like “VAT” and “Tax ID” that both mean the same thing, add both as aliases so any future import auto-maps without manual mapping.
Core vs Custom Fields
Built-in fields (email, phone, first_name, etc.) live as real database columns. Custom fields live in the data JSON column.
Both behave identically in the UI — the same list filters, the same record detail panels, the same CSV import mappings. The difference only matters when you’re querying via the API:
- Built-in:
Contact.objects.filter(email="x") - Custom:
Contact.objects.filter(data__vat_number="x")
Sections and Field Order
Each field has adisplay_order. Drag to reorder fields within a section, or move them between sections. The Add/Edit forms and the detail page both respect the order.
Sections themselves are ordered. A common pattern:
- Primary — the must-haves at the top of the form
- Sales context — qualifying fields specific to your process
- Address — collapsed by default since it’s used less often
- Internal — fields admins use for routing or accounting
CSV Import Mapping
Custom fields participate in CSV import. When you upload a CSV, ParsaLink:- Auto-maps columns whose normalized header matches a built-in field name
- Auto-maps columns whose normalized header matches any of your custom field’s CSV aliases
- Leaves unmapped columns for you to map manually OR mark as “track always” to add them to the schema in-place
