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 only supported for SMB businesses.
NOTE: If there is an enterprise business to be set up and there are unique sign-in required for every location, such integration should be set up as an SMB i.e an integration group should be created for every location.
Integrating Birdeye with Cliniko
User Manual - SUPPORT ARTICLE
Cliniko is a cloud-based Practice Management System (PMS) for clinics and allied health practitioners. The PMS supports various features, including patient account management, patient records management, appointment management, and billing. etc.
Birdeye can seamlessly integrate with your Cliniko account and send out review solicitations to your patients automatically. Integrating Cliniko with Birdeye will automate the process of sending out review requests to patients daily.
Table of Contents
Triggers Supported
Information from Birdeye dashboard
Login
Manage Triggers
Manage Properties
Manage Locations
Integration Requirements
Triggers supported
Birdeye allow you to fetch data from your CRM using a predefined trigger. Here is the supported trigger for Cliniko:
Trigger Display Name | Trigger Name/Value | Trigger Description |
Cliniko Appointment Trigger | Cliniko Appointment Trigger | This trigger is used to fetch customer data based on the completed appointments. |
Information from Birdeye Dashboard
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.
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 the Location ID, hover over the ‘Status’ of the location.
Generating an API Key
To generate an API key, follow the step below:
Click on ‘My info’ under your name on the left navigation rail.
Click the ‘Manage API keys’ button under the API keys.
Note: Make sure that "Allow yourself to create and use API keys" is toggled to Yes. Otherwise, you will not be able to create an API key.
You will be redirected to the API Keys Page. Click on ‘+ Add an API Key.’
Now give your API key a unique name and click on the ‘Create API key.’
Once you click Create API Key, you will view a long string of letters and numbers—this is your API key.
IMPORTANT: Copy it now BEFORE clicking Done, as it won't be shown again.
Integration Process
Before you can integrate Cliniko 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
After successful login in the integration dashboard, you have to click on ‘BE integration’ and then click on ‘Add Integration’.
Search for the CRM in the search bar and select it. Click on ‘Next’.
Manage Triggers
The trigger is automatically selected as only one trigger is supported.
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.
Customer fetch delay: It is used if businesses want to send review requests with a delay (number of days).
API key: The client will provide the API key for authorisation.
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 drop-down 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 changes if required.
Status: It shows the integration status (Active or inactive).
Frequency: It is the number of times integration will sync with CRM (days or hours).
Next RunTime: It is the next scheduled time when the integration will run.
Customer fetch delay: It is used if businesses want to send review requests with a delay (number of days).
Location Name: Please provide a comma-separated list in the Location name provided by the client for which review requests need to be sent.
How to find the location name in Cliniko:
The intended name for the location name is the business name.
Override Group Properties: With this, you can override the API Key.
Click on ‘Next’ and click on ‘Save.’
Note:
For SMB: You can use ‘manage the locations’ using this curl command.
For Enterprise: You can use ‘manage the locations’ using this curl command.
Curl Commands
Before you can integrate Cliniko 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 for SMB Business (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": 159894373919788,
"integrationSourceId": 118,
"integrationGroupProperties": [
{
"propertyKey": "cliniko.api.key",
"propertyValue": "MS05ODkwMTU1NzY1ODIwMzcyNjAtSWRPVXNVMytzR1JyMVlwdWdOM2hkbDJBRi9nVlM3TmU-au3",
"isSecure": false
},
{
"propertyKey": "customer.fetch.delay",
"propertyValue": "0",
"isSecure": false
}
],
"integrationGroupTriggers": [
{
"triggerId": 129,
"triggerTypeId": 1
}
]
}'159894373919788 - Business ID - This is a Business ID for a single location SMB account
129 - 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 Cliniko. Identify the trigger ID(s) and insert (use commas) in case of multiple trigger IDs.
Create Integration Group for Enterprise Business (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": 159894373919788,
"integrationSourceId": 118,
"integrationGroupProperties": [
{
"propertyKey": "cliniko.api.key",
"propertyValue": "MS05ODkwMTU1NzY1ODIwMzcyNjAtSWRPVXNVMytzR1JyMVlwdWdOM2hkbDJBRi9nVlM3TmU-au3",
"isSecure": false
},
{
"propertyKey": "customer.fetch.delay",
"propertyValue": "0",
"isSecure": false
}
],
"integrationGroupTriggers": [
{
"triggerId": 129,
"triggerTypeId": 1
}
]
}'159894373919788 - Business ID - This is Enterprise ID for multi-location account and Business ID for a single location SMB account.
129 - Integration Trigger ID - This 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 Cliniko. Identify the trigger ID(s) and insert (use commas) in case of multiple trigger IDs.
Fetch information for all the triggers available for Cliniko (Curl Command)
Copy this Curl Command
curl --location --request GET 'https://common-services.Birdeye.com/integration/trigger/integrationtriggers/sourceid/118' \ --header 'cache-control: no-cache' \ --header '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": 129,
"triggerService": "clinikoAppointmentTriggerServiceImpl",
"displayName": "Cliniko 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": [
118
],
"triggerName": "Cliniko Appointment Trigger",
"caseTypeId": 1
}
]Find business integration group details (Curl Command)
Copy this Curl Command
curl --location --request GET 'https://common-services.birdeye.com/integration/businessintegrationgroup/159894373919788' \ --header 'Cache-Control: no-cache'
Sample Response
{
"groupId": 22253,
"integrationSourceType": {
"id": 118,
"integrationSource": "CLINIKO",
"sourceCategory": "Healthcare",
"integrationType": "Birdeye API",
"integrationPlan": "Standard",
"oauthEnabled": false},
"integrationGroupTriggers": [
{
"triggerId": 129,
"triggerTypeId": 1,
"actionIds": [
1
]
}
]
}22253 - Group ID: A group ID will be returned in the sample response with the details of the existing triggers for a business.
159894373919788 - Business ID: Enter the Business ID here to get the integration group details for a business.
Trigger Information: Only required if the client wants a change (Curl Command)
Copy this Curl Command
curl --location --request POST 'https://common-services.birdeye.com/integration/update/businessintegrationgroup?replaceTriggers=true' \
--header 'cache-control: no-cache' \
--header 'content-type: application/json' \
--data-raw '{
"groupId": 22253,
"integrationGroupTriggers": [
{
"triggerId": 129,
"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.
22253 - Group ID: The Group ID which was returned in the previous step will be entered here.
129 - Trigger ID: Enter the Trigger ID (s) which need to be added or updated to the integration.
Integration Mapping (SMB Businesses)
Once the Integration Group is created, the next step is to create the Integration Mapping.
Copy this Curl Command
curl --location --request PUT 'https://common-services.birdeye.com/integration/add/businessintegrationmapping' \
--header 'Content-Type: application/json' \
--data-raw '{
"businessNumber":159894373919788,
"integrationGroupId": 22253,
"integrationProperties": [
{
"propertyKey": "cliniko.location.name",
"propertyValue": "New York",
"isSecure": false
},
{
"propertyKey": "customer.fetch.delay",
"propertyValue": "0",
"isSecure": false
}
],
"active": true,
"test": false,
"beta": false
}'159894373919788 - Business ID: Enter the Business ID for the SMB Business.
22253 - Group ID: Enter the Group ID, which was returned when the Integration group was created.
true - Active: Enter true to enable the integration.
Integration Mapping (Enterprise Businesses)
Copy this Curl Command
curl --location --request PUT 'https://common-services.birdeye.com/integration/add/businessintegrationmapping' \
--header 'Content-Type: application/json' \
--data-raw '{
"businessNumber": 159894396935987,
"integrationGroupId": 22253,
"integrationProperties": [
{
"propertyKey": "cliniko.location.name",
"propertyValue": "New York",
"isSecure": false
},
{
"propertyKey": "customer.fetch.delay",
"propertyValue": "0",
"isSecure": false
}
],
"active": true,
"test": false,
"beta": false
}'159894396935987- Business ID: Enter the Business ID.
22253 - Group ID: Enter the Group ID, which was returned when the Integration group was created.
true - Active: Enter true to enable the integration.
New York - Location Name: Enter the Location name as per the name specified in the Cliniko account for the Location picklist corresponding to this business.
Important Instructions for Email and SMS opt-in/ opt-out.
Log in to the ‘Cliniko’ Click on the ‘Patients’ tab on the left navigation rail. Further click on the ‘+Add patient.’
Enter the details such as name, telephone number and email address.
Email and SMS opt-out
Scroll down to the ‘Communication preferences’ and click on the ‘Automated reminder type’ drop-down and click on ‘None.’
SMS opt-in and Email opt-out
Similarly, if you want to opt in of SMS, click on the ‘Automated reminder type’ drop-down and click on ‘SMS.’
Email opt-in and SMS opt-out
Similarly, if you want to opt-in of email, click on the ‘Automated reminder type’ drop-down and click on ‘Email.’
Email and SMS opt-in
If you need to opt-in for email and SMS, click on ‘SMS & Email.’
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 Cliniko are:
The customer is inactive
Integration is beta
The patient did not arrive for an appointment.
Description
The customer is inactive.
Integration is beta.
The patient did not arrive for an appointment.
























