Blog
A customer messages a Brazilian business on WhatsApp asking about a product, the way thousands had before, and then waits. Nothing comes back. The message reaches the system, moves through the usual steps, and stops dead at the point where a reply should be written. No error appears anywhere. The workflow that runs the whole thing cannot even be switched on. For a sales team that had come to rely on an agent answering every enquiry, the quiet was costly and invisible at the same time.
WhatsApp AI Agent Recovery is the project where we found why that agent went silent and brought it back. The setup is a chain of parts: messages arrive through Evolution API, an n8n workflow looks up the contact and buffers what they send, an OpenAI-powered agent writes the reply, and the answer goes back out to WhatsApp, with a hand-off to a person when the conversation needs one. Something in that chain had broken, and because it failed without an error, nobody could point to the cause.
Put simply, the same agent that had stopped answering was traced fault by fault, fixed with a backup before every change, tested with a real message end to end, and then hardened so the main failure cannot happen again. The client did not want a rebuild. They wanted their own agent working, and that is what they got back.
The brief was narrow and the risk was high. A live sales channel was down, several services sat between the customer and the reply, and any clumsy change could lose contacts or chats for good. That set a short list of conditions the work had to meet before a single setting was touched.
Recovering a dead automation across six services, without an error to follow, is the kind of work an artificial intelligence development company takes on when a client has an agent they trust and need back rather than a fresh project. The faults were separated one by one, each checked against the logs before anything was changed. The work ran as an ordered sequence:
The likeliest reason the agent had gone quiet without complaint was the one that is easy to miss: the OpenAI account had run out of credits, so the model step produced nothing at all. Getting the replies flowing again meant treating the model layer with the same care as the rest, which is why the same discipline we bring to building OpenAI-powered apps applied here, from the billing that keeps answers coming to the way split replies and quote links are formatted.
The agent runs as a Docker setup on the client’s own Linux VPS, with each service doing one job and feeding the next. The hard part was never writing new code. It was reading a system that had failed quietly, confirming each cause with evidence, and fixing it in a way that would not come apart at the next automatic update.
The piece that needed the most care was the join between a received message and a written reply, because that is exactly where the silence lived. A message could pass every visible step and still produce nothing if the model had no credit or the WhatsApp session had been logged out, and neither of those shows up as a workflow error. Checking each service in turn, rather than trusting the lack of red flags, is what surfaced the real causes.
The hardest problem was a failure with no error. The agent did its visible work and then produced nothing at the model step, so there was no single log line to chase. Walking through each service by hand surfaced the two causes outside the server: an empty OpenAI balance and a WhatsApp session that had been logged out months earlier. Re-pairing then failed because WhatsApp rejected the old client version Evolution API was reporting, which had to be corrected before the session would connect.
The second hard problem was a fix that kept undoing itself. The WhatsApp community node vanished every time the containers were recreated, because they had no permanent storage. Adding that storage and pinning the n8n version stopped it, and a container was recreated on purpose to prove the node now survives. The Evolution API upgrade carried its own risk, so it was rehearsed on a copy of the database first, which kept instances, chats and contacts intact and the WhatsApp connection live when the real upgrade ran.
In the final live test, a message sent from a personal phone was answered by the agent through WhatsApp, and the quote link opened correctly. The client confirmed it was working and released the remaining milestone, with a support period and step-by-step notes for future phone changes. The same agent now answers again, every customer message gets a reply, and the main failure is blocked by permanent storage and a pinned version rather than left to chance.
The recovery worked because it was built on evidence and backups rather than guesswork, fixing each cause where it started. If an automation you depend on has gone quiet, you can hire AI agent developers who diagnose n8n and WhatsApp pipelines fault by fault, or tell us how your agent is set up and our US-registered team will trace it end to end. It suits any sales and customer-facing business running an AI agent on WhatsApp.
What was wrong with the WhatsApp AI agent?
Several separate faults had built up over months and then combined into a silent failure. n8n could not load its nodes, the WhatsApp community node had been wiped by an automatic upgrade, the Evolution API webhook was missing, a step pointed at a deleted Supabase project, the OpenAI account had run out of credits, and the WhatsApp session had been logged out. Each one was traced and fixed in turn.
Why did the agent fail without showing any error?
The agent completed its visible steps and only produced nothing at the model step, where an empty OpenAI balance and a dead WhatsApp session leave no workflow error. Because the system looked fine on the surface, the causes only appeared once each service was checked by hand against its logs and status rather than trusting the lack of red flags.
Did you rebuild the agent from scratch?
No. The client wanted their existing agent restored, not replaced, so the work stayed inside the workflow they already ran. Every change was made after a full backup of configs, both databases, workflows and credentials, and each fault was repaired where it started rather than worked around.
How is the same failure prevented from happening again?
The community nodes were given permanent storage and the n8n version was pinned, so an automatic container upgrade can no longer wipe them. A container was recreated on purpose to confirm the node now survives, and the Evolution API upgrade was rehearsed on a copy of its database before being applied to the live system.
Can you recover an agent built on a stack like this?
Yes. This agent ran on n8n, Evolution API, OpenAI, Supabase and Redis in Docker on a Linux VPS, and the same evidence-first approach applies to similar pipelines. The method is backup first, trace each cause with logs and tests, fix at the source, then prove it with a real message answered end to end.