When building data-channel-less WhatsApp Flows (where navigation is driven by UI actions, not a routing_model), you may run into this error:
INVALID_ROUTING_MODEL
Following screens are not connected to any of the screens: (screenIDs). A connection is formed by the navigate screen action.
Let’s look at what this means and how to fix it.
What This Error Actually Means
This error is triggered when a screen exists in the screens array, but:
It is not connected to any other screen via a navigate action.
And you haven’t specified a routing_model manually (as is standard in data-less flows).
In this flow type, WhatsApp builds the routing graph implicitly, based on on-click-action → navigate references.
If a screen is never navigated to (or from), WhatsApp considers it an orphan, and throws the error.
Structure Overview (Data-Channel-Less Flow)
{
"screens": [
{
"id": "FIRST_SCREEN",
"layout": {
"children": [
{
"type": "Footer",
"on-click-action": {
"name": "navigate",
"parameters": {
"target_screen_id": "SECOND_SCREEN"
}
}
}
]
}
},
{
"id": "SECOND_SCREEN",
...
}
]
}
In this structure:
No routing_model is defined.
WhatsApp analyzes each navigate action to understand how screens connect.
If a screen is not the target of any navigate, it’s flagged as unconnected.
Invalid Example
{
"screens": [
{
"id": "FIRST_SCREEN",
"layout": {
"children": [
{
"type": "Footer",
"on-click-action": {
"name": "data_exchange",
"parameters": { ... }
}
}
]
}
},
{
"id": "SECOND_SCREEN",
...
}
]
}
Issue:
SECOND_SCREEN is defined.
But no screen navigates to it.
data_exchange is not a navigation action.
INVALID_ROUTING_MODEL
Following screens are not connected to any of the screens: SECOND_SCREEN
Fixed Example
Update your button or footer to include a navigate action that links to SECOND_SCREEN:
{
"screens": [
{
"id": "FIRST_SCREEN",
"layout": {
"children": [
{
"type": "Footer",
"on-click-action": {
"name": "navigate",
"parameters": {
"target_screen_id": "SECOND_SCREEN"
}
}
}
]
}
},
{
"id": "SECOND_SCREEN",
...
}
]
}
Now:
FIRST_SCREEN links to SECOND_SCREEN via navigation.
Both screens are connected in the inferred routing graph.
Error resolved.
How WhatsApp Infers Routing Without routing_model
In data-less flows, WhatsApp constructs the flow graph like this:
Parses all on-click-action: { name: "navigate", ... }
Connects source → target screen via target_screen_id
If a screen is never targeted, it’s considered unconnected → Error
No navigate = no link in routing.
Testing Tips
Every screen must be reachable via at least one navigate action.
You can still use other actions (e.g., data_exchange, submit_form) — but they won’t create navigation links.
Validate by following the full screen flow from the entry point.
For more troubleshooting insights related to WhatsApp Business API, check out heltar.com/blogs.