Learn it in 5 minutes
HTMLAbout five minutes of reading
The designer is a view. The JSON is what you review and promote.
An action has a type, parameters, and transitions. Conditions can nest no more than five deep, with no more than 50 sub-conditions. Operators compare strings and numbers. A non-numeric comparison against GreaterThan returns false.
Action kinds are contact, participant, interaction, and flow control. Participant actions such as Play prompt need a participant. Some disconnect flows do not have one.
- Use the JSON to move a flow between a test instance and production.
- Do not hand-edit a 2,000-line export without a diff.
- Modules have their own JSON.
- The API still says Amazon Connect in places. The admin guide may say Connect Customer. The JSON types are what the API accepts.
Number on this page: Nesting 5. Maximum condition depth
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
Treating a screenshot of the designer as the source of truth.
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.