My AI Workflow Builder keeps saying it fixed my workflow but it's still not working

I’m new to n8n and using AI Workflow Builder. The AI repeatedly says it found and fixed my workflow issue, but the workflow still doesn’t appear to be working correctly.

The AI previously said there was a wiring issue involving:

  • Loop Over Opportunities

  • Preserve NoticeId with Score

  • Merge Original and Score

  • Filter Qualified (Score >= 70)

The workflow now executes successfully, but I’m not sure if the problem is:

  • Wiring

  • Field mapping

  • Missing score data

  • Or something else

I previously saw messages such as:

  • “n8n stops executing the workflow when a node has no output data”

  • “Filter Qualified (Score >= 70)” showing no data

  • AI Workflow Builder saying it fixed the workflow, but I cannot tell what was actually fixed

My main question:

How can I verify whether the AI actually fixed the workflow, and what is the fastest way to identify the node that is still causing the issue?

I’m happy to provide screenshots of the workflow and node configurations if needed.

Thank you.

Hello Michael, i suggest you provide a screenshot of the workflow.

The issue was resolved

I asked a question inside the N8N forum.
Will I get some sort of notification when someone answers my question?

Hi n8n Support Team,

I am an n8n cloud user (bigslim74.app.n8n.cloud) and I need help with a critical issue that has taken my workflow completely offline.

Here is what happened:

I was building a Telegram voice AI assistant in n8n cloud. While troubleshooting a looping issue, I revoked and regenerated my Telegram bot token through BotFather. After updating the token in my n8n Telegram credential, my workflow now refuses to publish with this error:

“Credential with ID u4eOYjqeHEOE6Ni4 does not exist for type telegramApi”

Here is everything I have tried:

  • Deleted the old Telegram credential and created a brand new one
  • Opened every node in the workflow and reselected the new credential
  • Downloaded the workflow JSON and searched for the old credential ID — it does not appear anywhere in the file
  • The new credential ID is fmZ0RreCdh8R7Uj
  • The bot token is confirmed valid — getMe returns ok:true

Despite all of this, the workflow still references the old deleted credential ID and will not publish.

My workflow was working before this credential issue. It successfully:

  • Receives Telegram voice messages
  • Transcribes audio using OpenAI Whisper
  • Sends text to an AI Agent
  • Generates audio response using OpenAI TTS
  • Sends audio back to Telegram

I need help finding where n8n is still storing the old credential reference and how to update it so I can publish my workflow again.

Thank you for your help.

Hi,
I was advised to open a new thread for this issue. I am building a personal AI assistant on n8n cloud that communicates through Telegram using voice messages. The workflow is:
Telegram Trigger → If (voice check) → Get a file → Transcribe (OpenAI Whisper) → AI Agent (GPT) → Generate Audio (OpenAI TTS) → Send Audio back to Telegram
The AI Agent works correctly — it transcribes my voice, understands what I say, and responds accurately. The problem is looping. After the bot sends its audio response back to Telegram, the Telegram Trigger fires again and the whole workflow repeats. The bot ends up responding to its own audio messages over and over.
Things I have already tried:
• Adding an is_bot filter in the If node
• Adding a separate Filter node before the If node
• Adding a Code node with update_id deduplication
• Unpublishing the duplicate workflow that was using the same bot token
Your team previously suggested the Debounced Telegram AI Support Bot template as a solution. I reviewed it but it requires a PostgreSQL database setup which adds significant complexity. This bot is for personal use by one person only.
Is there a simpler way to prevent the Telegram Trigger from firing when the bot sends its own audio response back? I do not need message aggregation or session management — just a clean single-turn voice-to-voice assistant that stops after responding.
Thank you.

I’m having trouble with my Telegram bot looping when I ask it a question

The looping usually comes from the bot receiving its own messages. Add an IF node right after the Telegram Trigger and check {{$json.message.from.is_bot}} - if it’s true, route to a No-op (Stop and Error or just no connection) to break the loop. Also make sure your Telegram Trigger is set to only listen for “Message” type updates and not “All” - receiving bot responses as new trigger events is the most common cause.

The reason the is_bot filter changed nothing is that a bot never receives its own outgoing messages through getUpdates, so from.is_bot is basically never true on the updates that hit your trigger. That field is the wrong lever here, which is why it looked like nothing happened.

What usually drives this exact loop is a leftover webhook still registered on the token. You mentioned a duplicate workflow that shared the same bot token. Even after you unpublish it, Telegram can keep the old webhook subscription alive, so updates keep getting delivered and re-firing your flow. Call getWebhookInfo on your token directly and look at the URL that comes back. If anything stale is there, call deleteWebhook once, then re-activate only the single workflow you actually want listening.

After that, instead of is_bot, gate on yourself: an IF that continues only when message.from.id equals your own Telegram id. The flow then ignores everything except you, and you do not need Postgres or the debounce template for a one-person bot.

If it still echoes once the webhook is clean, paste the getWebhookInfo output here and we can see whether two consumers are still hanging off the token.

Hi @Michael_Alexander, I would not trust the AI builder’s “fixed” message until you verify one full data path manually.

A quick checklist I would use:

  1. In the last successful execution, open each node and confirm whether it has actual output items, not just a green check.
  2. Start at “Loop Over Opportunities” and follow one test item forward.
  3. At “Preserve NoticeId with Score”, confirm the original ID and score are both present in the same item.
  4. At “Merge Original and Score”, compare item count before/after the merge.
  5. At “Filter Qualified (Score >= 70)”, check whether the score is a number or a string, and whether any item actually reaches >= 70.

If the workflow stops when a node has no output, the fastest proof is to add a tiny Set/Code debug node after each suspect step with only the fields you expect to see.

No account access is needed for a first triage pass; a redacted workflow screenshot plus one execution screenshot from the failing path is enough.

“My Telegram Trigger in n8n cloud won’t receive messages when I manually set the webhook via setWebhook API. The webhook shows as set in getWebhookInfo and the URL matches my Production URL, but no executions fire. I have to use ‘Listen for test event’ to get it to work. How do I get the production webhook to work reliably?”

Hi Michael, if getWebhookInfo shows the production URL but n8n only reacts during “Listen for test event”, I would check it in this order:

  1. Make sure the workflow is active, not only open in test mode.
  2. Avoid setting the Telegram webhook manually while the n8n Telegram Trigger is also trying to own it. Pick one owner.
  3. Compare the URL from getWebhookInfo with the production webhook URL generated by the active Telegram Trigger. The domain is not enough; the path also has to match.
  4. After activation, send one fresh Telegram message and check whether any n8n execution is created.

For a clean reset test, I would delete the manually set webhook once, activate only the single workflow that should listen to that bot token, then run getWebhookInfo again and compare the callback URL.

Do not post the bot token publicly. If you share evidence, redact the token and show only the callback URL domain/path plus whether n8n created an execution.

Building a Telegram voice AI assistant in n8n. Everything works — voice in, transcribe, AI Agent, TTS, voice back. The problem: the bot loops through old voice messages in the chat thread. It responds to my new message, then goes back and responds to every previous voice message in the thread one by one.

The message.voice exists IF filter works but doesn’t stop old messages from being processed. The timestamp filter {{ Date.now() / 1000 - 10 }} didn’t work either.

The only fix so far is deleting all messages from the thread before each conversation.

Anyone know how to make the bot only respond to the MOST RECENT message and ignore everything else in the thread?”

(attachments)


I’d make the Telegram update itself the boundary, not the chat thread.

Store chat_id + message_id or update_id for the last voice message you processed, then ignore anything <= that on the next run. Also check that no node is calling getUpdates/history and feeding old items back into the agent. The trigger should hand you one new event, then your workflow should dedupe before transcription/TTS.

I followed your advice. My Telegram bot still isn’t working

(attachments)

Chantel.json (2 KB)
Chantel 2.json (24.8 KB)

Hey everyone, thanks again for all the help yesterday. I tried the suggestions, but I’m still stuck.

Here’s what we’ve done so far:

  • Left Workflow A alone because the Execute Workflow Trigger is set to Accept All Data / Passthrough.
  • Changed IF1 to:
    {{ $(‘When Executed by Another Workflow’).item.json.message.voice }}
    instead of using $json.message.voice.
  • Verified the Telegram Send Text Message node is using:
    {{ $(‘When Executed by Another Workflow’).item.json.message.chat.id }}
  • Found that the Edit Fields node may have been creating a field named “= chatInput” instead of “chatInput” and corrected that.

Current behavior:

TEXT:

  • I send the bot a text.
  • The AI Agent runs.
  • The bot replies with a text.
  • However, the bot still behaves as if it isn’t receiving the actual content of my message.

VOICE:

  • IF1 correctly detects the voice message.
  • Get File runs successfully.
  • Transcribe a Recording runs successfully.
  • AI Agent runs successfully.
  • The workflow still doesn’t produce the expected voice response.

I’m attaching the CURRENT versions of both workflow JSON files. Could someone please review the actual workflows and help identify the remaining root cause? At this point I’d rather find the real issue than keep changing random expressions.

Thanks again—I really appreciate everyone’s help.