When designing data-channel-less WhatsApp Flows (where navigation between screens is handled directly via on-click-action in the UI), you may encounter this error:

INVALID_ROUTING_MODEL

Following screens are not connected with the rest of the screens via navigate screen action: (screenIDs). All screens should be connected.

This error points to a broken navigation graph, meaning one or more screens are logically unreachable from the main flow through navigate actions.

Root Cause

In a data-less flow (no routing_model block), WhatsApp internally builds a screen routing graph by analyzing:

"on-click-action": {
  "name": "navigate",
  "next": {
    "name": "SCREEN_ID",
    "type": "screen"
  }
}

If a screen exists in the screens array, but there’s no valid navigate path leading to it, it’s considered disconnected — and WhatsApp throws this error.

Problem Example

{
  "screens": [
    {
      "id": "FIRST_SCREEN",
      "layout": {
        "children": [
          {
            "type": "Footer",
            "on-click-action": {
              "name": "navigate",
              "next": {
                "name": "SECOND_SCREEN",
                "type": "screen"
              }
            }
          }
        ]
      }
    },
    {
      "id": "SECOND_SCREEN",
      ...
    },
    {
      "id": "THIRD_SCREEN",
      ...
    }
  ]
}

Issue:

  • FIRST_SCREEN navigates to SECOND_SCREEN.

  • THIRD_SCREEN exists, but no screen navigates to it.

  • No navigate action leads to THIRD_SCREEN.

So WhatsApp throws:

INVALID_ROUTING_MODEL  

Following screens are not connected with the rest of the screens via navigate screen action: THIRD_SCREEN

Fixed Example

Add a navigation path to the missing screen:

{
  "screens": [
    {
      "id": "FIRST_SCREEN",
      "layout": {
        "children": [
          {
            "type": "Footer",
            "on-click-action": {
              "name": "navigate",
              "next": {
                "name": "SECOND_SCREEN",
                "type": "screen"
              }
            }
          }
        ]
      }
    },
    {
      "id": "SECOND_SCREEN",
      "layout": {
        "children": [
          {
            "type": "Button",
            "on-click-action": {
              "name": "navigate",
              "next": {
                "name": "THIRD_SCREEN",
                "type": "screen"
              }
            }
          }
        ]
      }
    },
    {
      "id": "THIRD_SCREEN",
      ...
    }
  ]
}

Now:

  • FIRST_SCREEN → SECOND_SCREEN → THIRD_SCREEN forms a fully connected path.

  • No disconnected screens.

  • Flow deploys without error.

In flows without a routing_model, WhatsApp builds the screen graph by parsing all on-click-action: navigate blocks. Every screen must be reachable via this graph — otherwise it is marked as disconnected.

For more troubleshooting insights related to WhatsApp Business API, check out heltar.com/blogs.