Skip to content
Amazon Connect · Contact flows

Amazon Connect Contact Flow Validator

Check exported flow JSON before you import it: a readiness score, missing error branches, wrong-environment ARNs, Lambda and input settings, SSML and attribute typos, plus one-click auto-fix.

Last updated

Amazon Connect Tools
Contact Flow JSON Validator & Linter

Amazon Connect will happily save a flow with orphaned blocks, missing error branches, or a malformed ARN buried in a Lambda parameter — none of that fails validation at save time. Paste or upload your exported flow JSON and this tool catches all of it before you re-import. Run it after the ARN Parameterizer when moving a flow between accounts.

100% Browser-Side No Data Sent to Servers Orphaned Blocks · Error Branches · ARNs One-Click Report Export

Drop your Contact Flow JSON here

Supports Amazon Connect exported Contact Flows and Flow Modules

or paste below
0 characters
Try a sample:
Validating…
All Findings
Reachability From StartAction
ARNs Found In This Flow
Plain-Text Validation Report
How It Works

From Export to Clean Import

Three steps to catch flow problems before Amazon Connect — or your customers — find them for you.

Export your Contact Flow from Amazon Connect

In the Amazon Connect console, open the Contact Flow editor, click the menu (⋮) and choose Export flow. You'll get a .json file.

Upload or paste it here and click "Validate Flow"

The tool walks every transition from StartAction, cross-checks each block's Type against its documented error set, and scans every Parameters object for ARNs — all in your browser.

Fix the flagged blocks and re-import

Each finding names the exact block Identifier and Type, with a suggested fix. Jump to the flow designer, fix what's flagged, export again, and re-validate until the Issues tab is clean.

Your Data Stays Local

All parsing and validation runs entirely in your browser using JavaScript. Your Contact Flow JSON never touches our servers.

Full Reachability Graph

Walks NextAction, Errors, and Conditions transitions from StartAction to find blocks that can never run, and blocks nothing else ever points to.

45+ Action Types Checked

Cross-checks each block's Type against its documented AWS error set. Unrecognized/future types get a graceful info note instead of a false alarm.

ARN Format Validation

Validates partition, service, region, account ID, and resource path for every arn:aws string found — Lambda, Connect, Lex, S3, IAM, and Cases.

FAQ

Frequently Asked Questions

Everything you need to know about validating Amazon Connect Contact Flows.

This tool parses an exported Amazon Connect flow (Flow language, version 2019-10-30) and checks for orphaned blocks that can never run, blocks with no error branch defined, broken NextAction/Condition references that point at Identifiers that don't exist, duplicate or invalid block Identifiers, malformed ARNs in block Parameters, missing default transitions, and blocks that are never referenced by any other block.
An orphaned block is an Action defined in the flow's Actions array that can never be reached by walking NextAction, Errors, and Conditions transitions starting from StartAction. Amazon Connect will happily save a flow containing orphaned blocks, so they're easy to miss during manual review, but the logic inside them will never execute.
Most action types in the Flow language (InvokeLambdaFunction, ConnectParticipantWithLexBot, TransferContactToQueue, and more) can fail at runtime due to timeouts, missing resources, or capacity limits. If the Errors array is empty, an unhandled failure ends the contact abruptly instead of following a graceful fallback such as an apology prompt or a transfer to a queue.
The validator recursively scans every Parameters object in every block for strings beginning with arn:aws, then checks the partition, service, region, 12-digit account ID, and resource path against the format used by Lambda, Amazon Connect, Lex V2, S3, Cases, and IAM ARNs, flagging anything that doesn't match.
No. Parsing and validation run entirely in your browser with client-side JavaScript. The flow JSON you paste is never transmitted to Kloudmint or any third party — this matters because exported flows can contain Lambda ARNs, queue ARNs, and other account-specific identifiers.
No — it's a read-only linter. It tells you exactly which block Identifier has a problem and why, so you can fix it in the Amazon Connect flow designer or directly in the exported JSON before re-importing it.
2019-10-30 is the only Version value currently supported by the Amazon Connect Flow language, which every valid flow JSON export must declare at the top level alongside StartAction and Actions.
AWS documents a hard limit of 250 Actions per flow. This validator counts your blocks and warns you as you approach that ceiling.
Yes. Flow modules exported from Amazon Connect use the same Version, Actions, and Transitions structure as regular flows (an InvokeFlowModule action jumps into one), so the same reachability, error-branch, and ARN checks apply.
The Amazon Connect console mostly validates schema correctness at save time (throwing an InvalidContactFlowException for a truly broken reference) but doesn't flag orphaned blocks, missing error handling, or malformed ARNs sitting in dynamic-looking fields. This tool is a static-analysis pass you run before import, on the exported JSON itself.
Run the ARN Parameterizer first if you're moving a flow between AWS accounts, then this validator before import, and the CloudWatch Log Analyzer once the flow is live to debug any runtime failures.
Practical guide

Why flow imports fail, and how to fix them

Most failed flow deployments come from a small number of causes. The console's import error is often generic ("The flow is invalid" or InvalidContactFlowException), so it helps to know where to look. The validator checks these before you try the import.

1. The JSON itself is broken

Hand edits, merge conflicts and copy-paste from chat tools leave trailing commas, smart quotes or truncated files. These fail before Connect even reads the flow. The validator reports the exact line and column, so fix those first.

2. References to resources that don't exist in the target

Every queue, prompt, Lambda function, Lex bot, hours of operation and transfer-to-flow reference is stored as a full ARN that includes the instance ID and account ID. Export from Dev and import into Prod, and every one of those ARNs points at Dev. The validator flags ARNs whose account or instance differs from the rest of the flow, and ARNs that are badly formed.

Fix: replace environment-specific ARNs with parameters using the ARN Parameterizer, then substitute the target values at deploy time.

3. Lambda functions not associated with the instance

Even with the correct ARN, an Invoke AWS Lambda function block fails if the function hasn't been added to the instance (Flows → AWS Lambda in the instance settings, or the AssociateLambdaFunction API). The same applies to Lex bots. Make association part of your deployment pipeline, not a manual step.

4. Missing transitions

Blocks that can fail need an Error transition, and input blocks need Timeout and Default paths. A flow with a dangling transition may import but behave unpredictably in production. The validator walks the full graph from the start action and lists unreachable blocks and missing branches.

5. Flow type mismatch

An inbound flow, a customer queue flow, a whisper flow and a module are different types, and some blocks are only valid in certain types. A Transfer to queue block inside a whisper flow, for example, is rejected. Make sure you import into a flow of the same type you exported from.

What the validator checks

Each run gives the flow a readiness score out of 100 and a verdict: Ready to import, Ready, with warnings to review, or Not ready to import. The checks go beyond JSON structure:

  • Promotion readiness: ARNs that point to more than one AWS account, region or Connect instance. That usually means a resource from dev was left in a prod flow. Hard-coded ARNs are counted so you can replace them with the ARN Parameterizer.
  • Block settings: Lambda timeouts above the 8-second limit, the same keypad option used for two branches, options a keypad can't send, input timeouts of zero, empty prompts and Loop blocks without a count.
  • Prompts: SSML that isn't well-formed or uses tags Amazon Polly doesn't support, and <speak> tags typed into a plain Text prompt, where the caller would hear them read out.
  • Attributes: $.Attributes references that are never set, including likely typos such as custmerTier next to customerTier, and attributes that are set but never read.
  • Flow type: blocks that aren't available in the flow type, such as a queue transfer in a whisper flow. The type is detected automatically, and you can change it.
  • Routing and best practice: paths that reach a queue transfer without setting a working queue, loops with no Loop block to limit retries, and missing logging, recording or hours-of-operation checks.

Filter results by severity, mute rules you have deliberately accepted (remembered in your browser), click Show in JSON to select the block in the editor, or Show in diagram to open it in the Flow Visualizer. The Auto-fix tab creates a corrected copy: it connects missing error branches to a block you choose, redirects broken links, removes unreachable blocks and adds a missing Version, and lists every change before you download it.

Worked example: the "Flawed Flow" sample

Load the Flawed Flow sample above and run validation. It is a small five-block flow, but it contains the mistakes we see most often in real exports:

  1. No start action. StartAction is empty, so Connect doesn't know which block runs first. Set it to the greeting block (greet).
  2. A Lambda block with no Error branch. invoke-lambda has an empty Errors list. If the function fails or times out (the block waits at most 8 seconds), the contact has nowhere to go. Add an Error path to the apology prompt or a fallback queue.
  3. A malformed ARN. The Lambda ARN's account segment is 12345, but AWS account IDs are 12 digits. Re-select the function in the designer rather than editing the ARN by hand.
  4. An orphan block. orphaned-apology has no incoming transition, so it can never run. Connect it to the Lambda Error branch from point 2, which fixes both problems at once.
  5. A dangling reference. The menu block get-input has an empty default NextAction, sends errors to old-target-block (a block that no longer exists), and has no path for option 2. Point every branch at a real block, and add a Timeout path.

Fix each one in the flow designer, export again, and re-run validation until it is clean before you import.

A safe promotion workflow

  1. Export the flow from the source environment.
  2. Validate it here, and fix structural issues in the source environment, not in the JSON.
  3. Parameterize the ARNs.
  4. Deploy with CloudFormation (AWS::Connect::ContactFlow) or the CreateContactFlow / UpdateContactFlowContent APIs, substituting target ARNs.
  5. Make one test call per branch in the target environment, then check the flow logs.

Official references

Runs 100% in your browser. Your files and data never leave your machine. Nothing is uploaded or stored.

Stuck on an Amazon Connect problem?

Get help from an architect with 8+ years in contact centres and 4+ years on Amazon Connect: flows, CCP and CRM integrations, Lex and Q in Connect, migrations and go-lives.