Kustomer

This topic describes how to integrate Medallia Agent Connect and Kustomer to send survey requests when tickets are solved. Feedback in Agent Connect links directly to Gladly, enabling your team to see the tickets related to specific pieces of feedback.

Important: Agent Connect can send surveys automatically only when the following criteria are met:
  • The Team Member that has resolved the ticket has an approved Agent Connect profile.
  • The customer’s record includes an email address.
  • A Team Member is assigned to the ticket when it is closed.

Creating a Do not send Stella Connect Request field

This procedure creates a checkbox field that enables agents to prevent a Agent Connect survey from being sent when they solve a ticket.

  1. In Kustomer, open Settings > Platform Settings > Klasses > Conversation, and then click Create Attribute.
  2. Name the field Do not send Stella Connect Request.
  3. Specify the Type of the field as True/False.
  4. Enable the new field.

Configuring the workflow in Kustomer

  1. Create your Kustomer API Key.
    1. In the Kustomer Admin area, open Settings > Security > API Keys, and then click New API Key.
    2. Name the key Role: org.admin.tag.read.
    3. Click Create.

  2. Open Settings > Platform Settings > Workflows, and then click Add Workflow.
  3. Name the workflow Send Stella Connect Request, and then click Create.
  4. From the options menu, select Edit Workflow JSON.
  5. Replace the existing JSON code with the following code, and then click Update:
    {
      "description": "This sends the Stella Connect Request.",
      "name": "Send-Stella-Connect-Request",
      "steps": [
        {
          "meta": {
            "displayName": "Find Conversation by ID"
          },
          "id": "HkY67ShOM",
          "action": "kustomer.conversation.find-by-id",
          "params": {
            "id": "/#steps.1.id"
          },
          "appVersion": "kustomer-^1.2.1",
          "transitions": [
            {
              "target": "Hynv6df-Z",
              "condition": {
                "op": "gt",
                "values": [
                  "/#steps.HkY67ShOM.assignedUsers.length",
                  "0"
                ]
              },
              "meta": {
                "name": "Check Assigned Users Exists"
              }
            }
          ]
        },
        {
          "appVersion": "kustomer-^1.2.1",
          "meta": {
            "displayName": "Enter Stella API-Key"
          },
          "params": {
            "regex": "(.*)",
             "testString": "YOUR STELLA CONNECT API KEY"
          },
          "action": "kustomer.regex-match.generic",
          "id": "Hynv6df-Z",
          "transitions": [
            {
              "target": "BJh-I15vM",
              "condition": {
                "op": "true",
                "values": [
                  true
                ]
              }
            }
          ]
        },
        {
          "id": "BJh-I15vM",
          "action": "kustomer.regex-match.generic",
          "params": {
            "regex": "(.*)",
            "testString": "YOUR KUSTOMER API KEY"
          },
          "meta": {
            "displayName": "Enter Kustomer API Key for finding Tags"
          },
          "appVersion": "kustomer-^1.2.1",
          "transitions": [
            {
              "target": "B1uHx6WZW",
              "condition": {
                "op": "true",
                "values": [
                  true
                ]
              },
              "meta": {
                "name": "If Done and Assigned"
              }
            }
          ]
        },
        {
          "meta": {
            "displayName": "Find Customer by ID"
          },
          "appVersion": "kustomer-^1.2.1",
          "params": {
            "identifier": "/#steps.1.customer"
          },
          "action": "kustomer.customer.find",
          "id": "B1uHx6WZW",
          "transitions": [
            {
              "meta": {
                "name": "Check Customer has Email"
              },
              "condition": {
                "values": [
                  "/#steps.B1uHx6WZW.emails.0.email"
                ],
                "op": "exists"
              },
              "target": "HJZib6WWW"
            }
          ]
        },
        {
          "meta": {
            "displayName": "API Call to Kustomer to fetch Tag mapping"
          },
          "appVersion": "kustomer-^1.2.1",
          "params": {
            "headers": {
              "Authorization": "Bearer {{steps.BJh-I15vM.original}}",
              "Content-Type": "application/json"
            },
            "json": true,
            "tags": "/#steps.1.tags",
            "uri": "https://api.kustomerapp.com/v1/tags/{{#each steps.1.tags}}{{this}},{{/each}}aaaaaaaaaaaaaaaaaaaaaaaa",
            "method": "GET"
          },
          "action": "kustomer.rest-api.json",
          "id": "HJZib6WWW",
          "transitions": [
            {
              "condition": {
                "values": [
                  true
                ],
                "op": "true"
              },
              "target": "B14sZ6--b"
            }
          ]
        },
        {
          "appVersion": "kustomer-^1.2.1",
          "params": {
            "id": "/#steps.HkY67ShOM.assignedUsers"
          },
          "action": "kustomer.user.find-by-id",
          "id": "B14sZ6--b",
          "meta": {
            "displayName": "Find Assigned User by ID"
          },
          "transitions": [
            {
              "meta": {
                "name": "Voice conversation?"
              },
              "condition": {
                "values": [
                  "/#steps.1.channels",
                  "voice"
                ],
                "op": "contains"
              },
              "target": "VIS2vXe5p"
            },
            {
              "target": "ByRKk3PgZ",
              "condition": {
                "op": "not-contains",
                "values": [
                  "/#steps.1.channels",
                  "voice"
                ]
              },
              "meta": {
                "name": "Other channel"
              }
            }
          ]
        },
        {
          "appVersion": "kustomer-^1.2.1",
          "meta": {
            "displayName": "API Call to Stella with 'phone' channel hard-coded"
          },
          "params": {
            "json": true,
            "headers": {
              "Content-Type": "application/json",
              "x-api-key": "/#steps.Hynv6df-Z.captures.0"
            },
            "data": {
              "customer": {
                "name": "/#steps.B1uHx6WZW.name",
                "email": "/#steps.B1uHx6WZW.emails.0.email"
              },
              "tags": "/#fn:map,steps.HJZib6WWW.response.body.data,attributes.name",
              "do_not_send": "/#steps.HkY67ShOM.custom.doNotSendStellaConnectRequestBool",
              "ext_interaction_id": "/#steps.1.id",
              "employee": {
                "email": "/#steps.B14sZ6--b.email"
              },
              "channel": "phone",
              "external_url": "https://YOUR_DOMAIN_HERE.kustomerapp.com/app/customers/{{steps.1.customer}}/event/{{steps.1.id}}"
            },
            "method": "POST",
            "uri": "https://api.stellaconnect.net/v1/requests"
          },
          "action": "kustomer.rest-api.json",
          "id": "VIS2vXe5p",
          "transitions": []
        },
        {
          "appVersion": "kustomer-^1.2.1",
          "id": "ByRKk3PgZ",
          "action": "kustomer.rest-api.json",
          "params": {
            "headers": {
              "Content-Type": "application/json",
              "x-api-key": "/#steps.Hynv6df-Z.captures.0"
            },
            "uri": "https://api.stellaconnect.net/v1/requests",
            "method": "POST",
            "data": {
              "customer": {
                "name": "/#steps.B1uHx6WZW.name",
                "email": "/#steps.B1uHx6WZW.emails.0.email"
              },
              "tags": "/#fn:map,steps.HJZib6WWW.response.body.data,attributes.name",
              "do_not_send": "/#steps.HkY67ShOM.custom.doNotSendStellaConnectRequestBool",
              "ext_interaction_id": "/#steps.1.id",
              "employee": {
                "email": "/#steps.B14sZ6--b.email"
              },
              "channel": "/#steps.HkY67ShOM.channels.0",
              "external_url": "https://YOUR_DOMAIN_HERE.kustomerapp.com/app/customers/{{steps.1.customer}}/event/{{steps.1.id}}"
            },
            "json": [
              true
            ]
          },
          "meta": {
            "displayName": "API Call to Stella"
          },
          "transitions": []
        }
      ],
      "trigger": {
        "transitions": [
          {
            "meta": {
              "name": "Check if Marked Done"
            },
            "target": "HkY67ShOM",
            "condition": {
              "op": "eq",
              "values": [
                "/#steps.1.changes.attributes.status.after",
                "done"
              ]
            }
          }
        ],
        "appVersion": "kustomer-^1.2.1",
        "id": "1",
        "eventName": "kustomer.conversation.update"
      }
    }
  6. Select the 3 Enter the Stella Connect API Key box.
  7. Replace the key with your Agent Connect API Test Key, and then click Save.

    You can find your Test API Key on the Company Info screen in Agent Connect.

  8. Select the 4 Enter Kustomer API Key for finding Tags box.
  9. Replace the existing API key with the key you created earlier in this procedure, and then click Save.
  10. Select the 8 API call to Stella with phone channel hardcoded box.
  11. In the Data box, enter your Kustomer account external URL, and then click Save.
  12. Select the 9 API call to Stella box.
  13. In the Data box, enter your Kustomer account external URL, and then click Save.
  14. Toggle the workflow to on.

Optional configurations

Optionally, make any of the following integration configurations. Work with your Agent Connect Client Success Manager for details about completing these integrations.

  • Do not send — Although Medallia recommends that all interactions receive a Stella Connect request, there might be some instances when a survey is not appropriate. You can manage this process by establishing a custom workflow exclusion rule in your Kustomer account.
    Note: You do not need to create a rule specifically to limit the number of surveys that a customer receives within a specific period of time. On the Company Info screen, Agent Connect includes a suppression period that automatically stops surveys from flooding a customer within a specified number of days. For more information, see Company information.
  • Multiple brands — If you use multiple brands in Agent Connect, you must update the data sent to Agent Connect to include the brand for each interaction.
  • Multiple languages — If you use multiple languages in Agent Connect, you must update the data sent to Agent Connect to include the language of each interaction.
  • Delays — If you require your Agent Connect survey requests to be sent after a specified delay, consult your Agent Connect Client Success Manager.

Moving your integration to production

Work with your Agent Connect Client Success Manager to test your automated integration, and to resolve any issues. When everything is working as expected, move your integration to production.

  1. In Kustomer, open the Agent Connect workflow you created in LINK, above.
  2. Select the 3 Enter the Stella Connect API Key box.
  3. Replace the existing API key with your Agent Connect Public API Key, and then click Save.
  4. In Agent Connect, open the Integrations setup screen.
  5. For each channel you integrated, switch that field to On, and then click Update.

    Integrated Channels in Agent Connect