The AI Trades
Call & Lead Handling

Angi Lead Instant Reply (Webhook + AI SMS)

No-Code Flow 1 hour
AngiZapierTwilioChatGPTSlack

The Problem

Angi leads cost $50-300 each and fan out to 3-5 contractors simultaneously. Angi has no native Zapier trigger and no reply-back API, so most contractors check email every few hours and lose most of their leads to faster competitors. This recipe uses Angi's free direct webhook (you email crmintegrations@angi.com to turn it on) to push leads straight into a Zapier Catch Hook. From there, ChatGPT generates a personalized SMS using the project survey details and Twilio fires it to the customer's phone in under 30 seconds. The reply goes through your own Twilio number, not through Angi, so you also need to forward inbound Twilio SMS into Slack so the CSR sees the customer's replies.

How It Works

Input

New Angi or HomeAdvisor lead pushed to a Zapier Catch Hook (direct webhook from Angi)

Transformation

Zapier parses the webhook JSON, filters for SMS consent, ChatGPT generates a personalized SMS using the survey details, Twilio delivers it to the customer, and Slack alerts the CSR in parallel.

Output

Customer receives a personalized SMS in 15-30 seconds referencing their specific job. CSR alerted in Slack with full lead context. 2-3x booking rate at the same lead spend.

ReplacesAngi autoresponder services ($79-150/mo)

Importable Templates

ZapierWebhooks by Zapier (Catch Hook)Send SMS via Twilio from webhook

PRD

# Product Requirements Document

Recipe 112 — Angi Lead Instant Reply (Webhook + AI SMS)

THE AI TRADES Platform

---

Recipe Slug: `angi-lead-instant-reply`

Recipe Number: 112

Rank: 112 | Tier: 2

Difficulty: No-Code Flow

Time Estimate: 1 hour

Category: Call & Lead Handling

Software: Angi, Zapier, Twilio, ChatGPT

Roles: CSR, Owner

Trades: All

Principles: Speed Wins the Job

---

1. Recipe Overview

Angi leads cost $50-300 each. Most Angi leads also go to 3-5 other contractors at the same time. The ones that book are almost always the ones that responded in under 5 minutes.

Angi does not have a native Zapier trigger app and they do not offer a reply-back API. What they do offer is a direct webhook that pushes every lead to a URL you control the instant it comes in. This recipe wires that webhook into Zapier, generates an AI-written SMS through ChatGPT, and fires it to the customer's phone via Twilio. End-to-end in under 30 seconds.

Input: New Angi lead pushed to a Zapier Catch Hook webhook

Transformation: Zapier parses the payload, ChatGPT generates a personalized SMS, Twilio sends it to the customer's opted-in phone number. A parallel branch alerts the CSR in Slack.

Output: Customer receives a personalized SMS within 30 seconds referencing their specific job. 2-3x the normal Angi booking rate at the same lead spend.

---

2. The Problem

Angi Sends Leads Faster Than You Can See Them

Angi pushes the same lead to multiple contractors simultaneously. The homeowner is usually on the phone with the first contractor who responds, which means every minute you wait is a minute you are losing the lead.

The Angi lead-routing reality:

  • Angi Ads and HomeAdvisor leads fan out to 3-5 contractors per lead
  • Lead cost: $50-$300 depending on trade and market
  • Many contractors treat Angi as email-only and check it every few hours
  • First-response wins the job 78% of the time
  • By the time you drive out, read the email, and call back, the customer has booked with someone else

Why Zapier alone does not fix this:

There is no native Angi trigger app on Zapier. If you try to use the Gmail "new email" trigger to watch for Angi notifications, polling delay is 1-15 minutes. By then, the lead is cold. You need a push webhook, not email polling.

---

3. The Solution

Use Angi's direct webhook feature (free, available to any Angi Ads or HomeAdvisor customer) to push leads straight to a Zapier Catch Hook. From there:

1. Zapier Catch Hook receives the Angi JSON payload the instant it is sent

2. Formatter extracts customer name, phone, service type, ZIP, and consent flags

3. Filter checks for SMS consent (Angi payload includes an opt-in flag)

4. ChatGPT generates a personalized SMS using the lead details and your business brief

5. Twilio sends the SMS to the customer

6. Slack alerts your CSR in parallel with full lead context

Total time from lead arrival to SMS delivery: 15-30 seconds.

Expected results:

MetricBefore (manual)After (automated)
Average response time30-60 minUnder 30 sec
Lead-to-booking rate12-18%30-40%
Cost per booked job (at $150/lead)$830-$1,250$375-$500
CSR manual touches per lead5-101 (the actual call)

---

4. Prerequisites

RequirementDetailsCost
Angi Ads or HomeAdvisor accountActive lead buyerExisting
Angi account number (SPID)Found in your Angi dashboardFree
Zapier accountStarter plan is fine for this single Zap$19.99/mo
Twilio accountSMS-enabled number. A2P 10DLC registered.$1/mo + $0.0079/msg
OpenAI API keyGPT-4o-mini is sufficient~$0.0002 per reply
Slack workspace (optional)For CSR alertsFree

A2P 10DLC warning: Twilio outbound SMS to US consumers requires A2P 10DLC registration. Unregistered numbers get carrier-filtered and your texts never arrive. Registration takes 1-5 business days. Start this first.

---

5. Angi Webhook Setup

Angi does not have a self-serve webhook page. You have to email them to turn it on. The process is simple and free.

Step 1: Create a Zapier Catch Hook

1. In Zapier, create a new Zap

2. Choose Webhooks by Zapier as the trigger app

3. Select Catch Hook as the trigger event

4. Zapier generates a unique webhook URL. Copy it. It looks like:

```

https://hooks.zapier.com/hooks/catch/1234567/abcxyz/

```

Step 2: Email Angi to Enable the Webhook

Send the following to `crmintegrations@angi.com`:

```

Subject: Webhook integration request for account [YOUR SPID]

Hi Angi team,

Please enable webhook lead delivery for my account.

Account Number (SPID): [YOUR ANGI SPID]

Webhook URL: https://hooks.zapier.com/hooks/catch/1234567/abcxyz/

Format: JSON POST

Please confirm once configured and send a test lead so I can verify

the integration end to end.

Thanks,

[YOUR NAME]

[COMPANY NAME]

```

Turnaround is usually 1-3 business days. Angi will POST a test lead once they confirm. Run the Zapier trigger test at that moment to capture the real payload schema.

Step 3: Inspect the Payload

Once the test lead arrives, you will see the full JSON schema in Zapier. Key fields to map:

FieldDescription
`firstName`, `lastName`Customer name
`primaryPhone`, `secondaryPhone`Phone numbers (may include extensions)
`email`Customer email
`address`, `city`, `state`, `postalCode`Location
`taskName`, `comments`Service description
`matchType`Lead match quality
`feeAmount`What this lead cost you
`leadSource`e.g., "HomeAdvisor" or "Angi"
`spEntityId`, `companyName`Your company ID
`leadOid`Unique lead ID
`trustedFormUrl`TCPA compliance reference
`automatedContactCompliance`SMS consent flag
`interview`Array of Q&A pairs from the customer survey
`smsEnabled`Whether SMS is allowed for this lead

Note: Angi does NOT let you customize the payload schema. Your Zap has to accept what they send.

---

6. Zap Flow Setup

Step 1: Trigger — Webhooks by Zapier, Catch Hook

Already configured in Section 5.

Step 2: Filter — SMS Consent Check

1. Add a Filter by Zapier step

2. Condition: `smsEnabled` is true AND `primaryPhone` exists

3. Without this filter, you risk TCPA violations and carrier filtering

Step 3: Formatter — Clean Phone Number

1. Add a Formatter by Zapier step

2. Type: Numbers → Format Phone Number

3. Input: `primaryPhone`

4. Output format: E.164 (e.g., `+14155550100`)

Twilio requires E.164 formatted numbers.

Step 4: Action — ChatGPT Generate SMS

1. Add an OpenAI (GPT) action

2. Model: `gpt-4o-mini`

3. System prompt: paste the business brief from Section 7

4. User message template:

```

New Angi lead. Here is what the customer told us:

Name: {{firstName}}

Service: {{taskName}}

Comments: {{comments}}

Location: {{city}}, {{state}} {{postalCode}}

Survey answers: {{interview}}

Write a text message reply following the system prompt rules.

Maximum 320 characters. Plain text. No URLs.

```

Step 5: Action — Twilio Send SMS

1. Add a Twilio action

2. Event: Send SMS

3. From Number: your registered Twilio number

4. To Number: the E.164 formatted phone from Step 3

5. Message: the ChatGPT output from Step 4

Step 6 (Parallel): Action — Slack CSR Alert

1. Add a Slack action

2. Channel: `#paid-leads` (or whatever you use)

3. Message template:

```

NEW ANGI LEAD ($${feeAmount})

Name: {{firstName}} {{lastName}}

Phone: {{primaryPhone}}

Service: {{taskName}}

Location: {{city}}, {{state}} {{postalCode}}

Customer details:

{{comments}}

Auto-text sent at {{timestamp}}

Next step: Call the customer within 5 minutes.

```

Step 7 (Optional): Google Sheets Log

Log every lead to a Google Sheet for metric tracking. See Section 12.

---

7. Business Brief (System Prompt)

Paste this into the ChatGPT action. Fill in the brackets.

```

You are texting a brand-new Angi lead on behalf of [COMPANY NAME],

a [TRADE] contractor in [CITY/REGION]. The customer just submitted

a request and picked a handful of contractors including us. We need

to be the first to reply, and the reply needs to feel like a real

person wrote it, not a bot.

Rules:

1. Maximum 320 characters (two standard SMS segments).

2. Start with the customer's first name.

3. Name your company once, early.

4. Reference one specific detail from their request so they know you

actually read it.

5. Ask a simple qualifying question or offer to call. Do not ask more

than one question per message.

6. Never quote a price.

7. No URLs, no emoji, no exclamation marks.

8. Sound like a local contractor, not a corporate form letter. Avoid

"I would be delighted," "at your earliest convenience," and any

stiff language.

9. End with your first name and the company name.

Company: [COMPANY NAME]

Your name: [OWNER/CSR FIRST NAME]

Phone: [PHONE]

Service area: [LIST]

Specialties: [LIST]

Things we do not do: [LIST]

```

---

8. Example Exchange

Angi webhook payload (abridged):

```json

{

"firstName": "Marcus",

"lastName": "Rivera",

"primaryPhone": "5558675309",

"smsEnabled": true,

"taskName": "HVAC Repair - Central Air",

"city": "Austin",

"state": "TX",

"postalCode": "78704",

"comments": "Central AC blowing warm air since yesterday. Outside unit is running. House is getting to 85 inside.",

"feeAmount": 165,

"leadSource": "Angi"

}

```

Generated SMS reply:

```

Hi Marcus, this is Dave at Capitol HVAC. Sounds like your AC is

running but not cooling — could be a refrigerant or capacitor issue,

both common in this heat. Can I send a tech out today? What is the

best time window for you? — Dave, Capitol HVAC

```

  • Character count: 264
  • Delivery time: 18 seconds after webhook fired
  • References specific detail: yes (running but not cooling)
  • Clear next step: yes (asking for time window)

---

9. Important: Replies Come Back to You, Not Angi

Unlike Yelp, Angi has no reply-back API. This means:

  • The SMS comes from your Twilio number, not through Angi
  • The customer's reply goes directly to your Twilio number
  • You need a way to receive replies (Twilio inbox, Slack integration, or a two-way SMS app)

Recommended: Forward Twilio Replies to Slack

1. In Twilio, set up a webhook for inbound SMS

2. Point it to a new Zap: Twilio New SMS → Slack Message

3. Post incoming replies to the same `#paid-leads` channel

Your CSR sees the full conversation thread in Slack without needing to log into multiple tools.

---

10. Stop Conditions

Your Zap should NOT send an SMS in these cases. Add filter steps as needed.

ConditionDetectionAction
No SMS consent`smsEnabled` is falseSkip SMS. Alert CSR only.
No phone number`primaryPhone` is emptySkip SMS. Alert CSR with email instead.
Outside service areaZIP not in your allow listSkip SMS. Alert CSR to decline.
Service you do not offer`taskName` matches your blocklistSkip SMS. Alert CSR to decline.
Duplicate lead`leadOid` already in your logSkip everything. Angi sometimes double-fires.
After-hours emergencyOutside hours AND service is emergencyStill send SMS but use emergency template

---

11. Testing Checklist

#TestExpected ResultPass?
1Zapier Catch Hook URL receives Angi test leadFull JSON payload visible in Zapier
2Filter correctly blocks leads with `smsEnabled: false`Zap stops at filter step
3Phone number formats to E.164Output starts with +1 and is 12 chars
4ChatGPT generates reply under 320 charsCharacter count stays in range
5Twilio sends the SMSStatus: delivered
6SMS arrives on a test phoneReceived within 30 seconds of webhook
7Slack alert posts with all fieldsAll merge fields populated
8Duplicate webhook suppressedLog matches prevent double-send
9Out-of-area lead blockedFilter stops flow, CSR still notified
10Customer reply routes to SlackReply flow works end-to-end
11Reply references a specific detail from the leadAI is actually reading the payload
12No URLs or emoji in any outputSystem prompt is being followed

Tip: Angi will send a test payload during setup. Use it. Do not try to fake the JSON, the real one has fields you will not think to add.

---

12. Cost Breakdown

Monthly at 30 Angi Leads

ItemCost
Zapier Starter plan$19.99
Twilio SMS (30 outbound at $0.0079)$0.24
Twilio number rental$1.00
OpenAI API (GPT-4o-mini, 30 leads)$0.01
Total~$22/mo

Compared to Alternatives

OptionCost at 30 Leads/Mo
This recipe$22/mo flat
LeadTruffle (Angi autoresponder)$79/mo
Hatch$149+/mo
Manual CSR watching emailLost leads

Break-even against LeadTruffle at 3 leads/month. Everyone with paid Angi leads should be running this.

---

13. Metrics to Track

Log every webhook-triggered reply to Google Sheets with:

ColumnWhy
Lead OIDUnique key, duplicate detection
Lead sourceAngi vs HomeAdvisor
Lead costROI calculation
Timestamp receivedWhen Angi pushed
Timestamp SMS sentYour actual response time
Delta (seconds)Speed metric
Service typeSegmentation
ZIPService area
SMS consent flagCompliance tracking
AI reply textSpot weird outputs
Customer replied?Engagement rate
Booked?Conversion rate
RevenueROI tracker

Review weekly. The key numbers:

  • Response time: 95%+ under 30 seconds
  • Send-rate: 70%+ of leads get an SMS (the rest blocked by consent/filters)
  • Reply rate: 35-50% of SMS recipients reply
  • Booking rate: 25-35% of replies turn into jobs

---

14. TCPA Compliance Notes

Angi collects SMS opt-in consent as part of their lead submission flow. The payload includes a TrustedForm URL and consent flag. You must:

1. Always respect the `smsEnabled` / consent flag. If false, do not text.

2. Honor STOP replies. Twilio handles this automatically at the carrier level, but double-check your inbound SMS flow does not re-engage opted-out numbers.

3. Keep the TrustedForm URL in your logs. It is your proof of consent if a customer ever files a TCPA complaint.

4. First message must identify your business. The system prompt enforces this.

This recipe is designed to be TCPA-compliant when configured correctly. If you are ever unsure, consult a lawyer who specializes in telemarketing compliance. A single TCPA violation can cost $500-$1,500 per message.

---

Recipe 112 — Angi Lead Instant Reply (Webhook + AI SMS)

THE AI TRADES Platform

Difficulty: No-Code Flow | Setup: 1 hour | Category: Call & Lead Handling

RolesCSROwner
PrinciplesSpeed Wins the Job