A website enquiry, end to end
Someone with no account submits a form on the JBRH site. There is no session and no workspace to resolve, so the submission is stored on the control plane rather than inside a tenant. The operator answers it from JBRH's own workspace, and only if it becomes a real relationship does a Person get created — in that workspace, not in anybody else's.
The stage chain#
- Trigger — a visitor to the public site fills in the enquiry form. They have no account, no session and no workspace.
- External event — the submission reaches the intake endpoint, which is a public route by necessity: the person submitting it cannot authenticate.
- Authentication and workspace resolution — the decisive stage, and the one that resolves to nothing. There is no workspace to attribute this to, and inventing one would mean deciding whose customer a stranger is.
- Ingest — the submission is validated and written to
connect_inquiries, a control-plane table that deliberately sits outside every workspace.connect_intakeowns that path. - Canonical record — none yet. The enquiry is not a Person, not a Lead and not a Prospect in any workspace; it is a message addressed to the operator of the platform.
- Classification and reasoning — the operator reads it and decides what it is: a product question, a sales conversation, or noise.
- Knowledge, memory and rules — anything answered is grounded in JBRH's own Knowledge, under the same rule every workspace has: a price or a term that Knowledge does not support is refused rather than invented.
- Autonomy and approval — the operator's own autonomy rules apply to the reply, exactly as a customer's rules apply to theirs. There is no special path because the sender came from a form.
- Action and provider — the answer goes out from a JBRH mailbox through the same send boundary as any other message.
- Result — the provider's acknowledgement decides whether it counts as sent; until then the state is uncertain rather than delivered.
- Relationship, timeline and memory — if the enquiry becomes a conversation worth keeping, a Person and Company are created in JBRH's workspace and everything ordinary applies from there: identities, timeline, follow-ups with reasons, a deal if it becomes one. The enquiry row stays where it was written.
- Audit and usage — the decision and the send are attributed and metered in the workspace that made them.
The stage that decides the rest#
Stage three is the whole design. Every scoped record in Connect belongs to exactly one workspace, and three independent layers enforce it: the allowlist in the middleware that decides which routes a customer session may reach, the workspace kernel that scopes every query, and PostgreSQL row-level security under both. A submission from a stranger has no workspace to be stamped with, so the only correct home for it is outside the scoped world entirely.
What each audience sees#
| Stage | The operator sees | A customer sees |
|---|---|---|
| Submission | A new enquiry on the control plane | Nothing — it was never addressed to them |
| Answer | An ordinary reply from a JBRH mailbox | Nothing |
| Becomes a relationship | A Person and Company in JBRH's workspace | Nothing |
| Their own website forms | Nothing | Conversations and people in their own workspace, as normal |
That last row is the one customers actually care about. Enquiries arriving at *your* business — through your mailboxes, your phone line, your WhatsApp number, your own forms — reach your workspace and behave like every other inbound message. Nothing about this flow removes anything from you; it describes records that were never yours to begin with.
What can fail#
- The form is submitted twice
- Two enquiries exist. They are deduplicated by a person reading them, not by a rule that might merge two different people with the same question.
- A customer goes looking for one
- They find nothing, and the absence is correct. A website enquiry is not in my workspace explains the shape of what they are seeing.
- An enquiry is never read
- Nothing chases it on its own: it is not a follow-up and it has no due time until somebody makes one.
- The reply cannot be grounded
- It is refused and escalated like any other ungrounded commercial question, because the operator's workspace runs by the same rules it ships.
Questions#
Why is a public form allowed to write anything at all?
Because the sender cannot authenticate — that is what a public enquiry is. The protection is not authentication but placement: the write lands on a control-plane table outside every workspace, so it cannot reach tenant data.
Does the enquiry become a lead in a workspace?
Only in JBRH's own workspace, and only when the operator creates the relationship. The enquiry row itself stays on the control plane, where it was addressed.
Do enquiries from my own website work this way?
No. Your forms, mailboxes and numbers deliver into your workspace, where the message resolves to a person and behaves like any other inbound conversation. This flow is specific to the public JBRH site.