This workflow corresponds to n8n.io template #12268 — we link there as the canonical source.
This workflow follows the Agent → Gmail recipe pattern — see all workflows that pair these two integrations.
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 →
{
"id": "NFKaRbR7GrUSna56",
"name": "Automated Consent Manager Registration Screening & Eligibility Evaluation Pipeline (DPDP-Aligned)",
"tags": [],
"nodes": [
{
"id": "f130ae85-a26f-49bb-ab25-e22ecf5d4307",
"name": "Receive Consent Registration Event",
"type": "n8n-nodes-base.webhook",
"position": [
-32,
0
],
"parameters": {
"path": "14ad13dc-0916-4ea3-ac2c-943413207ad4",
"options": {},
"httpMethod": "POST"
},
"typeVersion": 2.1
},
{
"id": "6e77b48f-3877-4179-95e6-70f9706d5c22",
"name": "Extract & Normalize Registration Payload",
"type": "n8n-nodes-base.code",
"position": [
272,
0
],
"parameters": {
"jsCode": "// Extract the incoming webhook data\nconst incoming = $json;\n\n// Extract only the relevant fields from the body\nconst body = incoming.body || {};\n\n// Build the cleaned, structured output\nconst cleaned = {\n action: body.action || \"\",\n organizationName: body.organizationName || \"\",\n applicationType: body.applicationType || \"\",\n contactEmail: body.contactEmail || \"\",\n netWorth: body.netWorth || \"\",\n technicalCapacity: body.technicalCapacity || \"\",\n operationalCapacity: body.operationalCapacity || \"\",\n documentAttached: body.documentAttached || null,\n submittedAt: body.submittedAt || \"\"\n};\n\n// Return result\nreturn [\n {\n json: cleaned\n }\n];\n"
},
"typeVersion": 2
},
{
"id": "fb66719f-3dca-409a-8341-153ed736b000",
"name": "Validate Registration Payload Structure",
"type": "n8n-nodes-base.if",
"position": [
544,
0
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "or",
"conditions": [
{
"id": "e2adb005-2b3c-4d1e-8445-442df1fe925a",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.action }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "a03d1f15-1678-45fb-a803-ed2a5dc69056",
"name": "Log Invalid Registration Requests to Sheet",
"type": "n8n-nodes-base.googleSheets",
"position": [
896,
608
],
"parameters": {
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "",
"cachedResultUrl": "",
"cachedResultName": ""
},
"documentId": {
"__rl": true,
"mode": "url",
"value": ""
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.6
},
{
"id": "2e492004-7442-4a3d-bd00-7ed2be17d75a",
"name": "Configure GPT-4o \u2014 Eligibility Evaluation Model",
"type": "@n8n/n8n-nodes-langchain.lmChatAzureOpenAi",
"position": [
1264,
608
],
"parameters": {
"model": "gpt-4o",
"options": {}
},
"credentials": {
"azureOpenAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "a3388ca4-f6cb-4797-8303-488ef63367cc",
"name": "AI Eligibility Evaluator (DPDP Compliance)",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
992,
-16
],
"parameters": {
"text": "=Evaluate the following Consent Manager Registration request and determine whether the applicant \nshould be considered ELIGIBLE under DPDP standards.\n\nIMPORTANT LOGIC CHANGES:\n- If documentation is missing (documentAttached = null) but all other criteria are strong, \n DO NOT reject the applicant. Instead, mark them as eligible and recommend that documentation \n be collected during the verification stage.\n- Only mark the applicant as ineligible if there is a MAJOR compliance failure \n (e.g., extremely low net worth, no technical capacity, no operational capacity, fake data).\n\nHere is the registration request:\n{{ JSON.stringify($json, null, 2) }}\n\nReturn the result in this exact JSON structure:\n\n{\n \"eligible\": true or false,\n \"decisionReason\": \"short explanation\",\n \"riskLevel\": \"Low / Medium / High\",\n \"missingItems\": [\"...\"],\n \"recommendedNextSteps\": \"What the compliance team should do next (short)\"\n}\n\nIf the only issue is missing documentation, still return:\n\"eligible\": true\n\"riskLevel\": \"Low\" \nand include the missing document note in \"missingItems\".\n",
"options": {
"systemMessage": "=You are an AI compliance assistant evaluating DPDP Consent Manager Registration requests.\n\nRULES:\n- Treat missing documentation as a minor issue (NOT a cause for rejection).\n- Prioritize: financial capacity, technical capacity, operational capacity, email validity.\n- If core requirements are met, the applicant should be considered \"eligible\".\n- Only reject if the organization fundamentally cannot qualify.\n\nOutput must ALWAYS follow the JSON format exactly.\n"
},
"promptType": "define"
},
"typeVersion": 2.1
},
{
"id": "ee16e06c-e97f-4679-9d30-16345420da18",
"name": "Parse AI Eligibility JSON Output",
"type": "n8n-nodes-base.code",
"position": [
1392,
-16
],
"parameters": {
"jsCode": "const raw = $json.output;\n\n// Remove markdown ```json ``` fences\nconst cleaned = raw.replace(/```json|```/g, '').trim();\n\n// Convert to actual JSON\nconst parsed = JSON.parse(cleaned);\n\nreturn parsed;\n"
},
"typeVersion": 2
},
{
"id": "fccc7bd0-016d-4d69-884e-4d90939d9ea2",
"name": "Validate Eligibility Status",
"type": "n8n-nodes-base.if",
"position": [
1648,
-16
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "or",
"conditions": [
{
"id": "e2adb005-2b3c-4d1e-8445-442df1fe925a",
"operator": {
"type": "boolean",
"operation": "equals"
},
"leftValue": "={{ $json.eligible }}",
"rightValue": true
}
]
}
},
"typeVersion": 2.2
},
{
"id": "82a15bbe-3f22-4cb7-87c4-c01b665ba909",
"name": "Send Rejection Email to Applicant",
"type": "n8n-nodes-base.gmail",
"position": [
2080,
288
],
"parameters": {
"sendTo": "=gargsaurabh1804april@gmail.com",
"message": "=Dear {{ $('Validate Registration Payload Structure').item.json.organizationName }}\n\nYour Consent Manager Registration request has been reviewed.\n\nUnfortunately, the registration cannot be approved at this time, due to the following issue(s):\n\n\u2022 {{ $json.issues.join(\", \") }}\n\nRecommended Next Steps:\n{{ $json.recommendedNextSteps }}\n\nPlease resubmit your application with the required documents.\n\nRegards,\nCompliance Automation System\n",
"options": {},
"subject": "=Consent Manager Registration \u2013 Rejected (Missing Documents)\n"
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "27d09d68-1f7e-4bec-bab4-92090b094970",
"name": "Merge Registration + Eligibility Summary",
"type": "n8n-nodes-base.code",
"position": [
2048,
-272
],
"parameters": {
"jsCode": "// 1. Get parsed form data from the previous node (registration input)\nconst formData = $node[\"Validate Registration Payload Structure\"].json;\n\n// 2. Get AI eligibility result (this node\u2019s input)\nconst eligibility = items[0].json;\n\n// 3. Build combined output\nreturn [\n {\n json: {\n registrationPackage: {\n organizationName: formData.organizationName,\n applicationType: formData.applicationType,\n contactEmail: formData.contactEmail,\n netWorth: formData.netWorth,\n technicalCapacity: formData.technicalCapacity,\n operationalCapacity: formData.operationalCapacity,\n documentAttached: formData.documentAttached,\n submittedAt: formData.submittedAt\n },\n\n eligibility: {\n eligible: eligibility.eligible,\n decisionReason: eligibility.decisionReason,\n riskLevel: eligibility.riskLevel,\n missingItems: eligibility.missingItems,\n recommendedNextSteps: eligibility.recommendedNextSteps\n }\n }\n }\n];\n"
},
"typeVersion": 2
},
{
"id": "fe742e71-8246-4fb4-8e0d-7b532d1c8c5e",
"name": "Send Approval Email to Compliance Team",
"type": "n8n-nodes-base.gmail",
"position": [
2320,
-272
],
"parameters": {
"sendTo": "=gargsaurabh1804april@gmail.com",
"message": "=<p>Dear Compliance Team,</p>\n\n<p>A new Consent Manager registration request has passed the eligibility evaluation and is now ready for the <strong>verification stage</strong>.</p>\n\n<h3>\ud83d\udccc Applicant Details</h3>\n<ul>\n <li><strong>Organization:</strong> {{ $json.registrationPackage.organizationName }}</li>\n <li><strong>Application Type:</strong> {{ $json.registrationPackage.applicationType }}</li>\n <li><strong>Contact Email:</strong> {{ $json.registrationPackage.contactEmail }}</li>\n <li><strong>Net Worth (\u20b9):</strong> {{ $json.registrationPackage.netWorth }}</li>\n</ul>\n\n<h3>\ud83d\udccc Technical Capacity Summary</h3>\n<p>{{ $json.registrationPackage.technicalCapacity }}</p>\n\n<h3>\ud83d\udccc Operational Capacity Summary</h3>\n<p>{{ $json.registrationPackage.operationalCapacity }}</p>\n\n<h3>\ud83d\udccc Eligibility Result</h3>\n<ul>\n <li><strong>Status:</strong> Eligible</li>\n <li><strong>Risk Level:</strong> {{ $json.eligibility.riskLevel }}</li>\n <li><strong>Reason:</strong> {{ $json.eligibility.decisionReason }}</li>\n</ul>\n\n<h3>\ud83d\udccc Missing Items</h3>\n<p>The following items must be collected during the verification stage:</p>\n<ul>\n \n</ul>\n\n<h3>\ud83d\udccc Next Steps</h3>\n<p>{{ $json.eligibility.recommendedNextSteps }}</p>\n\n<br>\n\n<p>Regards,<br>\nDPDP Automated Registration System<br>\nCompliance Automation (n8n)</p>\n",
"options": {},
"subject": "=Consent Manager Registration \u2013 Eligibility Approved (Verification Stage)\n"
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "c6638545-d63f-49d1-b34b-441342d500d8",
"name": "Write Initial Registration Entry to Sheet",
"type": "n8n-nodes-base.googleSheets",
"position": [
1024,
-560
],
"parameters": {
"columns": {
"value": {
"action": "={{ $json.action }}",
"netWorth": "={{ $json.netWorth }}",
"submittedAt": "={{ $json.submittedAt }}",
"contactEmail": "={{ $json.contactEmail }}",
"applicationType": "={{ $json.applicationType }}",
"documentAttached": "={{ $json.documentAttached }}",
"organizationName": "={{ $json.organizationName }}",
"technicalCapacity": "={{ $json.technicalCapacity }}",
"operationalCapacity": "={{ $json.operationalCapacity }}"
},
"schema": [
{
"id": "action",
"type": "string",
"display": true,
"required": false,
"displayName": "action",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "organizationName",
"type": "string",
"display": true,
"required": false,
"displayName": "organizationName",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "applicationType",
"type": "string",
"display": true,
"required": false,
"displayName": "applicationType",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "contactEmail",
"type": "string",
"display": true,
"required": false,
"displayName": "contactEmail",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "netWorth",
"type": "string",
"display": true,
"required": false,
"displayName": "netWorth",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "technicalCapacity",
"type": "string",
"display": true,
"required": false,
"displayName": "technicalCapacity",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "operationalCapacity",
"type": "string",
"display": true,
"required": false,
"displayName": "operationalCapacity",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "documentAttached",
"type": "string",
"display": true,
"required": false,
"displayName": "documentAttached",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "submittedAt",
"type": "string",
"display": true,
"required": false,
"displayName": "submittedAt",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": 616260608,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/17rcNd_ZpUQLm0uWEVbD-NY6GyFUkrD4BglvawlyBygM/edit#gid=616260608",
"cachedResultName": "consent_manager_registration"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "17rcNd_ZpUQLm0uWEVbD-NY6GyFUkrD4BglvawlyBygM",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/17rcNd_ZpUQLm0uWEVbD-NY6GyFUkrD4BglvawlyBygM/edit?usp=drivesdk",
"cachedResultName": "sample_leads_50"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.6
},
{
"id": "00ae572c-8f52-4c54-aa90-2a431b0403b6",
"name": "Prepare Status Update Fields",
"type": "n8n-nodes-base.set",
"position": [
2560,
-272
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "1213613b-51f4-48f2-afe1-8b9e06cb2130",
"name": "Status",
"type": "string",
"value": "passed "
}
]
}
},
"typeVersion": 3.4
},
{
"id": "8803b8bf-2602-42f4-b975-06043437c657",
"name": "Update Registration Status in Sheet",
"type": "n8n-nodes-base.googleSheets",
"position": [
2832,
-272
],
"parameters": {
"columns": {
"value": {
"Status": "={{ $json.Status }}",
"contactEmail": "={{ $('Merge Registration + Eligibility Summary').item.json.registrationPackage.contactEmail }}"
},
"schema": [
{
"id": "action",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "action",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "organizationName",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "organizationName",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "applicationType",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "applicationType",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "contactEmail",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "contactEmail",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "netWorth",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "netWorth",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "technicalCapacity",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "technicalCapacity",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "operationalCapacity",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "operationalCapacity",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "documentAttached",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "documentAttached",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "submittedAt",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "submittedAt",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Status",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Status",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"contactEmail"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": 616260608,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/17rcNd_ZpUQLm0uWEVbD-NY6GyFUkrD4BglvawlyBygM/edit#gid=616260608",
"cachedResultName": "consent_manager_registration"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "17rcNd_ZpUQLm0uWEVbD-NY6GyFUkrD4BglvawlyBygM",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/17rcNd_ZpUQLm0uWEVbD-NY6GyFUkrD4BglvawlyBygM/edit?usp=drivesdk",
"cachedResultName": "sample_leads_50"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.6
},
{
"id": "388ca676-2348-4cca-9d54-36ebb4a39794",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-928,
-992
],
"parameters": {
"width": 816,
"height": 592,
"content": "## \ud83d\udcdd Automated Consent Manager Registration Screening & Eligibility Evaluation Pipeline (DPDP-Aligned)\n\nAutomates intake, validation, eligibility evaluation, and routing of Consent Manager Registration applications under DPDP guidelines. \nEvery incoming registration request is normalized, validated, evaluated using AI-based compliance logic, logged to Sheets, and then routed to either Approval or Rejection flow. \nThe workflow ensures correct handling of missing documents, validates operational/technical capacity, and updates master records automatically.\n\n\ud83d\udd39 Workflow Overview\n1\ufe0f\u20e3 Webhook receives new registration request \n2\ufe0f\u20e3 Extracts & cleans core form fields \n3\ufe0f\u20e3 Validates structure (action + mandatory values) \n4\ufe0f\u20e3 Writes initial registration entry to Google Sheets \n5\ufe0f\u20e3 AI performs eligibility evaluation (DPDP criteria) \n6\ufe0f\u20e3 Parses JSON & validates eligibility result \n7\ufe0f\u20e3 If **eligible** \u2192 build summary + email compliance + update Sheet status \n8\ufe0f\u20e3 If **ineligible** \u2192 send rejection email + log for follow-up \n9\ufe0f\u20e3 All invalid requests (missing core payload) are logged separately \n\n\ud83d\udd39 Tools & Integrations \nWebhook \u2192 Intake \nCode Nodes \u2192 Payload extraction, merging, JSON parsing \nGoogle Sheets \u2192 Registration recordkeeping + status updates \nAzure GPT-4o \u2192 Eligibility evaluation engine \nGmail \u2192 Rejection & Approval notifications \nSet Node \u2192 Status field creation for final update\n"
},
"typeVersion": 1
},
{
"id": "536db252-e610-489f-b58c-f01f282439d4",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-96,
-240
],
"parameters": {
"color": 7,
"height": 432,
"content": "## Receive Consent Registration Event \nWebhook collects new registration submissions from the UI. \nTriggers workflow execution immediately and passes the raw payload forward.\n"
},
"typeVersion": 1
},
{
"id": "069322b8-3289-40f0-98ea-d66b9c005b7b",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
208,
-304
],
"parameters": {
"color": 7,
"height": 480,
"content": "## Extract & Normalize Registration Payload \nCleans the incoming JSON body and extracts essential registration fields. \nNormalizes values into a consistent structure for downstream validation.\n"
},
"typeVersion": 1
},
{
"id": "41bbf3b3-d0ea-4103-b4f6-474b8ae022df",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
464,
-288
],
"parameters": {
"color": 7,
"height": 464,
"content": "## Validate Registration Payload Structure \nChecks whether core fields (like action) are present and properly structured. \nValid entries move to evaluation \u2192 invalid entries go to the logging sheet.\n"
},
"typeVersion": 1
},
{
"id": "6e6f0b9a-d243-4324-8bb7-faa297b70ec0",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
832,
352
],
"parameters": {
"color": 7,
"height": 432,
"content": "## Log Invalid Registration Requests to Sheet \nRecords malformed or incomplete submissions in a dedicated audit sheet. \nSupports retry handling and compliance tracking for improper requests.\n"
},
"typeVersion": 1
},
{
"id": "1fd0c246-ba91-4902-b7bb-3348d181fd06",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
960,
-784
],
"parameters": {
"color": 7,
"height": 400,
"content": "## Write Initial Registration Entry to Sheet \nStores the raw registration data into the main registration sheet. \nCreates the intake record before AI eligibility processing begins.\n"
},
"typeVersion": 1
},
{
"id": "95b585e4-1b96-4ac0-9365-7f242d23a534",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
1168,
368
],
"parameters": {
"color": 7,
"width": 288,
"height": 384,
"content": "## Configure GPT-4o \u2014 Eligibility Evaluation Model \nPrepares the AI model used to evaluate DPDP compliance eligibility. \nServes as the language model input for the eligibility agent.\n"
},
"typeVersion": 1
},
{
"id": "85b455e9-58c8-4e87-9e94-8a0ccba6ed9c",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
960,
-256
],
"parameters": {
"color": 7,
"width": 288,
"height": 448,
"content": "## AI Eligibility Evaluator (DPDP Compliance) \nAnalyzes DPDP eligibility based on financial, technical, and operational criteria. \nProduces a structured JSON result with eligibility, risk level, and next steps.\n"
},
"typeVersion": 1
},
{
"id": "fdd36ef9-6d91-45ed-9468-ec76dcc27305",
"name": "Sticky Note8",
"type": "n8n-nodes-base.stickyNote",
"position": [
1328,
-240
],
"parameters": {
"color": 7,
"height": 384,
"content": "## Parse AI Eligibility JSON Output \nCleans markdown artifacts and safely converts AI output into valid JSON. \nEnsures standardized data for all branching decisions ahead.\n"
},
"typeVersion": 1
},
{
"id": "377ce804-d7b3-4c9b-bf47-fb1032757aa0",
"name": "Sticky Note9",
"type": "n8n-nodes-base.stickyNote",
"position": [
1600,
-240
],
"parameters": {
"color": 7,
"height": 400,
"content": "## Validate Eligibility Status \nChecks whether the AI-determined eligibility is true or false. \nRoutes eligible applicants to approval flow \u2192 ineligible ones to rejection.\n"
},
"typeVersion": 1
},
{
"id": "5036363c-9d29-460d-958f-27e1f6aaec5c",
"name": "Sticky Note10",
"type": "n8n-nodes-base.stickyNote",
"position": [
2016,
64
],
"parameters": {
"color": 7,
"height": 400,
"content": "## Send Rejection Email to Applicant \nSends a structured rejection email explaining missing/invalid elements. \nGuides applicants with clear next steps for re-submission.\n"
},
"typeVersion": 1
},
{
"id": "b334398a-5e20-4764-bb2d-bd2412deeae3",
"name": "Sticky Note11",
"type": "n8n-nodes-base.stickyNote",
"position": [
1968,
-512
],
"parameters": {
"color": 7,
"height": 416,
"content": "## Merge Registration + Eligibility Summary \nCombines cleaned registration data with AI evaluation output. \nCreates a single structured summary for internal compliance review.\n"
},
"typeVersion": 1
},
{
"id": "205c19c0-4b62-4aee-970f-5f2d362eeb3c",
"name": "Sticky Note12",
"type": "n8n-nodes-base.stickyNote",
"position": [
2240,
-512
],
"parameters": {
"color": 7,
"height": 416,
"content": "## Send Approval Email to Compliance Team \nNotifies compliance that an applicant passed eligibility checks. \nIncludes applicant details, capacity overview, and risk assessment.\n"
},
"typeVersion": 1
},
{
"id": "e034e3a6-d67b-4176-a4c5-5e3865ba65a5",
"name": "Sticky Note13",
"type": "n8n-nodes-base.stickyNote",
"position": [
2496,
-528
],
"parameters": {
"color": 7,
"height": 432,
"content": "## Prepare Status Update Fields \nSets the final status field (e.g., \u201cpassed\u201d) for database update. \nPrepares the output required for updating the registration sheet.\n"
},
"typeVersion": 1
},
{
"id": "c5f58ae5-f2c5-479a-a05e-cc7b70a3af9a",
"name": "Sticky Note14",
"type": "n8n-nodes-base.stickyNote",
"position": [
2752,
-528
],
"parameters": {
"color": 7,
"height": 432,
"content": "## Update Registration Status in Sheet \nUpdates the existing registration record using contactEmail as the key. \nStores final eligibility status, forming a complete audit trail.\n"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "18775104-275f-4eda-b3f5-fd08ccc28fe0",
"connections": {
"Validate Eligibility Status": {
"main": [
[
{
"node": "Merge Registration + Eligibility Summary",
"type": "main",
"index": 0
}
],
[
{
"node": "Send Rejection Email to Applicant",
"type": "main",
"index": 0
}
]
]
},
"Prepare Status Update Fields": {
"main": [
[
{
"node": "Update Registration Status in Sheet",
"type": "main",
"index": 0
}
]
]
},
"Parse AI Eligibility JSON Output": {
"main": [
[
{
"node": "Validate Eligibility Status",
"type": "main",
"index": 0
}
]
]
},
"Receive Consent Registration Event": {
"main": [
[
{
"node": "Extract & Normalize Registration Payload",
"type": "main",
"index": 0
}
]
]
},
"Send Approval Email to Compliance Team": {
"main": [
[
{
"node": "Prepare Status Update Fields",
"type": "main",
"index": 0
}
]
]
},
"Validate Registration Payload Structure": {
"main": [
[
{
"node": "AI Eligibility Evaluator (DPDP Compliance)",
"type": "main",
"index": 0
},
{
"node": "Write Initial Registration Entry to Sheet",
"type": "main",
"index": 0
}
],
[
{
"node": "Log Invalid Registration Requests to Sheet",
"type": "main",
"index": 0
}
]
]
},
"Extract & Normalize Registration Payload": {
"main": [
[
{
"node": "Validate Registration Payload Structure",
"type": "main",
"index": 0
}
]
]
},
"Merge Registration + Eligibility Summary": {
"main": [
[
{
"node": "Send Approval Email to Compliance Team",
"type": "main",
"index": 0
}
]
]
},
"AI Eligibility Evaluator (DPDP Compliance)": {
"main": [
[
{
"node": "Parse AI Eligibility JSON Output",
"type": "main",
"index": 0
}
]
]
},
"Configure GPT-4o \u2014 Eligibility Evaluation Model": {
"ai_languageModel": [
[
{
"node": "AI Eligibility Evaluator (DPDP Compliance)",
"type": "ai_languageModel",
"index": 0
}
]
]
}
}
}
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.
azureOpenAiApigmailOAuth2googleSheetsOAuth2Api
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow automates the complete DPDP-aligned Consent Manager Registration screening pipeline — from intake to eligibility evaluation and final compliance routing. Every incoming registration request is normalized, validated, logged, evaluated by an AI compliance engine…
Source: https://n8n.io/workflows/12268/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
This workflow automates payment-related customer support escalation by validating reported issues against transaction data and coordinating all downstream actions in a controlled, auditable way. It is
Automate your clinic’s patient intake and scheduling with an intelligent AI Healthcare Appointment Booking Agent built in n8n. 🏥 This workflow receives patient form submissions, analyzes symptoms usin
This workflow converts raw ClickUp task updates—received directly through a webhook—into fully automated release documentation. It validates incoming payloads, fetches and cleans task details, enriche
This workflow automates the full lifecycle of a data-consent complaint: receiving the complaint, validating the payload, normalizing the data into a clean ticket format, storing it in a compliance she
Enhance your support, onboarding, and internal knowledge workflows with an intelligent RAG-powered chatbot that responds using live data stored in Google Sheets. 🤖📚 Built for teams that rely on struct