The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"name": "Course Completion Certificate",
"nodes": [
{
"parameters": {
"content": "Automated workflow: Course Completion Certificate",
"height": 530,
"width": 1100,
"color": 5
},
"id": "00188eee-a2bc-4d65-bea7-22693ab8d22e",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-480,
-240
]
},
{
"parameters": {
"httpMethod": "POST",
"path": "course-completion-certificate"
},
"id": "7853e915-bbc6-44ea-9756-b2a0d25ba361",
"name": "Webhook Trigger",
"type": "n8n-nodes-base.webhook",
"typeVersion": 1,
"position": [
-300,
0
]
},
{
"parameters": {
"chunkSize": 400,
"chunkOverlap": 40
},
"id": "c4963bac-745d-4822-bc0d-5b47d4d4eb48",
"name": "Text Splitter",
"type": "@n8n/n8n-nodes-langchain.textSplitterCharacterTextSplitter",
"typeVersion": 1,
"position": [
-130,
0
]
},
{
"parameters": {
"model": "text-embedding-3-small",
"options": {}
},
"id": "eac7a044-6d99-4607-b9b6-ec9e3d2fbb97",
"name": "Embeddings",
"type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
"typeVersion": 1,
"position": [
70,
0
],
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"mode": "insert",
"options": {},
"indexName": "course_completion_certificate"
},
"id": "a11419fc-733e-4ce2-9755-eba3fb7164c1",
"name": "Supabase Insert",
"type": "@n8n/n8n-nodes-langchain.vectorStoreSupabase",
"typeVersion": 1,
"position": [
270,
0
],
"credentials": {
"supabaseApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"indexName": "course_completion_certificate"
},
"id": "9276d92b-ce2d-4fa3-a028-0d27d17d5d2c",
"name": "Supabase Query",
"type": "@n8n/n8n-nodes-langchain.vectorStoreSupabase",
"typeVersion": 1,
"position": [
270,
-180
],
"credentials": {
"supabaseApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"name": "Supabase",
"description": "Vector context"
},
"id": "6ccce1d0-d448-4e7e-a094-cc720756e668",
"name": "Vector Tool",
"type": "@n8n/n8n-nodes-langchain.toolVectorStore",
"typeVersion": 1,
"position": [
450,
-180
]
},
{
"parameters": {},
"id": "f1db10d2-bf1a-4569-bac3-f44825040634",
"name": "Window Memory",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"typeVersion": 1.3,
"position": [
450,
-40
]
},
{
"parameters": {
"options": {}
},
"id": "a2f054a8-22d1-4dbb-ab4e-06ba254d97a6",
"name": "Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"typeVersion": 1,
"position": [
450,
-340
],
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"promptType": "define",
"text": "Process the following data for task 'Course Completion Certificate':\n\n{{ $json }}",
"options": {
"systemMessage": "You are an assistant for Course Completion Certificate"
}
},
"id": "457880d0-86d1-42e8-b91e-658967a70c21",
"name": "RAG Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"typeVersion": 1,
"position": [
720,
-40
]
},
{
"parameters": {
"operation": "append",
"documentId": {
"__rl": true,
"value": "SHEET_ID",
"mode": "list",
"cachedResultName": "Course Completion Certificate"
},
"sheetName": {
"__rl": true,
"value": "Log",
"mode": "list",
"cachedResultName": "Log"
},
"columns": {
"mappingMode": "defineBelow",
"value": {
"Status": "={{$json[\"RAG Agent\"].text}}"
},
"schema": []
}
},
"id": "c60c62d0-9301-41c4-8cf6-5dcb6d065950",
"name": "Append Sheet",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4,
"position": [
930,
-40
],
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"channel": "#alerts",
"text": "Course Completion Certificate error: {$json.error.message}"
},
"id": "4987eb2b-a7ce-4689-b0b3-b87f9ab983e3",
"name": "Slack Alert",
"type": "n8n-nodes-base.slack",
"typeVersion": 1,
"position": [
930,
120
],
"credentials": {
"slackApi": {
"name": "<your credential>"
}
}
}
],
"connections": {
"Webhook Trigger": {
"main": [
[
{
"node": "Text Splitter",
"type": "main",
"index": 0
},
{
"node": "Window Memory",
"type": "main",
"index": 0
}
]
]
},
"Text Splitter": {
"main": [
[
{
"node": "Embeddings",
"type": "main",
"index": 0
}
]
],
"ai_textSplitter": [
[
{
"node": "Supabase Insert",
"type": "ai_textSplitter",
"index": 0
}
]
]
},
"Embeddings": {
"ai_embedding": [
[
{
"node": "Supabase Insert",
"type": "ai_embedding",
"index": 0
},
{
"node": "Supabase Query",
"type": "ai_embedding",
"index": 0
}
]
]
},
"Supabase Insert": {
"ai_document": [
[]
]
},
"Supabase Query": {
"ai_vectorStore": [
[
{
"node": "Vector Tool",
"type": "ai_vectorStore",
"index": 0
}
]
]
},
"Vector Tool": {
"ai_tool": [
[
{
"node": "RAG Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Window Memory": {
"ai_memory": [
[
{
"node": "RAG Agent",
"type": "ai_memory",
"index": 0
}
]
]
},
"Chat Model": {
"ai_languageModel": [
[
{
"node": "RAG Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"RAG Agent": {
"main": [
[
{
"node": "Append Sheet",
"type": "main",
"index": 0
}
]
],
"onError": [
[
{
"node": "Slack Alert",
"type": "main",
"index": 0
}
]
]
}
},
"settings": {
"executionOrder": "v1"
},
"triggerCount": 1
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
googleSheetsOAuth2ApiopenAiApislackApisupabaseApi
About this workflow
Course Completion Certificate. Uses stickyNote, textSplitterCharacterTextSplitter, embeddingsOpenAi, vectorStoreSupabase. Webhook trigger; 12 nodes.
Source: https://github.com/Zie619/n8n-workflows — original creator credit. Request a take-down →