Workflow: Webhook Respondtowebhook Create

Workflow Details

Download Workflow
{
    "nodes": [
        {
            "name": "Receive Slash Command",
            "type": "n8n-nodes-base.webhook",
            "position": [
                240,
                100
            ],
            "webhookId": "3c0d3820-5896-41c5-83bf-1cd5e956c32c",
            "parameters": {
                "path": "3c0d3820-5896-41c5-83bf-1cd5e956c32c",
                "options": [],
                "httpMethod": "POST",
                "responseMode": "responseNode"
            },
            "typeVersion": 1
        },
        {
            "name": "Reject",
            "type": "n8n-nodes-base.respondToWebhook",
            "position": [
                680,
                200
            ],
            "parameters": {
                "options": {
                    "responseCode": 403
                },
                "respondWith": "noData"
            },
            "typeVersion": 1
        },
        {
            "name": "Set",
            "type": "n8n-nodes-base.set",
            "position": [
                680,
                0
            ],
            "parameters": {
                "values": {
                    "string": [
                        {
                            "name": "operation",
                            "value": "={{$json[\"body\"][\"text\"].split(\" \")[0].toLowerCase()}}"
                        },
                        {
                            "name": "email",
                            "value": "={{$json[\"body\"][\"text\"].split(\" \")[1].toLowerCase()}}"
                        }
                    ]
                },
                "options": [],
                "keepOnlySet": true
            },
            "typeVersion": 1
        },
        {
            "name": "Read Command",
            "type": "n8n-nodes-base.switch",
            "position": [
                900,
                0
            ],
            "parameters": {
                "rules": {
                    "rules": [
                        {
                            "value2": "delete"
                        }
                    ]
                },
                "value1": "={{$json[\"operation\"]}}",
                "dataType": "string",
                "fallbackOutput": 3
            },
            "typeVersion": 1
        },
        {
            "name": "Wrong Command Error",
            "type": "n8n-nodes-base.respondToWebhook",
            "position": [
                1120,
                100
            ],
            "parameters": {
                "options": [],
                "respondWith": "json",
                "responseBody": "{\n  \"text\": \"Sorry, I didn't understand your command. You can request data deletion like so: `\/gdpr delete <email>`.\"\n}"
            },
            "typeVersion": 1
        },
        {
            "name": "Acknowledge",
            "type": "n8n-nodes-base.respondToWebhook",
            "position": [
                1340,
                0
            ],
            "parameters": {
                "options": [],
                "respondWith": "json",
                "responseBody": "{\n  \"text\": \"On it!\"\n}"
            },
            "typeVersion": 1
        },
        {
            "name": "Empty Email?",
            "type": "n8n-nodes-base.if",
            "position": [
                1120,
                -100
            ],
            "parameters": {
                "conditions": {
                    "string": [
                        {
                            "value1": "={{$json[\"email\"]}}",
                            "operation": "isEmpty"
                        }
                    ]
                }
            },
            "typeVersion": 1
        },
        {
            "name": "Missing Email Error",
            "type": "n8n-nodes-base.respondToWebhook",
            "position": [
                1340,
                -200
            ],
            "parameters": {
                "options": [],
                "respondWith": "json",
                "responseBody": "{\n  \"text\": \"It looks like the user email address is missing. You can request data deletion like so: `\/gdpr delete <email>`.\"\n}"
            },
            "typeVersion": 1
        },
        {
            "name": "Valid Token?",
            "type": "n8n-nodes-base.if",
            "position": [
                460,
                100
            ],
            "parameters": {
                "conditions": {
                    "string": [
                        {
                            "value1": "={{$json[\"body\"][\"token\"]}}",
                            "value2": "foo"
                        }
                    ]
                }
            },
            "typeVersion": 1
        },
        {
            "name": "Paddle Data Deletion",
            "type": "n8n-nodes-base.executeWorkflow",
            "position": [
                1560,
                0
            ],
            "parameters": {
                "workflowId": "1231"
            },
            "typeVersion": 1
        },
        {
            "name": "Customer.io Data Deletion",
            "type": "n8n-nodes-base.executeWorkflow",
            "position": [
                1780,
                0
            ],
            "parameters": {
                "workflowId": "1237"
            },
            "typeVersion": 1
        },
        {
            "name": "Zendesk Data Deletion",
            "type": "n8n-nodes-base.executeWorkflow",
            "position": [
                2000,
                0
            ],
            "parameters": {
                "workflowId": "1240"
            },
            "typeVersion": 1
        },
        {
            "name": "Airtable",
            "type": "n8n-nodes-base.airtable",
            "position": [
                1780,
                200
            ],
            "parameters": {
                "table": "Log",
                "options": [],
                "operation": "append",
                "application": "app3wAXUUwalhapFV"
            },
            "credentials": {
                "airtableApi": {
                    "id": "12",
                    "name": "mutedjam@n8n.io"
                }
            },
            "typeVersion": 1
        },
        {
            "name": "Prepare Log Entry",
            "type": "n8n-nodes-base.function",
            "position": [
                1340,
                200
            ],
            "parameters": {
                "functionCode": "let deletion_nodes = [\n  'Paddle Data Deletion',\n  'Customer.io Data Deletion',\n  'Zendesk Data Deletion'\n]\n\nconst deletion_results = deletion_nodes.map(node_name => $items(node_name)[0].json);\nconst deletion_success = deletion_results.filter(json => json.success == true).length == deletion_nodes.length;\n\nreturn [{\n  json: {\n    Result: deletion_success ? 'Done' : 'Error',\n    Notes: deletion_results.map(json => json.service + ': ' + json.message).join('\\n'),\n    Processed: new Date().toISOString()\n  }\n}];"
            },
            "typeVersion": 1
        },
        {
            "name": "Crypto",
            "type": "n8n-nodes-base.crypto",
            "position": [
                1560,
                200
            ],
            "parameters": {
                "type": "SHA256",
                "value": "={{$node[\"Set\"].json[\"email\"]}}",
                "dataPropertyName": "Email Hash"
            },
            "typeVersion": 1
        },
        {
            "name": "Respond to Slack",
            "type": "n8n-nodes-base.httpRequest",
            "position": [
                2000,
                200
            ],
            "parameters": {
                "url": "={{$node[\"Receive Slash Command\"].json[\"body\"][\"response_url\"]}}",
                "options": [],
                "requestMethod": "POST",
                "responseFormat": "string",
                "bodyParametersUi": {
                    "parameter": [
                        {
                            "name": "text",
                            "value": "=GDPR data deletion process finished.\nStatus: {{$node[\"Prepare Log Entry\"].json[\"Result\"] == \"Done\" ? \":white_check_mark: OK\" : \":x: Error\"}}\nLog: <https:\/\/airtable.com\/app3wAXUUwalhapFV\/tbljkxW55l2Gq7Fzq\/viwOJdJM1taITEaPr\/{{$node[\"Airtable\"].json[\"id\"]}}?blocks=hide|View in Airtable>"
                        },
                        {
                            "name": "delete_original",
                            "value": "true"
                        }
                    ]
                }
            },
            "typeVersion": 1
        }
    ],
    "connections": {
        "Set": {
            "main": [
                [
                    {
                        "node": "Read Command",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Crypto": {
            "main": [
                [
                    {
                        "node": "Airtable",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Airtable": {
            "main": [
                [
                    {
                        "node": "Respond to Slack",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Acknowledge": {
            "main": [
                [
                    {
                        "node": "Paddle Data Deletion",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Empty Email?": {
            "main": [
                [
                    {
                        "node": "Missing Email Error",
                        "type": "main",
                        "index": 0
                    }
                ],
                [
                    {
                        "node": "Acknowledge",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Read Command": {
            "main": [
                [
                    {
                        "node": "Empty Email?",
                        "type": "main",
                        "index": 0
                    }
                ],
                null,
                null,
                [
                    {
                        "node": "Wrong Command Error",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Valid Token?": {
            "main": [
                [
                    {
                        "node": "Set",
                        "type": "main",
                        "index": 0
                    }
                ],
                [
                    {
                        "node": "Reject",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Prepare Log Entry": {
            "main": [
                [
                    {
                        "node": "Crypto",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Paddle Data Deletion": {
            "main": [
                [
                    {
                        "node": "Customer.io Data Deletion",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Receive Slash Command": {
            "main": [
                [
                    {
                        "node": "Valid Token?",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Zendesk Data Deletion": {
            "main": [
                [
                    {
                        "node": "Prepare Log Entry",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Customer.io Data Deletion": {
            "main": [
                [
                    {
                        "node": "Zendesk Data Deletion",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        }
    }
}
Back to Workflows

Related Workflows

Extract text from PDF and image using Vertex AI (Gemini) into CSV
View
Netlify Slack Automate Triggered
View
Code Schedule Create Scheduled
View
Translate cocktail instructions using LingvaNex
View
Manual Awstextract Automate Triggered
View
Send Daily Birthday Reminders from Google Contacts to Slack
View
GoogleSheets Slack Send Triggered
View
Limit Code Send Scheduled
View
🦜✨Use OpenAI to Transcribe Audio + Summarize with AI + Save to Google Drive
View
Wait Webhook Send Webhook
View