Showing device Information in the customer panel in Zendesk Agent Workspace

Showing device Information in the customer panel in Zendesk Agent Workspace

The new Device information section in Agent Workspace gives you information about your customers' context right next to a Messaging ticket.

In May's Roundup I wrote about Zendesk's new Device Information section for the Customer Context panel. This new sidebar section, displayed next to Messaging tickets, shows information related to the customers' device to agents.

This information, like operation system, browser type and version is useful information when troubleshooting technical issues.

For example, if you know a certain feature of your app doesn't work on older Android phones, or that your web app requires the use of Chrome instead of Safari, these pieces of information are crucial to detect problems and alert the customer.

Frame 1.png

How does it work

The device information section is enabled by default for all instances. By default is will show operating system and browser information, and hides IP address and location info from agents. 

By toggling the options in Admin Center > Workspaces > Context Panel you can display either or both the IP Address and location to agent if that information is relevant for your agents.

Since you're actively collecting and displaying PII to agents, don't forget to update your privacy policy accordingly! If you want to handle cookies correctly, take a look here.

babelforce - The #1 Most Flexible Call Center Software
babelforce is the #1 most flexible call center software for customer experience teams. Make customer service easy. Make growth easy.

My thanks for babelforce for sponsoring this month's Internal Note newsletter.

Relevance

The device information context is linked to the end-user and not to the actual ticket. This means that this data will update regularly at each moment the user interacts with your Zendesk instance.

The benefit of having a single datapoint that updates for the user is that you always have the latest information available. If a user has updated their system and replies to the conversation, you can see that new data right next to the ticket. 

However be mindful that the data shown can be more recent than the question the customer has asked. If you're handling an older ticket it might be that the customer has already updated their system or moved locations before you reply. 

Secondly, since the information shown is linked to the user, you can leverage Messaging Authentication to make sure all tickets a user starts over Messaging are mapped to the same profile.

Messaging Authentication: Verified email and merging existing users based on email
Zendesk introduced a new email verification flow to handle the mapping of authenticated Messaging users and exiting end-user profiles. It’s a lot so let’s dive in!

Exporting the data

Having this data available in the Agent Workspace is useful to resolve tickets easily. But sometimes you also want to access that data outside of Zendesk for reporting purposes.

One way to capture the data is by leveraging Zendesk's' (new) GraphQL API located at https://subdomain.zendesk.com/api/lotus/graphql

By executing a POST to this endpoint with the payload and variables below, you can get a nice JSON object that contains all the user information shown next to a ticket.

Authentication is done via Basic Authentication: [email protected]/token and a Zendesk API token. 

GraphQL Body

query UserDeviceMetadata($id: ID!) {
    user(id: $id) {
        id
        ... on Customer {
            deviceMetadata {
                devicePlatform
                id
                ipAddress
                lastSeen
                location {
                    city
                    country
                    countryCode
                    stateCode
                    __typename
                }
                os
                osVersion
                userAgent
                __typename
            }
            __typename
        }
            __typename
    }
}

Variables

{"id":"24820449367569"} //user id

Returned Data

The returned data contains all the items shown next to tickets, so you can export City, Country, State, IP, OS and much more.

{
  "data": {
    "user": {
      "id": "24820449367569",
      "deviceMetadata": {
        "devicePlatform": "Macintosh",
        "id": "66388e17dde783733a88950c",
        "ipAddress": "42.42.42.42",
        "lastSeen": "2024-05-06T08:00:44.350Z",
        "location": {
          "city": "Antwerp",
          "country": "Belgium",
          "countryCode": "BE",
          "stateCode": "VLG",
          "__typename": "DeviceMetadataLocation"
        },
        "os": "macOS",
        "osVersion": "14.4.1",
        "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
        "__typename": "DeviceMetadata"
      },
      "__typename": "Customer"
    }
  },
  "extensions": {
    "depth": 4,
    "potentialNodeCount": 3
  }
}

How would you use this?

One way to use this is by leveraging an external tool like Zapier or Made, or your own scripts and setup a webhook listener. Each time a messaging ticket created, use a Zendesk trigger to send the {{ticket.requester.id}} to your webhook listener.

Once triggers, your external tool can call this API and pull in the users' metadata and store it in a log, BigQuery, Google Sheet or whatever suits your needs to log data.

By sending both the {{ticket.id}} and {{ticket.requester.id}} in your webhook trigger, you can even map both those elements in your log for more data.

Conclusion

It's nice to see that Zendesk makes these kinds of information available as both a native feature in the Agent Workspace, as well as available over API for developers and data managers. This way you can leverage these new features immediately, while also integrating them deeper in your flows.

From a feature set I'd love to see these values being made available in triggers and bot flows though. "A customer that complains about your app not working running a version of the operating system that's too old" might be handled via a custom bot answer by setting up a condition "if OS Version < 16", show bot message "This version if your system is not supported, please update!"