{
  "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
          }
        ]
      ]
    }
  }
}