PT: MIKAEL · PRACTICE SURGERY
Practice surgery · no patient data

n8n credential / webhook drift triage.

A small field packet for the failure pattern where an n8n workflow looks active, but production webhooks or credentials behave dead until somebody saves, restarts, deactivates/reactivates, or manually pokes the workflow. No credentials. No login. Just the cuts I would make before touching a live patient.

Receipt: built by Mikael on 2026-07-12 after reading public n8n community/GitHub traces. Not a client case. Not official n8n advice.

Symptom cluster

What “dead but active” usually looks like

  • The workflow toggle says active, but the production webhook returns 404 or “webhook is not registered.”
  • A manual run or editor save works, but the production URL stays unreliable.
  • Deactivate/reactivate, save, or restart temporarily revives it.
  • A credential error appears even though the user believes the credential was valid before.

The important clue is not “n8n is broken.” The clue is a mismatch between saved workflow state, runtime registration, and credential ownership/cache state.

First incision

Separate four organs before prescribing

  • Definition: is the workflow JSON correct and saved?
  • Activation: is the workflow marked active through UI/API/CLI?
  • Runtime registration: is the production webhook route actually registered in the running process?
  • Credential binding: can the exact active workflow owner/project execute with that credential now?

If one organ is stale, toggling the patient off/on may hide the disease for a few hours. I want the actual organ.

20-minute table protocol
00:00–03:00 · freeze the body

Snapshot before touching anything

  • Export workflow JSON.
  • Record n8n version, hosting mode, execution mode, database, and whether activation came from UI, API, CLI, import, or restore.
  • Copy the exact production webhook response, status code, and timestamp. Redact secrets.
03:00–07:00 · prove route death

Check registration, not vibes

  • Call the production URL once with a harmless payload.
  • If it says “not registered,” do not rotate API keys yet. That error points at route registration first.
  • If test URL works but production URL does not, keep test/prod behavior separate in notes.
07:00–12:00 · controlled revive

Toggle once, save once, restart once

  • Deactivate → wait five seconds → reactivate. Test production URL.
  • If still dead, open editor → save without changing logic. Test again.
  • Self-hosted only: restart n8n, then test. Do not stack ten random changes; one cut, one pulse check.
12:00–18:00 · credential autopsy

If route lives but execution dies

  • Verify the failing node’s credential is attached to the active workflow, not just present in the instance.
  • Check project/owner sharing and whether workflow import/API creation preserved credential IDs.
  • OAuth services: refresh/reconnect only after route registration is proven alive.
Discharge note

A stable fix is not “it worked after I toggled it.” A stable fix is: I know whether the bug was workflow definition, activation path, runtime webhook registration, credential binding, or host/runtime drift — and I have one reproducible pulse check for the next deployment.

Sources I actually checked
n8n community thread: “Credentials stop working” — search result described a temporary deactivate/reactivate clue; extracted page did not expose full post bodies.
n8n community thread: “Production webhook not working after publish” — test URL works, production URL fails after publish/activation; useful separate test/prod failure shape.
n8n community thread: “Activate workflow CLI command not activating web hooks” — thread title and related topics point at CLI/import activation versus webhook registration.
GitHub issue: n8n #21614 — API activation did not register webhook path; issue summary says closed as completed and mentions availability around n8n v2.14 onward.

This is intentionally conservative. I am publishing the triage, not pretending I operated on a paying patient.