Buy Your Property By Integrating Salesforce CRM With Zillow, Ret’s Rabbit And HudHomeStore
Cloud Analogy is one of the best Salesforce Consulting companies that has exhibited a stunning growth for the past few years. We are the certified Salesforce Experts in Cloud Analogy, channelizing our energy in finding solution for some of the complex technical problems – all in the world of Salesforce CRM.
In this post, we will provide you with some insights on one of the Real Estate projects that we were closely involved in Cloud Analogy. You can have a glimpse of the video for the same project.
First and foremost, we need to understand the requirements of the above project.
Description of the Requirements:
We want to capture all the real estate listings based upon various filters such as location, size, cost etc. Once the listings are captured, we want to automate this process of capturing all new listings every 15 minutes, into Salesforce – based on multiple parameters.
The data is then saved based on the matching parameters. The data is populated into one record, so as to leverage maximum information. Listings that are captured in the Salesforce CRM will then be routed to various teams who will be managing those listings by working on them. Here is a diagram that explains the requirements:
A particular listing or requirement can be of the following 4 categories for managing the sellers and buyers.
- SELLER: Property Listing for Sale
- SELLER: Property Listing for Rent
- BUYER: Requirement for Purchase
- BUYER: Requirement for Rent
However, the Sales process based upon the above 4 categories are different and customized according to each department. The entire gamification of the commission calculation and team forecasting will take place based upon the pre- formula defined.
We also create a Salesforce Portal for sales team to login and manage their leads, listings and opportunities. The Portal is designed to have features like tracking down a listing detail and timeline based chain of conversations as well as uploading and editing of a listing details. It is possible for the Sales representative to login into the same portal – to track down their commission. Next, we delve into the solution offered by us.
Solution we came with:
We integrated Zillow, MLS, Ret’s Rabbit and HudHomeStore with Salesforce. The flow of listings, from the above APIs are all put into Salesforce.
The solution that we offer can be put under three sections:
Section # 1 : Data Capture from Various External Sources
- We started by Salesforce Data Model Setup, creation of Custom Objects, fields and relationships. Here is what the Data Model setup looks like:
- Next, we create an object named Property in Salesforce because all data coming from a different databases is stored in that object. The data from the various APIs are matched on the basis of a parameter say address and put under the property object.
Here is the data flow diagram for the user integration with Zillo:
3. We create a different section like Zillow section, HudHomeStore etc. in the same property object where a record is updated. The integration with Rets Rabbit ensures that the user can make use of an easy to use import and web API, for real estate listings. Here are ways through which Rets can help you:
4. All information of the property coming from Zillow is stored in the Zillow section. We also created a section named as Property image in which an image of property could be viewed. We can upload the images of the properties. We can even create a thumbnail of the image. These properties were updated at a certain interval of time.
Let’s take a look at one of the property images:
5. We can create offers for various properties with contact details, follow up frequency as well as the selling and purchasing of properties. It is all about managing the offer in an organized way. There is also a template functionality of the image. A email is then send on the running offers, if the list price of the property is down and this depends on template of the different offers. It is possible to change the interval time for the updation of the properties.
6. We have done Configuration setup for all the APIs by using the following:
- Workflow Rules
- Email Templates
- Auto fill PDFs
- Integrate Emails as sender
- Test emailing
- Triggers.
7. After that we hit the Zillow, MLS, Ret’s Rabbit and HudHomeStore APIs and get a response in Salesforce.
Here is a code snippet through which we are able to integrate Zillow with Salesforce.
Click here to learn more
global static void scheduleMe(Integer HoursValue) {
Integer loops = 24/HoursValue;
Integer counter = 8;
Batch_Hud_Zillow_Integration_Schedule obj = new Batch_Hud_Zillow_Integration_Schedule();
for(Integer i = 1; i <= 2; i++) {
String cronStr = ‘0 0 ‘+counter+’ * * ?’;
String jobID = System.schedule(‘Batch_Hud_Zillow_Integration Runs On ‘ + counter + ‘th hour of Everyday.’, cronStr, obj);
counter = counter + HoursValue;
}
}
global void execute(SchedulableContext sc) {
Batch_Hud_Zillow_Integration BatchObj = new Batch_Hud_Zillow_Integration();
Database.executeBatch(BatchObj, 1);
}
}
8. When the user received property listing, he is able to send an email to a different buyers who need to purchase it. This integration enables the owner to work with ease – because he got all the information from one place. He doesn’t need to search multiple websites. We used a complex Batch class for accessing records from Zillow after every 15 minutes and store it in property object. Here is a code snippet of the batch class which is used to update the HUD properties from Zillow.
Here is code snippet of HudHomeStore controller button:
public class mapHudHomeStoreButtonController_Test { static testMethod void testOfHudsHomeStore(){ List<Property__c> propertyList= new List<Property__c>(); Property__c pro = new Property__c(); pro.Name = ‘TestProperty’; pro.Hud_Status__c = ‘Test’; pro.Hud_Address__c = ‘TestAddress’; pro.zillow_zpid__c = ‘0123456’; pro.zillow_zestimate_amount__c = 500000; pro.ListPrice__c = 451258; pro.OriginalListPrice__c = 10000000; pro.zillow_zestimate_valuationRange_high__c = 5469745; pro.RoomsTotal__c =3; pro.PropertyAddress__c = ‘123testaddress’; propertyList.add(pro); insert propertyList; List<Hud_Unmatched_Property__c> HudUnmattachedPropertyList = new List<Hud_Unmatched_Property__c>(); Hud_Unmatched_Property__c umpro = new Hud_Unmatched_Property__c(); umpro.Name = ‘123testaddress’; umpro.Hud_Status__c = ‘TestU’; umpro.Hud_Address__c=’TestAddress’; umpro.Hud_bed__c = 5; umpro.Hud_city__c =’TestCity’; umpro.Hud_State__c = ‘TestState’; umpro.Hud_county__c = ‘TestCountry’; umpro.Hud_bath__c = 12; umpro.Hud_Bid_Open_Date__c = date.today().addDays(-25); umpro.Hud_Price__c = 4569854; umpro.Hud_Year_Built__c = 2004; umpro.Hud_zip_Code__c = ‘12345847’; HudUnmattachedPropertyList.add(umpro); insert HudUnmattachedPropertyList; Property__c prop = new Property__c(); prop.Name = ‘TestProperty’; prop.Hud_Status__c = ‘Test’; prop.Hud_Address__c = ‘TestAddress’; prop.zillow_zpid__c = ‘0123456’; prop.zillow_zestimate_amount__c = 500000; prop.ListPrice__c = 451258; prop.OriginalListPrice__c = 10000000; prop.zillow_zestimate_valuationRange_high__c = 5469745; prop.RoomsTotal__c =3; prop.Hud_Unmatched_Property__c = HudUnmattachedPropertyList[0].Id; prop.Perfect_Matched_Hud_Property__c = HudUnmattachedPropertyList[0].Id; insert prop; mapHudHomeStoreButtonController.updateProperty(propertyList[0].Id); propertyList[0].Hud_Unmatched_Property__c = HudUnmattachedPropertyList[0].Id; update propertyList; mapHudHomeStoreButtonController.updateProperty(propertyList[0].Id); } }Click here to learn more
We faced some of the roadblocks, while undergoing these integrations:
Roadblocks that we faced in the integration
We were not able to get some fields/ calculation from Zillow and faced issues in fetching the data from the various APIs.
These are the types of issues:
- a) GetZestimate(Limit-warning)
<message>
<text>Request successfully processed</text>
<code>0</code>
<limit-warning>true</limit-warning>
</message>
This output field will not be returned if it is false.
- b) GetChart API( Limit-warning)
<message>
<text>Request successfully processed</text>
<code>0</code>
<limit-warning>true</limit-warning>
</message
- c) GetSearchResults API( Limit-warning)
<message>
<text>Request successfully processed</text>
<code>0</code>
<limit-warning>true</limit-warning>
</message>
Solution for the Roadblocks
For fields and calculations, we opted for HTML integration, so as to get whole HTML code and iterate it according to the requirements.
After that we have created a Salesforce portal for sales team to login and manage their leads, listings and opportunities.We track down all the details of properties and list down all the details.
Section # 2 : Supplier, Buyer Purchasing and Rent Model & Commision Calculation
When we complete Salesforce portal after that we move to next step in which we have done the following:
A particular listing or requirement can be of the following 4 categories.
SELLER: Property Listing for Sale
SELLER: Property Listing for Rent
BUYER : Requirement for Purchase
BUYE