Real Estate Software & CMS for Agents with OpenImmo Import / Export
The post has arrived: leads, an invisible captcha and a dress rehearsal

The post has arrived: leads, an invisible captcha and a dress rehearsal

· Features

crm feature leads web

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.

The post has arrived — the mail room gets its first assignments

The post has arrived — the mail room gets its first assignments

New, contacted, qualified — every inquiry moves through the slots

New, contacted, qualified — every inquiry moves through the slots

The human notices nothing, the robot computes itself tired

The human notices nothing, the robot computes itself tired

The lead becomes a customer — the history stays glued in

The lead becomes a customer — the history stays glued in

Back to the overview

Newly Added

Newly listed properties appear here first. This way, you can see the latest additions from any page without having to switch to the overview. One click opens the property's full listing with all details, photos and its location on the map. You'll find the complete list under "All Properties".

House for rent

01723 Wilsdruff

Object no.:
MI-062
Base rent:
1,850 EUR
Rent per m²:
12.01 EUR
Living area:
154 m²
Rooms:
5.0

Detached house for rent in Wilsdruff: 154 m², heat pump, garden, two parking spaces

House for rent

01217 Dresden

Object no.:
MI-061
Base rent:
1,520 EUR
Rent per m²:
14.07 EUR
Living area:
108 m²
Rooms:
4.0

End-of-terrace house for rent in Dresden-Mockritz: 108 m², first occupancy, garden

Apartment for sale

01309 Dresden

Object no.:
MI-060
Purchase price:
598,000 EUR
Purchase price per m²:
4,397.06 EUR
Living area:
136 m²
Rooms:
4.0

New-build maisonette for sale in Dresden-Striesen: 136 m², KfW 40, first occupancy

House for sale

01067 Dresden

Object no.:
MI-059
Purchase price:
1,450,000 EUR
Purchase price per m²:
7,250 EUR
Living area:
200 m²
Rooms:
7.0

Listed town villa for sale in Dresden-Innenstadt: 200 m², 620 m² garden

House for rent

01156 Dresden

Object no.:
MI-058
Base rent:
1,480 EUR
Rent per m²:
11.94 EUR
Living area:
124 m²
Rooms:
5.0

Semi-detached house for rent in Dresden-Cossebaude: 124 m², garden, garage

House for rent

01156 Dresden

Object no.:
MI-057
Base rent:
1,050 EUR
Rent per m²:
11.05 EUR
Living area:
95 m²
Rooms:
3.0

Small detached house for rent in Dresden-Cossebaude: 95 m², garden, garage

    Contact Us

    Software Entwicklung Sieg
    Rhönweg 5 
    01159 Dresden

    info@ses-realestate.com

    Useful Links

    Our Partners


    Please note: All properties on this site are fictitious. Addresses, prices, floor areas and energy data do not describe any actual properties, enquiries are not processed and no contract is concluded. What you see is our software's interface in action: search, listing pages, shortlist and map work exactly as they will later with real properties.
    ©2026 SES Software Entwicklung Sieg