Increase Call Answer Rates on iOS with Suggested Contacts

July 25, 2022
Written by
Reviewed by
Paul Kamp
Twilion

Header

When was the last time you got a call from a number you didn’t recognize? Did you answer that call?

Calls from phone numbers that recipients do not recognize have low answer rates because of the rise of robocalls and call spam. Technologies like STIR/SHAKEN and third-party analytics services are currently focused on identifying and blocking spam calls, not on increasing trust in calls that are desired – such as a call from a delivery driver who can’t find your house, or from your pharmacy letting you know your prescription is ready.

In the US, telecom providers have long supported Caller ID through CNAM. So, if you have a landline (or are old enough to remember when most houses had a landline), you’ve probably seen a 15-character Caller ID show up on a small screen when a call comes in.

Aside from some technical limitations with CNAM, we don’t often see caller ID on incoming calls in 2022 because most mobile phone carriers charge extra for it. Therefore, adoption is fairly low because users are not aware of it or are not willing to pay a monthly fee for it.

In iOS, Apple has figured out people actually want to answer calls from people they know, so they enabled the Siri virtual assistant to look for phone numbers in the content Siri has access to (such as email). Let’s look at how we can use Siri on iPhones to display your business name when calling your customers using Twilio SendGrid. There is no action required by your users, no apps to download, just increased call answer rates – I’ll show you how.

Prerequisites

To follow this tutorial you need the following items:

Siri Suggested Contacts

Apple released a feature in iOS a few years ago called “Siri Suggestions” which included the ability for iPhones to suggest new contacts based on name, email address, phone number, etc. found in emails in the Apple Mail app and in SMS messages. If you are an iPhone user, you may have noticed this feature which looks like this:

email suggested contact

 

 

This is a helpful shortcut for adding new contacts. These suggestions are also shown as hints to the user when they receive calls/voicemails/SMS from phone numbers included in those suggested contacts. Here are some examples of what these suggested contacts look like when getting a call or viewing a voicemail from a suggested contact.

voicemail suggested contact

 

call answer suggested contact

Using Siri Suggested Contacts

Since Siri will suggest contacts from emails, you can send your customer an email with your phone number prior to calling them. When you do call,Siri will then show that suggestion on the call screen.

There are three key parts to the email you must send to your customer:

  • address the customer by name (first name only)
  • provide your Twilio phone number which you will call from
  • identify your business in the greeting

Since this is AI/ML-driven, these key parts might change as the technology progresses and we’ll endeavor to keep this blog post up to date as we hear from our customers about changes to Siri. For the moment, this is what we know that works.

Sending emails from SendGrid

Twilio SendGrid offers two simple ways to send these emails to your customers. You can leverage Dynamic Templates or directly specify the message content in the API request. Regardless of which method you choose, make sure that each email greets the user by their first name, contains your desired business name in the “from” field, and your phone number.

API request example

Here is an example of the API request used to send an email to a user prior to calling them that will suggest a contact with the name “ACME”, phone number “833-966-3106”, and email address of "mark.twilio.flex@gmail.com".

Note that the “From” email address needs to be the Verified Sender you configured in your SendGrid account.

curl --location --request POST 'https://api.sendgrid.com/v3/mail/send' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer SG.XXXXXXXXXXXXXXXXXXXXXX' \
--data-raw '{
    "from": {
        "email": "mark.twilio.flex@gmail.com",
        "name": "ACME"
    },
    "personalizations": [
        {
            "to": [
                {
                    "email": "mvickstrom@twilio.com"
                }
            ],
            "subject":"Hello from ACME"
        }
    ],
    "content": [{"type": "text/plain", "value": "Hi Mark! This is ACME. Our number is 833-966-3106. We are planning to call you soon with an important message."}]
}'

For more information on how to send an email through SendGrid’s API please refer to our getting started guide.

Dynamic template example

Given that the first name and “To” email address need to be personalized, SendGrid’s Dynamic Templates are helpful to provide an HTML email which can use Handlebars to substitute in data at the time of send. The below example can be copied directly into the Code editor to create a new Dynamic Template.


<html>
  <head>
    <title></title>
  </head>
  <body>
    <div>Hi {{first_name}}! This is ACME. Our number is {{phone}}. We are planning to call you soon with an important message.</div>
  </body>
</html>

When you create the dynamic template in the SendGrid interface, copy the template ID, we will use it in the next step.

Dynamic template sample API request

Below is a sample of the API request that can be run from your terminal window to call the SendGrid API with a dynamic template. All bold values need to be replaced with your information. dynamic_template_data and personalizations should be populated with with your customers information.

curl --location --request POST 'https://api.sendgrid.com/v3/mail/send' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer SG.XXXXXXXXXXXXXXXXXXXXXX' \
--data-raw '{
    "from": {
        "email": "mark.twilio.flex@gmail.com",
        "name": "ACME"
    },
    "personalizations": [
        {
            "to": [
                {
                    "email": "mvickstrom@twilio.com"
                }
            ],
         "dynamic_template_data":{
            "first_name": "Mark",
            "phone": "833-966-3106"
         }
        }
    ],
    "template_id":"d-6a3961265c9f4ff2ab479992a3b3e4ac"
}'

Place a call with a suggested contact

Now that you have sent an email to your user, it’s time to leverage Twilio Programmable Voice to call your customer. You can leverage any of the great ways Twilio allows for initiating calls such as Twilio Studio, Twilio Functions, or through your favorite SDK.

In this example, we are going to use cURL from the terminal to call the Programmable Voice API and provide some basic TwiML to play a message to our customer.

curl --location --request POST 'https://api.twilio.com/2010-04-01/Accounts/ACXXXXXXXXX/Calls.json' \
--header 'Authorization: Basic XXXXXXXXXXXX' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'To=+15551234567 \
--data-urlencode 'From=+18339663106' \
--data-urlencode 'Twiml=<Response><Say voice="Polly.Salli-Neural">Hello, Mark this is ACME. We can'\''t wait to see what you build!</Say></Response>' \
--data-urlencode 'MachineDetection=DetectMessageEnd'

There are a couple key parts of this API request to discuss.

First, the From parameter needs to match the phone number provided in the body of the email we sent earlier. Siri will use the phone number from the email to create the suggested contact. If they do not match, the user will not see your business name when you make the call.

Second, even with a suggested contact, customers may not answer the phone so it’s important to leave a voicemail. On the API call, we have added a MachineDetection parameter with the value set to DetectMessageEnd which will wait to say your message until after the voicemail greeting has finished playing. This way, none of the <Say> verb message is cut off.

Many phones (including iPhones) offer visual voicemail, which will transcribe the message so users can quickly read the message without calling into their voicemail. To ensure the best transcription, Twilio recommends using one of the Amazon Polly Neural TTS voices to achieve higher accuracy when the voicemail is transcribed. You can see in this example we have set the voice attribute in the <Say> verb to Polly.Salli-Neural.

Let’s make the API call and check out the results!

suggested contact for calls

I see the call from the business number, and I also see a hint that this is “Maybe: Acme” letting the user know this is a suggested contact.

Now if I don’t answer the call, I will also get a notification of a voicemail letting me know it is “Maybe: Acme” and my phone has transcribed the message!

voicemail with transcription

Conclusion

This is a simple way to increase pickup rates for notifications to your customers. This is helpful especially if you plan to gather feedback from your customers on the call, think of an example where your pharmacy calls you asking if you want to refill your prescription. An IVR can collect your input but only if you answer the call, otherwise they need to rely on you to call or text them back which is less reliable.

Final considerations and resources

I’ll leave you with a few caveats to this solution you need to consider:

  • Only emails in the native Apple Mail client will have contacts suggested, third party apps such as Gmail, and Outlook do not offer this functionality.
  • Apple does not publish details about their algorithm so test your content frequently to make sure it is getting recognized by Siri.
  • Keep the email content simple, in my testing, I found the more complicated I made the email the less likely it was that Siri suggested the contact.
  • Timing, make sure the email has time to get to the user’s phone, so send the email some amount of time ahead of when you call them. Some users may have their phones set to Fetch only every hour so for non-time-sensitive notifications you may want to wait up to one hour before calling.

Additional resources

The following reference resources will provide you with in-depth information on some of the topics mentioned in this post:

Mark is a Solutions Engineer working with Enterprise customers at Twilio. He has spent the last decade working with customers on everything from VoIP to enterprise integration patterns. In his spare time he enjoys trying to keep his home automation running. He can be reached mvickstrom [at] twilio.com.