Connect your app to your
any CRM or LOS
Platform Integrations enable your mobile app to “talk” to other applications (such as your CRM) and share important data in real time. Automatically send leads, client details and pre-qualification data from the Canadian Mortgage App into the systems you already use. Less data entry. Faster follow-up. Better client experience.
Works with the tools mortgage brokers already use:
- BluMortgage (CRM)
- Brokeredge (CRM)
- MyBrokerPro (CRM)
- Webhooks (Any)
- Expert PRO (Filogix) (LOS)
- Finmo (LOS)
- Scarlett (LOS)
- Velocity (LOS)
We also support Webhooks. This means your app can also send data without a direct API connection. For instance, you can use Webhooks to connect your app to thousands of applications via Zapier or Make.
Capture Every Lead
When a client creates a profile, completes a PreQual or requests mortgage help, their information can flow directly into your CRM or LOS. No copying, exporting or missed opportunities.
Follow Up Faster
Use activity in your app to trigger tasks, emails, texts or automated client journeys. Reach clients when they are actively considering their mortgage.
Eliminate Double Entry
Send contact, mortgage and qualification details directly into your CRM or LOS. Spend less time entering data and more time working with clients.
Know More Before You Call
Get more than a name and phone number. Receive valuable mortgage scenario and qualification details so you can have a better conversation from the first call.
How to set it up
PRO Admin > Connections
Open your app.
Tap the PRO Admin button in the top left corner of your app’s home screen.
In your mobile app admin, tap on Connections
Each platform connection has its unique setup steps. Click on the desired platform to view the steps.
Webhook Tutorials
HubSpot
Mailchimp
Trello
For Developers
We currently support three types of payloads.
- Client Profile
- Client PreQualification
- CMA Leads
Client Profile
The profile data payload is posted when a client creates a new profile on the professional’s app or logs in to an existing account. The JSON data structure has a type key that shows this is a profile payload.
{
"type": "profile",
"version": "1.0",
"customerId": "CO36817",
"ownerCustomerId": "23",
"firstName": "Ben",
"lastName": "Consumer 2",
"email": "consumer2@bendigi.com",
"phone": "416-720-3044",
"localeIdentifier": "en",
"defaultLocation":
{
"countryCode": "CA",
"province": "ON",
"city": "Toronto",
"longitude": "-79.38459",
"latitude": "43.80549"
},
"createdAt": "2020-07-07T21:40:21.172Z"
}
Aside from basic contact information, the payload also contains unique ids.
customerId is the user’s unique id on your mobile app and should be stored in your CRM because future notifications about this user will include the same key/value so it can be cross-referenced.
ownerCustomerId is the pro’s own unique id with us. This is particularly useful if the pro shares their CRM account with another colleague and both have an app with us. Here you may use the same webhook URL, and this field will help to identify from whose app the data originated.
Client PreQualification
The PreQualification data payload is our most comprehensive data set. The data is posted when a client completes or updates their scenario on their mobile app. The JSON data structure has a type key that identifies this payload as a prequalification.
It also has a unique scenarioId; this system-generated id will live with the scenario. Even if the user updates their input and the data is recalculated and reposted, the scenarioId will not change. However, clients can have multiple PreQual scenarios, so if the user starts an entirely new scenario, the posted data will carry a new scenarioId.
{
"type": "prequalification",
"version": "1.0",
"scenarioId": "3A3E9126-94F3-4D41-BAC0-B93D1BC16842",
"scenarioTitle": "Sally",
"contact": {...},
"applicant":{...},
"subjectProperty":{...},
"mortgage":{...}, // ommited on Realtor apps
"closingCosts":{...},
"qualificationDetails":{...}
}
The Pre-Qualification payload is very comprehensive and includes multiple sections. If you want to parse all the fields fully, please read this. However, if you are just looking to extract the most important information that the user has entered, look at the Contact, Applicant, and Subject Property sections below.
Contact Section
This entire section is useful and should be retrieved in full.
"contact": {
"customerId": "69",
"firstName": "Ben",
"lastName": "Salami",
"email": "consumer@bendigi.com",
"phone": "416-720-3044"
}
Applicant Section
This will give you the information that the user has entered, including the total available funds they have saved up, their gross annual income, a list of liabilities, and whether they own other properties. The income key is an array of incomes; however, currently, we only have one entry listed as employment income. In the future, users can enter other sources of income, hence the array.
"applicant": {
"totalAvailableFunds": 400000,
"firstTimeBuyer": true,
"foreignBuyer": false,
"creditScoreRange": "800 - 900",
"employmentType": "employed",
"incomes": [
{
"amount": 150000,
"type": "employmentincome",
"frequency": "annual"
}
],
"liabilities": [],
"nonSubjectProperties": []
},
Subject Property
The subject property section will contain the pre-qualified purchase price and other estimates.
If you want the absolute minimum from this section, you should parse out
- purchasePrice,
- downPayment
- propertyLocation.
If you want to go further, look at the propertyType and occupancy.
"subjectProperty": {
"purchasePrice": 999999,
"totalMonthlyCost": 5417.634998018308,
"propertyType": "house",
"brandNewHome": false,
"propertyLocation": {
"province": "Ontario",
"city": "Toronto",
"municipality": "toronto",
"fullAddress": "Toronto, ON, Canada",
"placeId": "ChIJpTvG15DL1IkRd8S0KlBVNTI"
},
"occupancy": "ownerOccupied",
"rentalIncome": {},
"downPayments": [
{
"amount": 173673.9875,
"type": "personalcash"
}
],
"expenses": [
{
"type": "propertytax",
"payment": 5997.03400296,
"frequency": "annual"
},
{
"type": "heat",
"payment": 150,
"frequency": "monthly"
}
]
}
CMA Leads
CMA Leads are generated by users who submit mortgage requests using the generic Canadian Mortgage App. A professional must participate in the referral program to receive such leads.
All payloads are posted with type = lead.
Further, the leadType defines the exact place on the app from which these users have submitted the request. This is not very important once the leads are received, but here is what they mean:
- lead_preq: This type of lead is directly generated in the pre-qualification tool
- lead_contact: The user used the main contact form in the home screen or inside one of the tools that allows submission.
- lead_quote: The user visited the rate screen and decided to request a quote for a rate
- lead_rate: The user went further into a specific rate on the app and decided to apply for it.
Mortgage Goal
One of the more important properties in the lead payload is the key mortgageGoal. There are 5 options. Depending on the option, scenario data may also be attached. The 5 options are preapproval, purchase, refinance, renew or other.
Here are some examples of payload for each mortgage goal.
{
"type": "lead",
"version": "1.0",
"leadId": "QfMDqwfeRi",
"leadType": "lead_preq",
"contact": {
"customerId": "CO36752",
"firstName": "Ben",
"lastName": "Salami",
"email": "consumer@bendigi.com",
"phone": "(416) 720-3044",
"preferredContactMethods": [
"text",
"phone",
"email"
],
"preferredContactLanguages": [
"en"
],
"userLocation": {
"province": "ON",
"city": "Toronto"
}
},
"request": {
"clientNotes": "Client notes goes here",
"mortgageGoal": "preapproval",
"propertyValue": 807987.4236961136,
"propertyLocation": {
"province": "Ontario",
"city": "Toronto"
}
},
"scenarioData": {
// follows the PREQ scenario structure
},
"submittedAt": "2023-01-09T21:00:13.901Z"
}
{
"type": "lead",
"version": "1.0",
"leadId": "1H8x0CUNeN",
"leadType": "lead_contact",
"contact": {
"customerId": "CO36752",
"firstName": "Ben",
"lastName": "Salami",
"email": "consumer@bendigi.com",
"phone": "(416) 720-3044",
"preferredContactMethods": [
"text",
"phone",
"email"
],
"preferredContactLanguages": [
"en"
],
"userLocation": {
"province": "ON",
"city": "Toronto"
}
},
"request": {
"clientNotes": "Client noted goes here",
"mortgageGoal": "refinance",
"propertyValue": 1200000,
"mortgageBalance": 250000,
"maturityDate": "2022-12-29T21:06:00.000Z",
"propertyLocation": {
"countryCode": "Canada",
"province": "Ontario",
"city": "Toronto",
"longitude": "-79.3831843",
"latitude": "43.653226"
}
},
"submittedAt": "2022-12-28T21:07:03.895Z"
}
{
"type": "lead",
"version": "1.0",
"leadId": "Ykq77SUvC6",
"leadType": "lead_contact",
"contact": {
"customerId": "CO36752",
"firstName": "Ben",
"lastName": "Salami",
"email": "consumer@bendigi.com",
"phone": "(416) 720-3044",
"preferredContactMethods": [
"text",
"phone",
"email"
],
"preferredContactLanguages": [
"en"
],
"userLocation": {
"province": "ON",
"city": "Toronto"
}
},
"request": {
"clientNotes": "Client noted goes here",
"mortgageGoal": "renew",
"mortgageBalance": 850000,
"existingMortgageRate": {
"rate": 3.0
},
"maturityDate": "2022-12-31T21:08:00.000Z",
"propertyLocation": {
"countryCode": "Canada",
"province": "Ontario",
"city": "Toronto",
"longitude": "-79.3831843",
"latitude": "43.653226"
}
},
"submittedAt": "2022-12-28T21:09:44.735Z"
}
{
"type": "lead",
"version": "1.0",
"leadId": "BR9sH8rptn",
"leadType": "lead_contact",
"contact": {
"customerId": "CO36752",
"firstName": "Ben",
"lastName": "Salami",
"email": "consumer@bendigi.com",
"phone": "(416) 720-3044",
"preferredContactMethods": [
"text",
"phone",
"email"
],
"preferredContactLanguages": [
"en"
],
"userLocation": {
"province": "ON",
"city": "Toronto"
}
},
"request": {
"clientNotes": "Client Notes goes here and it’s a least 30 characters long"
"mortgageGoal": "other",
},
"submittedAt": "2022-12-28T21:30:46.746Z"
}