Skip to main content

WorkUpwork

Three conversations, one ticket

A three-way messaging model for Upwork disputes on Zendesk

Three-way dispute messaging on Zendesk side conversations

The problem

A dispute on Upwork involves at least three parties: the client, the freelancer and a support agent. The conversations ran as a mix of group and one-to-one threads, in separate browser tabs. Agents relayed messages between parties, and the parties often had to retell the story.

What we built

Zendesk had just launched side conversations. Upwork asked Zendesk for special access to the side-conversation API, and with it we brought every conversation in a dispute into a single ticket. Each conversation is clearly named and visible only to its own participants.

It was part of a wider migration that moved the dispute agent experience into Zendesk and the user experience into Upwork Help, built with Zendesk's API team. I was one of the engineers on a small team that built, tested and launched it.

Diagram: client, freelancer and agent conversations brought into one Zendesk ticket
Three conversations, one ticket, each visible only to its participants.

What changed

Agents work one ticket instead of three tabs, and nobody has to retell the story. Zendesk describes the model in its Upwork customer story.

"Over the course of the last year, we worked with Zendesk's API team to build out a custom integration to specifically support this use case and drastically improve agent experience, as well as introduce entirely new functionality to our help center... Zendesk reached out to do a case study on custom functionality our development team built out utilizing a relatively restrictive Zendesk API."

— Diego San Miguel, Sr. Product Manager, Customer Experience, Upwork

"Asif was an excellent collaborator. His patience and expertise in Zendesk were invaluable. He was always responsive, providing quick support and effective solutions."

— Aisha Khan, Dispute Center Revamp & Three-Way Messaging Partner, Upwork

What I took from it

The engineering problem looked like threading and permissions. The real problem was the shape of the conversation: the way it was split was making disputes harder to resolve.