Skip to main content

Lead Webhook

Overview

·Event key:
lead.webhook
⚠️
Legacy Webhook - DeprecatedThis webhook is part of the legacy webhook system. For new integrations, we recommend using the modern webhooks v2 system.

Funnel will submit a POST request to your specified webhook each time a lead is created, as well as whenever the lead is updated, such as if they contact another listing.

When this webhook fires

This webhook is triggered in the following scenarios:

  • Lead creation: When a new lead is created in Funnel Leasing
  • Lead updates: When an existing lead is updated, such as when they contact another listing
  • Contact activity: When a lead interacts with listings, sends messages, or is assigned to agents

Event Payload

Example payloadJSON200 · application/json
{
  "nestio_client_id": 456678,
  "status": "Prospect",
  "nestio_team_id": 1234,
  "people": [
    {
      "first_name": "John",
      "last_name": "Doe",
      "email": "johndoe@example.com",
      "phone_1": "510-555-4567",
      "phone_2": ""
    },
    {
      "first_name": "Jane",
      "last_name": "Doe",
      "email": "janedoe@example.com",
      "phone_1": "",
      "phone_2": ""
    }
  ],
  "lead_source": "streeteasy",
  "move_in_date": "1970-01-01",
  "created_at": "2019-01-01T04:55:55",
  "listings": [
    {
      "nestio_unit_id": 123,
      "property_address": "123 First St",
      "property_internal_id": "AAAA",
      "unit_number": "2A",
      "unit_internal_id": "XXXX"
    }
  ],
  "messages": [
    {
      "message": "Hi am i interested in seeing apt 2a.",
      "received_at": "2019-01-01T04:55:55"
    }
  ],
  "agents": [
    {
      "name": "Dave Agently",
      "email": "dave@agently.com",
      "nestio_agent_id": 2
    }
  ]
}

Usage Notes

When you receive this webhook, you can use it to:

  • Create or update lead records in your CRM or Property Management System (PMS)
  • Track lead sources and discovery channels for marketing analytics
  • Sync contact information (people, phone numbers, emails) with your systems
  • Monitor lead interest in specific listings and units
  • Track messages and communication history
  • Assign leads to agents in your system based on Funnel assignments

Important notes

  • Unlike the renter.* webhooks, this payload is not wrapped in an { event, data } envelope — the fields shown above are sent directly at the top level of the POST body.
  • people on this webhook only ever includes first_name, last_name, email, phone_1, and phone_2 — it never includes id or sms_opt_in, even though those fields exist on the newer renter.* webhooks' person objects.
  • If a client was already pushed successfully within the previous 30 seconds, Funnel skips sending this webhook entirely for the new push — it is not queued or delayed, just dropped. Don't assume every underlying change to a lead results in a webhook call.
  • What counts as a successful delivery: this webhook's delivery mechanism is more lenient than the renter.*/appointment.* webhooks — any status code below 400 counts as success, so a 3xx redirect response also counts as delivered, not just 2xx. The response body is not checked either way. If the push fails, Funnel retries it up to 2 more times (3 attempts total), waiting roughly 60 seconds and then 120 seconds before each retry, so your handler must be idempotent.
  • The lead_source field should match values from the Discovery Sources API
  • The unit_number field in listings may be null if the ILS has only provided a Property and not a unit
  • The people array can contain multiple people associated with a single lead (e.g., co-applicants)

Migration to Webhooks v2

This legacy webhook is deprecated. For new integrations, we recommend using the modern webhooks v2 system, which provides:

  • Better event structure with consistent formatting
  • More granular events for different activities
  • A dedicated delivery pipeline — see the Webhooks Walkthrough for what's documented about its delivery behavior
  • Enhanced security features