Inbound integrations is available for our customers on the Business Plan. With inbound integrations, you can receive data back from Calltools, updating your records in real time.
Through this integration we can receive the following to update your records:
Property Status
Phone Status
Phone Tag
Notes
Tag
List
Calltools will set up the inbound integrations for you.
Existing Calltools Customers
For existing Calltools customers, reach out to the Calltools integrations team directly at integrations@calltools.com
Their integrations team will populate a template which uses HTTPS Requests and Automations. When you select a disposition in Calltools, this will send information back to REISift to automatically update your records.
Once the integration template is added in your Calltools account, copy the API key listed under the Settings -> Integrations -> Calltools DATA IN section of your REISift account.
Next, log in to your Calltools account and navigate to Integrations -> HTTPS Requests.
Select Edit on each request, and paste the API key from REISift in the section labeled "Insert API Token Here".
Check out the example below:
New Lead is now a custom status in REISift! You'll no longer need to create this status as a custom status in your account. The integration can be set to update other statuses or any custom statuses if you prefer. In order to update to a custom status, the status will need to be created in your account first.
Need more help creating statuses? Custom Statuses Overview
New Calltools Customers
Don't have a Calltools account yet? Sign up here and let them know you are an REISift user. The integrations team will populate the integrations template in your account.
Setting up Inbound Integration Yourself
Want to setup the integrations yourself? Read on to see how it's done!
The inbound integration can be set up in two ways: Connectors for your callers to select and HTTPS Requests and webhooks. With connectors, your callers will have an additional button to click in order to send the information to REISift. HTTPS Requests/webhooks allows you to skip this step so you can select the disposition, go straight to the post call wrap up and have your records updated automatically in REISift.
First Steps:
Delete all Default Calltools Call dispositions
DATA → DISPOSITIONS → Call Dispositions
Create the following new Call Dispositions
New Lead
Not Interested
Wrong Number
DNC Unknown
DNC Correct
DNC Wrong
Sold Property
Listed Property
Second Steps:
Navigate to DATA → Automations
Create an Automation for Each of the above dispositions, just name them *de-activate” the automation and scroll down and save. We are just prepping all the ones we need to make.
Click on the first automation and scrolls down to “Automation Trigger” and Select “Call Disposition”
Next Navigate to “Automation Conditions” and select “ADD CONDITIONS SET”
Select the blue + on the first field and then choose “Dispositions id (integer)” it will show “X choices” to the right signifying the amount of call dispositions you have available.
a. the middle drop down should select “equals”
b. the last far right field should be selected on which ever disposition
automation you are currently making this for.Navigate to “Automation Actions” and select “ADD ACTION” and then “Webhook”
Name the webhook the same name as your automation/dispositions name
Click the blue + circle “Add HTTPS Response”
Name the HTTPS Request the same name as automations/disposition/webhook name
Fill in the following information
REQUEST TYPE → POST
CONTENT TYPE → JSON
Click Add Header and enter the below information. where “REISIFT_CALLTOOLS_API_KEY” is equal to your REISift DATA IN API key under settings
“Key” Field → AUTHORIZATION
“Value” Field → Api-Key REISIFT_CALLTOOLS_API_KEY
Copy the corresponding “JSON” from the below “6 Primary” that matches the disposition you are creating. IF you are doing a custom disposition you can use the JSON Payload Options below to create what trigger you wish.
For Example New Lead would be:
{
"street":"{{%locals[contact][address]}}",
"city":"{{%locals[contact][city]}}",
"state":"{{%locals[contact][state]}}",
"zip_code":"{{%locals[contact][zip_code]}}",
"phone":"{{%locals[contact][home_phone_number]}}", "phone_status":"CORRECT",
"status":"new_lead",
"notes":"{{%locals[contact][last_note_text]}}"
}
Paste the JSON inside “Body (JSON)” and then click “Save” and then “Create"
Test the automation by going to a contact and selecting a disposition and then going back to the automations page to watch for the trigger to update.
After it updates and 0 errors — go to that record in REISIft and verify. If you get an error you can view the error logs by clicking the three dots on the right of the automation.
JSON Payload Options
*city, street, state, county, and postal_code (property info) are required
*Assigned_to often times is not used due to REISIft having internal sequences
*phone is required if using any phone_type , phone_status, phone_tag
{
"city": "{city}",
"street": "{address}",
"state": "{state}",
"county": "{county}",
"postal_code": "{zip_code}",
"phone": "{phone_number}",
"assigned_to": "REIsift user email",
"phone_type": <MOBILE, UNKNOWN, LANDLINE, VOIP>,
"phone_status": <UNKNOWN, CORRECT, CORRECT_DNC, WRONG, WRONG_DNC, DEAD, NO_ANSWER, DNC>
"phone_tag": <Any text>,
"notes": <Any text>,
"tag": "Tag 1",
"status": <new_lead, sold, not_interested, opt_out, listed, follow_up, prospecting, buyer, under_contract, or any other custom status>
}
The 6 Primary Dispositions to Create
Create the Following HTTPS Requests:
NEW LEAD
{
"street":"{{%locals[contact][address]}}",
"city":"{{%locals[contact][city]}}",
"state":"{{%locals[contact][state]}}",
"zip_code":"{{%locals[contact][zip_code]}}",
"phone":"{{%locals[contact][home_phone_number]}}",
"phone_status":"CORRECT",
"status":"new_lead",
"notes":"{{%locals[contact][last_note_text]}}"
}
NOT INTERESTED
{
"street":"{{%locals[contact][address]}}",
"city":"{{%locals[contact][city]}}",
"state":"{{%locals[contact][state]}}",
"zip_code":"{{%locals[contact][zip_code]}}",
"phone":"{{%locals[contact][home_phone_number]}}",
"phone_status":"CORRECT",
"status":"not_interested"
}
PROPERTY SOLD
{ "street":"{{%locals[contact][address]}}",
"city":"{{%locals[contact][city]}}",
"state":"{{%locals[contact][state]}}",
"zip_code":"{{%locals[contact][zip_code]}}",
"phone":"{{%locals[contact][home_phone_number]}}",
"phone_status":"CORRECT",
"status":"sold"
}
PROPERTY LISTED
{
"street":"{{%locals[contact][address]}}",
"city":"{{%locals[contact][city]}}",
"state":"{{%locals[contact][state]}}",
"zip_code":"{{%locals[contact][zip_code]}}",
"phone":"{{%locals[contact][home_phone_number]}}",
"phone_status":"CORRECT",
"status":"listed"
}
WRONG NUMBER
{
"street":"{{%locals[contact][address]}}",
"city":"{{%locals[contact][city]}}",
"state":"{{%locals[contact][state]}}",
"zip_code":"{{%locals[contact][zip_code]}}",
"phone":"{{%locals[contact][home_phone_number]}}",
"phone_status":"WRONG"
}
DNC WRONG
{ "street":"{{%locals[contact][address]}}",
"city":"{{%locals[contact][city]}}",
"state":"{{%locals[contact][state]}}",
"zip_code":"{{%locals[contact][zip_code]}}",
"phone":"{{%locals[contact][home_phone_number]}}",
"phone_status":"WRONG_DNC"
}
DNC CORRECT
{
"street":"{{%locals[contact][address]}}",
"city":"{{%locals[contact][city]}}",
"state":"{{%locals[contact][state]}}",
"zip_code":"{{%locals[contact][zip_code]}}",
"phone":"{{%locals[contact][home_phone_number]}}", "phone_status":"CORRECT_DNC"
}
DNC UNKNOWN
{
"street":"{{%locals[contact][address]}}",
"city":"{{%locals[contact][city]}}",
"state":"{{%locals[contact][state]}}",
"zip_code":"{{%locals[contact][zip_code]}}",
"phone":"{{%locals[contact][home_phone_number]}}",
"phone_status":"DNC"
}
Using Connectors to send Misc. information
A connector is a nice way to send some additional information to a phone number for example. If a new lead is send via disposition, maybe the lead was Spanish speaking and you wish to tag that phone number so your team knows this when following up.
Spanish Speaking
{
"street":"{{%locals[contact][address]}}",
"city":"{{%locals[contact][city]}}",
"state":"{{%locals[contact][state]}}",
"zip_code":"{{%locals[contact][zip_code]}}",
"phone":"{{%locals[contact][home_phone_number]}}",
"phone_tag":"Spanish Speaking"
}
Relative
{
"street":"{{%locals[contact][address]}}",
"city":"{{%locals[contact][city]}}",
"state":"{{%locals[contact][state]}}",
"zip_code":"{{%locals[contact][zip_code]}}",
"phone":"{{%locals[contact][home_phone_number]}}",
"phone_tag":"Relative"
}
Wife
{
"street":"{{%locals[contact][address]}}",
"city":"{{%locals[contact][city]}}",
"state":"{{%locals[contact][state]}}",
"zip_code":"{{%locals[contact][zip_code]}}",
"phone":"{{%locals[contact][home_phone_number]}}",
"phone_tag":"Wife"
}
Husband
{
"street":"{{%locals[contact][address]}}",
"city":"{{%locals[contact][city]}}",
"state":"{{%locals[contact][state]}}",
"zip_code":"{{%locals[contact][zip_code]}}",
"phone":"{{%locals[contact][home_phone_number]}}",
"phone_tag":"Husband"
}
Testing the Inbound Integrations
As long as the record exists in your REISift account, your records should be updating. You can test it by searching for a record you recently dispositioned in Calltools and going to the activity log within the record.
To access the activity log, open the record from your records page, scroll down below the map and click Activity Log.
Calltools events are logged as system updated the property or system added tags (or phone status if using this feature) Below is an example:
Troubleshooting
Events not being updated for records that are in both Calltools and your REISift account?
Confirm the property address and phone number exists in your REISift account. We can receive information from Calltools to update existing records.
Seeing Error 400? This is typically related to the JSON. Double check the JSON and confirm it's correct. The last of the JSON must NOT include a comma.
Related Trainings: