This workflow corresponds to n8n.io template #16978 — we link there as the canonical source.
This workflow follows the Form Trigger → HTTP Request 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": "2uqaucla0FCQwajQ",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Digital Identity Audit",
"tags": [],
"nodes": [
{
"id": "e3409c2d-f3e8-4620-8275-c4220efe19ac",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-704,
-240
],
"parameters": {
"width": 464,
"height": 576,
"content": "# Digital Identity Audit\n## This workflow automates digital identity discovery using the BreachHound Apify Actor. Enter an email address, and the workflow performs a comprehensive audit across 120+ online services to identify associated accounts and generate a professional, shareable report.\n### What this workflow does\n\ud83d\udd0d Audits an email address across 120+ online platforms\n\ud83d\udcca Retrieves structured account discovery results from BreachHound\n\ud83d\udcc8 Summarizes key findings and audit statistics\n\ud83d\udcc4 Generates a clean HTML report\n\ud83d\udcd1 Converts the report into a downloadable PDF\n\n## \ud83d\udfe5 Red Nodes \u2014 Configuration Required\n\n\nFor tailored solutions, visit Blukaze.com"
},
"typeVersion": 1
},
{
"id": "3ed874f6-721d-42e5-bfa4-ecb565e28648",
"name": "On form submission",
"type": "n8n-nodes-base.formTrigger",
"position": [
-32,
-64
],
"parameters": {
"options": {},
"formTitle": "Digital Identity Audit",
"formFields": {
"values": [
{
"fieldType": "email",
"fieldLabel": "Email Address"
},
{
"fieldType": "checkbox",
"fieldLabel": "Return Only Found Accounts",
"fieldOptions": {
"values": [
{}
]
}
},
{
"fieldType": "checkbox",
"fieldLabel": "Use Residential Proxy",
"fieldOptions": {
"values": [
{}
]
}
}
]
},
"formDescription": "Enter an email address to discover where it is registered across 120+ online services. A professional audit report will be generated automatically."
},
"typeVersion": 2.6
},
{
"id": "b00c0058-ed05-4dbf-8a34-f7a30276f067",
"name": "Run an Actor",
"type": "@apify/n8n-nodes-apify.apify",
"position": [
416,
-64
],
"parameters": {
"actorId": {
"__rl": true,
"mode": "list",
"value": "",
"cachedResultUrl": "",
"cachedResultName": ""
},
"customBody": "={\n \"email\": \"{{ $json.email }}\",\n \"onlyUsed\": {{ $json.onlyUsed }},\n \"useResidentialProxy\": {{ $json.useResidentialProxy }}\n}",
"actorSource": "store"
},
"credentials": {
"apifyApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "4046332b-c050-4f95-b206-f6415fa2be61",
"name": "Get dataset items",
"type": "@apify/n8n-nodes-apify.apify",
"position": [
640,
-64
],
"parameters": {
"limit": 300,
"options": {},
"resource": "Datasets",
"datasetId": "={{ $json.storageIds.datasets.default }}"
},
"credentials": {
"apifyApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "d4c86c3d-15c0-45d2-a2ce-3b8f65b417ce",
"name": "HTML to PDF",
"type": "n8n-nodes-base.httpRequest",
"position": [
1312,
-64
],
"parameters": {
"url": "https://api.pdf.co/v1/pdf/convert/from/html",
"method": "POST",
"options": {
"response": {
"response": {
"responseFormat": "json"
}
}
},
"sendBody": true,
"sendHeaders": true,
"bodyParameters": {
"parameters": [
{
"name": "html",
"value": "={{ $json.html }}"
},
{
"name": "async",
"value": "false"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "x-api-key",
"value": "YOUR_API_KEY_HERE"
},
{
"name": "Content-Type",
"value": "application/json"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "9abc482d-a43c-4bbd-9b63-065b7289e742",
"name": "HTTP Request",
"type": "n8n-nodes-base.httpRequest",
"position": [
1536,
-64
],
"parameters": {
"url": "={{ $json.url }}",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "0db8789f-ef93-4b6d-b23f-e48db68e4f2d",
"name": "Set Fields",
"type": "n8n-nodes-base.set",
"position": [
192,
-64
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "35247700-b119-4817-a0eb-d9cb98456743",
"name": "email",
"type": "string",
"value": "={{ $json['Email Address'] }}"
},
{
"id": "288f9833-55ba-4f7c-a680-7a00b0b42f08",
"name": "onlyUsed",
"type": "boolean",
"value": "=true"
},
{
"id": "f6f44c22-292d-4a27-995e-7279a54708df",
"name": "useResidentialProxy",
"type": "boolean",
"value": true
}
]
}
},
"typeVersion": 3.4
},
{
"id": "35344a6c-4a52-44af-8ecf-7546baadba27",
"name": "Data Extraction",
"type": "n8n-nodes-base.code",
"position": [
864,
-64
],
"parameters": {
"jsCode": "const items = $input.all();\n\nconst found = items.filter(i => i.json.status === \"found\");\nconst notFound = items.filter(i => i.json.status === \"not_found\");\nconst rateLimited = items.filter(i => i.json.status === \"rate_limited\");\n\nreturn [{\n json: {\n email: found[0]?.json.email ?? \"\",\n total: items.length,\n found: found.length,\n notFound: notFound.length,\n rateLimited: rateLimited.length,\n foundAccounts: found.map(x => ({\n name: x.json.name,\n website: x.json.website\n }))\n }\n}];"
},
"typeVersion": 2
},
{
"id": "3bfb8748-9fbb-4185-be0a-763e272975e2",
"name": "Convert to HTML",
"type": "n8n-nodes-base.code",
"position": [
1088,
-64
],
"parameters": {
"jsCode": "const data = $json;\n\nconst rows = data.foundAccounts.map(account => `\n<tr>\n <td>${account.name}</td>\n <td>${account.website}</td>\n</tr>\n`).join(\"\");\n\nconst html = `\n<!DOCTYPE html>\n<html>\n<head>\n<meta charset=\"UTF-8\">\n<style>\nbody{\n font-family:Arial;\n padding:40px;\n}\n\ntable{\n width:100%;\n border-collapse:collapse;\n}\n\nth,td{\n border:1px solid #ddd;\n padding:8px;\n}\n\nth{\n background:#2563eb;\n color:white;\n}\n</style>\n</head>\n\n<body>\n\n<h1>Digital Identity Audit</h1>\n\n<p><strong>Email:</strong> ${data.email}</p>\n\n<p><strong>Accounts Found:</strong> ${data.found}</p>\n\n<p><strong>Not Found:</strong> ${data.notFound}</p>\n\n<p><strong>Rate Limited:</strong> ${data.rateLimited}</p>\n\n<p><strong>Total Checked:</strong> ${data.total}</p>\n\n<h2>Accounts Found</h2>\n\n<table>\n\n<tr>\n\n<th>Platform</th>\n\n<th>Website</th>\n\n</tr>\n\n${rows}\n\n</table>\n\n</body>\n\n</html>\n`;\n\nreturn [{\n json: {\n html\n }\n}];"
},
"typeVersion": 2
},
{
"id": "58644ea1-4a97-498c-804a-e3bc1b3768a1",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-80,
-192
],
"parameters": {
"color": 7,
"width": 432,
"height": 512,
"content": "# Form & Input\n\n\n\n\n\n\n\n\n\n\n\nStarts the workflow whenever a user submits the audit form.\n### User Action Required\n Input Email Address"
},
"typeVersion": 1
},
{
"id": "e85f8c6a-1c9f-4dc5-9a35-5fc36418be3c",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
400,
-192
],
"parameters": {
"color": 3,
"width": 400,
"height": 512,
"content": "# Digital Identity Discovery\n\n\n\n\n\n\n\n\n\n\n\nRuns the BreachHound Apify Actor to audit the supplied email address.\n\n### User Action Required\nConnect your Apify API credential before running the workflow."
},
"typeVersion": 1
},
{
"id": "766fe5fc-595b-4ebe-8add-326093b9becc",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
848,
-192
],
"parameters": {
"color": 7,
"width": 384,
"height": 512,
"content": "# Report Generation\n\n\n\n\n\n\n\n\n\n\n\nProcesses the dataset returned by BreachHound.\n"
},
"typeVersion": 1
},
{
"id": "1138d8ce-8fc3-4927-bf47-09550226c0a2",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1280,
-192
],
"parameters": {
"color": 3,
"width": 416,
"height": 512,
"content": "# PDF Generation & Delivery\n\n\n\n\n\n\n\n\n\n\nConverts the HTML report into a professional PDF.\nThen delivers the report using your configured output method.\n\n### User Action Required\nConnect your PDF.co API credential by using your API key from https://app.pdf.co/login."
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"binaryMode": "separate",
"availableInMCP": false,
"executionOrder": "v1"
},
"versionId": "bc60f2e4-7e73-4f1b-9415-876c6fda8c7b",
"nodeGroups": [],
"connections": {
"Set Fields": {
"main": [
[
{
"node": "Run an Actor",
"type": "main",
"index": 0
}
]
]
},
"HTML to PDF": {
"main": [
[
{
"node": "HTTP Request",
"type": "main",
"index": 0
}
]
]
},
"Run an Actor": {
"main": [
[
{
"node": "Get dataset items",
"type": "main",
"index": 0
}
]
]
},
"Convert to HTML": {
"main": [
[
{
"node": "HTML to PDF",
"type": "main",
"index": 0
}
]
]
},
"Data Extraction": {
"main": [
[
{
"node": "Convert to HTML",
"type": "main",
"index": 0
}
]
]
},
"Get dataset items": {
"main": [
[
{
"node": "Data Extraction",
"type": "main",
"index": 0
}
]
]
},
"On form submission": {
"main": [
[
{
"node": "Set Fields",
"type": "main",
"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.
apifyApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow starts from an n8n form submission, runs the BreachHound actor on Apify to discover where an email address is registered, then summarizes the results into an HTML audit report and converts it to a downloadable PDF using PDF.co. Receives an email address (and…
Source: https://n8n.io/workflows/16978/ — 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 n8n workflow collects leads from Google Maps, scrapes their websites via direct HTTP requests, and extracts valid email addresses — all while mimicking real user behavior to improve scraping reli
This n8n template demonstrates how to automatically clone and adapt competitor Facebook ads for your own product using AI. Simply provide a Facebook Ad Library URL and your product image, and the work
Agency Sales Deck Automation: Meta Ad Audit → Gemini Analysis → Gamma Deck. Uses formTrigger, httpRequest, @apify/n8n-nodes-apify. Event-driven trigger; 16 nodes.
viral-cat-video-creator. Uses formTrigger, chainLlm, lmChatMistralCloud, outputParserStructured. Event-driven trigger; 22 nodes.
[VICTOR] Google Maps Extractor. Uses formTrigger, outputParserStructured, lmChatOpenAi, httpRequest. Event-driven trigger; 21 nodes.