Quick overview
This workflow receives property enquiries via webhook, uses OpenAI to extract intent and score readiness, matches the brief against properties in Google Sheets, and then routes outcomes to Google Calendar, WhatsApp, HubSpot, Slack, and an enquiry log spreadsheet.
How it works
- Receives a property enquiry via a POST webhook that is locked with Header Auth, so a request without your header is refused.
- Normalizes the payload (name, email, E.164 phone, message, and extra fields) and uses OpenAI to extract requirements like budget, bedrooms, areas, finance/chain status, and a readiness score, with a manual-review fallback if AI fails.
- Reads available properties from Google Sheets and scores each listing against the extracted brief to select up to three best matches and set a verdict (VIEWING, NURTURE, WATCH, or UNSCORED).
- If the verdict is VIEWING, checks availability in Google Calendar for the next week, proposes two free viewing slots within working hours, and creates a tentative calendar event for the top-matched property.
- If enabled and a phone number is present, sends the proposed viewing slots to the applicant using a WhatsApp Business template message.
- Upserts the applicant as a contact in HubSpot with the enquiry details, readiness score, verdict, summary, and matched property references.
- Posts a formatted summary to a Slack channel and appends the enquiry record to a Google Sheets log.
Setup
- Add credentials for OpenAI, Google Sheets (OAuth2), Google Calendar, HubSpot (app token), Slack (access token), and WhatsApp Business Cloud. On the New Property Enquiry webhook, also create a Header Auth credential: pick a header name such as x-enquiry-key and a long random value, and keep both.
- In Agency Settings, fill in your agency description, thresholds, default country code, Slack channel, Google Sheet ID and tab names, viewing calendar ID, working hours, viewing duration, HubSpot portal ID, and WhatsApp phone number ID/template details.
- Create and populate the Google Sheets tabs for “Available properties” (with fields like reference, address, postcode, price, bedrooms, property_type, listing_type, status, and url) and “Enquiries” (with columns matching the log step).
- In HubSpot, create the custom contact properties used by the workflow (applicant_readiness_score, applicant_verdict, applicant_summary, and matched_property_references).
- Copy the webhook URL into your website form or portal integration and make it send your header with every post, because the webhook refuses anything without it. Send a test enquiry, then optionally set sendWhatsAppAutomatically to true once you are happy with the WhatsApp messaging behavior.
Requirements
- n8n 2.22.0 or later, because the Slack node in the file needs that version.
- A website form, form tool or portal feed that can add a custom header to its POST.
- Accounts for OpenAI, Google Sheets and Calendar, HubSpot, Slack, and WhatsApp Business Cloud with an approved message template.
Additional info
This workflow is free. Import it straight from this page into your own n8n.
Before you set it up, read what loses you the viewing, the parts that break and the running cost: https://fractionalhq.uk/use-cases/estate-agent-enquiries
If you would rather not set it up yourself, I can set it up for you on your own n8n account for $29. Tell me what you use at https://fractionalhq.uk/brief and I will reply with what I need from you before any work starts.