The post has arrived: leads, an invisible captcha and a dress rehearsal
The last workshop report ended with the sentence that the mail room — the e-mail dispatch of the estate agent software — was waiting for post. It did not have to wait long. Since this week, inquiries from the website arrive as leads in the CRM — and quite a lot happened on the way there: a new section in the contacts document, a contact form with rediscovered virtues, a captcha nobody sees any more, and a dress rehearsal for the architecture.
Leads: prospects are not contacts yet
Someone interested in a property is not a customer yet. They have a name, an e-mail address, perhaps a phone number — and a concern. Precisely for that there is now a third section in the contacts document: leads. On the left a fixed tree with the stages of the pipeline — new, contacted, qualified, converted, rejected — on the right the list, and every lead carries the symbol of its stage so you see the state at a glance.
Two decisions shape the section. First: leads are not an appendix of the contacts but a kind of data of their own. The contact stock stays clean, while the fields are deliberately named exactly as in the contact — because, second, there is the conversion: one click turns the lead into a real contact, with a customer number, an address and, if a company was named, the matching company assignment right away — existing companies are recognised instead of duplicated. The lead itself does not disappear: it remains as a frozen history of the original inquiry, with a reference to the contact created. Whoever wants to know later which route brought a customer into the house will find the answer.
And because a prospect rarely gets in touch only once, every lead collects its inquiries as a list. Whoever is interested in three properties is one lead with three inquiries — not three dead files. Duplicate protection sees to that: the e-mail address is the key, and a second inquiry from the same sender attaches itself as a further inquiry to the existing lead.
The form: old virtues, new technology
The first lead source is the contact form of the exposé — and its model is the form of our old website, which proved itself over years. On the move into the new world a few of its virtues had been lost; they are back now: viewing requested as a checkbox, send a copy by e-mail for the prospect, and remember contact details — whoever inquires more often finds their data prefilled next time, stored exclusively in their own browser.
Only on the security code did we deviate from the model, and upwards at that. The old form had a charming detail: the captcha image only loaded once you touched the field — it never destroyed the design. We thought that idea through to the end: the new captcha is completely invisible. While the visitor types, their browser fetches a small computing task from our own server in the background and solves it on the side. A human notices nothing of it; a spam robot that wants to submit a thousand forms a minute would have to compute a thousand times — and that is exactly what ruins its business. No image puzzle, no clicking on traffic lights, no third-party service. This is complemented by the quiet guards that already existed: an invisible trap field and a minimum fill-in time.
The feedback follows the model too: after submitting, the visitor lands back on the exposé page, and there stands the confirmation — or the error message — as a proper message in the design of the website, not as a foreign body in the form.
The dress rehearsal: modules that do not know each other
Behind the scenes this step was a test for the architecture. Properties live in the estates module, leads in the CRM — and the two do not know each other. Nevertheless an inquiry from the exposé has to arrive in the CRM with all the property data and trigger two e-mails there. The solution: the estates module resolves its property data itself and hands it over as placeholder values — the CRM stores the lead, renders the templates and never has to know what a property is. It knows only keys and values.
That means dispatch also runs through the full mail room: the agent gets their notification from a template the tenant can freely redesign, sent through the sender account set on the component — and if they reply to the mail, the answer lands directly with the prospect. If the prospect wants a copy, they get it from a second template. And of course both mails afterwards stand in the archive.
Why the effort? Because lead sources can be anywhere. The next form, a portal, another channel — each can take the same route without the CRM being touched. That is what the dress rehearsal was meant to prove, and it proved it.
Two finds from the workshop
The first was delivered by the dress rehearsal itself: the recipient address of the test property did not exist at all, the mail server refused. And the system did exactly the right thing — the lead stood in the CRM regardless, and in the archive lay the rejected mail as a red line with the original error text. The prospect gets their confirmation, the operator sees the problem, nothing is lost. Two days ago that archive was still a new feature; today it solved its first case.
The second find was subtler. On the first attempt lead and mail did arrive — but invisibly. The reason: inquiries from the website run technically under a service account, and the system dutifully stamped the new rows with that account's tenant instead of the website's. A classic of multi-tenancy: not who writes is the owner, but for whom it is written. Since the fix, web inquiries belong to the tenant of the website — backed by a test that reproduces exactly this trap so that it never snaps shut again.
The balance
The chain stands: a visitor inquires on the exposé, the lead appears in the CRM at the same moment, the agent has the notification in their mailbox, the archive has the evidence — and one click turns the lead into a customer without the history of their inquiry being lost. Everything delivered complete as usual: data model, server, desktop client and website, the tests green.
What comes next is obvious: if the inquiries are already in the house, you want to answer them from there — and put tasks and appointments beside them. The mail room has received post. Now it learns to write back.