Not tutorials — write-ups of automations I actually built and run, including what broke along the way.
Sheets as a queue or database, and the node behaviors that silently lose, duplicate or skip rows.
A routine "append 10 rows to a Sheet" task went wrong twice in the same session — a webhook that doesn't split arrays the way it looks like it should, and a matching key that silently overwrote a live, already-published row. Full recovery, and the exact fixes.
Debugging notesSeptember 4, 2026A Google Sheets append node that had worked for months suddenly wrote nothing to the sheet, with no error surfaced in the workflow canvas. The real cause was one specific mappingMode requiring a non-empty schema array that had always been empty.
Debugging notesSeptember 1, 2026Cleaning up 16 duplicate spreadsheet rows with the Google Sheets node's delete operation, startIndex plus numberOfRows: 16, only ever removed a single row per call — no error, no partial-success warning, just one row gone instead of sixteen.
Build breakdownAugust 24, 2026How I use Google Sheets as the database behind several production n8n workflows — and two real data-loss near-misses caused by n8n's Sheets node silently misjudging table boundaries and matching keys.
Debugging notesAugust 27, 2026A publisher workflow matched queue rows by video_id to mark them as published — except video_id wasn't unique across the whole sheet, so each run silently overwrote a different, unrelated row instead of the one it just published.
Debugging notesSeptember 6, 2026An SSH node reading a value two nodes upstream started sending an empty request body — a Google Sheets update node inserted in between only ever returns the columns it wrote, silently dropping everything else.
Rate limits, deprecated models, broken JSON and splitting prompts, seen from the workflow side.
Groq quietly retired the model eight of my n8n workflows depended on. Fixing it fast created a sneakier bug: reasoning models silently eating their own output budget, which shipped two live YouTube videos with title "unknown" before I caught it.
Build breakdownSeptember 5, 2026An AI clipping pipeline's Groq call hit a tokens-per-minute rate limit and failed outright, even though Groq's own error told it exactly how long to wait.
Incident reportJuly 29, 2026A daily publisher workflow's LLM step returned JSON with an unescaped literal newline inside a string value. JSON.parse threw, a silent catch block fired instead, and its generic fallback text — not the real generated copy — went out live.
Build breakdownAugust 31, 2026An AI clipping pipeline that sailed through every short test clip failed the moment I fed it a real 70-minute podcast episode — Groq's Whisper API rejected the audio outright, over its 25MB request limit.
Debugging notesAugust 31, 2026Fixing a Groq token-limit error by splitting one large LLM call into several smaller ones looked simple on paper — it broke item-lineage tracking next, then clip numbering after that, each bug only visible once the previous one was fixed.
Build breakdownAugust 24, 2026How I built a Telegram AI chatbot in n8n that remembers conversation history and escalates to a human when it doesn't know the answer — plus a silent-failure bug in Groq's newer reasoning models that broke five workflows before I caught it.
Incident reportSeptember 19, 2026The LLM call worked, but its JSON was malformed. A catch block swapped in an empty result, a Split node emitted zero items, and n8n ended the run as a success with nothing downstream ever executing.
Running commands on a server from n8n: timeouts, credentials, encoding and blocked downloads.
An n8n SSH node's ffmpeg render ran successfully for over 16 minutes across three prior stages, then got killed mid-way through its final step with exit code 124 — a signal, not an ffmpeg error, that only means one thing.
Incident reportSeptember 9, 2026A video publisher, a finance-content publisher, a crypto trading bot, and a football-content publisher all failed with SSH connection errors within the same two-hour window. The common thread wasn't any of their own logic — it was a brute-force flood against the shared server's SSH port.
Debugging notesAugust 1, 2026Cleaning up a project directory, plain rm and mv kept failing with permission denied on files inside a folder I owned. The files weren't mine — n8n's shared SSH credential, used across a dozen workflows, connects as root, not as the shell's own user.
Build breakdownAugust 26, 2026Instead of manually checking a content backlog folder every week, this workflow SSHes into the server, counts what's left, and only sends a Telegram message when the count actually drops below a threshold — plus why a cloud-hosted AI scheduler couldn't have done this at all.
Debugging notesSeptember 19, 2026A thumbnail step passed a base64 topic to a Python script through an SSH node. The Buffer call inside the expression field returned an empty string, and the obvious fix failed again on the next scheduled run for a different reason.
Build breakdownAugust 25, 2026A daily video pipeline I built was silently sending zero videos whenever its first pick hit a license block. Here is the retry loop that fixed it — a webhook that reports success or failure per item, and a caller that tries the next candidate instead of giving up.
Debugging notesSeptember 28, 2026A bash retry loop shaped "for i in 1 2 3; do cmd && break; sleep N; done" always exits 0, because the last command the shell actually runs is sleep, not the command being retried. n8n's SSH node saw that, and a broken render kept reaching a "ready" queue status for weeks.
Error handling, silent failures, data references and the n8n behaviors that make a green run misleading.
How I built a reusable n8n error-handling workflow that catches failures from any other workflow and alerts me by Telegram and email — with a Google Sheets log I can actually search later.
Debugging notesAugust 25, 2026A single debugging session on one automated video pipeline turned up four separate bugs, all invisible from the execution log — a stub node with no data behind it, a title that silently rejected an upload, and background images that kept repeating without triggering a single error.
Incident reportSeptember 10, 2026A daily video pipeline failed at its final upload step, unable to find data from a node that looked perfectly wired into the graph. That node was a true dead end — referenced only through a $('NodeName') expression, never through an actual connection.
Debugging notesAugust 29, 2026A daily publisher workflow showed "undefined" in titles and captions on nine different downstream nodes. All nine used the same convenient shortcut for reaching back to an earlier node's data — a shortcut that quietly stops working once enough nodes sit in between.
Debugging notesSeptember 1, 2026Adding a fourth branch to a working report workflow seemed like a one-line change: connect the new node to the same target as the other three. Instead of waiting for all four, the target node fired once per predecessor — 4 duplicate Telegram messages and 16 duplicate spreadsheet rows from a single run.
Debugging notesSeptember 1, 2026Changing a Schedule Trigger's hour on an already-active n8n workflow and saving it via the API produced no error and no effect — the old cron kept firing. The trigger only actually updates on deactivate, save, reactivate, and its hour fields are read in CEST, not UTC.
Debugging notesSeptember 2, 2026A Code node set to run once per item threw an error about its returned data even though every branch of the code returned an object. The code was written for the node's other execution mode, which expects an array instead of a single item.
Debugging notesSeptember 19, 2026n8n refuses to publish a workflow whose Execute Workflow node points at an unpublished sub-workflow, and a sub-workflow with only a Schedule Trigger can't be called at all. The exact errors and the order that works.
Build breakdownAugust 29, 2026A routine n8n version update completed with no errors in the logs. A day later, a scheduled lead-gen workflow simply hadn't run — the update's own database migration had flipped it to inactive, and nothing about the update process said so.
Debugging notesSeptember 6, 2026The same crash reappeared twice after being fixed and verified through the API. Both times, an old browser tab left open from before the fix had silently re-saved its outdated graph over the top of it.
Incident reportSeptember 6, 2026A price-sync workflow failed every six hours with "Token not found" — its data-fetch node was still pointed at a disposable webhook.site testing inbox, never swapped for the real API before going live.
OAuth credentials that expire, Google 503s, and Telegram messages that fail to parse.
An email-send task routed through n8n's Gmail node failed on the first credential, then failed differently on the second. One needed a simple reconnect. The other needed an entirely new OAuth client, because Google had deleted the old one.
Incident reportSeptember 5, 2026A booking demo's Google Sheets step started failing every call with a credential-reconnect error — the one bug class on this site that genuinely has no n8n-API fix.
Debugging notesSeptember 2, 2026Two unrelated workflows, on two different days, failed at their Google Sheets node with a plain 503 Service Unavailable. Not a bug in either one — just a transient API blip neither node was configured to survive.
Debugging notesSeptember 2, 2026A sendMessage node started failing on some posts but not others with a Telegram 400 about an unclosed formatting entity. The message text had no intentional formatting — n8n's default Markdown parse mode was choking on a stray character an LLM had generated.
Debugging notesSeptember 5, 2026A Telegram alert failed on the same entity-parse error as a different workflow — this time from a leftover HTML tag with no parse mode set, not a stray LLM character.
Build breakdownAugust 23, 2026How I build lead-capture automations in n8n that write straight to a Sheet or CRM and notify me on Telegram within seconds of a form submission — instead of finding leads in an inbox two days later.
Managing n8n through its API and MCP tools: stale keys, cached answers and parameter shapes.
An AI assistant's dedicated n8n HTTP-request tool kept returning the same ~1.1-million-character dump no matter what endpoint, method, or query string it was told to hit. Three different real requests, byte-identical output — the tool wasn't broken loudly, it was broken silently.
Debugging notesSeptember 6, 2026Every n8n management tool call started failing with an authentication error, on the same API key a health-check call insisted was fine. The two tools were reading two different copies of the key: one current, one a full week expired.
Debugging notesSeptember 9, 2026A partial-workflow update to an n8n Schedule Trigger node failed twice with a missing-parameter error, even though the payload had a name and parameters field. The operation needed those wrapped inside a nested 'updates' object.
Debugging notesSeptember 9, 2026n8n's workflow validator flagged a plain IF node as having incorrect error-output wiring and suggested a fix. Applying that fix literally would have swapped a working retry/give-up branch and broken the workflow it was trying to protect.
Automatic delivery of digital products and the webhook traps around it.
How I built an n8n pipeline that generates a custom file and delivers it the moment someone buys on Gumroad — plus the file-replacement API gotcha that will bite you the first time you update a live product.
Build breakdownAugust 27, 2026A personalized SVG cut-file product needed real image processing — background removal, vectorization, an external AI model — that has no place in an n8n node. The fix was a small Flask microservice with n8n doing what it's actually good at on either side of it.
Build breakdownAugust 26, 2026A lead-gen workflow's Gumroad sale webhook was quietly processing every sale on the whole account — wrong welcome emails and garbled Telegram alerts going out for products it had nothing to do with — until an IF gate stopped it.
Social and video publishing
YouTube, Threads, Instagram and Facebook pipelines, including the queue logic that keeps them from double-posting.
Build breakdownAugust 23, 2026
Building an AI YouTube Clipping Pipeline With n8n and Groq
How I built an n8n pipeline that takes a long YouTube video, finds the best short clips with an LLM, and outputs ready-to-post Shorts — plus the token-limit and audio-size bugs that broke it along the way.
Debugging notesSeptember 19, 202616 of 18 YouTube Descriptions Showed a Literal \n\n Instead of a Line Break
An n8n field built a YouTube description from one expression, a backslash-n typed between two mustache blocks, and another expression. The escape sequence sat outside the braces, so n8n never turned it into a newline.
Debugging notesSeptember 19, 2026The Video Uploaded, the Thumbnail Download Failed, and the Queue Row Was Never Marked Published
In a publisher workflow, a non-critical thumbnail step sat between the irreversible YouTube upload and the step that marks the row published. When it threw No such file, the video was live but the queue still said ready.
Incident reportSeptember 19, 2026Two Pairs of Identical YouTube Videos: The Topic Was Only Marked Used After Publishing
A producer workflow rendered videos and a separate publisher uploaded them. The topic only flipped to used after upload, so when the publisher fell behind, the producer picked the same topic again and rendered it twice.
Build breakdownSeptember 19, 2026Splitting One Big n8n Video Workflow Into a Creator and a Publisher, Joined by a Sheets Queue
A daily news video workflow did everything in one run, from fetching headlines to uploading. Splitting it into a Creator and a Publisher meant deciding what travels in the queue row, since one workflow can't reference another's nodes.
Build breakdownSeptember 19, 2026Sizing an n8n Wait-and-Poll Loop for a Video That Takes Hours to Render
A weekly video render can take one to several hours. Instead of one long SSH command, the workflow starts the job, waits 20 minutes, polls, and gives up after 20 tries. The numbers, and what a real run looked like.
Debugging notesSeptember 9, 2026My Threads Post Failed With "The Service Was Not Able to Process Your Request" — the Real Reason Was a 500-Character Limit
Two unrelated n8n workflows failed posting to Threads with the same generic error. Both times the real cause was buried three levels deep in the raw API response: a caption over Threads' 500-character text limit.
Debugging notesSeptember 19, 2026The Threads Generate Token Button Gave Me a Token That Expired in About 90 Minutes
My own setup notes said the button in Meta's app dashboard returns a 60-day Threads token. debug_token said the token I got expired within about an hour and a half, and only an explicit exchange call produced a long-lived one.
Build breakdownAugust 23, 2026Auto-Posting to Instagram and Facebook From a Google Sheet With n8n
How I built an n8n workflow that reads a content queue from Google Sheets and publishes to a Facebook Page and Instagram Business account automatically, including the Instagram processing-time gotcha nobody warns you about.
Debugging notesSeptember 5, 2026Facebook's Graph API Said "Unable to Fetch Video File From URL" for a URL That Was Actually Fine
Facebook's Graph API refused to fetch a video URL that, checked directly, was serving a normal 200 the whole time — a transient fetch failure on Meta's side, not a broken file.