I might have misunderstood something, but…
I’m building a non-trivial CRM in Knack with users, leads, sites, orders, jobs, commissions, and multiple external integrations (Zapier, auth, booking systems, etc.). Overall, Knack works surprisingly well for this scale.
But there is one architectural decision that is frankly indefensible in 2025:
Display Field is hard-coupled to the key/value used in relationship dropdowns.
There is no way to:
-
define a true primary key (technical identifier)
-
separately define a human-readable display label
-
choose which field a connection dropdown should display
This violates basic database design principles that have existed since at least the 1980s.
In any relational system worth the name:
-
Primary key = stable, technical, machine-oriented
-
Display label = mutable, human-oriented
-
These are not the same thing
In Knack, they are forced to be the same.
Concrete problems this causes
To assign a user to a record, I want:
-
the key to be an immutable internal ID (or record ID)
-
the label to be something readable (name, email, role)
Instead, I’m forced to:
-
either expose technical IDs to humans (unusable UX), or
-
pollute the Display Field with composite strings like
aID | Firstname Lastname | email, or -
build proxy objects / lookup tables, or
-
pre-fetch data via Zapier into synthetic “A/B fields” just to get a usable dropdown
This is absurd.
I now have automation that:
-
Looks up a user by email
-
Pulls a pre-combined “ID + name” field
-
Writes that back into Knack
-
Uses that as the Display Field
…all because I cannot tell Knack:
“Use field X as the key and field Y as the label.”
This is not a “nice to have”.
This is foundational.
What this blocks or complicates unnecessarily
-
Clean integrations
-
Stable identifiers
-
Refactoring display names
-
Internationalization
-
Any serious CRM or ERP-like workflow
-
Any app where dropdown usability matters at scale
Requested feature (minimal and sufficient)
At object or field level:
-
Define Primary Key field (technical)
-
Define Display Label field (UI)
-
Or, at minimum: allow relationship fields to choose which field is shown in dropdowns
No breaking changes required.
Just decouple identity from presentation.
Right now Knack forces developers to work against 40+ years of established database logic for something as basic as assigning a user from a dropdown.
Everything else in the platform is “good enough to very good”.
This one decision creates disproportionate pain.
Please reconsider this architecture.