Skip to main content

Birdeye Native Integration - MINDBODY

Updated today

The information contained in this document is confidential, privileged, and only for the use of internal Birdeye users. This document may not be used, published or redistributed.

This integration is supported for both SMB & Enterprise businesses.

Integrating Birdeye with MINDBODY
User Manual - SUPPORT ARTICLE

MINDBODY is a business management software used by small and medium-sized business owners in the wellness industry. MINDBODY helps its clients with online booking, scheduling, payments, and a host of other marketing management and staff management features. Spas, salons, wellness centers, yoga studios, etc., mainly use it. Integrating MINDBODY with Birdeye will automate the process of sending out review requests to clients on a daily basis.

Once MINDBODY is integrated with Birdeye, Birdeye will pull client information from MINDBODY once daily for the appointments that were completed on the previous day. If you conduct regular fitness classes, Birdeye will fetch data for all the clients who attended classes on the previous day.

Birdeye collects the first name, last name, email address, and phone number of your clients and automatically sends them to review requests. Birdeye technical support team would need your MINDBODY SITE ID to set up the integration successfully.

This integration will also help you get the first name, last name, email ID, and phone number of the leads from Birdeye to the client’s Mindbody account.

NOTE: You can locate the SITE ID in the footer of the website.

Table of Contents


Integration Requirements

Triggers Supported

Birdeye allows you to fetch data from your CRM using 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 MINDBODY:

Trigger Display Name

Trigger Name/

Value

Trigger Description

MINDBODY Appointment Trigger

Appointment

This trigger is used to fetch customer data based on the completed appointments.

MINDBODY Class Trigger

Class Visit

This trigger is used to fetch customer data based on the class visits.

Birdeye Lead Trigger

Birdeye Lead

This trigger is used to push lead from Birdeye into CRM

Details required from the MINDBODY dashboard

Details required from the Birdeye dashboard

  • Enterprise ID for multi-location account

  • Business ID for single location SMB accounts.

  • Location Code

Information from Birdeye Dashboard

  1. For single location SMB account - Business ID
    Login to your Birdeye account, go to Left Navigation Rail and click on ‘Settings’. Once the new page appears, click on ‘Integrations’ and select ‘API.’

    You will find the ‘Business ID’ and ‘API key’ shown in the image.

  2. For multi-location accounts - Enterprise ID and Business IDs of all locations

Enterprise ID

Business IDs of all locations

Login to your Birdeye account, go to Left Navigation Rail and click on ‘Settings’. Once the new page appears, click on ‘Profile’ and select ‘Business Profiles.’

To view Location ID, hover over the ‘Status’ of location.


Integration Process

Before you can integrate Mindbody with Birdeye, you will need to set up the following configurations on the integration support dashboard:

To set up native integration, we have an integration support dashboard, where we need to set up the integration and then follow these steps to complete the configuration.

Login

  1. After successful login in the integration dashboard, you have to click on ‘BE integration’ and then click on ‘Add Integration.’

  2. Search for MINDBODY CRM in the search bar and select it. Click on ‘Next’.

Manage Triggers

Select the Trigger Name (Check Box) as per the client’s requirement and click ‘Next’.

Note: To fetch information for all the triggers available using curl commands, use this command. To replace triggers, use this curl command.

Manage Properties

Here; you can manage group-level properties, which will be applied to all locations under a CRM.

  1. Site ID: Enter the side ID provided by the customer.

  2. Lead Chat transcript Required- Set this to true to upload closed chat transcript with leads as attachments to CRM.

  3. Appointment Status: Enter the Appointment statuses for which the customer wants us to send Review Requests. Enter comma-separated values (Completed, Arrived).

  4. Referral Question Field ID: This value will be added in case of Birdeye lead trigger. Enter the custom field ‘Referral Question ID’ provided by the customer.

  5. Referral Answer Field ID: This value will be added in case of Birdeye lead trigger. Enter the custom field ‘Referral Answer ID’ provided by the customer.

Note: In case of adding a custom field name using the curl command, use this command.

Note: This step will create a group for our integration. Alternatively, you can do it via curl commands.

For SMB accounts, you can access the curl command.

For Enterprise accounts, you can access the curl command.

Manage Locations

For Single Location/Multi-Location Accounts, select the location from the drop-down menu and click on ‘Add.’

(In the case of Single Location accounts, it will give you only one option).

A drawer will appear on the right-hand side.

The Status, Frequency, and Next Runtime will be set by default. You can make the changes if required.

  1. Status: It shows integration status (Active or Inactive).

  2. Frequency: It is the number of times integration will sync with CRM (Days or Hours).

  3. Next RunTime: It is the next scheduled time when the integrations will run.

  4. Location code: The location code can be fetched from the API key and enter the location code for each location.

  5. Customer fetch delay (For all 3 triggers): It is used if businesses want to send review requests with a delay (number of days).

  6. Appointment Types: Enter the Appointment Types from Mindbody provided by the customer. Use a comma separator for multiple values.

Override Group Properties: With this, you can override the properties added at the group level, specific to each location.

Click on ‘Next’ and click on ‘Save.’

NOTE:

  1. For SMB: You can use ‘manage the locations’ using this curl command.

  2. For Enterprise: You can use ‘manage the locations’ using this curl command.


Completing the Integration Process

After the initial integration is set up by the Birdeye technical support team, you can log in to your Birdeye account to complete the rest of the integration process.

To complete the process, click on the 'Settings' tab on the left navigation rail of your Birdeye dashboard. Click on the ‘Business Profile’ under the ‘Profile’ section.

Click on the specific location for which you have set up the integration.

Once you click on a particular location, it will redirect you to that location. Now, scroll down to the ‘CRM Integrations’, and click on the ‘Authorize Mindbody’ button to authorize the business.


After you click the authorization button, you will be redirected to the MINDBODY website. Enter the email address and password associated with your MINDBODY account and click on 'Log In.’

Once you have logged into your MINDBODY account, your integration will be successful.

NOTE: After the successful integration, it may take 24 hours.

Upon successful integration, you will be redirected to your Birdeye account. Here, you can view the 'Authorized' status for Mindbody.


Curl Commands

Before you can integrate MINDBODY with Birdeye, you will need to set up the following configurations:

A business integration group is a configuration that supports the business hierarchy of individual businesses on the Birdeye platform. The common properties 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 is the list of curl commands you will need to run to set this up.

Create Integration Group (Curl Command)

Copy this Curl Command:

 curl -X PUT\https://common-services.birdeye.com/integration/add/businessintegrationgroup \-H 'Content-Type: application/json' \-H 'Postman-Token: b62349d7-0e69-4918-9230-43dace90b376' \-H 'cache-control: no-cache' \-d '{"parentBusinessNumber":147741436931658,"integrationSourceId":4,"integrationGroupTriggers":[{"triggerId":4,"triggerTypeId":1},{"triggerId":5,"triggerTypeId":1}],"integrationGroupProperties":[{"propertyKey":"siteid","propertyValue":296858},{"propertyKey":"mindbody.appointment.status","propertyValue":"Completed,Arrived"}]}'
  • 147741436931658- Business ID - This is Enterprise ID for a multi-location account and Business ID for a single location SMB account

  • 4, 5, 107- Integration Trigger ID - Can be one or more triggers. Ask the client what trigger they would like to integrate with, then run the curl command to fetch all possible triggers for MINDBODY. Identify the trigger ID (s) and insert (use commas) in case of multiple trigger IDs.

  • 296858 - Site ID - It will be shared by the client during the initial setup call.

  • Completed, Arrived - Appointment Status - The appointment status will be shared by the client during the initial setup call. You have the ability to insert multiple comma-separated appointment status.

NOTE: By default, the appointment status (Completed) is defined at the source level property, but if you want to configure the appointment status from 'Completed' to 'Arrived', then we need to define it at the group level property.

Fetch information for all the triggers available for MINDBODY (Curl Command)

Copy this Curl Command:

curl -X GET https://common-services.birdeye.com/integration/trigger/integrationtriggers/sourceid/4 -H 'cache-control: no-cache' -H 'content-type: application/json'

Sample response: A sample response like this would appear after you run the curl command. The response will have the trigger name, description and ID. This trigger Id will be utilized while creating the integration group. Integration can have one or more triggers. To use more than one trigger, enter comma-separated values while creating the integration group.

[{"id": 5,"triggerService": "mindBodyClassTriggerRestService","displayName": "Mindbody Class Trigger","description": "This trigger is used to fetch customer data based on the class visits.","active": true,"integrationTriggerType": {"id": 1,"name": "JOB"},"actionGroupId": 1,"sourceIdsList": [4],"triggerName": "Class Visit"},{"id": 4,"triggerService": "mindBodyAppointmentRestTriggerService","displayName": "Mindbody Appointment Trigger","description": "This trigger is used to fetch customer data based on the completed appointments.","active": true,"integrationTriggerType": {"id": 1,"name": "JOB"},"actionGroupId": 1,"sourceIdsList": [4],"triggerName": "Appointment"},{"id": 107,"triggerService": "birdEyeLeadTriggerService","displayName": "Birdeye Lead Trigger","description": "This trigger is used to push lead from Birdeye into CRM","active": true,"integrationTriggerType": {"id": 2,"name": "WEBHOOK"},"actionGroupId": 7,"sourceIdsList": [81,28,40,4],"triggerName": "Birdeye Lead"}]
  • 4, 5, 107- Trigger ID

Find business integration group details (Curl Command)

Copy this Curl Command:

curl -X GET https://common-services.birdeye.com/integration/businessintegrationgroup/147741436931658 -H 'Cache-Control: no-cache'
  • 147741436931658 - Business ID: Enter the Business ID here to get the integration group details for a business.

Sample Response:

[{"groupId":4,"integrationSourceType":{"id":4,"integrationSource":"MINDBODY","sourceCategory":"Spa","oauthEnabled":true},"integrationGroupTriggers": [{"triggerId": 4,"triggerTypeId": 1}]}]
  • 4 - Group ID: A group ID will be returned in the sample response with the details of the existing triggers for a business.

Trigger Information: Only required if client wants a 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": 14,"integrationGroupTriggers":[{"triggerId":4,"triggerTypeId":1}]}'
  • replaceTriggers=true -To replace existing trigger(s), enter the value for replaceTriggers as true. To add a new trigger(s) to the existing list, the value for replaceTriggers should be false.

  • 14- Group ID: The Group ID which was returned in the previous step will be entered here.

  • 4- Trigger ID: Enter the Trigger ID (s) which need to be added or updated to the integration.

Integration Mapping (SMB Businesses)

Copy this Curl Command:

curl -X PUThttps://common-services.birdeye.com/integration/add/businessintegrationmapping -H 'cache-control: no-cache' -H 'content-type: application/json' -d '{ "businessNumber": 147741436931658, "integrationGroupId" : 4, "active": true }'
  • 147741436931658- Business ID: Enter the Business ID for the SMB Business.

  • 4- Group ID: Enter the Group ID, which was returned when the Integration group was created.

Integration Mapping (Enterprise Businesses)

Copy this Curl Command:

curl -X PUT\'http:///integration/add/businessintegrationmapping' \-H 'Postman-Token: cbe30f72-e975-43dd-ab35-28c00654d0b7' \-H 'cache-control: no-cache' \-H 'content-type: application/json' \-d '{"businessNumber":147741436931658,"integrationGroupId":4,"active":true,"beta":true,"integrationProperties":[{"propertyKey":"mindbody.appointment.types","propertyValue":"EMP Grad,EMP Remote,EMP Body Comp"},{ "propertyKey" :"location.code", "propertyValue" :"1" }]}'
  • 147741436931658- Business ID: Enter the Business ID for each location here. If you have 10 locations, the Business ID will have to be replaced 10 times.

  • 4- Group ID: Enter the Group ID, which was returned when the Integration group was created.

  • 1- Location code -The client will either share the Location Code during the onboarding call, or you will have to log in using his MINDBODY credentials to fetch the ID.

  • EMP Grad, EMP Remote, EMP Body Comp - Appointment Types: This will be shared by the client during the initial setup call. You have the ability to insert multiple comma-separated appointment types. NOTE: The ‘Appointment Types’ field is not mandatory unless the customer wants to filter contacts based on this value.

To learn more about finding the location code, click here.


Finding The Location Code on MINDBODY

Use the below curl command to fetch all the locations under a given site:

curl --location --request GET 'https://api.mindbodyonline.com/public/v6/site/locations' \--header 'Api-Key: 7305f456ac1541198b49a71b6a44dca9' \--header 'SiteId: 176504'
  • 7305f456ac1541198b49a71b6a44dca9 - API Key - Use this common API key for all Mindbody integrations.

  • 176504- Site ID: Mindbody Site ID will be provided during the setup.

Response Body: The exact location code can be found from the response flow object ‘Locations’ -> ‘Id’ as highlighted in the below example response:

{"PaginationResponse": {"RequestedLimit": 100,"RequestedOffset": 0,"PageSize": 3,"TotalResults": 3},"Locations": [{"Address": "10624 South Eastern Avenue Suite G","Address2": "Henderson NV 89052","City": "Henderson","Id": 3,"Name": "The Salt Room Henderson","Phone": "7022697258","PostalCode": "89052","SiteID": 176504,"StateProvCode": "NV","TotalNumberOfRatings": 2,"AverageRating": 5.0,"TotalNumberOfDeals": 1},{"Address": "1958 Village Center Circle 7","Address2": "Las Vegas NV 89134","City": "Las Vegas","HasClasses": true,"Id": 1,"Name": "The Salt Room LV","Phone": "7022287258","PostalCode": "89134","SiteID": 176504,"StateProvCode": "NV","TotalNumberOfRatings": 18,"AverageRating": 4.83,"TotalNumberOfDeals": 1}]}

NOTE: In the above response, the location code for Henderson NV 89052 is “3” and for Las Vegas NV 89134, it is “1”.

Creating Custom Client Fields:

[NOTE: Only applicable if you are selecting Birdeye Lead Trigger]

Please refer to the following support article to create two custom fields - Referral Question and Referral Answer. Both fields must be of type text as shown below:

After successfully creating the two fields, follow the steps below to obtain the IDs of the new fields:

curl --location --request POST 'https://api.mindbodyonline.com/public/v6/usertoken/issue' \--header 'Api-Key: 7305f456ac1541198b49a71b6a44dca9' \--header 'SiteId: ' \--header 'Content-Type: application/json' \--data-raw '{"Username": "","Password": ""}'

Replace the ‘SiteId’, ‘Username’ and ‘Password’ above to obtain a valid access token. Use the token below:

curl --location --request GET 'https://api.mindbodyonline.com/public/v6/client/customclientfields' \--header 'Content-Type: application/json' \--header 'Api-Key: 7305f456ac1541198b49a71b6a44dca9' \--header 'SiteId: ' \--header 'Authorization: ' \

This will return a list of custom field IDs. Find the ID corresponding to the fields: ‘Referrer Question Field’ and ‘Referrer Answer Field’ you created earlier.

Add the values corresponding to each custom field on the dashboard as shown below:


Authorize Business

You need to authorize the business at the Integration end after authorizing them from the Dashboard.

Sometimes, the credentials entered were incorrect during the setup or expired, due to which we received a ‘401 Unauthorized Error’ while running the integration. As a result, the Integration will be marked ‘Unauthorized’. It will not run until the credentials are corrected and the business is authorized again, which involves the steps given in the below document.


Restriction Reason

Restriction reason is used to identify the contacts who have 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 MINDBODY are:

  1. Appointment type is not in the allowed list

  2. The class visit is not signed in

  3. Integration is beta

Description

  1. The appointment type must be either EMP Grad, EMP Remote, or EMP Body Comp.

  2. The particular class visit has signed In set to false.

  3. The integration setup is currently set to beta.

Troubleshooting steps

If you encounter any of the above restriction reasons, please search the following keys to know the reason for restricting the contact.

  1. Appointment type is not in the allowed list.
    Please look up the key pms_appointment_status in kibana to know the status value.

  2. Class visit is not signed in.
    Please look up the key signed_in in kibana to know the value of the flag.

  3. Integration is beta.
    Please look up the key beta in kibana to know whether the integration is beta or not.

Did this answer your question?