Work / Lead & Sales / 04 · Home services & construction
Google Local Services Ads Lead Responder
Home services
Delivered — figures counted directly from the exported workflow JSON
The problem
Contractors lose paid Local Services leads for one reason: nobody replies fast enough.
The lead is already bought and already interested. Every minute it sits unanswered, the customer works down the list Google gave them.
How it runs
-
Poll
01 / 06 two schedules, two rates
New leads are pulled from the Google Ads API every fifteen minutes, and live conversations every five.
-
Read the conversation
02 / 06
Each lead is tracked by its ID and its last-answered message, so no message is ever answered twice.
-
Build real slots
03 / 06 Workflow 1 of 4 · Active Leads · 30 nodes
The next seven days come from Housecall Pro and become two-hour slots inside working hours, with weekends and booked times removed.
-
Draft the reply
04 / 06 four Gemini nodes
Google Gemini drafts the reply and reads the customer’s intent, choosing only from slots the CRM confirmed.
-
Send inside Google’s thread
05 / 06 the only route Google leaves open
Google exposes these conversations as read-only data, so a Skyvern browser agent signs in and sends the reply the way a person would.
-
Commit, then book
06 / 06
A job is created only when the time, the booking, the address and the technician are all confirmed.
anything missing → no job
The four workflows, as exported
Every node with its icon, as on the n8n canvasstarts a runHover a node for its type
-
01Active Leads
30 nodes · 30 connections · 2 notes · live
the main responder: conversation state, availability, booking
-
02New Leads
13 nodes · 13 connections · 1 note · live
the first reply to a lead nobody has answered yet
-
03Trigger For New Leads
8 nodes · 8 connections · 1 note · standby
polls every 15 minutes
-
04Trigger For Active Leads
7 nodes · 7 connections · 1 note · standby
polls every 5 minutes
58 executing nodes, by type
The gates, 10 If nodes, decide whether anything happens next: a countable part of the system, not a claim about it. 63 objects on the canvas = 58 executing nodes + 5 sticky notes.
The guards, and what each one prevents
HoverTap a card to read what it prevents.
- Availability is real, not claimed
The agent cannot offer a slot that does not exist: it only ever chooses from slots the field-service CRM confirmed.
- Four confirmations before a booking
Time confirmed, booking accepted, address given, technician agreed — all four, or nothing is created. An enthusiastic model cannot produce a job on its own.
- No message answered twice
On a five-minute poll against a conversation, that is the difference between a responsive business and one that appears to be malfunctioning.
- Replies stay in the official thread
Replies sent elsewhere do not count towards the LSA response-time metric — the number the whole system exists to move.
- Two poll rates, not one
A customer who has just replied is mid-conversation, so live threads are checked three times as often as new leads: a fifteen-minute gap there reads as being ignored.
- The guards are in the gates, not the prose
Ten if nodes against four model calls. The prompts carry a note inviting the client to edit the tone; nothing they write there can book a job.
Limits, stated plainly
- Sending depends on browser automation, because Google leaves no API route for replies. An interface change can break sending in a way an API contract would not.
- Two of the four workflows are schedule triggers held on standby: the responders can also be driven directly.
- Endpoint paths, credentials and access details are deliberately absent: this is a client’s live production system.
Built with
- n8n
- Google Ads
- Google Gemini
- Skyvern
- Housecall Pro
- Google Sheets