Small agencies rarely lose leads because of their service. They lose them on speed and on follow-up. Most of them can’t justify a paid CRM, but they all have Gmail and a spreadsheet. So I built the whole follow-up loop in n8n on top of one Google Sheet (tabs Leads / Listings / Viewings), with Gmail and Google Calendar, no AI and no external API.
What it does
- Instant lead response: a webhook takes any form payload, normalizes the field names, scores the lead 0-100 (phone, timeline, budget, listing reference, financing keywords), upserts the row and replies in seconds depending on intent (buy / sell / rent). Hot leads trigger an alert to the agent.
- Follow-up sequence: weekdays at 9am, day 1 / 3 / 7 / 14 emails per intent. It stops on Replied, Viewing booked, Unsubscribed and similar statuses.
- New listing alerts: matches new listings to buyers (budget with a tolerance, areas, bedrooms, type, sale or rent), sends one digest per buyer and never alerts twice.
- Viewing booking: checks opening hours, minimum notice and Google Calendar free/busy (with a travel buffer). If the slot is busy, it sends the 3 closest free slots. Reminders go out 24h before.
- Weekly seller report: enquiries, viewings, visitor ratings and comments, plus a simple recommendation, in one email per seller.
What took real work
- Calendar ID: in ID mode, the Google Calendar node rejects
primary; it needs the account’s email address. A live test caught it, and a regression test now covers it. - Testing scheduled, Google-heavy workflows: every workflow runs on a real n8n 2.41 instance. In tests, Google nodes are swapped for HTTP calls to a mock server that keeps calendar state. A demo-data seeder dates its rows relative to today, so every schedule has something to do.
- Webhook timing: after activation, the webhook registers asynchronously (about 1 s), so the tests wait for it instead of failing at random.
The follow-up sequence is free, in English and French: Free n8n Template: Real Estate Lead Follow-up Sequence. The full kit is on Gumroad if you’d rather not rebuild it.
Question: how do you handle a lead who answers from a different email address than the one on the form? I match on email, so they become a new row. Matching on phone number feels fragile.
