Webflow OAuth connection fails - (Bad Request)

Hello n8n Support Team,

I’m trying to connect Webflow to n8n Cloud using OAuth2, but the authorization flow fails with a redirect-related error and the connection cannot be established.


Describe the problem / question

When I attempt to authorize Webflow via OAuth2 credentials in n8n Cloud, the authorization request is rejected by Webflow.
The OAuth flow does not complete, so no access token is issued.


Error message

Bad Request – Invalid redirect_uri


Authorization URL being used

https://webflow.com/oauth/authorize?client_id=7a70d745efb20753c9db3e2ceb633607a2acb7f7dadacc1493bba68bc2a17e15&redirect_uri=https%3A%2F%2Falasagencija.app.n8n.cloud%2Frest%2Foauth2-credential%2Fcallback&response_type=code&state=...&scope=

Decoded redirect URI:

https://alasagencija.app.n8n.cloud/rest/oauth2-credential/callback


Workflow

{
“nodes”: [
{
“parameters”: {
“httpMethod”: “POST”,
“path”: “6aed5ca1-947f-4da3-926b-19adae7cd9b7”,
“options”: {}
},
“type”: “n8n-nodes-base.webhook”,
“typeVersion”: 2.1,
“position”: [
-288,
176
],
“id”: “42648348-a61d-47bc-976c-5df8a6b7846b”,
“name”: “Webhook”,
“webhookId”: “6aed5ca1-947f-4da3-926b-19adae7cd9b7”
},
{
“parameters”: {
“conditions”: {
“options”: {
“caseSensitive”: true,
“leftValue”: “”,
“typeValidation”: “strict”,
“version”: 2
},
“conditions”: [
{
“id”: “c4fd1a45-ab7e-4fd2-a2da-ce8a4be1f823”,
“leftValue”: “={{ $json.body.value }}”,
“rightValue”: “TRUE”,
“operator”: {
“type”: “string”,
“operation”: “equals”,
“name”: “filter.operator.equals”
}
}
],
“combinator”: “and”
},
“options”: {}
},
“type”: “n8n-nodes-base.filter”,
“typeVersion”: 2.2,
“position”: [
-80,
176
],
“id”: “f13b79f0-8265-4cc8-ba07-e0b39c53017c”,
“name”: “Filter”
},
{
“parameters”: {
“promptType”: “define”,
“text”: “=1. Vi ste doktori medicine i treba da mi napišeš detaljan, jasan i jednostavan tekst na temu {{ $(‘Webhook’).item.json.body.rowValues[0][‘0’] }}.\nTekst treba da slijedi tačno ovaj redosled i strukturu:\n\n\n2. Prvi podnaslov je “”{{ $json.body.rowValues[0][‘0’] }} cena”\nCena je: {{ $json.body.rowValues[0][‘5’] }}\nObjasni sta sve ulazi u cijenu, za koga je pregled, sta korisnik dobija i od cega zavisi konacna cijena (bez izmisljanja tacnih cifara osim unijete vrijednosti).\n\n3. Drugi podnaslov je “”{{ $json.body.rowValues[0][‘0’] }} sta ocekivati"\nKoristi ove informacije: {{ $json.body.rowValues[0][‘6’] }}\nTekst treba da ukloni strah, stvori povjerenje i smiri osobu koja se priprema za pregled. Sve objasniti jednostavno i toplo.\n\n\n4. Četvrti podnaslov je “Kako izgleda {{ $json.body.rowValues[0][‘0’] }}”"\nKoristi ove informacije: “{{ $json.body.rowValues[0][‘8’] }}”\nOpisi tok pregleda zavisno od metode jednostavno, jasno i bez medicinskog zastrasivanja.\n\n5. Peti podnaslov je “Priprema za {{ $json.body.rowValues[0][‘0’] }}”\nKoristi ove informacije: “{{ $json.body.rowValues[0][‘9’] }}”\nDaj kratke, jasne i prakticne savjete.\n\nVAŽNO: Tekst treba da ima valjan HTML string koji zadržava formatiranje (naslovi, linkovi), prikladan za Webflow Rich Text polje\n\nStil pisanja:\n\nPisati na srpskom jeziku ekavican.\n\nStil mora biti topao, strucan, smirujući, kao da govori tim doktora sa dugim iskustvom.\n\nTekst treba da bude razumljiv djetetu od 12 godina, bez medicinskih termina koje korisnik ne moze razumeti.\n\nPrimarni cilj:\n\nda osoba stekne povjerenje,\n\nda vidi nasu kliniku kao najbolju i najbezbjedniju opciju,\n\nda se ukloni strah, sumnja i neizvjesnost. ",
“options”: {
“systemMessage”: “Stil pisanja:\n\nVAŽNO: Izlaz iz n8n mora biti valjan HTML prilagođen za Webflow Rich Text polje — zadržava osnovno formatiranje, ali sme da koristi samo sledeće tagove:\n\nNaslovi: , , \nParagrafi: \nPodebljano: \nUkoseno: \n\nNE sme koristiti tabele, liste, slike, stilove (style=“”), niti bilo koje druge HTML elemente.\n\nTekst mora biti lepo organizovan po celinama — svaki deo u poseban paragraf (), a veće tematske celine podijeljene naslovima ( ili ).\nIzlaz treba da bude jedna HTML string vrednost (bez dodatnih wrappera), spremna za Webflow.\n\nSve odgovore izražavati u prvom licu množine (mi), jer tekst predstavlja organizaciju, a ne pojedinca. Ne koristiti ‘ja’.\n\nPratiti redosljed definisanih naslova \n\nBez uvodnog dijela odmah kreni na podnaslove koji treba da budu H2 tagovi \n\nIzbaci nepotreban tekst samo direktne informacije za temu\n\nBolduj tekst gdje misliš da treba\n\nPisati u srpskom jeziku bez “ij” i “j” (ekavian).\n\nStil mora biti topao, strucan, smirujući, kao da govori doktor sa dugim iskustvom.\n\nTekst treba da bude razumljiv djetetu od 12 godina, bez medicinskih termina koje korisnik ne moze razumeti.”
}
},
“type”: “@n8n/n8n-nodes-langchain.agent”,
“typeVersion”: 3,
“position”: [
128,
176
],
“id”: “e8c60a31-d93a-4ea6-a31d-1cb606248725”,
“name”: “AI Agent”
},
{
“parameters”: {
“options”: {}
},
“type”: “@n8n/n8n-nodes-langchain.lmChatGoogleGemini”,
“typeVersion”: 1,
“position”: [
0,
384
],
“id”: “897e8351-27ff-457b-ab08-fb6ca0c6bbae”,
“name”: “Google Gemini Chat Model”,
“credentials”: {
“googlePalmApi”: {
“id”: “Rco7tX4GREhZYR0i”,
“name”: “Google Gemini(PaLM) Api account”
}
}
},
{
“parameters”: {
“operation”: “create”,
“siteId”: “6733c967374213f581b44318”,
“collectionId”: “6920601cee0b6922efd4ae7d”,
“fieldsUi”: {
“fieldValues”: [
{
“fieldId”: “name”,
“fieldValue”: “={{ $(‘Webhook’).item.json.body.rowValues[0][“0”] }}”
},
{
“fieldId”: “cena”,
“fieldValue”: “={{ $(‘Webhook’).item.json.body.rowValues[0][‘5’] }}”
},
{
“fieldId”: “meta-description”,
“fieldValue”: “={{ $(‘Webhook’).item.json.body.rowValues[0][‘6’] }}”
},
{
“fieldId”: “content”,
“fieldValue”: “={{ $json.output }}”
},
{
“fieldId”: “slug”,
“fieldValue”: “={{ $(‘Webhook’).item.json.body.rowValues[0][‘11’] }}”
},
{
“fieldId”: “trajanje”,
“fieldValue”: “={{ $(‘Webhook’).item.json.body.rowValues[0][‘10’] }}”
}
]
}
},
“type”: “n8n-nodes-base.webflow”,
“typeVersion”: 2,
“position”: [
480,
176
],
“id”: “401cfe50-1088-47b0-ae37-b581baae3d9e”,
“name”: “Create an item”,
“credentials”: {}
}
],
“connections”: {
“Webhook”: {
“main”: [
[
{
“node”: “Filter”,
“type”: “main”,
“index”: 0
}
]
]
},
“Filter”: {
“main”: [
[
{
“node”: “AI Agent”,
“type”: “main”,
“index”: 0
}
]
]
},
“AI Agent”: {
“main”: [
[
{
“node”: “Create an item”,
“type”: “main”,
“index”: 0
}
]
]
},
“Google Gemini Chat Model”: {
“ai_languageModel”: [
[
{
“node”: “AI Agent”,
“type”: “ai_languageModel”,
“index”: 0
}
]
]
}
},
“pinData”: {},
“meta”: {
“templateCredsSetupCompleted”: true,
“instanceId”: “f3c5e458ecb4d5dd79bbb127f21cc5292cd850acd2b576080256ad2a2267a815”
}
}


Output from last node

Problem in node ‘Create an item’
Unable to sign without access token


Information on my n8n setup

  • n8n version: n8n Cloud (latest)

  • Database: Managed by n8n Cloud

  • n8n EXECUTIONS_PROCESS: default

  • Running n8n via: n8n Cloud

  • Operating system: macOS (client-side only)


Could you please confirm:

  • whether Webflow OAuth2 in n8n requires an explicit non-empty scope parameter, and if so, which scopes are required, or

  • whether there are known issues with Webflow OAuth redirect URI validation on n8n Cloud subdomains.

Thanks in advance for your help.

Best regards,
Jovan