Bharat AI Saathi
ServicesIndustriesSetupsHow we workGuidesFounderVPS HostingContactGlobal (USD)
WhatsApp +91 77352 68199
support@bharataisaathi.com
Mon–Sat 10:00–19:00 IST
Voice & Chat Agents · Global catalog

Real estate lead sheet: from portal export to WhatsApp reply

Set up a real estate lead sheet with the right columns, dedupe rules and an automation that messages each new row on WhatsApp.

Voice & Chat Agents

A real estate lead sheet works when every portal, ad and website enquiry lands as one row with the same columns, and a new row triggers a WhatsApp message to the buyer. This guide gives you the column layout, the dedupe rule, the webhook payload and the step-by-step automation, plus the failure cases that show up once real leads start arriving.

Build your lead form free

Columns your lead sheet needs

Most brokerage sheets grow one column at a time until nobody trusts them. Start with a fixed set and treat the first eight as required. Automation can only act on a row it can parse.

Column Example Filled by
lead_id L-20261031-0042 Sheet formula or automation
received_at 2026-10-31 09:14 Automation (UTC, convert for display)
source portal, meta_ad, website, walk_in Import step or hidden field
listing_ref the portal's reference for the property Portal export or form hidden field
name Khalid Al Mansoori Lead
phone_e164 +971501234567 Normalized by automation
language ar or en Detected on first reply
consent yes, with timestamp Form checkbox or portal terms
purpose own use or investment Bot, question 1
budget_range free text or band Bot, question 2
area_or_bedrooms Marina, 2 BR Bot, question 3
timeline within 3 months Bot, question 4
status new, contacted, qualified, viewing, handed_off, lost Automation, then agent
assigned_agent agent email Routing rule
first_reply_at timestamp Automation
viewing_at timestamp Bot or agent

Keep names, notes and free text on the right side of the sheet. Keep anything an automation reads or writes on the left, and never rename those headers once a scenario depends on them.

Where portal exports break the sheet

Portal leads reach you as emails, CSV downloads or CRM pushes, and each format has its own habits. The same buyer can enquire on two listings in one afternoon, so you get two rows with the same phone number. Phone numbers arrive as 0501234567, +971 50 123 4567 or 00971501234567. Arabic names sometimes arrive reversed or split across columns, depending on the exporrt.

Three rules fix most of it:

  1. Normalize every phone to E.164 before the row is written. If a number has no country code, assume the market the portal serves and flag it.
  2. Use phone_e164 + listing_ref as the dedupe key. A repeat enquiry on the same listing updates the existing row. An enquiry on a different listing adds a row but does not trigger a second opening message within the same conversation.
  3. Never overwrite status from an import. Imports add rows and fill empty cells, nothing more.

Step by step: new row to WhatsApp reply

This is the flow we build into the Dubai Real Estate WhatsApp Bot, reduced to what a sheet-based team can wire up with Make, Zapier or n8n.

  1. Create two tabs. Leads holds the columns above. Log holds one row per message sent or received, with lead_id, direction, timestamp and text. The Log tab is what you will read when a buyer says nobody replied.
  2. Set up intake. Portal leads come in by parsing the notification email or importing the CSV on a schedule. Website and ad leads come from a form that sends a webhook. Both paths end in the same step: normalize, dedupe, write the row.
  3. Check consent. If consent is empty, route the row to a human instead of messaging. Write the reason into status.
  4. Trigger on a new row. The automation watches for rows where status = new and first_reply_at is empty, then posts the payload below to the bot.
  5. Send the opening message. The first message to a buyer who has not messaged you in the last 24 hours has to be an approved WhatsApp template. Write it in both Arabic and English and pick by the language hint if you have one, otherwise send the bilingual version.
  6. Qualify. The bot asks four short questions and writes each answer back to the matching column. A buyer who replies with a voice note gets it transcribed first, and the transcript goes in the Log tab.
  7. Write back. Set first_reply_at the moment the template is accepted by WhatsApp, not when the automation starts. Set status = contacted, then qualified when all four answers are in.
  8. Hand off. When a buyer asks for a viewing, or asks something the bot should not answer, set status = handed_off, fill assigned_agent and notify the agent with the row link and the last five messages.

The payload that starts the conversation

Keep the payload flat and small. The bot does not need your whole sheet, only what it needs to greet the buyer and know which property they asked about.

{
  "lead_id": "L-20261031-0042",
  "source": "portal",
  "listing_ref": "MRN-2BR-1187",
  "name": "Khalid Al Mansoori",
  "phone_e164": "+971501234567",
  "language_hint": "ar",
  "consent": { "given": true, "at": "2026-10-31T05:14:02Z" },
  "received_at": "2026-10-31T05:14:02Z"
}

The automation should treat a non-2xx response as a failure and retry with the same lead_id. The bot should treat a repeated lead_id as a no-op. Without that pair of rules, a retry sends the buyer the same greeting twice.

Routing map

Once a row is qualified, who gets it is a lookup, not a judgment call. Put the rules in a third tab so a sales manager can edit them without opening the automation.

If Then
source = meta_ad and area is off plan Assign to the off-plan desk, notify the desk channel
budget_range above your threshold Assign to a senior agent, mark priority high
language = ar Prefer an Arabic-speaking agent in the round robin
no agent answers within your set window Reassign and alert the team lead
timeline = just browsing Keep status qualified, send brochures, no agent alert

Capturing ad and website leads with a form

Portal leads arrive with their own structure. Ad and website leads are the ones you control, so a form is where you can get clean data on day one. We build Qwenvo, a free form builder, and it fits here because the features this flow needs are all on for every account: webhooks to any URL, hidden fields for source, listing_ref and UTM values, partial submissions so a buyer who gave a phone number and stopped still shows up, a custom domain on a subdomain like enquire.yourbrokerage.com, no badge, and teammates. Our form to Google Sheets guide covers the sheet side in more detail.

Be clear about one limit. Qwenvo's one-click Google Sheets connection is still being rolled out, so today you send the submission by webhook into Make, Zapier or n8n, which writes the row. Qwenvo is also hosted in the United States, so if your compliance team needs European hosting for buyer data, Tally is hosted in Europe.

Set up the form webhook

Failure cases and what to measure

The failures we see most often are boring ones:

  • Template not approved. The first message silently fails and the row says contacted. Only set first_reply_at from the delivery response.
  • Wrong country code. A number missing its prefix gets read as local to the wrong country. Flag any number that fails a length check.
  • Two scenarios, one row. An import and a webhook both write the same lead within seconds. The dedupe key has to be checked inside the same step that writes the row.
  • Sheet row limits and slow polling. If the automation polls the whole sheet every few minutes, it will get slow as the Leads tab grows. Archive closed leads monthly to a separate tab.
  • After hours. The bot should still reply, but the handoff should wait for the agent's morning with the viewing request already logged.

Track four numbers per source: the gap between received_at and first_reply_at, the share of leads that reach qualified, the share that book a viewing, and the share that go lost before any reply. Those four show whether a portal is worth its fee and whether the bot is helping or just adding noise.

Questions teams ask

Can I keep the sheet and still use a CRM later?

Yes. The columns above map onto a CRM's lead object, and lead_id becomes the external ID. Export the Leads tab as CSV when you move.

Do I need the WhatsApp Business Platform, or will the regular app do?

Automated first messages need the Business Platform, through a provider or directly. The regular app and the Business app are fine for agents typing replies, but they will not take a webhook from your sheet.

What if the buyer replies in Arabic, English or a voice note?

The bot should answer in the language the buyer used and transcribe voice notes before extracting answers. Store the transcript in the Log tab so an agent can check what the buyer said.

How many columns is too many?

If an automation does not read or write it, it probably belongs in notes. Keep the working set under about twenty columns and the sheet stays readable.

Next step

Open your current sheeet and add the five columns you are missing from the table above, starting with phone_e164, consent and first_reply_at. Then send yourself a test lead through the webhook and check that a single row appears, with a timestamp, before anything messages a real buyer.

This system

Dubai Real Estate WhatsApp Bot

$1,500 setup
+ $299/month care plan

Third-party platform and model usage billed to you directly. No lock-in. Live in 10 days.

More on Dubai Real Estate WhatsApp Bot