Learn it in 5 minutes
HTMLAbout five minutes of reading
Interviewers say 'IVR script'. In Connect the object is a contact flow. Each flow type only offers the blocks that make sense there. A hold flow is not a place to transfer to a queue and hope.
Inbound flows greet and route. Customer queue flows run while the customer waits and can offer a callback. Hold flows loop prompts. Whisper flows play just before the join. Transfer-to-agent and transfer-to-queue flows are what quick connects run. Disconnect flows run after the end.
Outbound whisper flows are where you set outbound recording and where Call phone number belongs.
- A customer queue flow is interruptible.
- Transfer to queue inside a customer queue flow moves a contact that is already queued.
- End flow / Resume ends the flow and does not hang up.
- Disconnect hangs up.
Number on this page: Types 9+. Inbound, queue, hold, whisper, transfer, disconnect, outbound
Glossary
- Contact flow The visual program a contact runs. The JSON form is the flow language.
- Flow module A published, reusable piece of a flow. Invoke module runs it. Return ends it. Default quota is 200 modules.
- Contact attribute A string key and value stored on the contact. Lambda, Lex, and Set contact attributes write them. Screen pop reads them.
- Customer queue flow The interruptible flow that runs while the customer waits, before an agent joins.
Mind map
Open the Contact flows mind map
Sister technologies
The flow is the product the caller hears. A missing error branch is a dropped call.
Config and troubleshooting
Putting the hold music in the inbound flow and wondering why hold is silent.
AWS::Connect::ContactFlow stores the flow-language document in Content. Type CONTACT_FLOW is the inbound flow. Build the JSON in the flow lab, then paste it here.
AWS::Connect::ContactFlow Flow language
CloudFormation study snippet
Resources:
OrderStatus:
Type: AWS::Connect::ContactFlow
Properties:
InstanceArn: !GetAtt CampusInstance.Arn
Name: OrderStatus
Type: CONTACT_FLOW
Content: '{"Version":"2019-10-30","StartAction":"a1","Actions":[{"Identifier":"a1","Type":"MessageParticipant","Parameters":{"Text":"Thanks for calling."},"Transitions":{"NextAction":"a2","Errors":[],"Conditions":[]}},{"Identifier":"a2","Type":"DisconnectParticipant","Parameters":{},"Transitions":{}}]}'
Integration map
Join records on ContactId. The integration map room lists the seams.
Cross-platform bridges
A CUCM calling search space is not a routing profile, but the profile is the closest idea of 'who can receive what'. A partition is not a Connect object. A UCCX CSQ and a UCCE skill group map to a queue. Precision steps map to routing criteria. A script, an Architect flow, and an Avaya vector map to a contact flow.
Open the mapping room
Future hooks
Hooks you can adopt later: EventBridge contact events, the CTR stream, agent events, Kinesis Video, Customer Profiles events, Cases, Show view, data tables, External Tool, and the flow language JSON in your pipeline. Live Sync and Agentic CX are the 2026 hooks for guided and agentic experiences.