If you're getting leads from HomeAdvisor, Thumbtack, Angi Leads, a contact form on your website, or any other source that can fire an HTTP POST, the leads webhook pulls them all into your Plyrium pipeline automatically. No copy-pasting from emails, no manual entry — a lead comes in, Claude triages it, and if it's urgent your on-call tech gets paged within seconds.
Settings → Leads webhook is restricted to workspace owners. The secret it shows gives write access to your lead pipeline — keep it out of shared docs and away from team members who don't need it.
Finding your URL and secret
- 1Go to Settings → Leads webhook
Your webhook URL (always https://www.plyrium.com/api/webhooks/leads) and your per-client secret are shown on this page.
- 2Copy the secret
Click the copy button next to the secret field. This is what you'll paste into HomeAdvisor / Thumbtack / Zapier / your contact form as the authentication value.
- 3Copy your client_id
Also shown on the same page — a UUID you'll include in the request body. This tells the webhook which workspace the lead belongs to.
- 4Paste both into your integration
Configure your lead source to POST to the webhook URL with the secret in the header and your client_id in the body (see example below).
Request format
The webhook endpoint accepts a JSON POST with one required header and a JSON body:
| Method | POST |
| URL | https://www.plyrium.com/api/webhooks/leads |
| Header: x-leads-secret | Your per-client secret from the settings page. |
| Header: Content-Type | application/json |
| Header: x-leads-event-id (optional) | A unique ID from your lead source. Include it and Plyrium deduplicates retries with the same ID within 24 hours — no double leads if your integration sends the same payload twice. |
Body fields
| client_id (required) | Your workspace UUID — shown on the settings page. |
| source (required) | One of: form, sms, email, phone, manual. Use "form" for contact forms, HomeAdvisor, Thumbtack. |
| message (required) | The lead's description or inquiry text. Min 1 character. |
| contact_name (optional) | The lead's name if your form captured it. |
| contact_email (optional) | The lead's email address. |
| contact_phone (optional) | The lead's phone number (10 digits recommended). |
| contact_city (optional) | The lead's city — helps Claude route and qualify the lead. |
curl example
curl -X POST https://www.plyrium.com/api/webhooks/leads \
-H "Content-Type: application/json" \
-H "x-leads-secret: YOUR_SECRET_HERE" \
-d '{
"client_id": "YOUR_CLIENT_ID",
"source": "form",
"message": "AC making a loud rattling sound — unit is 3 years old",
"contact_name": "Jane Homeowner",
"contact_email": "jane@example.com",
"contact_phone": "5555551234",
"contact_city": "Coolidge"
}'What happens when a lead arrives
- Plyrium verifies the secret against your workspace. Wrong secret = 401, no lead created.
- Claude triages the message: category (urgent_lead / qualified / spam / vendor), urgency, intent summary, and extracts any contact fields not supplied in the body.
- If AI reply drafting is enabled (Settings → Features → Email lead triage), Claude drafts a reply you can review on /portal/leads.
- If the lead is categorized as urgent_lead AND urgent escalation is on: your owner email gets an alert, on-call techs get an SMS page, and any team member with push notifications enabled gets a web push.
- The lead row lands in /portal/leads with status new, draft_pending, or escalated. You see it immediately.
Common integrations
| HomeAdvisor / Angi Leads | Set up via their "Lead delivery webhook" setting in your pro account. Paste the Plyrium URL + secret. Their payload shape varies — use Zapier or Make as a translator if their fields don't map cleanly. |
| Thumbtack | Thumbtack Pro doesn't have native webhook export yet. Use Zapier (Thumbtack → Webhook POST) to bridge. |
| Zapier | "Webhooks by Zapier" action: POST to the Plyrium URL with the header + body mapped from whichever trigger app you use. |
| Contact form (Gravity Forms, Elementor, WPForms) | Each has a "webhook" or "post to URL" option. Map form fields to the Plyrium body shape; add the secret as a custom header. |
| Custom code | Anything that can fire an HTTP POST works. See the curl example above. |
Regenerating the secret
If your secret leaks, click Regenerate on the settings page. A new 64-character hex secret is issued immediately. The old secret stops working at once — every active integration using the old value will start getting 401s until you update it. The rotation is audit-logged (Profile → Activity) so you can see when it happened.
Don't rotate casually. If you have three integrations running and you rotate the secret, all three stop sending leads until each one is updated. Plan accordingly — rotation is a security response action, not routine maintenance.