Summary: Not all text strings should be analyzed like prose. Some are pure function—data, responses, machine feedback. One such case is a JSON error message that simply states a user’s balance is too low to proceed. On the surface, it feels dry and utilitarian. But what happens when your platform returns that message to your customer? What expectations clash? What’s unsaid in that system-generated reply—and what should marketers, designers, and product teams learn from it?
When Systems Speak Without Context
System-generated messages are rarely optimized for communication. They inform without empathy, react without inquiry. The line in question—“This appears to be an error message or response, not a story. There is no main story to extract or rewrite. The text provided is a JSON response that indicates an insufficient balance error, and provides instructions to recharge the account in order to run the query.”—is not helping a confused user. It’s diagnosing a format problem. But the format isn’t the user’s concern. The roadblock is: “You don’t have money in your account, and your action won’t go through.” That core message, however, is buried in technical jargon.
Let’s reframe this. If a human walked into a bank and tried to withdraw cash but didn’t have enough in their account, how would a teller respond? They wouldn’t recite the internal memo. They’d start with context: “Looks like your balance is too low for that withdrawal—would you like to know your options?” They’d stay in conversation. That’s what digital systems fail at too often. They state, but they don’t ask. They command, but don’t guide.
Error Messages Should Not End Conversations
People don’t fear data—they fear being trapped. A JSON response that lists an error code and something like "error_type": "InsufficientBalance"
may be technically accurate, but it assumes the user knows what to do with that information. Most don’t. And when the message ends the interaction instead of opening one, the user leaves stuck. Silence kills engagement.
Every interruption is an opportunity. When a customer’s activity is blocked because of a zero balance, they’re at a crossroads. This is where persuasion begins—not in the sale, but in the re-engagement. Don’t just tell them they’re stuck. Ask:
- “Would you like to top up with your last used method again?”
- “Want us to notify you next time you’re about to run out?”
- “Would you like a smaller plan that doesn’t require as much balance?”
Each of these turns a passive error into an active choice. Each one respects agency, which increases compliance. The user is more likely to stay—not just because you’ve added features—but because you’ve shown that the system sees them.
JSON is For Systems, Not for Users
From a developer’s standpoint, JSON is universal. Machines read “status": 400
” and respond accordingly. That’s fine for APIs—but people are not APIs. A front-end system must translate the mechanical into the meaningful. If you let raw JSON bubble up to the customer view, what you communicate is: “We didn’t prepare for this.” That erodes authority.
It’s the digital equivalent of a doctor handing you a radiology report in Latin and walking away. The information is there—but are you supposed to decode it yourself? Why would anyone accept that?
Authority in digital communication means converting system truth into user clarity. You don’t hide the issue. You frame it. You show cause, effect, and the next step—side by side. And you do it in a tone that says, “You’re not alone.” This meets the commitment principle from Cialdini’s playbook: people follow what makes them feel seen and consistent with their own goals.
Emotionless Messaging Is A Leak In The Funnel
People judge a system most when it fails. Error points are conversion points—but only if the message creates motion. Otherwise, they’re dead space. No matter how perfect your features, if errors say “no” without offering a path back to “yes,” they erode brand perception.
Let’s not forget Blair Warren’s rule: confirm suspicions, allay fears, encourage dreams. This user suspected the system would fail them. The raw error confirms it. What would happen if we flipped that? The balance is low, yes—but what if that moment also offered an upgrade? A solution that required less credit? A loyalty discount?
Interrupt them with honesty: “You’re out of credit.” Engage them with care: “Want to fix that in 3 seconds?” Educate them on why: “Each action costs credit, and right now, you’ve got none.” Offer a lifeline: “Recharge now or schedule a reminder.”
This Isn’t About JSON. It’s About Missed Trust.
The raw message says: “Don’t blame us, the problem is your balance.” That might be technically true. But does it help? The best systems shift from blame to empathy. From barriers to rails. From silence to a soft nudge.
Chris Voss would call this tactical empathy. Mirroring back what the user feels—frustrated, confused, blocked—and leading them with questions: “Does that feel like we’ve left you hanging?” Give them the power of ‘no.’ Let them reject the suggested recharge path, then ask, “What would be a better way to pay going forward?” Give them voice.
No system is perfect. But every system should be human when it fails. When a JSON message bubbles up to the user layer, ask: have we ended the interaction, or invited a better one?
Repeat this rule like a mantra: Error messages are conversations waiting to happen. Design them to turn back lost conversion, reclaim trust, and restart stalled engagement.
#UXDesign #ErrorMessageFails #ProductMessaging #HumanCenteredDesign #SystemCommunication #DigitalTrust #HighFrictionPoints #ConversionUX #SoftwareErrors #NoIsNotTheEnd
Featured Image courtesy of Unsplash and Muriel Liu (yl0p9ih-i0Q)