When working with dynamic data in low-code or screen-based app builders, you might come across this error:

INVALID_NAVIGATE_ACTION_PAYLOAD  

Schema of dynamic data '${payloadFieldValue}' is not matching schema of data model field '${payloadField}' on screen '${dataModelScreen}'. Property is expecting '${dataModelFieldType}' but got '${payloadFieldType}'.

This can look intimidating at first, but it usually comes down to one simple issue: a mismatch in data types between the value you're passing and what the target screen expects.

You can fix it by either adjusting your screen’s data model or ensuring your dynamic input sends the correct type.

Let’s walk through what this means, how to spot it, and how to fix it using a real example.

What This Error Means

This error occurs when you’re using a dynamic binding (like ${form.input}) to pass data from one screen to another, but the type of the bound value doesn’t match the expected type in the next screen’s data model.

So if the second screen expects a boolean (true or false) and you’re passing a string ("yes" or "no"), the navigation will break with this error.

Example of the Problem

Let’s look at this sample configuration:

First screen: dynamic payload from form input

"payload": {
  "text": "${form.input}"
}

Second screen: data model expecting a boolean

"data": {
  "text": {
    "type": "boolean",
    "__example__": true
  }
}

Here’s what’s happening:

  • form.input captures a text input, which is a string.

  • But the second screen expects text to be a boolean.

This mismatch (string vs boolean) causes the INVALID_NAVIGATE_ACTION_PAYLOAD error.

How to Fix It

You have two options, depending on what you're trying to achieve:

1. Update the Data Model to Match the Input

If you're expecting a string input (like a message or name), and don’t actually need a boolean, then update the second screen’s data model:

"data": {
  "text": {
    "type": "string",
    "__example__": "hello"
  }
}

2. Convert the Input to Match the Expected Type

If the second screen genuinely needs a boolean value (like a Yes/No response), convert the input accordingly.

For example, you can validate and convert the string "true" or "false" to an actual boolean value before navigation, or use a toggle/switch component instead of a free-form text input.

Common Causes

  • Binding a text input to a boolean field

  • Sending numbers as strings (e.g., "5" instead of 5)

  • Forgetting to update the screen data model when UI changes

  • Using unchecked or unvalidated dynamic inputs

Best Practices

  • Always validate your dynamic bindings to ensure they match the data model.

  • Use form components that align with expected types (e.g., switch for booleans, number input for integers).

  • When using dynamic values like ${form.input}, know what type it resolves to.

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