This tutorial explains how you can integrate your Zendesk account with IMIconnect and extend customer service over Facebook Messenger. The scenario is built for a broadband service provider enabling its customers to raise new connection requests, raise comptrack their status over Facebook Messenger. Following three actions can be performed:

  1. Raise a New Connection Request
  2. Raise a Complaint
  3. Check Status of an existing issue 


  1. Understanding of Zendesk Tickets API.
  2. Zendesk account and access to APIs ('Create Ticket' and 'Get Ticket Status' APIs)
  3. Facebook Page 

Facebook App Creation

We are going to use 'Persistent Menus' for the three service options mentioned at the starting. Here are the steps to create a Facebook App and to configure the 'Persistent Menu':

  1. Login to Facebook using your account. If you are not logged in, you will be asked to login while linking your page with IMIconnect
  2. Log in to your IMIconnect account
  3. Go to 'Apps > Configure Apps > Facebook'. Give a name to the Facebook App. 
  4. Click 'Add Page'. All your Facebook Pages will be displayed as shown below. Select the desired page.

5. 'Configure' the 'Persistent Menu' option under 'Advanced Settings' as shown below: 

It is mandatory to set up a 'Welcome Screen' before enabling the 'Persistent Menu'. Configure the 'Welcome Screen' as desired. A sample is shown below:

After configuring the 'Welcome Screen', Click 'Configure' again to set up the Persistent Menu. The sample configuration is shown below:

Select 'Postback' as the option_type. This will be used later while configuring the 'Rule' to trigger flows.

Note: You can add a maximum of 3 menu options and a maximum of 5 sub-menu options. A Facebook Messenger persistent menu can have a maximum of two nested menus.

6. Click 'User Input Settings' and disable the option to allow customers to type in the text in the messenger.

Click 'Save'. The app will be created successfully. Once the Facebook App has been created successfully, map the app with the required service. Refer here to know how to map an app with a service. 

Zendesk Integration

Follow the below steps to set-up custom integration with your Zendesk account. We will be creating a node named 'Ticket Status' with two methods : (i) Create Ticket and (ii) Get Status. 

Create Ticket 

1: Go to 'Integrations > Add Integrations > Custom Node > REST' and fill in the required details. Select 'Custom Category' option and create a new category for Zendesk integration. Use 'Create blank integration' option and click 'OK'

2. Configure method details on the API tab (refer below image). Choose the Method Name e.g. 'Create Ticket'. Since, this is the create ticket action, POST method is chosen and the corresponding endpoint has been provided.

3. This example will use Basic Authentication. Choose Basic Authentication under Authorization and provide your Zendesk user name and password.

Note: You can choose to provide the username and password here, or can add these as data fields to be populated under the flow builder's node configuration.

4. Configure the Header. This request requires only the 'Content-Type' parameter in the 'Header'. It is set to 'application/json' as we would be sending and receiving data in JSON format. The field is assigned to "Default fieldset". You can assign it to a "Custom Category", if required. 

5. There are no URL parameters for this method. So delete the line item and keep the block empty as shown below:

 6. Choose the Body type to Json (application/json) from the drop-down available on the right corner of the Body block (see image below). Provide the body content in the given space. Use $(variable_name) for values that need to be replaced with values dynamically during the flow execution.

After providing the body content, click Parse. This will auto-populate the variables with the key-value parameters as shown in the image. Give a label name. This will be displayed in the node. Assign it to the desired category. 

7. Response block involves two-sections: (i) Node events and (ii) Data to be returned to the flow.

(i) Node Events: Node events can be associated with the node edges. Below is the sample:

You can fetch Node Events from (i) HTTP Status, (ii) Body, (ii) HTTP Header. When you choose Body, provide the reference path to locate the exact object. In the above example, Node event is fetched from HTTP Status. When the HTTP Status is equal to 201, it is associated with the Success edge. 201 is the response code one will get when the POST request is successful and the Ticket is created successfully. 

(ii) Data to be returned to the flow. 

In this example, ticket_id is returned to the flow to be used inside the flow to implement further logic. If you know the exact variable names and their reference paths, you can directly provide them. Alternatively, you can also import the variable from the sample files. To do this, Change the type to JSON (application/Json) and click Import from sample. 

Provide the sample response and click Parse. The parsed list of variables are shown. Check the variables required and click Import. This is import the chosen variables under the Data to be returned section as the Response Path:

Give a name to the variable to be used inside the flow. 

Get Ticket 

The steps to create Get Ticket method is similar to Create Ticket. 

1. Request Details. A sample configuration is shown below:

Note: The URL has ids=$(id) as a variable which needs to be provided dynamically from the flow. When you click Parse Variable button, it will auto-populate the key as shown in the image. Provide a field name. This will be visible in the flow to assign a value to the "id" key. You can optionally write Regex validation and give Field Tooltip. This is assigned to the Default Fieldset. You can assign it to a custom fieldset, if required. 

2. Authorization. Same as Create Ticket method.
3. Headers and URL Parameter sections are empty for this method. So remove the line item(s) and keep the block empty as shown below:

4. Response Section is similar to Create Method. Include Ticket ID, Ticket Subject, Ticket Description and Ticket Status variables in the "Data to be returned" section. You can import these variables from a sample file as explained earlier or manually enter the values, if you know the Response Path. Give appropriate parameter names to be referenced in the flow. 

Note: After the methods are created inside the Custom Node, the node will be available for use in all flows across services. The node can be reused any number of times as required by choosing any specific method inside the node. 


This tutorial will help you build the following three journeys. You can access them by clicking on the respective buttons:

Did this answer your question?