Review: Amazon Connect – A Programmable Telephone System
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.
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.
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.
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 supports inbound and outbound calls. More advanced features allow you to define routing profiles for agents, hours of operation, and call recording, for example.
Become a Docker on AWS professional!
Our book Rapid Docker on AWS is designed for DevOps engineers and web developers who want to run dockerized web applications on AWS. We lead you with many examples: From dockerizing your application to Continuous Deployment and Infrastructure as Code on AWS. No prior knowledge of Docker and AWS is required. Get the first chapter for free!
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.
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.
With Amazon Connect, there are almost no fixed costs. You only pay for voice and chat usage.
|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)
|Phone Number Usage||$3.60|
|Claimed Phone Numbers||$9.00|
I would like to emphasize that there are practically no fixed costs when using Amazon Connect. Pay-per-use only!
Amazon Connect integrates with AWS Lambda. Implement Lambda functions to extend the functionality and customize the customer experience to your needs.
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.
- The contact flow invokes a Lambda function.
- The Lambda function checks whether the caller ID is stored in DynamoDB.
- The Lambda function adds a
Blacklistedattribute to the customer.
- The next step checks for the
Blacklistedattribute 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.
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.
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.
There is one little snag: Amazon Connect supports Chrome and Firefox only.1
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.
There are three ways to authenticate agents for Amazon Connect.
- The built-in user management.
- The AWS Directory Service (Microsoft Active Directory, Active Directory Connector, and Simple Active Directory).
- 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.
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.
- Open the AWS Support Center.
- Click the Create case button.
- Select Service limit increase.
- Choose limit type Amazon Connect.
- Type in the ARN of your contact center instance.
- Select the region of your contact center instance.
- Choose Phone Number Porting from the list of limit types.
- 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.
The feature set of Amazon Connect seems quite complete to me. However, I’m missing the following:
- 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.
As usual, Amazon Connect comes with service quotas.
|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.
The following table summarizes the maturity of the service:
|Tags (Grouping + Billing)||❌||0|
|CloudFormation + Terraform support||❌||0|
|Emits CloudWatch Events||❌3||0|
|Integrated with AWS Config||❌4||0|
|Auditing via AWS CloudTrail||✅5||8|
|Available in all commercial regions||⚠️||6|
|Total Maturity Score (0-10)||⚠️||5.4|
Our maturity score for Amazon Connect is 5.4 on a scale from 0 to 10.
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. https://docs.aws.amazon.com/connect/latest/adminguide/what-is-amazon-connect.html#browsers ↩
- 2. https://docs.aws.amazon.com/connect/latest/adminguide/configure-saml.html#saml-add-users ↩
- 3. https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/EventTypes.html ↩
- 4. https://docs.aws.amazon.com/config/latest/developerguide/resource-config-reference.html ↩
- 5. https://docs.aws.amazon.com/connect/latest/adminguide/logging-using-cloudtrail.html ↩