Troubleshooting
The problems people hit most, each as what you see, why it happens and how to fix it.
Find your symptom below. API errors come back as JSON with a detail message that names the client and service, so read it first.
At a glance
| You see | Most likely | Retry? |
|---|---|---|
409 | Client hasn't connected, or access ended | No, send the link |
403 | The key, the client's services or your plan don't allow it | No |
429 | Your plan allows no more API calls this period | After Retry-After |
401 | Key missing, mistyped or revoked | No |
502 | The service didn't answer | Yes, with a growing wait |
not_in_channel | The Slack app isn't in that channel | After the invite |
| Key refused | The pasted key didn't work | After pasting again |
| Link doesn't work | You made a new link | Send the new one |
| Signature fails | Body changed, wrong secret or clock off | After the fix |
Calling a client's tools
409: the client needs to connect or reconnect
You see: “Miller Dental hasn't connected Google yet. Send them their link.” or “…access ended.”
Where: API · n8n · MCP
Why: The client never connected that provider, or their access ended: they removed it, changed a setting in the service, or a renewal was refused.
Copy their link from their page in the dashboard and send it. They press Connect (or Reconnect). If you saved their email, we already sent it. Listen for the connection.expired webhook to hear before a workflow fails. Keeping access alive
403: outside what the key, client or plan allows
You see: “This key can't reach that client.” / “This key can't use slack.” / “This key can't run sheets.read_rows.”
Where: API · n8n · MCP
Why: The API key is limited to some clients, services or actions, and this call is outside them.
Use a key that covers it, or create a new one with wider limits on API & webhooks. API keys
Other 403 messages have other fixes:
- “…wasn't asked to connect Slack”: select the service in the client's Details, then send them their link.
- The client paused the connection, or allows only reads: they set this on their page, and only they can turn it off. Ask them.
- A message about your plan: upgrade on Plans.
429: no more API calls this period
You see: “Your Agency has used all … API calls for this period…” or “Your Agency has made … API calls this period, the most its plan allows…”
Where: API · n8n · MCP
Why: On the free plan, with an overdue invoice, or with extra calls turned off, you've used your plan's allowance. On a paid plan with extra calls on, they've reached the monthly limit you set, or three times the allowance. The Retry-After header says how many seconds until it resets, which can be days.
Upgrade on Plans, or pause the workflow until it resets. Don't sleep-and-retry. Watch Usage to see it coming; billing managers get an email. Plans and limits
401: the key is missing or revoked
You see: “That API key doesn't exist or was revoked.”
Where: API · n8n · MCP
Why: No Authorization header, a key that doesn't start with oa_, or a key that was revoked.
Send Authorization: Bearer oa_…. Keys are shown once, so if it's lost, revoke it and create a new one.
502: the service didn't answer
You see: “Google Sheets didn't answer: …”
Where: API · n8n · MCP
Why: A short outage or timeout at the service itself.
Retry with a growing wait, for example 2, 4, then 8 seconds. Errors inside status and data come from the service itself and follow its own rules. Retries
Slack answers not_in_channel
You see: Slack answers with not_in_channel in data
Where: Slack
Why: The Slack app can only read and post in channels it's a member of.
Ask the client to type /invite @Operate As in each channel you'll use. Listing public channels doesn't need it. Slack
On the client's side
Google connected, but one service still shows Waiting
You see: Client connected Google, but one service still shows Waiting
Where: Client page · Google
Why: Google let them deselect a permission that service needs. The other services connected.
Ask them to press Connect Google again and leave every box checked.
A pasted key is refused
You see: “Stripe didn't accept that key. Check it was copied whole.”
Where: Client page · pasted keys
Why: We check keys with the service where it lets us. The key was cut short, has a stray space, was revoked, or is the wrong kind.
Create a fresh key from the card's Open your Stripe settings link and paste it whole. A limited key is fine as long as it allows what your workflows do.
"This link doesn't work anymore"
You see: “This link doesn't work anymore”
Where: Client page
Why: Someone pressed Make a new link, and the old one stopped working at once. Removing a client also ends their link.
Send the current link from the client's page in the dashboard. A new link keeps their connections, so nothing needs reconnecting.
"That sign-in took too long"
You see: “That sign-in took too long”
Where: Client page
Why: A sign-in has to finish within 15 minutes of pressing Connect.
Nothing was connected. They open the link again and press Connect once more.
"Finish in the browser you started in"
You see: “Finish in the browser you started in”
Where: Client page
Why: The sign-in came back to a different browser from the one that pressed Connect, often when a phone opens the service's app instead. A sign-in only finishes where it began, so a sign-in screen forwarded to someone else can't connect their account.
Nothing was connected. They open their link in the browser they started in and press Connect again. If the service's app opens, they choose to continue in the browser.
"Too many tries from here"
You see: “Too many tries from here”
Where: Client page
Why: One network opened client pages, or tried links that don't work, very often in a short time.
The link still works. They wait a few minutes and open it again. Don't make a new link: it doesn't help.
The client can't install the Slack app
You see: The client can't install the Slack app
Where: Client page · Slack
Why: Some workspaces only let admins install apps, or ask members to request approval.
A workspace admin installs or approves it. Slack
Webhooks
Verifying Operate-As-Signature fails
You see: Verifying Operate-As-Signature fails
Where: Your webhook endpoint
Why: Your framework parsed the JSON before you verified it, you're using an old secret, or your server clock is more than 300 seconds off.
Verify the raw body exactly as it arrived. Saving the webhook again makes a new secret (the whole whsec_… value). Sync your clock. Then press Send test. Verifying deliveries
Still stuck?
The client's page in the dashboard shows each service's status and when it was last used, and the Connections board shows every client at once. Those two tell you whether the problem is the connection or the call.