*This integration is supported for both SMB & Enterprise businesses.
Integrating Birdeye with Yardi
User Manual
Table of Contents
Introduction
Integration Requirements
Details required from the Birdeye client
Triggers Supported
Location names for multi-location account
Location custom field name for multi-location account
Details required from the Birdeye dashboard
Enterprise ID for multi-location account
Business ID in case of a single-location account
Integration Process
Business Integration Group
Create Integration Group (Curl Command)
Fetch information for all the triggers (Curl Command)
Find business integration group details (Curl Command)
Update Trigger Information (Curl Command)
Integration Mapping - How it works
Complete Integration within Birdeye dashboard
Introduction
Yardi is a property management software for real-estate clients. It provides integrated property management software and investment management solutions for all real estate verticals thus allowing owners, managers, investors, and other stakeholders access to information specific to their needs.
NOTE: Integration is only supported for Yardi Voyager 7 version.
If you want to raise an issue or seek support from Yardi, log on to the Yardi Client Central here: https://clientcentral.yardi.com/ and raise a support ticket highlighting the issue.
Here are the log-in credentials:
Username: integrations-support@birdeye.com
Password: Onesecurity@4321
Integrating Yardi with Birdeye will automate the process of sending out review requests to customers on a daily basis.
Integration Requirements:
Supported triggers
Birdeye allows you to fetch data from your CRM using some predefined triggers. You can choose any combination from the list of available triggers and inform the support team about your selection. Here are the supported triggers for Yardi:
Trigger Display Name | Trigger Name/AdditionalParam Value | Trigger Description |
Yardi Move In Trigger | Move In | This trigger is used to fetch customer data based on move-in into the property. |
Yardi Move Out Trigger | Move Out | This trigger is used to fetch customer data based on move-out from the property. |
Yardi Closed Service Request Trigger | Service Request | This trigger is used to fetch customer data based on the closed service request. |
Yardi Lease Renewal Trigger | Lease Renewal | This trigger is used to fetch customer data based on the lease renewal of the property. |
Yardi Prospect Visit Trigger | Prospect Visit | This trigger is used to fetch customer data based on the prospect visit to the property |
Information required from BirdEye Dashboard
For single location SMB account - Business ID
For multi-location account - Enterprise ID of all locations
Enterprise ID
Prerequisites for Yardi Clients
Clients must complete these steps listed below prior to running Yardi cURL commands.
Download the Common/Resident Data, Service Request and ILS Guest Card Interface setup guides from Yardi Client Central.
Complete the setup of the Common/Resident Data, Service Request and ILS Guest Card Interfaces make sure it includes Email and Phone numbers.
Setup a new interface user
Configure Properties for Common/Resident Data, Service Request and ILS Guest Card.
Send us the following pieces of information once completed:
Voyager URL
Interface Username
Interface Password
Database Name
Platform
Property Code List (Associated with each Birdeye location)
Detailed Steps to setup the interface in Yardi - Yardi Setup Guide
After the configuration is done by the client please use this API Yardi Sanity API Testing for sanity testing if the credentials are correct and we have the access to the property code list provided to us to integrate.If we get any error in the response then we should provide the exact error reason to the client to check at their end or with their Yardi support.
If the client customer success team is not able to help in setting up the Yardi Integration (within next 2 business days), Birdeye to report an issue with Yardi interface customer support team
Login to https://clientcentral.yardi.com/ using integrations-support@birdeye.com email Id
Click on Add Interface Case on the Home Page
Select Interface as Service Request or Common/Resident Data or ILS Guest Card in whichever interface the issue is coming
Enter Interface Entity Name as Birdeye
Enter the client name,phone,email and the voyager URL
Enter Issue Type as Error Message, Case Type as Client(s)-Specific Issue and Case Priority as Critical
Provide the summary of the issue as the Error message which the interface web service is returning
Attach the xml request & response to the case.
In the description provide the voyager credentials and all the data required to access the web service. Also provide the request body along with the response which the web service is returning.
Enter Scope as This is happening for just one client.
You can also provide screenshots in the attachments
Click Submit
Once the interface case is created you can check the status under Review Interface Case.
NOTE: Multiple Yardi properties can be mapped to a single Birdeye location
Integration process
Before you can integrate Yardi with Birdeye, you will need to set up following configurations:
Business Integration Group: A business integration group is a configuration that supports the business hierarchy of individual businesses on the Birdeye platform. The properties that are common for all business integrations are entered at the group level. Setting up a business integration group allows you to associate multiple business locations with the Enterprise account. Below are the list of curl commands that you will need to run to set this up.
(a) Create Integration Group (Curl Command)
Copy this Curl Command
curl --location --request PUT 'https://common-services.birdeye.com/integration/add/businessintegrationgroup' \
--header 'cache-control: no-cache' \
--header 'content-type: application/json' \
--data-raw '{
"parentBusinessNumber": 150088776180458,
"integrationSourceId": 21,
"integrationGroupProperties": [
{
"propertyKey": "yardi.voyager.domain",
"propertyValue": "www.yardiyc1.com"
},
{
"propertyKey": "yardi.voyager.webshare",
"propertyValue": "8223tp7s7"
},
{
"propertyKey": "yardi.user.name",
"propertyValue": "birdeyews"
},
{
"propertyKey": "yardi.password",
"propertyValue": "82098",
"isSecure": true
},
{
"propertyKey": "yardi.database.name",
"propertyValue": "afqoml_70dev7"
},
{
"propertyKey": "yardi.platform.name",
"propertyValue": "SQL Server"
},
{
"triggerId": 25,
"propertyKey": "customer.fetch.delay",
"propertyValue": 10
},
{
"triggerId": 26,
"propertyKey": "customer.fetch.delay",
"propertyValue": 12
},
{
"triggerId": 27,
"propertyKey": "customer.fetch.delay",
"propertyValue": 5
},
{
"triggerId": 111,
"propertyKey": "customer.fetch.delay",
"propertyValue": 5
},
{
"triggerId": 112,
"propertyKey": "customer.fetch.delay",
"propertyValue": 5
}
],
"integrationGroupTriggers": [
{
"triggerId": 25,
"triggerTypeId": 1
},
{
"triggerId": 26,
"triggerTypeId": 1
},
{
"triggerId": 27,
"triggerTypeId": 1
},
{
"triggerId": 111,
"triggerTypeId": 1
},
{
"triggerId": 112,
"triggerTypeId": 1
}
]
}'150088776180458 - Business ID - This is Enterprise ID for multi-location account and Business ID for a single location SMB account
25, 26, 27, 111 & 112- Integration Trigger ID - Can be one or more triggers. Ask the business what trigger they would like to integrate with and then run the curl command below to fetch all possible triggers for Yardi. Identify the trigger ID(s) and insert (use commas) in case of multiple trigger IDs
yardiyc1.com - yardi.voyager.domain: Property value for this will be provided by the client. Should be complete domain name but without starting with https:// or ending with / like www.yardiasp14.com
82098 - password: Property value for this will be provided by the client.
SQL Server - platform.name: Property value for this will be provided by the client.
fetch.delay : Will be shared by the customer on the initial setup call for each trigger.It depicts that after how many days review requests need to be sent for each trigger
afqoml_70dev7 - yardi.database.name: Property value for this will be provided by the client.
birdeyews - user.name: Property value for this will be provided by the client.
8223tp7s7 - yardi.voyager.webshare: Property value for this will be provided by the client. Should not contain any url or slashes. Usually the last part of the url shared by Yardi
NOTE: We will get the group ID once we run the first curl command (Integration Group). Make a note of the group ID as that will be required during the integration mapping.
(b) Fetch information for all the triggers available for Yardi (Curl Command)
Copy this Curl Command
curl -X GET https://common-services.birdeye.com/integration/trigger/integrationtriggers/sourceid/21 -H 'cache-control: no-cache' -H 'content-type: application/json'
Sample response: A sample response like this (see below) will appear after you run the curl command. The response will have the trigger name, description and the ID. This trigger ID will be utilized while creating the integration group. An integration can have one or more triggers. To use more than one trigger, enter comma separated values while creating the integration group.
[{
"id":25,
"integrationSourceId":21,
"triggerService":"yardiMoveInTriggerService",
"displayName":"Yardi Move In Trigger",
"description":"This trigger is used to fetch customer data based on move-in to the property",
"active":true,
"integrationSourceName":"Yardi",
"integrationTriggerType":[{"id":1,"name":"JOB"}]
},
{
"id":26,
"integrationSourceId":21,
"triggerService":"yardiMoveOutTriggerService",
"displayName":"Yardi Move Out Trigger",
"description":"This trigger is used to fetch customer data based on move-out from the property",
"active":true,
"integrationSourceName":"Yardi",
"integrationTriggerType":[{"id":1,"name":"JOB"}]
},
{
"id":27,
"integrationSourceId":21,
"triggerService":"yardiClosedServiceRequestTriggerService",
"displayName":"Yardi Closed Service Request Trigger",
"description":"This trigger is used to fetch customer data based on the closed service request",
"active":true,
"integrationSourceName":"Yardi",
"integrationTriggerType":[{"id":1,"name":"JOB"}]
},
{
"id":111,
"integrationSourceId":21,
"triggerService":"yardiLeaseRenewalTriggerService",
"displayName":"Yardi Lease Renewal Trigger",
"description":"This trigger is used to fetch customer data based on the lease renewal of the property",
"active":true,
"integrationSourceName":"Yardi",
"integrationTriggerType":[{"id":1,"name":"JOB"}]
},
{
"id":112,
"integrationSourceId":21,
"triggerService":"yardiProspectVisitsTriggerService",
"displayName":"Yardi Prospect Visit Trigger",
"description":"This trigger is used to fetch customer data based on the prospect visit to the property",
"active":true,
"integrationSourceName":"Yardi",
"integrationTriggerType":[{"id":1,"name":"JOB"}]
}]25, 26, 27 , 111 & 112 - Trigger IDs
(c) Find business integration group details (Curl Command)
Copy this Curl Command
curl -X GET https://common-services.birdeye.com/integration/businessintegrationgroup/151578351339015 -H 'Cache-Control: no-cache'
151578351339015 - Business ID: Enter the Business ID here to get the integration group ID for the business.
Sample Response
[
{
"groupId": 142,
"integrationSourceType": {
"id": 15,
"integrationSource": "YARDI",
"sourceCategory": "Real Estate",
"oauthEnabled": false
},
"integrationGroupTriggers": [
{
"triggerId": 25,
"triggerTypeId": 1
},
{
"triggerId": 26,
"triggerTypeId": 1
}
]
}
]142 - Group ID: A group ID will be returned in the sample response with the details of the existing triggers for the business.
(d) Update Trigger Information (use only if business wants to change) (Curl Command)
Copy this Curl Command
curl -X POST 'https://common-services.birdeye.com/integration/update/businessintegrationgroup?replaceTriggers=true' -H 'cache-control: no-cache' -H 'content-type: application/json' -d '{ "groupId": 142,"integrationGroupTriggers":[{"triggerId":26,"triggerTypeId":1}]}'
replaceTriggers=true - To replace existing trigger(s), enter the value for replaceTriggers as To add new trigger(s) to the existing list, the value for replaceTriggers should be false
142 - The Group ID that was returned in the previous step will be entered here.
26 - Enter the Trigger ID(s) that need to be added or updated to the integration.
Business Integration Mapping: This configuration is developed to create the actual business integration mapping. Each business integration mapping corresponds to an individual business location.
(e) Create Business Integration Mapping-How it works
Copy this Curl Command
curl --location --request PUT '‘https://common-services.birdeye.com/integration/add/businessintegrationmapping’' \
--header 'accept: application/json' \
--header 'cache-control: no-cache' \
--header 'content-type: application/json' \
--data-raw '{
"businessNumber": 150088776180458,
"integrationGroupId": 18,
"active": true,
"integrationProperties": [
{
"propertyKey": "yardi.property.id",
"propertyValue": "birdeye1"
},
{
"propertyKey": "yardi.event.type",
"propertyValue": "Cancel,Appointment",
"triggerId": 112
}
]
}'150088776180458- Business ID- Enter the Business ID here.
18 - Group ID- Enter the Group ID that was returned when the Integration group was created.
birdeye1 - Enter the name of the location in Yardi.If there are multiple properties in Yardi mapped to a single location in Birdeye then those property names can be specified as a ‘comma-separated list’ in this value.
Cancel,Appointment - Enter the event types of the location in yardi for prospect visit.If there are multiple event types of prospect for which customer needs to send review request for then those event types can be specified as a ‘comma-separated list’ in this value.
NOTE: This event type property is mandatory if we are configuring the Yardi Prospect Visit Trigger.
Query to check if integration is working or not
select bi.business_number,bitm.exception_start_date,bitm.last_load_date,bitm.trigger_id,bitm.exception_reason from business_integration_trigger_metadata bitm,business_integration bi,business_integration_group big,business_integration_source bis where bi.integration_group_id= big.id and big.integration_source_id=bis.id and bi.id=bitm.business_integration_id and bi.business_number=158094738141156 and bis.integration_source='YARDI';
Replace the business number for which the integration status needs to be checked.
This provides the data for all the triggers
The last_load_date provides the date when Birdeye attempted to get the data
The exception_start_date and exception_reason provides details of any error and the date from when is the error coming
NOTE: For checking the customer details being checked in please refer to Kibana.
Campaigns Tags
Campaign tags are used to setup campaigns within the Birdeye dashboard. These tags are either provided by the client or can be fetched from Kibana for already checkedIn contacts.
Yardi Campaign tags are:
Category, SubCategory, Work Order ID.
Restriction Reason
Restriction reason is used to identify the contacts which have been opted-out(restricted) from sending a review request. This reason can be fetched from Kibana for contacts that are checked-in already.
Possible restriction reasons for Yardi are:
Category is in the exclusion list
Resident status is in the exclusion list
Integration is beta
Description
The service request category associated with this customer is in the exclusion list.
The resident status falls in the restricted status list for this resident ie. Past, Evicted, Cancelled, Denied.
Troubleshooting steps
If you encounter any of the above restriction reason, please search the following keys to know the reason for restricting the contact.
Category is in the exclusion list
Please look up for the key additionalParams.Category on kibana to know the value of category.
Resident status is in the exclusion list
Please look up for the key yardi_resident_status on the kibana to know the value of resident status.
Integration is beta
Please look up for the key beta in kibana to know whether the integration is beta or not.


