Review: Amazon Connect – A Programmable Telephone System

Andreas Wittig – 14 Feb 2020

Do you provide services to consumer or business clients? Which channels do you provide for clients to get support, leave feedback, or let off frustration?

Amazon Connect provides a contact center solution in the cloud. Your clients contact you via phone or chat. A group of agents answers their phone calls and chat conversations. The workflows are fully customizable to your specific needs.

Review: Amazon Connect

Do you prefer listening to a podcast episode over reading a blog post? Here you go!

This review puts Amazon Connect to the test. I set up Amazon Connect for our consulting agency widdix, recently. While doing so, I had a look into the technical details as well.

Before we go any further, a small disclaimer: I’ve never operated a call center with tens or hundreds of agents. I’m reviewing Amazon Connect from my point of view as an AWS consultant and software engineer.

How It Works

To get started with Amazon Connect, you have to launch a new Connect instance. As shown in the following, figure an instance connects your clients with your agents. Clients call in or start a chat conversation. Your agents log in the instance and start answering incoming phone calls or chat conversations.

Amazon Connect: Instance

The main components of Amazon Connect are:

  • Customer: a customer calls or starts a chat conversation.
  • Phone Number: inbound and outbound phone number, toll-free and direct-in-dial (DID), bring your own or claim a number.
  • Flow: defines the customer experience of your contact center.
  • Queue: customers wait in a queue before they are routed to an agent.
  • Agent: a human being answering phone calls and chat conversations with the help of the built-in Contact Control Panel (CCP).

Amazon Connect: Client, Phone Number, Flow, Queue, Agent

Amazon Connect supports inbound and outbound calls. More advanced features allow you to define routing profiles for agents, hours of operation, and call recording, for example.

On top of that, Amazon Connect integrates with AWS and 3rd party services:

  • AWS Lambda: customize your contact center by writing source code.
  • Amazon Lex: build a voice or chatbot to interact with your customers.
  • Amazon Kinesis Video Streams: record voice in realtime and process later (e.g., transcribe).
  • Salesforce: integrate with your 3rd party CRM.
  • Zendesk: integrate with your 3rd party CRM.

In short, Amazon Connect is designed to operate a contact center at a small or large scale.

More Use Cases

With a little imagination, you can find more use cases for Amazon Connect. Being able to define custom flows and the call AWS Lambda functions opens up many possibilities. A few examples:

  • Implement a voice bot accessible via phone (e.g., to request data or execute a transaction).
  • Implement a routing logic that forwards incoming calls to landline or mobile numbers (e.g., round-robin incoming calls to 2-5 mobile numbers).
  • Implement a blacklist to block promotional calls.

Amazon Connect is a programmable telephone system.

Pricing

With Amazon Connect, there are almost no fixed costs. You only pay for voice and chat usage.

Type Pricing
Voice Usage $0.018 per minute
Chat Usage $0.004 per message

There is a fixed fee for phone numbers. Prices vary according to region, type, and country — a few examples.

AWS Region Type Country Monthly Costs
US East (N. Virginia) Direct Inward Dial United States of America $0.90
US East (N. Virginia) Toll Free United States of America $1.80
Europe (Frankfurt) Direct Inward Dial Germany $3.00
Europe (Frankfurt) Toll Free Germany $3.90
Asia Pacific (Sydney Direct Inward Dial Australia $3.00
Asia Pacific (Sydney Toll Free Australia $15.21

On top of that, you pay for the inbound usage of your phone numbers.

AWS Region Type Country Per Minute
US East (N. Virginia) Direct Inward Dial United States of America $0.0022
US East (N. Virginia) Toll Free United States of America $0.0120
Europe (Frankfurt) Direct Inward Dial Germany $0.0040
Europe (Frankfurt) Toll Free Germany $0.0387
Asia Pacific (Sydney Direct Inward Dial Australia $0.0050
Asia Pacific (Sydney Toll Free Australia $0.0540

Outbound usage of phone numbers incurs costs as well. See Amazon Connect pricing for details.

I’ve estimated the costs for Amazon Connect at our consulting agency widdix. We expect potential customers and partners calling in from time to time.

  • Region: Europe (Frankfurt)
  • Phone Numbers: 3 Direct Inward Dial numbers
  • Voice Usage: 30 minutes per day (inbound only)
Type Monthly Costs
Voice Usage $16.20
Phone Number Usage $3.60
Claimed Phone Numbers $9.00
Total Costs $28.80

I would like to emphasize that there are practically no fixed costs when using Amazon Connect. Pay-per-use only!

Lambda Integration

Amazon Connect integrates with AWS Lambda. Implement Lambda functions to extend the functionality and customize the customer experience to your needs.

Amazon Connect: AWS Lambda

Typical use cases for a Lambda function are:

  • Enrich the contact information by fetching data from a database or 3rd party service.
  • Interact with sub-systems based on customer input.
  • Built integrations with your CRM.
  • Send analytics data to a database or analytics platform.

I’ve used a Lambda function and a DynamoDB table to implement a blacklist.

  1. The contact flow invokes a Lambda function.
  2. The Lambda function checks whether the caller ID is stored in DynamoDB.
  3. The Lambda function adds a Blacklisted attribute to the customer.
  4. The next step checks for the Blacklisted attribute and terminates the call for blacklisted customers.

Keep in mind the following limits when implementing Lambda functions for Amazon Connect:

  • The invocation timeout is 3 seconds per default and 8 seconds maximum.
  • There will be silence during the invocation of a Lambda function. Keep that in mind, when chaining Lambda function actions.
  • The duration of a sequence of Lambda functions is limited to 20 seconds.
  • The Lambda function must return a flat object of key/value pairs.
  • The result object must include keys that include alphanumeric, dash, and underscore characters only.
  • The result must not exceed 32 KByte of UTF-8 data.

User Interface

I do like the user interface to manage a connect instance. Getting started with Amazon Connect is simple, as the user interface is self-explanatory and guides you through all required steps.

Amazon Connect: User Interface

The Contact Control Panel (CCP), the user interface used by agents to accept incoming calls, chat with customers, and initiate outbound calls, provides a solid experience as well.

Amazon Connect: Contact Control Panel (CCP)

There is one little snag: Amazon Connect supports Chrome and Firefox only.1

Management API and Infrastructure as Code

Unfortunately, Amazon Connect does not offer an API to configure your instance. Therefore, you cannot use Infrastructure as Code tools like CloudFormation or Terraform to spin up your contact center. That’s too bad and prevents us from deploying our contact center in an automated and tested way.

After all, there is a function for exporting and importing flows. Unfortunately, that is not even close to having a complete management API. Also, the export/import feature is still marked as beta.

SSO with SAML

There are three ways to authenticate agents for Amazon Connect.

  1. The built-in user management.
  2. The AWS Directory Service (Microsoft Active Directory, Active Directory Connector, and Simple Active Directory).
  3. The SAML 2.0-based authentication.

I had a more in-depth look at the SAML 2.0-based authentication and was disappointed.

First of all, it is possible to use SAML 2.0 for authentication. However, you have to add users to your Connect instance manually. Otherwise, a user is not able to log in via SAML.1

In my opinion, SSO with SAML is not fully implemented.

Transferring a Phone Number

There are two options to add a phone number to your contact center:

  • Claim a phone number provided by AWS.
  • Transfer an existing phone number.

Transferring a phone number is an adventure. I’ve gone through the process for a few German phone numbers +49. Keep in mind that the process varies from country to country.

Transferring a phone number starts with creating an AWS support case. No need to pay for AWS support, though.

  1. Open the AWS Support Center.
  2. Click the Create case button.
  3. Select Service limit increase.
  4. Choose limit type Amazon Connect.
  5. Type in the ARN of your contact center instance.
  6. Select the region of your contact center instance.
  7. Choose Phone Number Porting from the list of limit types.
  8. Describe your transfer request.

AWS will send back a PDF that you need to fill out. The process of transferring a phone number seems to involve many manual steps. The support ticket went back and forth several times. In some cases, the AWS support team had to wait for answers from the Amazon Connect service team.

Overall, the transferring of our phone numbers took me almost two months. My advice is, therefore: plan enough time.

Missing Features

The feature set of Amazon Connect seems quite complete to me. However, I’m missing the following:

  • Chat Widget: So far, there is no easy way to integrate the chat channel into your websites. Besides some examples, there is nothing more than the API documentation for implementing the frontend part. It is even necessary to implement a little bit of backend logic. I’m expecting a ready-to-use widget that I can add to my website with a few lines of HTML/JavaScript code here.
  • At the moment, it is not possible to transfer phone numbers between Connect instances without contacting AWS support. There should be an API and user interface for that.
  • It is not possible to switch the authentication mechanism of a Connect instance right now (e.g., from built-in user database to SAML).
  • Amazon Lex should be available in the same regions as Amazon Connect.

Service Quotas

As usual, Amazon Connect comes with service quotas.

Default Quota Type
Users per instance 500 Soft Limit
Lambda functions per instance 35 Soft Limit
Active chats per agent 5 Hard Limit
Characters per chat message 1024 Hard Limit

See Amazon Connect Service Quotas for more detailed information.

A word about soft limits: it is possible to increase soft limits by filing a support ticket. Sadly, AWS does not provide any information about the upper limit for those soft limits. It seems to be an internal policy not to tell customers upfront about the upper limit. This is unfair and non-transparent. One should, therefore, understand the default quotas as an upper limit.

Service Maturity Table

The following table summarizes the maturity of the service:

Criteria Support Score
Feature Completeness 8
Documentation Detailedness 7
Tags (Grouping + Billing) 0
CloudFormation + Terraform support 0
Emits CloudWatch Events 3 0
IAM granularity 10
Integrated with AWS Config 4 0
Auditing via AWS CloudTrail 5 8
Available in all commercial regions ⚠️ 6
SLA 10
Total Maturity Score (0-10) ⚠️ 5.4

Our maturity score for Amazon Connect is 5.4 on a scale from 0 to 10.

Summary

Amazon Connect is a programmable phone system and contact center solution. I like that there are almost no fixed costs associated with Amazon Connect. The solution is flexible, not only because of the integration with AWS Lambda and other AWS services. The biggest bummer: there is no management API and, therefore, no CloudFormation or Terraform support available. The contact center features seem to be stable and mature. However, the integration into the rest of the AWS ecosystem is mediocre (Tags, CloudWatch Events, AWS Config, …).


  1. 1. https://docs.aws.amazon.com/connect/latest/adminguide/what-is-amazon-connect.html#browsers
  2. 2. https://docs.aws.amazon.com/connect/latest/adminguide/configure-saml.html#saml-add-users
  3. 3. https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/EventTypes.html
  4. 4. https://docs.aws.amazon.com/config/latest/developerguide/resource-config-reference.html
  5. 5. https://docs.aws.amazon.com/connect/latest/adminguide/logging-using-cloudtrail.html

Andreas Wittig

Andreas Wittig

I’ve been building on AWS since 2012 together with my brother Michael. We are sharing our insights into all things AWS on cloudonaut and have written the book AWS in Action. Besides that, we’re currently working on bucketAV,HyperEnv for GitHub Actions, and marbot.

Here are the contact options for feedback and questions.