Making Hold Times Productive

Customers have been calling businesses about the same things for decades. And while no two calls are ever exactly the same, most of them follow a very familiar pattern: a customer waits on hold, then an agent picks up and asks the same three or four questions, and then they finally get to the “meat” of the call — the stuff that they needed a person to resolve.

It occurred to us that you could cut down on customer effort and handle times by asking the customers routine questions while they were on hold. Why should customers have to wait to be asked routine questions? The resolution may not even require a customer service representative.

With the Gridspace Cloud API, we prototyped this customer workflow in just a few lines of Javascript. The key is the notion of a “hold routine”. Hold routines are just functions that run while your connection is waiting in a queue.

You can use hold routines to do normal things like play relaxing elevator music, but you can also do basically any function that our API supports. You can transcribe speech, parse natural language, and even make other phone calls or join conferences. As soon as the caller gets to the front of the queue, the hold routine halts and the caller is connected with the support agent.

The cloud script for the caller starts off with us adding them to a queue called “support” and specifying a hold routine called “hold”.

gs.onIncomingCall = function() {
connection.enqueue(‘support’, {
holdRoutine: hold

Then, in our hold routine we can start gathering data right away:

function hold(connection, ticket) {
connection.say("while you are waiting please tell me some information so we can assist you faster");
var survey = {ticket:};
survey.accountNumber = connection.getNumber({
promptText: "what is your five digit account number?"
survey.dob = connection.getDate({
promptText: "what is your date of birth?"
survey.issue = connection.getFreeResponse({
promptText: "what is the issue you are having today?"

In this toy example, we get an account number, a date of birth, and a short transcribed sentence about the caller’s problem, but that’s just a start. You could use hold routines to answer questions, provide live status updates, or even route callers to different queues. Best of all, the humans can spend less time exchanging data and more time on the “meat”of the call. Let us know what you think! You can play with the script live online here: