Skip to content
Helpdesk Agent dev Tesoro CRM

Webhooks: events to external systems

Webhooks automatically send messages to an external URL when specific events occur in Tesoro: new lead comes in, deal moves to Won status, property becomes Sold. Used for integrations with Zapier, Make, your own systems.

  • New lead via Zapier to Slack channel
  • Deal Won event to your accounting system
  • Have an external analytics tool receive real-time data

For each selected event, Tesoro sends an HTTP POST request to your URL with a JSON payload. Your system receives, processes, and responds (200 OK).

  1. Settings → WebhooksAdd webhook.
  2. Fill in:
    • Name: recognizable name
    • URL: endpoint that receives the payload (HTTPS recommended)
    • Events: select which events trigger
    • Secret (optional), for request validation
  3. Save → webhook active.
CategoryEvents
Leadcreated, updated, status_changed, converted, deleted
Contactcreated, updated, deleted, portal_user_created
Dealcreated, status_changed, won, lost, deleted
Propertycreated, status_changed, sold, rented, deleted
Meetingcreated, status_changed, completed
Activitytask_created, task_completed, note_created

Select at least 1, multiple possible.

JSON body contains:

  • event: type (e.g., lead.created)
  • timestamp: when
  • data: full record with all fields
  • previous_data (on changes), previous status
  • company_id: for multi-tenant integrations

Secret validation (recommended): Tesoro signs each webhook with HMAC. Your endpoint calculates the same HMAC and validates.

Without secret: any POST can come from any source. Not recommended for production systems.

Webhook fails (no 200 response within X seconds, or network timeout)? Tesoro retries:

  • 1 minute later
  • 5 minutes later
  • 30 minutes later
  • 2 hours later
  • Then marked as Failed, no further attempts

Failed webhooks visible in dashboard. Manual retry possible.

Per webhook you see the latest attempts:

  • Timestamp
  • Event type
  • Response status
  • Number of retries
  • Body (in/out)

Helps with debugging.

Check:

  • URL accessible from internet?
  • HTTPS certificate valid?
  • Endpoint sends 200 response within 5 sec?
  • Events actually selected in webhook config?

Webhook retry behavior, due to timing issues, you may occasionally receive a retry of an already successful delivery. Make your endpoint idempotent: receive the same event ID twice → process only once.