Skip to main content

Using webhooks

Webhooks let LeadSource talk to any custom system over HTTP. There are two kinds: outbound webhooks (LeadSource sends data to you) and inbound webhooks (you send data to LeadSource). This article covers both.

If you don't have a developer or aren't comfortable with HTTP requests, GoHighLevel or Zapier are easier paths. Webhooks are for custom setups.

When to use webhooks

Outbound webhooks push every new lead to a URL you control. Use these when you have a custom CRM or internal system that LeadSource doesn't natively integrate with.

Inbound webhooks let you push events from your systems back into LeadSource. The most common use case is keeping lead statuses in sync. When a lead becomes Won or Lost in your CRM, an automation can update the LeadSource dashboard automatically.

Setting up webhooks

Webhook setup happens on the Integrations page in your dashboard. Click the Webhooks card to find the outbound webhook setup, your unique inbound webhook URL, and your API key.

[SCREENSHOT: Webhooks card on the Integrations page]

Full technical documentation

The complete webhook reference (payload formats, authentication, event types, status values, retry behavior, and code examples) lives in our developer docs:

That page is the source of truth and stays up to date as we add new events and fields. If you're building an integration, work from there.

Common patterns

A few things contractors commonly automate with webhooks:

Auto-update status from your dialer. When your team calls a lead, your dialer fires an inbound webhook to mark the lead as Contacted in LeadSource.

Sync wins from your CRM. When a job is marked Won in your CRM, an automation pushes that update to LeadSource so your dashboard reflects reality.

Pipe leads into a custom system. An outbound webhook delivers every new lead to your internal app or database in real time.

Getting help

If you're stuck setting up webhooks or have questions about the API, email [email protected] and we'll loop in whoever can help.

Did this answer your question?