Skip to content
Amazon Connect · Deployment

Contact Flow ARN Parameterizer

Move contact flows between Amazon Connect accounts and instances: replace hard-coded ARNs, match them to the target environment by name, and export a CloudFormation template.

Last updated

Amazon Connect Tools
Contact Flow ARN Parameterizer

Moving a Contact Flow from Dev to Prod? Every embedded ARN breaks the import. Paste your flow JSON and this tool replaces every Queue, Lambda, Lex Bot, Prompt, and Flow ARN with a clean named placeholder — so you can import anywhere with a simple find-and-replace.

100% Browser-Side No Data Sent to Servers Queues · Lambda · Lex · Prompts · Flows One-Click JSON Download

Drop your Contact Flow JSON here

Supports Amazon Connect exported Contact Flows and Modules

or paste below
0 characters
Try a sample:
Processing…
Parameterized Contact Flow JSON
ARN → Placeholder Mapping
Alternative · Manual mapping

Or re-hydrate from a mapping CSV

Already have your parameterized JSON and the real ARNs from the target account? Paste both below and this will substitute them automatically — no manual find-and-replace needed.

How It Works

From Broken Import to Clean Deployment

Three steps to make your Contact Flow fully portable across AWS accounts and regions.

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 "Parameterize ARNs"

The tool scans the JSON for every ARN — Queues, Lambda functions, Lex Bots, Prompts, and other Contact Flows — and replaces each with a descriptive placeholder like {{Queue_CustomerSupport}}.

Download the parameterized JSON and the mapping CSV

In your target account, collect the matching ARN for each placeholder. Either edit the mapping CSV directly, or paste both the parameterized JSON and the mapping into the Re-hydrate section below to substitute everything automatically — then import the flow.

Your Data Stays Local

All ARN detection and replacement runs entirely in your browser using JavaScript. The Contact Flow JSON never touches our servers.

All ARN Types Detected

Queues, Routing Profiles, Lambda Functions, Lex Bots (V1 & V2), Prompts, Contact Flows, Modules, Hours of Operation, Phone Numbers (V1 & V2), Quick Connects, Security Profiles, Users, Task Templates, Views, Evaluation Forms, Amazon Q in Connect (Wisdom), and any other arn:aws:* resource via a generic fallback rule — nothing is ever silently skipped.

Intelligent Naming

Placeholders are generated from the resource name embedded in the ARN, not a generic counter — making the parameterized JSON human-readable and self-documenting.

Duplicate-Safe

When the same ARN appears multiple times in a flow (common for shared queues), the tool uses a single placeholder everywhere — keeping the output consistent and the mapping table clean.

FAQ

Frequently Asked Questions

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

Amazon Resource Names (ARNs) encode the AWS account ID, region, and resource ID. When you export a Contact Flow from your Dev account and import it into Prod, every embedded ARN still points to Dev resources. The import may fail outright, or it may silently route calls to the wrong queue or Lambda. Replacing ARNs with named placeholders before migration eliminates this problem entirely.
The tool detects: Queues, Routing Profiles, Lambda Functions, Lex Bots (both V1 and V2 aliases), Contact Flows & Modules, Prompts (audio files), Hours of Operation, Phone Numbers (both the legacy V1 and current V2 ARN formats), Quick Connects, Agent Hierarchies, Security Profiles, Users, Task Templates, Views, Evaluation Forms, Traffic Distribution Groups, Amazon Q in Connect (Wisdom) resources, and any other arn:aws:* pattern found in the JSON via a generic fallback rule.
No. All processing runs entirely in your browser using JavaScript. Your Contact Flow JSON never leaves your device and is never transmitted to Kloudmint or any third-party server.
Download the parameterized JSON and the mapping CSV. In the target AWS account, copy the ARN of each resource (queue, Lambda, etc.) and do a global find-and-replace in the JSON file: substitute each placeholder (e.g., {{Queue_CustomerSupport}}) with the correct ARN from the new environment. Then import the updated JSON into Amazon Connect via the flow editor.
Yes. The ARN Parameterizer works with both standard Contact Flows and Contact Flow Modules. Any JSON exported from the Amazon Connect console is supported.
Each unique ARN is assigned exactly one placeholder. If the same ARN appears in multiple actions (for example, the same queue is referenced in a Set working queue block and a Check hours of operation block), both occurrences are replaced with the same placeholder. The mapping table lists each ARN once.
Not anymore. Use the Re-hydrate section below the main tool: paste the parameterized JSON and a mapping of Placeholder,ARN (or the CSV this tool exports, with the last column filled in with the target ARNs), and it substitutes everything automatically — flagging any placeholder that doesn't have a matching row so you don't miss one.
If the ARNs found in your flow reference more than one Amazon Connect instance ID, the tool shows a warning banner. This usually means content was copied in from more than one environment (for example, a queue ARN from Dev pasted alongside a Lambda association still pointing at UAT). It's not blocked — just worth double-checking before you import.
Practical guide

How to move Amazon Connect contact flows between accounts

Queue, prompt, flow and hours-of-operation IDs are different in every Connect instance, so a flow exported from dev can't be imported into prod as it is. This is the end-to-end workflow:

  1. Export the flow from the source instance (flow designer → Save → Export flow), or run aws connect describe-contact-flow. Both formats work here. To move several flows that call each other, use Batch: several flows so every flow shares one mapping.
  2. Parameterize. Every ARN becomes a named placeholder such as {{Queue_Sales}}. Names come from the display names stored in the export, and you can rename any placeholder. Instance IDs, account numbers and phone numbers found outside ARNs (for example in contact attributes) are listed so you can parameterize them too.
  3. Describe the target. Enter the target account, region and instance, then paste the output of the AWS CLI list commands (list-queues, list-prompts, list-contact-flows, list-contact-flow-modules, list-hours-of-operations, lambda list-functions). Copy the CLI commands gives you the full set to run in CloudShell. Save the target as an environment (for example prod) so the next flow needs no setup.
  4. Match. Each placeholder is matched to the target resource with the same name and type. Lambda functions and Lex V1 bots with the same name are retargeted to the new account and region automatically. Anything that can't be matched is highlighted, and you pick it from a list or type the value.
  5. Build and check. Build target JSON substitutes every value, updates the display names in the flow layout data so the designer shows the right names, and checks that no placeholders are left and that every ARN points to the target account, region and instance. A before/after table shows each change by block. Check in Flow Validator then runs the full pre-import checks.
  6. Deploy. Import the JSON in the flow designer, or download the CloudFormation template: each flow becomes an AWS::Connect::ContactFlow (or ContactFlowModule) resource whose content uses !Sub. Each placeholder is a template parameter, defaulted to the matched target value. Flows in the same batch that transfer to each other are linked with GetAtt instead of parameters.

Everything runs in your browser. The flow and the resource lists are never uploaded, and saved environments stay in your browser's local storage.

Promoting flows from Dev to Prod: a worked example

Most teams run at least two Amazon Connect instances: one for development and testing, one for production, often in separate AWS accounts. Flows built in Dev contain ARNs that only exist in Dev. This walkthrough shows how to turn an exported flow into a reusable template and deploy it with CloudFormation.

Step 1: Export and parameterize

Export the flow from the Dev instance and paste it here (or load the Basic Queue + Lambda sample). The tool finds every ARN (queues, prompts, Lambda functions, Lex bots, hours of operation, other flows) and replaces each one with a named placeholder such as ${QueueSupportArn} or ${LambdaCustomerLookupArn}. Identical ARNs share one placeholder, so a queue used in five blocks becomes one parameter.

Step 2: Use the template in CloudFormation

The parameterized JSON fits CloudFormation's Fn::Sub directly:

Resources:
  MainInboundFlow:
    Type: AWS::Connect::ContactFlow
    Properties:
      InstanceArn: !Ref ConnectInstanceArn
      Name: Main Inbound
      Type: CONTACT_FLOW
      Content: !Sub
        - |
          { ...parameterized flow JSON... }
        - QueueSupportArn: !GetAtt SupportQueue.QueueArn
          LambdaCustomerLookupArn: !GetAtt CustomerLookupFn.Arn

Queues, hours of operation and prompts can be created in the same stack and referenced with !GetAtt, so the flow always points at resources that exist in the account it is deployed to. For resources managed elsewhere, pass the ARNs in as stack parameters, one parameter file per environment.

Step 3: Re-hydrate for a quick manual import

Not using infrastructure as code yet? Use the Re-hydrate section to enter the Prod ARNs for each placeholder and download import-ready JSON for the Prod console.

Pitfalls that catch people out

  • Lambda association. A Lambda function must be associated with the instance before a flow can invoke it. In CloudFormation use AWS::Connect::IntegrationAssociation, and make sure the function's resource policy allows connect.amazonaws.com to invoke it.
  • Flow-to-flow references. If the main flow transfers to a module or another flow, deploy the target first, or create both in the same stack so CloudFormation resolves the order.
  • Prompts are not portable. A prompt ARN references audio stored in that instance. Upload the same audio to each environment (AWS::Connect::Prompt supports an S3 source) and parameterize the ARN.
  • Phone numbers. Numbers are claimed per instance and associated with a flow separately. They do not travel with the flow JSON.
  • Region in the ARN. If Dev and Prod are in different Regions, the region segment differs too. The tool treats the full ARN as the value, so region differences are covered.

Suggested CI/CD layout

flows/
  main-inbound.json          # parameterized template (from this tool)
  customer-queue.json
params/
  dev.json  test.json  prod.json   # ARNs / stack parameters per environment
template.yaml                # queues, hours, prompts, flows, Lambda associations

Store the parameterized JSON in Git so flow changes go through code review. Diff two versions with the JSON Comparison Tool, and validate them with the Flow Validator in the pipeline before deploying.

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.