{
  "name": "Guide Delivery mit Double Opt-in",
  "nodes": [
    {
      "parameters": {
        "path": "guide-delivery-double-opt-in",
        "httpMethod": "POST",
        "responseMode": "responseNode",
        "options": {}
      },
      "id": "guide-anmeldung-empfangen",
      "name": "Guide Anmeldung empfangen",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2,
      "position": [
        0,
        0
      ]
    },
    {
      "parameters": {
        "mode": "manual",
        "duplicateItem": false,
        "assignments": {
          "assignments": [
            {
              "id": "email",
              "name": "email",
              "value": "={{ $json.email || \"kunde@example.com\" }}",
              "type": "string"
            },
            {
              "id": "quelle",
              "name": "quelle",
              "value": "={{ $json.source || \"Guide\" }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "id": "anmeldung-normalisieren",
      "name": "Anmeldung normalisieren",
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        260,
        0
      ]
    },
    {
      "parameters": {
        "method": "GET",
        "url": "https://example.com/api/leads",
        "sendBody": true,
        "contentType": "json",
        "jsonBody": "={{ $json }}",
        "options": {},
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "email",
              "value": "={{ $json.email }}"
            }
          ]
        }
      },
      "id": "bestehenden-lead-suchen",
      "name": "Bestehenden Lead suchen",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        520,
        -120
      ]
    },
    {
      "parameters": {
        "jsCode": "return items.map((item) => ({ json: { ...item.json, token: \"demo-token\", confirmUrl: \"https://example.com/guide/confirm?token=demo-token\" } }));"
      },
      "id": "bestaetigungs-token-erzeugen",
      "name": "Bestaetigungs Token erzeugen",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        520,
        100
      ]
    },
    {
      "parameters": {
        "mode": "combine",
        "combineBy": "combineByPosition",
        "options": {}
      },
      "id": "lead-und-token-verbinden",
      "name": "Lead und Token verbinden",
      "type": "n8n-nodes-base.merge",
      "typeVersion": 3.2,
      "position": [
        780,
        0
      ]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://example.com/api/leads/consent",
        "sendBody": true,
        "contentType": "json",
        "jsonBody": "={\"email\":\"{{$json.email}}\",\"status\":\"pending\"}",
        "options": {}
      },
      "id": "einwilligung-speichern",
      "name": "Einwilligung speichern",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        1040,
        -120
      ]
    },
    {
      "parameters": {
        "fromEmail": "team@example.com",
        "toEmail": "kunde@example.com",
        "subject": "Bitte Guide Anmeldung bestaetigen",
        "html": "<p>Bitte bestaetigen Sie Ihre Anmeldung ueber https://example.com.</p>",
        "options": {}
      },
      "id": "double-opt-in-mail-senden",
      "name": "Double Opt-in Mail senden",
      "type": "n8n-nodes-base.emailSend",
      "typeVersion": 2.1,
      "position": [
        1040,
        120
      ]
    },
    {
      "parameters": {
        "path": "guide-confirm",
        "httpMethod": "GET",
        "responseMode": "responseNode",
        "options": {}
      },
      "id": "bestaetigungslink-empfangen",
      "name": "Bestaetigungslink empfangen",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2,
      "position": [
        1300,
        0
      ]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://example.com/api/leads/confirm",
        "sendBody": true,
        "contentType": "json",
        "jsonBody": "={\"token\":\"{{$json.token}}\",\"status\":\"confirmed\"}",
        "options": {}
      },
      "id": "status-auf-bestaetigt-setzen",
      "name": "Status auf bestaetigt setzen",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        1560,
        -120
      ]
    },
    {
      "parameters": {
        "fromEmail": "team@example.com",
        "toEmail": "kunde@example.com",
        "subject": "Ihr n8n Guide",
        "html": "<p>Der n8n Einsteiger-Guide liegt als PDF unter https://n8nexperten.de/guide/n8n-einsteiger-guide.pdf.</p>",
        "options": {}
      },
      "id": "guide-link-zustellen",
      "name": "Guide Link zustellen",
      "type": "n8n-nodes-base.emailSend",
      "typeVersion": 2.1,
      "position": [
        1560,
        120
      ]
    },
    {
      "parameters": {
        "respondWith": "json",
        "responseBody": "={\"ok\":true,\"message\":\"Bestaetigt\"}",
        "options": {}
      },
      "id": "danke-seite-ausgeben",
      "name": "Danke Seite ausgeben",
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1.4,
      "position": [
        1820,
        0
      ]
    }
  ],
  "connections": {
    "Guide Anmeldung empfangen": {
      "main": [
        [
          {
            "node": "Anmeldung normalisieren",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Anmeldung normalisieren": {
      "main": [
        [
          {
            "node": "Bestehenden Lead suchen",
            "type": "main",
            "index": 0
          },
          {
            "node": "Bestaetigungs Token erzeugen",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Bestehenden Lead suchen": {
      "main": [
        [
          {
            "node": "Lead und Token verbinden",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Bestaetigungs Token erzeugen": {
      "main": [
        [
          {
            "node": "Lead und Token verbinden",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Lead und Token verbinden": {
      "main": [
        [
          {
            "node": "Einwilligung speichern",
            "type": "main",
            "index": 0
          },
          {
            "node": "Double Opt-in Mail senden",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Einwilligung speichern": {
      "main": [
        [
          {
            "node": "Bestaetigungslink empfangen",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Double Opt-in Mail senden": {
      "main": [
        [
          {
            "node": "Bestaetigungslink empfangen",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Bestaetigungslink empfangen": {
      "main": [
        [
          {
            "node": "Status auf bestaetigt setzen",
            "type": "main",
            "index": 0
          },
          {
            "node": "Guide Link zustellen",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Status auf bestaetigt setzen": {
      "main": [
        [
          {
            "node": "Danke Seite ausgeben",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Guide Link zustellen": {
      "main": [
        [
          {
            "node": "Danke Seite ausgeben",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1"
  }
}
