Zoom Phone—Setting up the context

In late 2018, I was tasked as the lead designer for a new product focused as a PBX (Private Branch Exchange) solution for communicating over VoIP. In simple terms, it’s a phone.

I’m going to walk you through some key design decisions and a first of its kind feature
Project Duration: 4 Weeks
Role: Lead Designer

Background & Strategy

PBX phone products aren’t new technology. In fact, they’ve been around for quite some time. The primary goal of this product is to help push Zoom as an all-in-one collaboration tool. Video conferencing is still working its way to being accepted as an enterprise solution, and where many companies still rely on phone as their primary form of communication, this product could be the stepping stone.

Platform Agnostic

One of the key design decisions was to allow transitioning between desktop and mobile effortlessly. This meant more than just responsive design, but providing an extremely familiar look and feel with predictable behavior. The typical workflow for Zoom Phone customers is transitioning throughout the day, and used as their work phone on the go.

Simple at its core

Phones have been around for a while, so this was one of those don’t reinvent the wheel moments, however, this was an opportunity to refine how simple the phone experience could be.

Upgrade to Meeting

We successfully shipped a first of its kind feature as a team that allowed converting a phone call into a Video Meeting. As a heads up—this has been the most technically difficult feature I have ever worked on.

Integrating the family of products

A holistic approach for the future of Zoom is to begin merging capabilities across products. At their core, each serves as a way for humans to collaborate whether it be visual (video), written (chat), or verbal (phone). This feature was the first step towards that vision.

A couple of guiding principles during this design process were...
  1. Always keep constant communication. Regardless of the stage of the flow, all members in the phone call could talk and hear one another.
  2. You can always start a Zoom Meeting, there’s never a case the feature is disabled. This was a decision that emerged during the process that I’ll explain in detail later.


The first and biggest question we had to answer was how this could even be possible. This first stage of this process was primarily discussions with server and client engineers.

Breaking it down

To keep things simple, we can visualize 2 types of users in this scenario. There are Zoom Phone (PBX) users, and there are Regular Phone (PSTN, think on an iPhone) users. One assumption we can make is that there are more people using regular phones than Zoom Phone (true, since it wasn’t released at this point).

There is one really big constraint that I’d like to mention at this point, which is a Zoom users audio source can only be 1 type at a time. So, if I’m in a video meeting, I can not also be on a phone call. This is important to note since we will be transitioning from one to the other, which also requires transitioning audio sources.

A first pass

This first pass should help shed some light on how this feature could actually work, and what’s going on behind the scenes.

In this first pass, after initiating upgrading the call to a meeting, the initiator had the option to “Cancel” and return to the phone call. Until the receiver accepts or declines the invitation, neither have joined the meeting. The action for upgrading to a meeting was also disabled if they weren’t using Zoom Phone. This served as an indication that the user would be able to join the video meeting.

Always able to start a meeting

Some feedback from stakeholders was to always allow moving the phone call to a video meeting. After some long discussions, it ultimately boils down to the question of why they shouldn’t be able to. With meetings at Zoom’s core, the ability to join or start a meeting should always be accessible.

Bring on the constraints

This exploration also hit a brick wall after talking with the backend server team. Due to a number of reasons we weren't able to wait for a response to trigger the creation of a meeting. The initial idea was to remain on a phone call until the receiver accepts the invitation.

A second pass

With the updated design to always allow for upgrading the phone call to a video meeting regardless of whether I was talking to someone on their iPhone or Zoom Phone, they should be able to join the meeting. This also meant that there wouldn’t be a waiting stage for the initator, since whether the receiver accepts or declines, the initiator should always be able to start and join a Zoom Meeting.

Behind the scenes

One of the cases we handled behind the scenes that isn’t visible in UI is how iPhone (PSTN) users join the meeting. After the initiator upgrades the call to a meeting, it instantly transfers that caller as a call-in to the meeting. This earned an “it just works” experience as quoted from early testers.

From one of the biggest constraints earlier, a Zoom user can only use 1 audio source at a time. So, if I was on a call with another Zoom Phone user and upgrade the call to a meeting, I wouldn’t be able to talk with the receiver since they are still on phone audio while I had been switched over to meeting audio. This meant we needed to also convert everyone else on the call to meeting audio to maintain constant communication.

I don’t want to join a meeting right now

This also meant one more thing, Zoom Phone users could initially “decline” the invitation for the meeting and return to the phone UI, but now that their meeting audio was automatically switched over that wasn’t entirely true. After running some tests, we opted to remove that step altogether. Since returning to the phone interface meant you were technically in a meeting, some of the phone functionality would be lost. The biggest question that should be asked in this case is why someone wouldn’t want to join the meeting. The feedback pointed to not wanting to be on camera, which is completely understandable. We threw in an option to “Turn off my video” that matched the current join meeting behavior to solve for that case.

Nested invitations

Another huge design goal was to scale this for conference calls (3+ callers). This was achieved using a nested tethering design since we were no longer waiting for a response to the invitation to switch the callers audio sources over to meeting audio.

Final design

Over the course of the design process, I built a hi-fidelity prototype using Framer and Firebase to send out real-time invitations, as well as capture their video for a true upgrade to meeting experience.

Back to work