SwiftAppLab logo SwiftAppLab Dashboard login

YELP LEAD AI

Stop paying for Yelp leads that were never going to book.

Every Request-a-Quote lead costs you real money in Yelp ad spend — typically $45–$120 a lead — including the spam, the out-of-area jobs, and the ones asking for work you don't do. Yelp Lead AI reads every lead, replies to the real ones in under 60 seconds, and filters out the rest.

<60saverage reply time
$45-120typical Yelp ad cost per lead, per trade
2 minto get set up, no Zapier required

HOW IT WORKS

Three steps, no new inbox to check.

1. Lead comes in

Forward the Yelp notification email, or connect Zapier — either way, we see the lead the moment it lands.

2. AI reads it

We check it against your service area, the jobs you do (and don't), and typical spam patterns — then draft a reply that actually answers the question.

3. You get the good ones

On Instant, we text you the drafted reply and post it to the Yelp thread the moment you reply SEND — a human always signs off before it goes out, per Yelp's own rules. On Lite, you paste it in yourself. Ask your dashboard agent to switch to fully automatic if you'd rather skip the SEND step. Junk leads get filtered out before anyone on your team spends a minute on them.

NOT A FILTER — AN EMPLOYEE

Talk to it like you'd talk to your front desk.

Your dashboard comes with a live specialist who knows your numbers and your leads. Ask it "why did you skip that lead yesterday?" or "how much have you saved me this month?" — it answers from your real data. Tell it "stop taking gate repair jobs" and it updates its own rules on the spot, remembers, and applies it to every lead after that.

BUILT FOR HOME-SERVICE BUSINESSES

Garage doors, plumbing, HVAC, electrical, locksmiths — any trade on Yelp.

Pick the onramp that fits how you work: forward an email, or connect Zapier. Either way, there's nothing to migrate and no new inbox to check. See the specifics for your trade:

Garage Door Repair Plumbing HVAC Electrical Locksmith Roofing Moving Tree Service Pest Control Landscaping Painting Flooring

Plus 13 more trades — calculate what junk leads cost your business or read our guides on responding to Yelp leads faster.

PRICING

One extra booked job covers the year.

Lite
$79/mo

No Zapier — forward Yelp's lead emails to us and we text you the drafted reply to paste in yourself. Working in 2 minutes.

Start free trial

14 days free on either plan, card required. Cancel anytime from your dashboard. Prefer white-glove setup? Talk to a human.

Coming from an AI phone receptionist? See how we compare to Rosie, Smith.ai, and others — we don't answer calls, we're built just for Yelp leads.

INSTANT PLAN SETUP

Connecting Zapier, step by step.

  1. Trigger — Yelp Leads: New Lead. Connect your Yelp Business account inside Zapier.
  2. Action — Webhooks by Zapier: Custom Request. Method POST, URL is the personalized ingest link from your onboarding page. Map fields: consumer name → consumerName, phone → consumerPhone, the project/request text → rawRequestText, location → zip, and — important — the trigger's own lead identifier (labeled something like Id or Lead Id in the New Lead step's output) → yelpLeadId. That last one is what lets the optional Zaps below post into the right Yelp thread later.
  3. Filter — Only continue if... the Custom Request step's qualified field (Boolean) is true.
  4. Action — Yelp Leads: Create Message. Lead = the New Lead trigger's own Lead field (Zapier already has it from step 1, same Zap run). Message = the Custom Request step's reply_text.

4 steps, no Twilio account needed — we text you the lead summary ourselves the moment it comes in. New accounts default to "approve" reply mode (a human signs off on every reply before it posts, per Yelp's own Leads Agreement), which means this Zap's Filter step won't fire on qualified leads yet — you also need Zap #2 below to actually post them once you've replied SEND. Told your dashboard agent to switch you to "auto" mode instead? Then this Zap alone is all you need.

ZAP #2 — NEEDED FOR APPROVE MODE (the default)

Posting a reply once you've approved it by text.

Every qualified reply texts you first: "Reply SEND to post it, or SKIP to let it go." This Zap is what actually posts it once you've said SEND — it needs the same yelpLeadId captured in Zap #1's mapping above.

  1. Trigger — Schedule by Zapier. Every 5-10 minutes is reasonable — this Zap is what posts your approved replies, so don't leave it too sparse.
  2. Action — Webhooks by Zapier: GET. URL: https://swiftapplab.com/api/leads/pending-approved-replies?token=<your webhook token>. Returns a replies array — empty until you've texted back SEND on a lead.
  3. Action — Looping by Zapier. Values to loop: the replies array from the step above.
  4. Action (inside the loop) — Yelp Leads: Create Message. Lead = the loop item's yelpLeadId. Message = the loop item's reply_text.
  5. Action (inside the loop) — Webhooks by Zapier: POST. URL: https://swiftapplab.com/api/leads/pending-approved-replies/mark-sent?token=<your webhook token>. Body: {"leadId": "<loop item's leadId>"}. Stops the same reply from posting twice.

Skip this Zap entirely if you've asked your dashboard agent to switch you to "auto" mode — replies post straight from Zap #1 with no review step.

OPTIONAL ZAP #3

Automated follow-up touches on leads that go quiet.

This is a separate Zap, since it runs on its own schedule rather than reacting to a new lead. It needs your ingest link's yelpLeadId to be captured above — without that, there's no way for this Zap to know which Yelp thread to post into.

  1. Trigger — Schedule by Zapier. Every 15-30 minutes is reasonable.
  2. Action — Webhooks by Zapier: GET. URL: https://swiftapplab.com/api/leads/pending-followups?token=<your webhook token>. This returns a followups array — usually empty, occasionally one or two items.
  3. Action — Looping by Zapier. Values to loop: the followups array from the step above. Everything after this runs once per item in the array.
  4. Action (inside the loop) — Yelp Leads: Create Message. Lead = the loop item's yelpLeadId. Message = the loop item's followup_text.
  5. Action (inside the loop) — Webhooks by Zapier: POST. URL: https://swiftapplab.com/api/leads/pending-followups/mark-sent?token=<your webhook token>. Body: {"leadId": "<loop item's leadId>", "index": <loop item's index>}. This is what stops the same touch from going out twice.

Default sequence is 3 touches (~45 min, ~4 hours, ~next day) — adjustable by telling your agent on the dashboard, e.g. "only follow up once" or "stop following up."

OPTIONAL ZAP #4

Stop following up the moment they actually reply.

  1. Trigger — Yelp Leads: New Consumer Message. Fires whenever a consumer sends a new message on an existing lead.
  2. Action — Webhooks by Zapier: POST. URL: https://swiftapplab.com/api/leads/consumer-replied?token=<your webhook token>. Body: {"yelpLeadId": "<the trigger's Lead Id field>"} — map the consumer's phone number too as a fallback if you're not sure which field carries the lead id.

Optional: turned on "politely decline junk" (badge-protection mode) in your dashboard? Change the Filter step in Zap #1 to check shouldRespond instead of qualified so declines post too — just know a decline still counts as a response in Yelp's eyes, so it's for protecting your response badge, not for saving lead spend.

Zapier's exact field labels can shift between app versions — if a name above doesn't match what you see, look for the closest match (Zapier lets you inspect a sample payload from each trigger while building the Zap) or ask us and we'll walk through it with you.