When the call for help came in on Friday night, the first thing that came to my mind was how to manage the potential flow of requests for assistance to what might be a skeleton crew of volunteers. We were doing something that me be unprecedented, at a time in which we weren’t sure how bad things were going to get. When in doubt, we built for scale.
I run a help desk at my company, but this was different because the support would be provided by people external to our organization. For that reason it made sense to setup a separate standalone platform, and with that clean slate it freed us from a lot of constraints.
One major consideration is that it’s a lot to ask a volunteer to break from their regular workflow and to login to a half dozen online tools, much less monitor them constantly. It’s just not realistic, so we had to make this easy for our volunteers to integrate with. Slack for example makes it easy to login to multiple accounts at the same time.
In order to make sense of this all and flush out the ideas, I started by creating a requirements document in Confluence. You can reference a version of that document here.
Automation was an absolute necessity, we simply don’t have the luxury of time for repetitive tasks. As this created a design constraint, it influenced the tools we picked and how they could interact. Fortunately all of these apps have some sort of integration, and Zapier solved most of the remaining problems. It wasn’t 100% but it was manageable.
The next design consideration was to provide a simple experience for our customers, the teachers, students, and parents. Yes “customers”, because that sets the bar for the expectations and service levels provided. There are a lot of ways this could go wrong, so it’s good to know where you are aiming from the beginning.
The anchor for all of this, the community who joined together to provide help, needed a name, both from a marketing and technical standpoint. We decided to call this Cruz One because it described the act that was occurring, everybody becoming one force in our community. With a domain name registered, it was time to start building.
I spun up a WordPress website in AWS Lightsail, it was a fast cheap way one click way to spin up a web presence, and it was upgradable and included SSH access. WordPress was simply the most flexible way to integrate our online presence with these other tools, and provide a seamless experience to our customers.
Website visitors can choose “get help” or “offer help” which directs them to a form. Gravity forms provided integrations with Slack, Mailchimp, Freshdesk, and Zapier. These integrations were critical for automation and distributing information to others. This also influenced our choice of a helpdesk ticketing system, and Freshdesk offered a simple to use ticketing system and we could build a workflow that would create contacts and generate tickets right from WordPress.
We needed volunteers and this was a big deal. Not only did we not know who would offer to help, we also needed a way to vet them. Upon filling out the “offer help” form, their information is shared with the core team including their LinkedIn profile. This allows a crowd sources pre-qualification process. All volunteers agree to submit to a background check as they will potentially work with students.
Working with our local County Office of Education, I became aware of the “beyond the obvious” rules, and that has influenced changes to the workflow, how we process requests, and how we potentially interact with students. In addition, we built transparency and monitoring into the system such that all communications can be audited by the county and school districts. It’s just a no brainer.
On the customer side, we designed the “get help” form based on the basic information we would need to help any customer in a for-profit business. All of this information is injected into the contact record in Freshdesk so the tech support volunteers have a technical dossier on the customer. Things like device types, operating system, internet provider, and software applications. It’s not an exhaustive list, or a barrier for entry (there’s a “I don’t know” option). You can walk through it here, just don’t submit the form please.
Let’s talk about the workflows and automation. Aside from the obvious “we’ll be in touch” notification, when a customer signs up we automatically setup an account in WordPress with a special non-privileged role courtesy of the User Role Editor plugin. The reason we setup the customer with an account is that we can customize the WordPress dashboard to provide the customer with information as well as access to the Freshchat system, and it allows us to use WordPress for Single Sign On (SSO) with the Freshdesk ticketing system.
We also add the customer to our Mailchimp mailing list, we send a notification to Slack channel, and as mentioned above, we create both a contact and a ticket in Freshdesk. The reason we use a slack channel as it notifies the volunteers that there is a ticket in the queue. New users are required to activate their account, and held in a queue until then.
When a volunteer signs up, in addition to the above, we drop them into a Google Sheet. This gives a single pane of glass view into our volunteers, but it also serves as a trigger via Zapier into creating some of the necessary accounts. We also track the vetting process such as background checks, and who approved the volunteer. Changing the volunteer status triggers Zapier to setup an cruz.one email alias in Google Suite, and sends the volunteer a personalized onboarding email.
Unfortunately it wasn’t possible to automate everything as some of the actions we wanted to take weren’t supported by the integrations or Zapier. Things like setting up a Zoom account, or converting a contact to an agent in Freshdesk.
There’s obviously more to this story, and in the interest of passing on this information to others, I’m releasing this first draft. Time permitting I can release screenshots and more info. So far I’ve spent over 30 hours setting this all up, and I’m happy to release (by request) an export of the WordPress site which contains a great starting point.