Gmail Trigger does not start Workflow on message recieved

I have the problem that thw workflow wont get triggered when i recieve a message. if i start the workflow manually it is able to check my last mail. i tried sending a few mails and waited but nothing happened. i use n8n over the website and have the starter plan. I use version 1.100.1. I dont know what im doing wrong or what i have to change, the workflow is active. When i start the workflow manually everything works just fine from start to finish.

{
“nodes”: [
{
“parameters”: {
“chatId”: “8176457528”,
“text”: “={{$json.output.replace(/\\/g, ‘’).replace(/^=/, ‘’)}}”,
“additionalFields”: {
“appendAttribution”: false,
“disable_notification”: true
}
},
“type”: “n8n-nodes-base.telegram”,
“typeVersion”: 1.2,
“position”: [
1700,
340
],
“id”: “f0e79ba3-acb4-434a-a806-c6c774ada7ff”,
“name”: “Send a text message”,
“webhookId”: “f2108eae-8cae-4518-b513-c10a8472392d”,
“credentials”: {
“telegramApi”: {
“id”: “1FVCWfzcgYwWockP”,
“name”: “Telegram Account Lars”
}
}
},
{
“parameters”: {
“promptType”: “define”,
“text”: “={{ $json.clean_html }}\n\nExtrahiere alle verfügbaren WG-Informationen und formatiere sie GENAU so:\n\n🏠 [TITEL]\n💰 Miete: [PREIS]€\n📐 Zimmergröße: [GRÖßE]m²\n🏘️ WG-Größe: [ANZAHL]er WG\n📍 [ADRESSE]\n📅 Verfügbar: ab [DATUM] bis [Datum/Nicht angegeben]\n🏢 Stock: [STOCKWERK]\n📞 Nummer: [Telefonnummer]\n📆 [Befristet/Unbefristet]\n\n👥 Mitbewohner: \n- Anzahl: [ZAHL]\n- Geschlecht: [männlich/weiblich/gemischt]\n- Alter: [ALTERSANGABEN]\n\nWICHTIG: Nur wenn Namen, Berufe oder Hobbys EXPLIZIT in der Beschreibung stehen, dann die bewohner einzelnt auflisten:\n[Name] - [Alter] - [Beruf/Studium] - [Hobbys]\n\nFalls KEINE Details zu Mitbewohnern in der Beschreibung stehen: NICHTS dazu schreiben!\n\n🏡 Wohnung:\n- Balkon: [Ja/Nein/Nicht angegeben]\n- Garten: [Ja/Nein/Nicht angegeben]\n- Zweck-WG: [Ja/Nein/Nicht angegeben]\n- Aktives WG-Leben: [Ja/Nein/Nicht angegeben]\n\n💳 Kaution: [BETRAG oder "Nicht angegeben"]\n\n📝 Kurze Zusammenfassung:\n[2-3 Sätze über das Wg leben oder besonderheiten zur wohnung]\n\n🔗 Link: {{ $node["HTTP Request"].parameter.url }}\n\nFalls Informationen nicht vorhanden: "Nicht angegeben"\nERFINDE KEINE DATEN! Keine Platzhalter-Namen!”,
“options”: {}
},
“type”: “@n8n/n8n-nodes-langchain.agent”,
“typeVersion”: 2,
“position”: [
1360,
460
],
“id”: “901ffcf7-3bb5-4c7d-b7d2-8e259d5b9c74”,
“name”: “AI Agent”
},
{
“parameters”: {
“model”: {
“__rl”: true,
“mode”: “list”,
“value”: “gpt-4.1-mini”
},
“options”: {}
},
“type”: “@n8n/n8n-nodes-langchain.lmChatOpenAi”,
“typeVersion”: 1.2,
“position”: [
1180,
620
],
“id”: “45974eec-86de-4914-9a41-1c895a0652d8”,
“name”: “OpenAI Chat Model”,
“credentials”: {
“openAiApi”: {
“id”: “bVgH7R52mET1PMon”,
“name”: “n8n free OpenAI API credits”
}
}
},
{
“parameters”: {
“jsCode”: “const html = items[0].json.data;\nlet cleaned = html;\n\n// Bisherige Bereinigung…\ncleaned = cleaned.replace(/<head[\s\S]?<\/head>/gi, ‘’);\ncleaned = cleaned.replace(/<nav[\s\S]?<\/nav>/gi, ‘’);\ncleaned = cleaned.replace(/<script[\s\S]?<\/script>/gi, ‘’);\ncleaned = cleaned.replace(/<style[\s\S]?<\/style>/gi, ‘’);\ncleaned = cleaned.replace(/<noscript[\s\S]?<\/noscript>/gi, ‘’);\ncleaned = cleaned.replace(/<form[\s\S]?<\/form>/gi, ‘’);\ncleaned = cleaned.replace(/<input[^>]>/gi, ‘’);\ncleaned = cleaned.replace(/<button[\s\S]?<\/button>/gi, ‘’);\n\n// NEU: Entferne HTML-Tags komplett, behalte nur Text\ncleaned = cleaned.replace(/<[^>]+>/g, ’ ');\n\n// NEU: Entferne mehrfache Leerzeichen und Zeilenumbrüche\ncleaned = cleaned.replace(/\s+/g, ’ ');\n\n// NEU: Entferne Sonderzeichen-Gruppen\ncleaned = cleaned.replace(/[^\w\säöüÄÖÜ߀.,!?:\-()]/g, ‘’);\n\nreturn [{ \n json: { \n clean_html: cleaned.trim()\n } \n}];\n”
},
“type”: “n8n-nodes-base.code”,
“typeVersion”: 2,
“position”: [
1180,
340
],
“id”: “191c48e3-b0d0-43bf-b743-82f1c0200bc4”,
“name”: “Code1”
},
{
“parameters”: {
“promptType”: “define”,
“text”: “=Du bist ein Experte für WG-Bewerbungen. Schreibe eine personalisierte Nachricht basierend auf der WG beschreibung:\n\n{{ $json.clean_html }}\n\nMEINE STANDARD NACHRRICHT:\nHeyo,\n\nich bin Lars, 24, studiere Grafikdesign und Visuelle Kommunikation und starte ab dem 01.07. in einer Filmagentur-als auf minijob basis, mit aussicht ab Oktober auf ein duales Studium. Ich wohne aktuell übergangsweise bei Verwandten am Südstern und bin auf der Suche nach einem neuen Zuhause :)\n\nIch suche Mix aus gemeinsamen Aktivitäten, Rücksicht, und Kommunikation. Ich bin ein entspannter mensch der gerne lacht, kreativ arbeitet, Neues ausprobiert und definitiv Lust hat, sich einzubringen.\n\nWas ich so mitbringe: Ich liebe Musik (schreibe selbst texte und bin auch gern mal auf open mics oder so), halte mich mit Calisthenics fit, lebe vegetarisch (mit Tendenz zurück zu vegan), bin ordentlich, aber kein Putzmonk, und immer offen für spannende Gespräche über gott und die welt.\n\nhier noch meine website da ist auch ein link zu meinem insta, dann könnt ihr euch noch ein besseres Bild von mir machen:\n\nhttps://artistportfoliolars.netlify.app/\n\nWürde mich über eine Besichtigung freuen!\n\nLiebe Grüße\nLars :)\n\nANPASSUNGEN:\n✅ 1-2 spezifische Details aus der WG-Beschreibung einbauen\n✅ Bezug zur Lage/Stadtteil herstellen \n✅ Zeitraum erwähnen (befristet/unbefristet)\n✅ Persönliche Anrede falls Namen erkennbar\n\nWICHTIG:\n- NUR 2-3 Sätze zur WG-Beschreibung hinzufügen\n- Meine Original-Nachricht als Basis behalten\n- Fehlerfreies Deutsch verwenden\n- Authentisch bleiben, nicht übertreiben\n\nSTIL: Wie meine Original-Nachricht - entspannt, authentisch, nicht zu förmlich\n\nSchreibe die angepasste Nachricht direkt ohne Erklärungen.”,
“options”: {}
},
“type”: “@n8n/n8n-nodes-langchain.agent”,
“typeVersion”: 2,
“position”: [
1360,
220
],
“id”: “8a27d46d-df4c-4f9b-b47c-9452a0f7dde3”,
“name”: “AI Agent1”
},
{
“parameters”: {
“jsCode”: “// E-Mail Content aus verschiedenen Quellen holen\nlet emailContent = items[0].json.textPlain || items[0].json.textHtml || items[0].json.text || items[0].json.html || items[0].json.snippet || ‘’;\n\nconsole.log(‘Email content length:’, emailContent.length);\nconsole.log(‘Content preview:’, emailContent.substring(0, 300));\n\n// Alle Links finden und sortieren\nlet targetUrl = null;\n\n// 1. Zuerst: Direkte WG-Gesucht Links mit Suchauftrag\nconst directWgLinks = emailContent.match(/https:\/\/www\.wg-gesucht\.de[^\s"<>]/g) || [];\nconsole.log(‘Found direct WG links:’, directWgLinks.length);\n\nfor (const link of directWgLinks) {\n console.log(‘Checking direct link:’, link);\n // Priorisiere Links mit suchauftrag oder langen IDs\n if (link.includes(‘suchauftrag’) || link.includes(‘campaign’) || /\d{8,}/.test(link)) {\n targetUrl = link;\n console.log(‘:white_check_mark: Found priority direct link:’, targetUrl);\n break;\n }\n}\n\n// 2. Falls keine direkten Links: GMX Deref Links verarbeiten\nif (!targetUrl) {\n const gmxDerefLinks = emailContent.match(/https:\/\/deref-gmx\.net[^\s"<>]/g) || ;\n console.log(‘Found GMX deref links:’, gmxDerefLinks.length);\n \n for (const gmxLink of gmxDerefLinks) {\n console.log(‘Processing GMX link:’, gmxLink);\n \n // redirectUrl Parameter extrahieren\n const redirectMatch = gmxLink.match(/redirectUrl=([^&\s"<>])/);\n if (redirectMatch) {\n const decodedUrl = decodeURIComponent(redirectMatch[1]);\n console.log(‘Decoded URL:’, decodedUrl);\n \n // Prüfe ob es ein WG-Gesucht Link ist\n if (decodedUrl.includes(‘wg-gesucht.de’)) {\n // Priorisiere suchauftrag Links\n if (decodedUrl.includes(‘suchauftrag’) || decodedUrl.includes(‘campaign’) || /\d{8,}/.test(decodedUrl)) {\n targetUrl = decodedUrl;\n console.log(‘:white_check_mark: Found priority GMX redirect:’, targetUrl);\n break;\n } else if (!targetUrl) {\n // Fallback: Nimm ersten WG-Gesucht Link\n targetUrl = decodedUrl;\n console.log(‘:memo: Using fallback GMX redirect:’, targetUrl);\n }\n }\n }\n }\n}\n\n// 3. Letzte Chance: Alle WG-Gesucht Links ohne Priorität\nif (!targetUrl) {\n const allWgLinks = emailContent.match(/https:\/\/[^\s"<>]wg-gesucht\.de[^\s"<>]/g) || [];\n if (allWgLinks.length > 0) {\n targetUrl = allWgLinks[0];\n console.log(‘:memo: Using any WG-Gesucht link:’, targetUrl);\n }\n}\n\n// URL bereinigen (entferne eventuelle Zeichen am Ende)\nif (targetUrl) {\n targetUrl = targetUrl.replace(/[.,;)]$/, ‘’); // Entferne Punkte, Kommas etc. am Ende\n console.log(‘Final cleaned URL:’, targetUrl);\n}\n\n// Ergebnis\nif (targetUrl && targetUrl.includes(‘wg-gesucht.de’)) {\n return [{\n json: {\n wg_url: targetUrl,\n email_subject: items[0].json.subject || ‘No subject’,\n link_type: targetUrl.includes(‘suchauftrag’) ? ‘suchauftrag’ : ‘standard’,\n found_total_links: (emailContent.match(/https:\/\/[^\s]/g) || []).length\n }\n }];\n} else {\n return [{\n json: {\n error: ‘No valid WG-Gesucht link found’,\n email_subject: items[0].json.subject || ‘No subject’,\n content_sample: emailContent.substring(0, 500),\n all_links: (emailContent.match(/https:\/\/[^\s"<>]/g) || ).slice(0, 5)\n }\n }];\n}\n”
},
“type”: “n8n-nodes-base.code”,
“typeVersion”: 2,
“position”: [
900,
340
],
“id”: “f2b96d74-1948-4803-b92a-daa115829ce9”,
“name”: “Code”
},
{
“parameters”: {
“pollTimes”: {
“item”: [
{
“mode”: “everyMinute”
}
]
},
“simple”: false,
“filters”: {
“includeSpamTrash”: false
},
“options”: {}
},
“type”: “n8n-nodes-base.gmailTrigger”,
“typeVersion”: 1.2,
“position”: [
460,
340
],
“id”: “1edcef58-58b0-4992-a3f1-efea0d1ee148”,
“name”: “Gmail Trigger”,
“credentials”: {
“gmailOAuth2”: {
“id”: “X62zexRg7xY43vmj”,
“name”: “Gmail account”
}
}
},
{
“parameters”: {
“url”: “={{ $json.wg_url }}”,
“sendHeaders”: true,
“headerParameters”: {
“parameters”: [
{
“name”: “User-Agent”,
“value”: “Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36”
}
]
},
“options”: {}
},
“type”: “n8n-nodes-base.httpRequest”,
“typeVersion”: 4.2,
“position”: [
1040,
340
],
“id”: “cb0d1be8-b84e-4a96-97f5-26b1226138b5”,
“name”: “HTTP Request2”
},
{
“parameters”: {
“inputText”: “={{ $json.headers.from }}”,
“categories”: {
“categories”: [
{
“category”: “Wg Gesucht”,
“description”: “Wg Gesucht”
},
{
“category”: “lars.kaster”,
“description”: “[email protected]
}
]
},
“options”: {
“fallback”: “discard”
}
},
“type”: “@n8n/n8n-nodes-langchain.textClassifier”,
“typeVersion”: 1.1,
“position”: [
600,
340
],
“id”: “703a1720-265e-47d5-b14b-fbf3619c6056”,
“name”: “Text Classifier”
}
],
“connections”: {
“AI Agent”: {
“main”: [
[
{
“node”: “Send a text message”,
“type”: “main”,
“index”: 0
}
]
]
},
“OpenAI Chat Model”: {
“ai_languageModel”: [
[
{
“node”: “AI Agent1”,
“type”: “ai_languageModel”,
“index”: 0
},
{
“node”: “AI Agent”,
“type”: “ai_languageModel”,
“index”: 0
},
{
“node”: “Text Classifier”,
“type”: “ai_languageModel”,
“index”: 0
}
]
]
},
“Code1”: {
“main”: [
[
{
“node”: “AI Agent”,
“type”: “main”,
“index”: 0
},
{
“node”: “AI Agent1”,
“type”: “main”,
“index”: 0
}
]
]
},
“AI Agent1”: {
“main”: [
[
{
“node”: “Send a text message”,
“type”: “main”,
“index”: 0
}
]
]
},
“Code”: {
“main”: [
[
{
“node”: “HTTP Request2”,
“type”: “main”,
“index”: 0
}
]
]
},
“Gmail Trigger”: {
“main”: [
[
{
“node”: “Text Classifier”,
“type”: “main”,
“index”: 0
}
]
]
},
“HTTP Request2”: {
“main”: [
[
{
“node”: “Code1”,
“type”: “main”,
“index”: 0
}
]
]
},
“Text Classifier”: {
“main”: [
[
{
“node”: “Code”,
“type”: “main”,
“index”: 0
}
],
[
{
“node”: “Code”,
“type”: “main”,
“index”: 0
}
]
]
}
},
“pinData”: {},
“meta”: {
“templateCredsSetupCompleted”: true,
“instanceId”: “6f62aa27b50823e14d2467ea9102d8820bf210553343ff1bc530b3dbe60dbd6d”
}
}

Database (default: SQLite): Dont know
n8n EXECUTIONS_PROCESS setting (default: own, main): Dont know
Operating system: Chrome on mac

hello Lars, welcome to the n8n community. Is your workflow set on active?

Yes it is!

Activate the workflow first

The worklfow is already activated as i told twice. It still does not work, i dont know why, there is probably a simple solution but i dont find it. i follow youtube tutorials step by step but it just wont work for me.