Skip to content

Prospect

Prospect data must be nested under the client key in the json body.

Edit a limited number of fields on a specified company prospect.

  • status
    • String value representing new prospect status
    • Choices are lead, toured, applicant, resident, and not-a-prospect
  • application
    • Optional. Details about the prospect’s application if they are being set to applicant or resident status. If not setting to one of those statuses, leave this key out of the payload.
    • Application object keys: * unit_id
      • The Funnel unit id for the unit that the prospect has applied for.
    • lease_start_date
      • YYYY-MM-DD formatted date that the prospect’s lease starts.
    • lease_end_date
      • YYYY-MM-DD formatted date that the prospect’s lease expires.
    • application_submitted_date
      • YYYY-MM-DD formatted date that the prospect’s application was submitted
    • application_price
      • The rent price the prospect is applying with.
    • closed_date
      • YYYY-MM-DD formatted date that the prospect was closed.

Example request body for status change:

{
"status": "toured"
}

Example request body for status change to applicant:

{
"status": "applicant"
"application": {
"unit_id": 123,
"lease_start_date": "2020-06-01",
"lease_end_date": "2020-05-31",
"application_submitted_date": "2020-05-20",
"application_price": "1200.00"
}
}

Example response body: 200 success

{
"data": {
"client": {
"id": 111,
"group": 20,
"broker_email": "",
"broker_phone": "",
"broker_name": " ",
"people": [
{
"first_name": "Lara",
"last_name": "Smith",
"preferred_name": "",
"email": "lara.smith@outlook.com",
"phone_1": "555-777-5555",
"phone_2": "",
"id": 27,
"is_primary": true,
"email_updates_opt_in": 10,
"sms_opted_in": 10,
"move_out_date": null
}
],
"move_in_date": null,
"client_referral": "None",
"campaign_info": "None",
"layout": "",
"price_floor": null,
"price_ceiling": null,
"discovery_source": null,
"status": "Applicant",
"active_live_chat_id": null,
"sms_opted_in": 10
}
}
}

Example response body: 400 error

If the provided data in the application fields is not valid, a 400 error response will be returned.

{
"errors": {
"application": {
"unit_id": "missing or invalid data",
"lease_start_date": "missing or invalid data",
"application_submitted_date": "missing or invalid data"
}
}
}

If the provided status choice is not valid, a 400 error response will be returned. This error will be in an array of strings.

{
"errors": {
"status": ["missing or invalid data"]
}
}

Create a prospect record in Funnel. Note that in order for Funnel to properly ingest prospects and associate them with teams and properties, the following fields are required: first_name, last_name, email, group.

  • people
    • List of objects representing people associated with this prospect record.
    • Person object keys:
      • first_name
        • String field for first name
      • last_name
        • String field for last name
      • email
        • String field for email
      • phone_1
        • String field for phone number
      • phone_2
        • Additional phone number field
      • is_primary
        • Boolean field indicating whether or not person is primary prospect contact
  • move_in_date
    • Prospect’s desired move in date in format YYYY-MM-DD
  • layout
    • Array of layout choices
    • Choices are:
      • 80 - Loft
      • 10 - Studio
      • 20 - 1 BR
      • 30 - 2 BR
      • 40 - 3 BR
      • 50 - 4+ BR
  • price_floor
    • Number value representing lowest dollar value the prospect would like to pay
  • price_ceiling
    • Number value representing highest dollar value the prospect would like to pay
  • notes
    • Free text field for prospect-sourced information
  • group
    • Number value provided by Funnel representing the group id the prospect should be assigned to. Please contact us at support@funnelleasing.com to get your group id and more details.
  • broker_company
    • String field for broker company if representing prospect
  • broker_email
    • String field for broker email if representing prospect
  • broker_first_name
    • String field for broker first name if representing prospect
  • broker_last_name
    • String field for broker last name if representing prospect
  • broker_phone
    • String field for broker name if representing prospect
  • client_referral
    • String field for prospect referral source (up to 255 characters)
  • campaign_id
    • Campaign Identifier (up to 255 characters)
  • campaign_info
    • Optional string. Use this parameter to pass a value to Funnel for marketing attribution. To assign a lead source to a prospect, set the value to a string that matches the name of your campaign as entered in Funnel under marketing settings. The value must match exactly (case sensitive). If also using Funnel’s DNI script, the value of this parameter can be pulled from local storage of the browser and sent via the form.
  • community
    • Number value representing the Funnel Community id a prospect is inquiring about
  • building
    • Number value representing the Funnel Building id a prospect is inquiring about
  • unit
    • Number value representing the Funnel unit id a prospect is inquiring about

NOTE: You should only pass one of three community/building/unit, otherwise you will get a validation error.

  • discovery_source
    • String value representing the way the prospect says they discovered your property. This can be entered manually by a prospect on a contact form, guest card, or tour scheduler and is typically presented as the question: “How did you hear about us?” (defaults to null if choice does not match)
    • To retrieve the list of available sources, see Discovery Sources
  • lead_source
    • Integer or String value representing the way the prospect became a lead for your property (defaults to null if choice does not match)
    • To retrieve the list of available sources, see Discovery Sources.
    • To send an integer value, it will need to match an ID on your list of available discovery sources.
    • To send a string value, it will need to match a name on your list of available discovery sources.
  • device
    • String value indicating the type of device the lead was on when captured.
    • Choices are:
      • 10 - Phone
      • 20 - Tablet
      • 30 - Desktop
      • 40 - Other
      • or blank if unknown
  • source_type
    • String value indicating whether the recorded lead originated from a paid marketing campaign or from an organic, non-paid initiative.
    • Choices are paid, organic, or blank if unknown
  • sms_opted_in
    • String value indicating whether the recorded lead has opted in to receiving SMS communication. The available choices are:
    • 'marketing-enabled' : This prospect has opted into receiving all communication including automated marketing messages
    • 'marketing-disabled' : This prospect has opted into receiving communications, but not opted into receiving automated marketing messages. This is the default setting.
    • 'all-sms-disabled': This will disable the prospect from receiving any SMS communications. This setting can be updated via the Funnel app. Use this if you want to temporarily disable SMS communication with the prospect
    • client-opted-out': The prospect has explicitly opted out of communication. This setting cannot be updated unless the prospect submits their information again. Use this if you want to permamently disable all SMS communication with the prospect.
  • request_sms
    • Boolean value which will create an event declaring the prospect requested a sms, set the client’s preference for sms, and enable virtual agent for that client if all other factors are satisfied (for instance sms_opted_in)

Example request body:

{
"client": {
"people": [
{
"first_name": "John",
"last_name": "Doe",
"email": "johndoe@example.com",
"phone_1": "5101234567",
"phone_2": "",
"is_primary": true
},
{
"first_name": "Jane",
"last_name": "Doe",
"email": "janedoe@example.com",
"phone_1": "",
"phone_2": "",
"is_primary": false
}
],
"move_in_date": "1970-01-01",
"layout": [
"studio",
"1br"
],
"price_floor": 1500,
"price_ceiling": 2500,
"notes": "looking for affordable neighborhood with bars and restaurants",
"group": 12,
"broker_company": "Jerry Company",
"broker_email": "jerry@seinfeld.com",
"broker_first_name": "Jerry",
"broker_last_name": "Seinfeld",
"broker_phone": "4101230987",
"client_referral": "Company Website",
"campaign_id": "Test-Campaign",
"campaign_info": "GooglePPC",
"unit": 5309,
"device": "phone",
"source_type": "organic"
}
}

Example response body: 200 success

{
"data": {
"client": {
"id": 123,
"group": 30,
"broker_email": "",
"broker_phone": "",
"broker_name": "",
"people": [
{
"first_name": "Lara",
"last_name": "Smith",
"preferred_name": "",
"email": "lara.smith@outlook.com",
"phone_1": "",
"phone_2": "",
"id": 111,
"is_primary": true,
"email_updates_opt_in": 10,
"sms_opted_in": 10,
"move_out_date": null
}
],
"move_in_date": null,
"client_referral": "None",
"campaign_info": "None",
"layout": "",
"price_floor": null,
"price_ceiling": null,
"discovery_source": null,
"status": "Prospect",
"active_live_chat_id": null,
"sms_opted_in": 10
}
}
}

Example response body: 400 error

If the provided data is not valid, a 400 error response will be returned. These errors will be in an array of strings.

{
"errors": {
"client": {
"group": [
"Invalid choice."
]
}
}
}

If the required data is missing, a 400 error response will be returned. These errors will be in an array of strings.

{
"errors": {
"client": {
"people": ["Missing data for required field."]
}
}
}

To embed the widget into your website, simply paste the provided code, which should look like this:

<script src="https://integrations.nestio.com/contact-widget/v1/integration.js" id="nestio-lead-capture-frame"></script>
<script type="text/javascript"> NestioLeadCapture({
"type": "lead_capture",
"key": "FUNNEL_API_KEY_HERE",
"group": 9,
"color": "74FFE7"
});
</script>

The parameters you can set are:

  • key - Required - The company API key, this will be provided by Funnel.
  • group - Required - The ID of the Funnel group that will be used for the widget. This group what users are assigned the lead.
  • color - The brand color which will be used in certain places on the widget, such as submit buttons and header text. This should be 6 digit hex code.
  • campaignInfo - Optional string. When not using Funnel’s DNI Script, use this parameter to pass a value to Funnel for marketing attribution. In that case, to correctly assign a lead source, set the value to a string that matches the name of your campaign as entered in Funnel under marketing settings. The value must match exactly (case sensitive). When using the DNI Script, the value of this parameter will be saved on the notes section of the guest card.
  • onComplete - A callback that is executed after the widget form is submitted. This is useful for manually triggering analytics events such as with Google Tags Manager.
  • submitLabel - Label that displays on the submit button on the client info form. Defaults to ‘Request Information’.
  • unit - ID of Funnel Unit that the client will be associated within Funnel.
  • buttonTextColor - Used to change the color of the text on the submit button of the widget. This should be 6 digit hex code.
  • textColor - Used to change the color of the headers for each field on the widget, First Name, Last Name, etc. This should be 6 digit hex code.

Prospect details can be embedded inside an email using one of the following formats:

Insert a hidden <div> HTML element into the email body. This div must have the id prospect-details. To hide this element add the below CSS as an inline style using the style attribute: display: none;. The element text content must be the lead as a single JSON object.

Insert an HTML comment into the email body. This HTML comment must start with the string PROSPECT = followed by the lead as a single JSON object.

<div style="display: none;" id="prospect-details">
{
"name": "Johnny Example",
"email": "johnny@example.com",
"phone": "567-567-5678",
"minPrice": "$1000",
"maxPrice": "$2000",
"moveInDate": "2025-06-07",
"layouts": ["1BED", "STUDIO"],
"notes": "Do you allow pets?",
"unit": "82021",
"sms_opt_in": "true"
}
</div>
<!-- PROSPECT = {
"name": "Johnny Example",
"email": "johnny@example.com",
"phone": "567-567-5678",
"minPrice": "$1000",
"maxPrice": "$2000",
"moveInDate": "2025-06-07",
"layouts": ["1BED", "STUDIO"],
"notes": "Do you allow pets?",
"unit": "82021",
"sms_opt_in": "true"
} -->

This section covers technical details meant to help developers integrate with prospect email forwarding.

Important CSS style must be inlined, as <style> tags are stripped by most email service providers. So the following <div> will be displayed by most email service providers.

Warning! Do NOT use a CSS class to hide the div. Do NOT do the following:

<style>
.hidden {
display: none;
}
</style>
<div class="hidden" id="prospect-details">
{
...
}
</div>

Key

Value type

Is required

name

string

Yes

email

string

Yes

phone

string

No

minPrice

string

No

maxPrice

string

No

moveInDate

ISO 8601 date string

No

layouts

array of strings

No

notes

string

No

unit

string

No

[sms_opt_in]

bool

No

The full name of the prospect.

The email address of the prospect.

The phone number of the prospect.

The minimum price the prospect is willing to pay.

The maximum price the prospect is willing to pay.

The date the prospect wants to move in. Move-in date must be a date in ISO 8601 format: YYYY-MM-DD

The property layouts of interest to the prospect. Layouts is a JSON array of strings. Supported layouts:

  • "STUDIO"
  • "1BED"
  • "2BED"
  • "3BED"
  • "4BED"
  • "5BED"
  • "6BED_OR_MORE"

A string that will be used as the lead’s ‘message’

A string representing the unit number the prospect is referencing.

A bool representing the prospect’s sms opt-in response.