Skip to main content
CUSTOM FIELDS

ParsaLink ships with sensible defaults for every entity, but every business has its own data shape. Custom fields let you extend Contacts, Accounts, Opportunities, and Tasks without leaving the app.

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
Every entity carries both its built-in columns (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

1

Open the field settings

Go to CRM → Field Settings (or Settings → CRM → Fields) and pick the entity you want to extend.
2

Pick a section

Place the new field in an existing section or create a new one (e.g. “Marketing Preferences”).
3

Define the field

Set the field key (machine name, e.g. vat_number), label (display name), and type:
  • text — single-line string
  • number — integer or decimal
  • boolean — yes/no toggle
  • date — date picker
  • list — multi-select array
  • select — single choice from a fixed list
4

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.
5

Toggle visibility and required

Set whether the field is visible (admins can stage fields without exposing them) and required (entity create/update fails if missing).

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")
The CRM AI agent handles both transparently — ask “find contacts where vat_number is X” and it figures out the right query shape.

Sections and Field Order

Each field has a display_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:
  1. Primary — the must-haves at the top of the form
  2. Sales context — qualifying fields specific to your process
  3. Address — collapsed by default since it’s used less often
  4. Internal — fields admins use for routing or accounting

CSV Import Mapping

Custom fields participate in CSV import. When you upload a CSV, ParsaLink:
  1. Auto-maps columns whose normalized header matches a built-in field name
  2. Auto-maps columns whose normalized header matches any of your custom field’s CSV aliases
  3. Leaves unmapped columns for you to map manually OR mark as “track always” to add them to the schema in-place
The third option turns CSV import into a schema-building tool — surveys with new columns can populate your schema as you go.
When you map a column during import, you can also tick Track this column going forward to add it to your schema permanently. The next CSV with the same column gets auto-mapped.