Products · USSD Flows
Troubleshooting & FAQ
Fixes for common USSD flow problems, and answers to frequent questions.
Common Issues
"Invalid JSON" in the Editor
The flow has a JSON mistake, such as a missing comma or bracket, or it breaks a flow rule, such as a missing field or a misspelt one. Hover over each red line to see what's wrong.
Common causes:
- A component without a
type. - A
typethat isn't one of the six page types:prompt,menu,display,dynamic,templateorside_effect. - A misspelt field, such as
lableforlabel.
If the message mentions "unevaluated properties", a field isn't allowed on that page type. Check the Flow Definition.
The Draft Isn't Saving
The editor doesn't save while the status reads "Invalid JSON". Fix the red lines first. If it reads "Unsaved", the editor saves 5 seconds after you stop typing, or press Ctrl+S (Cmd+S on Mac). If you're looking at Published, switch to Draft: the live version is read-only.
Publish Is Greyed Out
Hover over Publish to see why. The messages are listed in Editing & Publishing.
"Publish Draft" Is Missing on the Flow's Page
It only shows when there is a saved draft. Publishing clears the draft, so the button comes back after your next saved change.
"Action Required" in the Security Section
The flow calls your server but has no public key, so you can't publish it. Add a key as shown in Flow Security.
A Variable Shows Nothing
A Menu Shows No Options
For a fixed list, items must hold 1 to 16 entries, each with a value and a label.
For a list from your server, such as "$(data.districts)", the data must be a list of { value, label } entries by the time the menu shows. If your server hasn't sent it yet, the menu is empty.
Callers Keep Getting "Invalid Input"
The prompt's rules may be too strict.
- For text, check
min_length,max_lengthandpattern. Try the pattern with real answers. - For numbers, check
min_valueandmax_value. - Set
max_invalid_input_attemptsto about 3, so one typo doesn't end the session.
My Server Isn't Called
Check that the page has an on_done with "action": "exchange" and a full url that can be reached over the internet. Without it, the flow moves to the next page and doesn't call your server.
The Session Ends With an Error
Your server must reply with HTTP 200 within 10 seconds, with an encrypted reply. Any failure ends the caller's session with an error. See Security Troubleshooting for reply problems.
Frequently Asked Questions
Codes
Editing and Publishing
Screens
Building Flows
Contacting Support
If you're still stuck, especially if a published flow can't be reached, email Monime support with:
- the flow ID and code
- the flow JSON, if it matters
- the error message
- the steps that cause the problem