Skip to main content

Birdeye Native Integration - Netsuite

Updated in the last hour

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.

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 Netsuite
User Manual - SUPPORT ARTICLE

Netsuite is a cloud-based business management platform designed for all types of businesses to help them manage multiple accounting processes. That platform consists of a suite of applications that help companies run their business, understand the performance of their businesses and drive major efficiency gains and cost savings. The company’s ERP system manages core functions, including finance and accounting, inventory, orders and procurement. Customers can add options, including CRM for sales, service and marketing automation, human resources (HR) for personnel records, performance management and payroll, professional services automation (PSA) to plan and track projects and omnichannel commerce for both online and in-store sales. All of these modules share a common database. Netsuite can be used by businesses to manage accounts for different stakeholders, including vendors and customers. Integrating Netsuite with Birdeye will automate the process of sending out review requests to customers on a daily basis.

Once Netsuite is integrated with Birdeye, Birdeye will pull customer information from Netsuite once daily from the invoices raised for the customers on the previous day. Birdeye collects your customers' first name, last name, email address and phone number and automatically sends them review requests based on the preferences set within the Birdeye dashboard.

Table of Contents


Integration Requirements

Triggers supported

Birdeye allows you to fetch data from Netsuite using some predefined triggers. As part of the integration process, you will need to ask the business for its preference. After completing the integration, requests will be sent based on the configured trigger(s). Here are the supported triggers for Netsuite:

Trigger Display Name

Trigger Name/ Value

Trigger Description

Netsuite Paid Invoices Trigger

Paid Invoices

This trigger is used to fetch customer data based on fully paid invoices.

Netsuite Sales Orders Trigger

Sales Orders

This trigger is used to fetch customer data based on the sales orders.

Information from Birdeye Dashboard

  1. For single location SMB account - Business ID
    Login to your Birdeye account, go to Left Navigation Rail and click ‘Settings’. Once the new page appears, click ‘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 the Location ID, hover over the ‘Status’ of the location.


Set up Integration Process

Follow the below steps, to set up Integration on the Netsuite application:

  1. Login with the credentials in the Netsuite application.

  2. Hover over the ‘Setup’ tab and then ‘Integrations’. In addition, hover over ‘Manage Integration’ and click ‘New.’

  3. Enter a name in the ‘Name’ field.

  4. Scroll down to the page; under ‘Authentication’ you must first uncheck the ‘TBA: AUTHORIZATION FLOW’ checkbox and the following ‘TOKEN-BASED AUTHENTICATION’ checkbox to avoid authorization flow problems/issues.

  5. Ensure the ‘AUTHORIZATION CODE GRANT’ checkbox is checked and check the ‘REST WEB SERVICES.’ Enter the ‘Redirect URI’ as https://birdeye.com/crm/callback.php. Click on ‘Save.’

    After saving, you will get the confirmation message on the screen.

  6. Make a note of the ‘Consumer Key/Client ID’ and ‘Consumer Secret/Client Secret’, which you can only view after you save the integration. It will not appear a second time.


Integration process

Before you can integrate Netsuite 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 successfully logging in to the integration dashboard, you have to click on ‘BE integration’ and then ‘Add Integration.’

  2. Search for the Netsuite 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. Customer fetch delay: It is used if businesses want to send review requests with a delay (number of days).

  2. Netsuite Consumer Key: Add the client-supplied Netsuite Consumer Key.

  3. Netsuite Consumer Secret: Add the Netsuite Customer Secret that the client provided.

  4. Netsuite Account ID: It can be fetched from the Netsuite dashboard URL. The prefix before the ‘netsuite.com’ is the Account Id.
    For example in the ss below, the Account ID is ‘4030591-sb1’

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: The number of times integration will sync with CRM (Days or Hours).

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

  4. Customer fetch delay: It is used if businesses want to send review requests with a delay (number of days).

  5. State: The state is only required for multi-location businesses. Enter the comma-separated values of the state name and code.

  6. City: The city is only required for multi-location businesses. Enter the comma-separated values for city names.

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

The rest of the setup is to be completed within the business Birdeye dashboard:

On the bottom of the ‘Settings’ page, click on the 'Authorize Netsuite' button under the CRM integrations header. This button appears only after the above steps (curl commands) have been completed.

Once you click the authorization button, you will be redirected to the Netsuite website. Enter the email address and password associated with the business's Netsuite account and click 'Log In.’

After you have successfully signed in to the Netsuite account, Birdeye will ask for certain permissions to obtain customer data from your Netsuite account. Click on the 'Allow' button on the bottom right to continue with the integration process.

Once the access has been granted, you will be redirected to the Birdeye dashboard, and an 'Authorized' message will appear next to Netsuite.

Once you are successfully authorized with Netsuite, you can disconnect anytime by clicking on the 'Disconnect Netsuite' button beside 'Authorized.’ Once you are disconnected, you will no longer be able to fetch customer information from Netsuite. The 'Disconnect Netsuite' button will change to 'Authorize Netsuite.’

NOTE: Once the setup is complete, the integration runs once daily and pulls data for the previous day to send out review requests as per the configuration setup within the Birdeye dashboard. For instance, If XYZ firm check-in 10 customers on Monday, the review requests to the customers will be sent automatically on Tuesday.


Curl Commands

Before you can integrate Netsuite 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 --location --request PUT 'https://common-services.birdeye.com/integration/add/businessintegrationgroup' \
--header 'cache-control: no-cache' \
--header 'content-type: application/json' \
--data-raw '{
"parentBusinessNumber": 167766001544875,
"integrationGroupTriggers": [
{
"triggerId": 140,
"triggerTypeId": 1
},
{
"triggerId": 141,
"triggerTypeId": 1
}
],
"integrationGroupProperties": [
{
"propertyKey": "ns.consumer.key",
"propertyValue": "4fe02a9acbfb1c6bebefffe14ab811a7d614f2efdb9a33b098fa186b41f92ca9"
},
{
"propertyKey": "ns.consumer.secret",
"propertyValue": "46800e1777198acf70a597674810550defa5563c56ca89699e5e908fbd0f53bf"
},
{
"propertyKey": "ns.accountId",
"propertyValue": "4030591-sb1"
}
],
"integrationSourceId": 125
}'
  • 167766001544875- Business ID - This is Enterprise ID for a multi-location account and Business ID for a single location SMB account

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

NOTE:

We will get the group ID once we run the first curl (Integration Group) and make a note of the group ID, as that will be required while we are doing the integration mapping.

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

Copy this Curl Command

curl --location --request GET 'https://common-services.birdeye.com/integration/trigger/integrationtriggers/sourceid/125' \
--header 'cache-control: no-cache' \
--header '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 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": 140,
"triggerService": "netsuitePaidInvoicesTriggerService",
"displayName": "Netsuite Paid Invoices Trigger",
"description": "This trigger is used to fetch customer data based on the fully paid invoices",
"active": true,
"integrationTriggerType": {
"id": 1,
"name": "JOB"
},
"actionGroupId": 1,
"sourceIdsList": [
125
],
"triggerName": "Paid Invoices",
"caseTypeId": 1
},
{
"id": 141,
"triggerService": "netsuiteSalesOrderTriggerService",
"displayName": "Netsuite Sales Orders Trigger",
"description": "This trigger is used to fetch customer data based on the sales orders",
"active": true,
"integrationTriggerType": {
"id": 1,
"name": "JOB"
},
"actionGroupId": 1,
"sourceIdsList": [
125
],
"triggerName": "Sales Orders",
"caseTypeId": 1
}
]
  • 140 and 141 - Trigger IDs

Find business integration group details (Curl Command)

Copy this Curl Command

curl --location --request GET 'https://common-services.birdeye.com/integration/businessintegrationgroup/155802718182498' \
--header 'Cache-Control: no-cache'
  • 155802718182498- Business ID: Enter the Business ID here to get the integration group ID for the business.

Sample Response

[
{
"groupId": 1592,
"integrationSourceType": {
"id": 179,
"integrationSource": "NETSUITE",
"sourceCategory": "Accounting",
"integrationType": "Birdeye API",
"crmName": "Netsuite",
"integrationPlan": "Standard",
"oauthEnabled": true
},
"integrationGroupTriggers": [
{
"triggerId": 141,
"triggerTypeId": 1,
"actionIds": [
1
]
},
{
"triggerId": 140,
"triggerTypeId": 1,
"actionIds": [
1
]
}
]
}
]
  • 1592 - Group ID: A group ID will be returned in the sample response with the details of the existing triggers for the business.

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

  • 1592 - The Group ID returned in the previous step will be entered here.

  • 140 - Enter the Trigger ID(s) that need to be added or updated to the integration.

Integration Mapping (SMB & Enterprise 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 'Cache-Control: no-cache' \
--header 'Content-Type: application/json' \
--data-raw '{
"businessNumber": 167766045507721,
"active": true,
"integrationGroupId": 1592,
"integrationProperties": [
{
"propertyKey": "ns.location.city",
"propertyValue": "Palo Alto"
},
{
"propertyKey": "ns.location.state",
"propertyValue": "CA,California"
}
]
}'
  • 167766045507721- Business ID: Enter the Business ID for the SMB Business.

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

  • true - Active: Enter true to enable the integration.

  • Palo Alto-Location Name: Enter the Location name per the name specified in the Netsuite account for the Location picklist corresponding to this business.

NOTE: ‘properties ns.location.city’ and ‘ns.location.state’ is mandatory for enterprise business only.


Restriction Reason

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

  1. The invoice Balance is not zero

  2. Integration is beta

Description

  1. The non-zero invoice balance indicates that the invoice is not fully paid.

  2. The integration setup is currently set to beta.


Troubleshooting steps

  1. The invoice Balance is not zero.
    Please make sure to pay the Invoice in Netsuite fully.

  2. Integration is beta.
    Please look up the key beta in kibana to know whether the integration is beta.

  3. Name or Service not known
    The reason for this exception is that configured Netsuite AccountID is invalid. Please verify the Account ID.

  4. Contacts are being opted out from communication
    The reason is the Netsuite global subscription status is set to ‘Soft opt-out’ or ‘Hard opt-out.’ Please change it in the Netsuite account to ‘Soft Opt-in’ or ‘Hard Opt-in.’
    While creating a customer, search for ‘Global subscription status’ under ‘Subscriptions’ and mark it as ‘Opt-in.’

Did this answer your question?