Skip to main content

Lead details

A lead tells you things in more than one place. The form captures what it asks, such as budget and timeline. Later the same person may give a different budget on a phone call, say they are paying cash on WhatsApp, or move their timeline in an email reply. Lead details keep all of it for each lead, one entry per question:
  • the current answer, which is the most recent thing they said;
  • where they said it: the form, a phone call, a website chat, a text, a WhatsApp message or an email reply, with a reference to that conversation;
  • when they said it;
  • their exact words;
  • the earlier answers it replaced, newest first.
A second form submission no longer erases the first one’s answer, and something said on a call is kept as a field you can read.

What is recorded

From the form: every question your form asks. That is every column in your leads dataset’s declared contract that has no semantic role. Names, email, phone, consent, attribution columns (UTMs, click ids, the page) and the qualification fields are not answers, so they are not recorded as details. Each submission’s answers are recorded when it is captured. From conversations: calls, website chats, text and WhatsApp threads, and email replies linked to a lead. Erdo records only what the lead stated, in words that carry the value on their own: Their age, health and other sensitive traits are never recorded. Nor is a request such as “can I book a viewing?”: the timeline already shows it. Each detail from a conversation passes three checks before it is kept:
  1. The model reading the conversation is told to transcribe what the lead said, not to conclude anything from it.
  2. Code confirms the quoted words appear in one of the lead’s own messages, and that every number in the value appears in the quote.
  3. A second, separate check reads only the quote and the question it answers, and confirms the quote actually states that answer.
A detail that fails any check is dropped. Missing a detail is preferred to recording a wrong one. Conversations are read once they have finished. A text or WhatsApp thread is read after half an hour without messages, and again when the lead writes more. Test leads are skipped.

Questions and keys

Each question has a key, such as budget or move_in_timeline, a label and a one-sentence definition. A form column’s key is its name. When a lead answers a question your form asks, the conversation’s answer uses the form’s key, so both answers sit under the same question. A new question gets a new key, and later conversations reuse it.

Reading details

Details are part of every lead read:
  • REST: GET /v1/datasets/{dataset}/leads/{lead} returns lead.details.
  • MCP: erdo_get_lead returns the same.
  • CLI: erdo leads get <dataset> <lead> prints a what they told us table first.
source_kind is form, phone_call, widget_conversation, sms, whatsapp or email_reply. For a form answer, source_ref is the capture it came from. It is row for an answer read from a lead captured before lead details existed. Those older leads keep only the answer their row held when details were turned on. Any answer a later submission had already overwritten cannot be recovered.

Merging leads

When two leads are merged (see Lead identity), the absorbed lead’s details move to the survivor. The most recent answer to each question across both becomes current. The merge response’s details_moved says how many moved.

What details do not change

Details sit beside the lead’s dataset row and never rewrite it. Dashboards, queries and notifications keep reading the row. The typed qualification fields a form captures are unchanged as well. A budget stated on a call does not change a lead’s qualification status.