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.
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
Title: Stella Connect
Endpoint URL: https://api.stellaconnect.net/v1/auth
Request Method: Post
Request Format: JSON
Authentication: Basic Authentication
Username: connect
Password: (test API Key from: https://domain.stellaconnect.net/admin/company/api)
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”
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.
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:
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.
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.