All Collections
Integrations & API
Zendesk
Zendesk Survey via Email: Requests Configuration
Zendesk Survey via Email: Requests Configuration
Updated over a week ago
StellaConnect_Zendesk.png

Before You Begin

We assume that all customer interactions are handled via Zendesk. If that is not the case, please talk to the Stella Connect team before starting the integration process.

Enable the API dashboard to monitor requests in Zendesk.

  • Navigate to Zendesk Admin -> Settings -> Channels -> API

  • Select Target Failures

Connect requests can only be sent if:

  • The team member has an approved Stella Connect profile.

  • An email address is associated with the customer’s record.

  • A member of your team is assigned to the case when it is Solved.

This can be handled manually by your team as tickets are created and Solved. You can also configure your Zendesk account to assign ticket ownership automatically.

  • Navigate to Zendesk Admin -> Settings -> Tickets -> Assignment

  • Check the box for Auto-assign tickets upon solve.

Screen_Shot_2018-03-08_at_12.13.03_PM.png

Step 1: Retrieve your Stella Connect Test Credentials

Testing the Zendesk integration begins with your company designating a test email address that will be used for testing the Zendesk Connect integration. All surveys will be delivered to this address while using the test key.

  • Once you enter the API test email address in the Integrations section of the settings page, your credentials will appear.

  • Retrieve your test credentials on the Integrations page.

Testing ends when the survey is delivered. You can step through the consumer experience selecting stars, commenting, etc. There is no response collection while using the test keys.

Step 2: Create a Webhook

Navigate to: Admin -> Apps & Integrations -> Webhooks -> Actions -> Create Webhooks

Copy and paste the JSON code below into the box and click Send test.

{ "customer": { "name": "pete", "email":"pete@stellaservice.com" }, "do_not_send": true, "employee": { "email": "pete.sellar@stellaservice.com" }, "channel": "phone" }

If successful you should see 200 OK.

When testing is complete, click Create at the bottom of the page to Create the webhook.

Step 3: Create a “Do Not Send Stella Connect Survey” Checkbox

Go to Admin -> Manage -> Ticket Fields -> add custom field

Select Checkbox, and enter “Do not Send Stella Connect Survey” in the “For Agents” field and click “Add field”

Screen_Shot_2018-03-08_at_12.30.07_PM.png

Once the field is added, click on the edit link in the ticket fields and copy the Custom field ID. This ID will be used in each of the triggers. Copy to a file for use in the next step.

Screen_Shot_2018-03-08_at_12.31.22_PM.png

Step 4: Create Triggers for channels that will be integrated

You will need to know all the channels used to communicate with your customers. You can confirm the channels that are used by visiting Reporting > Overview > Tickets by Channels.

To find out more about Zendesk triggers click here.

If you want to delay the sending of surveys you can contact your client success manager and they will add it to your Connect instance.

Chat Channel

Your chat dashboard must be setup create tickets in support. Please review the configuring ticket creation options for both chat and offline messages in the Zendesk Help Center.

The agent also needs to be set up in both support and chat on Zendesk. A trigger or automation should be created to handle the tickets when they are created to set them to solved and any other business logic you want to apply.

Trigger: Admin -> Business Rules -> Triggers -> add trigger

Trigger Name: Send Stella Connect request for chat channel

Meet “all” of the following Conditions:

  • Ticket: Status - Changed To - Select the status your chats ticket will set to when they are created in support

  • Tickets: Channel - is - Chat

  • Any additional chat ticket channels

Meet “any” of the following Conditions:

  • Any additional business logic

Perform these actions:

  • Notifications: Notify Active Webhook - Select ‘Stella Connect’

Update the do not send in the JSON payload:

Replace YOUR CUSTOM ID HERE with the ID copied in Step 3

{ "employee": { "email": "{{ticket.assignee.email}}" }, "channel": "chat", "customer": { "name": "{{ticket.requester.name}}", {% assign customer_email = ticket.requester.email | strip %}"email":{% if customer_email and customer_email != "" %}"{{customer_email}}"{% else %}"no_email"{% endif %} }, "ext_interaction_id": "{{ticket.id}}", "do_not_send": "{{ticket.ticket_field_YOUR CUSTOM ID HERE}}", "external_url": "{{ticket.link}}", {% assign raw_tags = ticket.tags | split: ' ' %}"tags": [{% for tag in raw_tags %}"{{tag}}"{% unless forloop.last %},{% endunless %}{% endfor %}]} 

Note: Zendesk shows a red x indicating that the JSON body syntax is incorrect. Please ignore, this is an issue Zendesk is working to correct and trigger show save successfully.

Email Channel

Trigger: Admin -> Business Rules -> Triggers -> add trigger

Trigger Name: Send Stella Connect request on ticket solved for email channel

Meet “all” of the following Conditions:

  • Ticket: Status - Changed to - Solved

  • Any additional business logic

Meet “any” of the following Conditions:

  • Ticket: Channel - Is - Web form

  • Ticket: Channel - Is - Email

  • Ticket: Channel - Is - Web Widget

  • Any additional email ticket channels

Perform these actions:

  • Notifications: Notify Active Webhook - Select ‘Stella Connect’

Update the do not send in the JSON payload:

Replace YOUR CUSTOM ID HERE with the ID copied in Step 3

{ "employee": { "email": "{{ticket.assignee.email}}" }, "channel": "email", "customer": { "name": "{{ticket.requester.name}}", {% assign customer_email = ticket.requester.email | strip %}"email":{% if customer_email and customer_email != "" %}"{{customer_email}}"{% else %}"no_email"{% endif %} }, "ext_interaction_id": "{{ticket.id}}", "do_not_send": "{{ticket.ticket_field_YOUR CUSTOM ID HERE}}", "external_url": "{{ticket.link}}", {% assign raw_tags = ticket.tags | split: ' ' %}"tags": [{% for tag in raw_tags %}"{{tag}}"{% unless forloop.last %},{% endunless %}{% endfor %}]}

Phone Channel

Trigger: Admin -> Business Rules -> Triggers -> add trigger

Trigger Name: Send Stella Connect request on ticket solved for phone channel

Meet “all” of the following Conditions:

  • Ticket: Status - Changed To - Solved

  • Any additional business logic

Meet “any” of the following Conditions:

  • Ticket: Channel - Is - Phone (incoming)

  • Ticket: Channel - Is - Phone (outgoing)

  • Ticket: Channel - Is - Voicemail

  • Any additional phone ticket channels

Perform these actions:

  • Notifications: Notify Active Webhook - Select ‘Stella Connect’

Update the do not send in the JSON payload:

Replace YOUR CUSTOM ID HERE with the ID copied in Step 3

{ "employee": { "email": "{{ticket.assignee.email}}" }, "channel": "phone", "customer": { "name": "{{ticket.requester.name}}", {% assign customer_email = ticket.requester.email | strip %}"email":{% if customer_email and customer_email != "" %}"{{customer_email}}"{% else %}"no_email"{% endif %} }, "ext_interaction_id": "{{ticket.id}}", "do_not_send": "{{ticket.ticket_field_YOUR CUSTOM ID HERE}}", "external_url": "{{ticket.link}}", {% assign raw_tags = ticket.tags | split: ' ' %}"tags": [{% for tag in raw_tags %}"{{tag}}"{% unless forloop.last %},{% endunless %}{% endfor %}]}


Example of completed trigger for email channel:

Screen_Shot_2018-03-09_at_11.29.29_AM.png
Screen_Shot_2018-03-09_at_11.29.40_AM.png

Custom Channels

Please contact your Client Service Manager to discuss using a custom channel. If your custom channel has already been setup in Stella Connect, you can create a trigger for custom channel.

Trigger: Admin -> Business Rules -> Triggers -> add trigger

{ "employee": { "email": "{{ticket.assignee.email}}" }, "channel": "YOUR CUSTOM CHANNEL NAME", "customer": { "name": "{{ticket.requester.name}}", {% assign customer_email = ticket.requester.email | strip %}"email":{% if customer_email and customer_email != "" %}"{{customer_email}}"{% else %}"no_email"{% endif %} }, "ext_interaction_id": "{{ticket.id}}", "do_not_send": "{{ticket.ticket_field_YOUR CUSTOM ID HERE}}", "external_url": "{{ticket.link}}", {% assign raw_tags = ticket.tags | split: ' ' %}"tags": [{% for tag in raw_tags %}"{{tag}}"{% unless forloop.last %},{% endunless %}{% endfor %}]}

Step 5: Optional Customization

Do not send

Although we recommend that all interactions receive a Stella Connect request, there may be some instances in which you do not want to send one. You can manage this process by establishing a custom exclusion trigger within your company’s Zendesk account, and then assigning rules to that custom trigger.

NOTE: You do not have to establish an exclusion trigger in order to limit the number of Connect requests that a customer receives within a specified time period. That “suppression period” can be set on the “Experience” page within the Stella Connect Admin.

  • Navigate to Zendesk Admin ‐> Business Rules ‐> Triggers and click “Add a Trigger”

  • Name that Trigger “Do not send Stella Connect request” (or another name that you will remember) and specify the conditions that must be met in order for Zendesk to exclude a case from receiving a Stella Connect request.

Screen_Shot_2018-03-09_at_10.44.20_AM.png
Screen_Shot_2018-03-09_at_10.44.28_AM.png

To make sure that the system will check your desired business rules before sending a Stella Connect request, ensure that the “Exception” trigger that you created is ordered above the “Send” Stella Connect Request triggers within your trigger list.

Custom Field Mapping to Stella Connect Tags

If you would like to map a custom field in Zendesk to Stella Connect tags, you'll need to use one of the following payloads. Please remember your custom dropdown field must contain a value upon being solved or you will receive a " - " tag in your Stella Connect stream. You'll need to include the field ID in this payload.

Single Custom field:

{ "employee": { "email": "{{ticket.assignee.email}}" }, "channel": "email", "customer": { "name": "{{ticket.requester.name}}", {% assign customer_email = ticket.requester.email | strip %}"email":{% if customer_email and customer_email != "" %}"{{customer_email}}"{% else %}"no_email"{% endif %} }, "ext_interaction_id": "{{ticket.id}}", "do_not_send": "{{ticket.ticket_field_YOUR CUSTOM ID HERE}}", "external_url": "{{ticket.link}}", "tags": ["{{ticket.ticket_field_option_title_YOUR CUSTOM ID HERE}}"]}

Multiple Custom fields:

{ "employee": { "email": "{{ticket.assignee.email}}" }, "channel": "email", "customer": { "name": "{{ticket.requester.name}}", {% assign customer_email = ticket.requester.email | strip %}"email":{% if customer_email and customer_email != "" %}"{{customer_email}}"{% else %}"no_email"{% endif %} }, "ext_interaction_id": "{{ticket.id}}", "do_not_send": "{{ticket.ticket_field_YOUR CUSTOM ID HERE}}", "external_url": {{ticket.link}}", "tags": ["{{ticket.ticket_field_option_title_YOUR CUSTOM ID HERE}}", "{{ticket.ticket_field_option_title_YOUR CUSTOM ID HERE}}"]}


Multiple Brands

If your Stella Connect account is set up with multiple brands, you'll need to use the following payload to include the brand for which that interaction took place:

{ "employee": { "email": "{{ticket.assignee.email}}" }, "channel": "email", "customer": { "name": "{{ticket.requester.name}}", {% assign customer_email = ticket.requester.email | strip %}"email":{% if customer_email and customer_email != "" %}"{{customer_email}}"{% else %}"no_email"{% endif %} }, "ext_interaction_id": "{{ticket.id}}", "brand": "{{ticket.brand.name}}", "do_not_send": "{{ticket.ticket_field_YOUR CUSTOM ID HERE}}", "external_url": "{{ticket.link}}", {% assign raw_tags = ticket.tags | split: ' ' %}"tags": [{% for tag in raw_tags %}"{{tag}}"{% unless forloop.last %},{% endunless %}{% endfor %}] }

Multiple Languages

If your Stella Connect account is set up with multiple languages, you'll need to use the following payload to include the language that interaction took place in:

{ "employee": { "email": "{{ticket.assignee.email}}" }, "channel": "email", "customer": { "name": "{{ticket.requester.name}}", {% assign customer_email = ticket.requester.email | strip %}"email":{% if customer_email and customer_email != "" %}"{{customer_email}}"{% else %}"no_email"{% endif %} }, "ext_interaction_id": "{{ticket.id}}", "language": "{{ticket.requester.locale}}", "do_not_send": "{{ticket.ticket_field_YOUR CUSTOM ID HERE}}", "external_url": "{{ticket.link}}", {% assign raw_tags = ticket.tags | split: ' ' %}"tags": [{% for tag in raw_tags %}"{{tag}}"{% unless forloop.last
%},{% endunless %}{% endfor %}] }

Make sure to update channels as necessary

Step 6: Moving to Production

Open the webhook you creates in Step 2, above.

  • Replace Password with Production API Key from: https://domain.stellaconnect.net/admin/company/api

  • Select Update and submit

  • In Connect (https://domain.stellaconnect.net/admin/company/api) switch Integrated Channel to “On”. This example shows all channels will be integrated. This will remove the manual send box from the stream.

To turn off the Zendesk CSAT Survey:

  • From the Admin, go to Automations

  • Select the Request customer satisfaction rating (System Automation) and deactivate.

  • For chat: Click here

    To Turn off the Zendesk Chat Rating:

  • From the dashboard, go to Settings > Widget.

  • Select the Settings tab.

  • Under Satisfaction Ratings, select the Disable Satisfaction Rating box.

  • Click Save Changes.

Picture1.png
Did this answer your question?