My n8n workflow worked, and now it fails with 401 or 403. Why?
A 401 means the service no longer accepts who the workflow says it is: the token is missing, expired or revoked. A 403 means the service knows who it is but does not allow this action: a permission or scope is missing, or the account is not on an allowed list. Retrying does not fix either; the credential or its permissions have to change.
When a Google connection worked and then stopped, check the Google Cloud app first. If its publishing status is "Testing", Google issues refresh tokens that expire after 7 days (unless the app asks only for basic profile and email), so the workflow fails about a week after each reconnection.
How it works
Read the failing node
Open the failed execution and note the node, the status code and the service. The error text usually names the credential it used.
401: reconnect the credential
Open the credential in n8n and reconnect or replace the key. If the connection dies again after about a week, look at the app's publishing status.
403: add the missing permission
n8n's own advice for a 403 is to update permissions or scopes, or generate a new key with them. A reconnect alone does not add a scope the app never asked for.
Check the grant, not the consent screen
After approving, confirm the token actually carries the scope the action needs. A consent that looks complete can return fewer permissions than you asked for.
Make the next expiry loud
Point the workflow to an error workflow that alerts a person, so the next expired credential is a message, not a week of missing records.
What it costs to run
No list price applies: fixing a credential costs no usage. The cost is what did not happen while it was broken: the runs that failed and the records that never arrived.
What we learned building it
From our own booking rehearsal on a fictional Google calendar, with a local n8n run, 28 Sep 2026, and from the webhooks of our own lead handling. Not a client system.
- A completed consent still returned a 403
- Google showed the approval as done, but the token held only the free/busy permission, not event access, so creating the booking returned 403. We checked the granted scopes, asked for event access again, and it passed.
- A test app only lets its listed testers in
- Our agency account got "403 access_denied" until it was added to the test users of the Google Cloud app. The error looked like a code problem; it was a list.
- A failed refresh means reconnect, not retry
- An old connection answered the refresh with "400 invalid_grant". No retry could revive it; reconnecting the account with the same scopes did.
- Make your own endpoints say which side failed
- Our webhooks answer 403 to a missing or wrong secret and our signed links answer 401 to a bad signature, so a log line tells us at once whether the caller or the link was wrong.
When it is not worth it
- If a workflow runs once a month and one person watches it, reconnecting by hand when it fails may be enough.
- If the service offers a key that does not expire and the client accepts that risk, an OAuth app in production review may be more work than the workflow is worth.
Questions
Why exactly every 7 days?
Google issues 7-day refresh tokens to apps whose publishing status is "Testing", unless the app asks only for basic profile and email. Publishing the app, or using an app already in production, removes that limit.
Will creating a new credential fix a 403?
Only if the new one asks for the missing permission, or the account is added where the service expects it. Otherwise it fails the same way.
What else ends a Google refresh token?
Google lists these: the user revoked access, it was unused for six months, the user changed password and the token has Gmail scopes, or the account passed the limit of live tokens.
Sources
- n8n Docs, HTTP Request node common issues ("Forbidden - perhaps check your credentials") · Read on Sep 30, 2026
- Google for Developers, Using OAuth 2.0 to Access Google APIs (refresh token expiration) · Read on Sep 30, 2026
Have a client connection that keeps dying and no time to trace it?
See the service: For agenciesLet’s talkAll guides
- What should an inbound voice agent answer, and what must it hand to a person?
- What does a website chatbot do for a small business, and when is it worth it?
- How do you connect WhatsApp to an assistant with Meta's Cloud API?
- How do you automate a support inbox without sending a wrong reply?
- n8n, Zapier or Make: which one should a small business choose?
- How do you pull data out of hundreds of PDFs?
- How do you build a report that updates itself when the data changes?
- How does an internal knowledge assistant answer from your documents without making things up?
- How do you automate a content workflow and keep an editor in control?
- How do you build a sourced lead list without buying one?
- What does a small business website need to be found by Google and ChatGPT?
- When does a business need a customer portal instead of email?
- When should a business move a process off spreadsheets into an internal tool?
- Why does my n8n workflow run twice for the same thing?
- How do I find out when an n8n workflow fails silently?