{
  "name": "Automated workshop certificate system with JotForm, email verification & Google Workspace",
  "nodes": [
    {
      "id": "5e7bec79-8951-4388-890c-73e37a6ef8b2",
      "name": "IF - Email Valid?",
      "type": "n8n-nodes-base.if",
      "position": [
        560,
        560
      ]
    },
    {
      "id": "1e9a2800-bab2-47f2-8fff-5f52f0d3e903",
      "name": "Prepare Certificate Data",
      "type": "n8n-nodes-base.code",
      "position": [
        880,
        368
      ]
    },
    {
      "id": "ff60e9dc-464e-4b54-8bbd-1e90874436d5",
      "name": "Download PDF File",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1536,
        368
      ]
    },
    {
      "id": "f8ec0f94-b7c6-43c8-8598-7cb5e324b523",
      "name": "Send Confirmation Email",
      "type": "n8n-nodes-base.gmail",
      "position": [
        2464,
        368
      ]
    },
    {
      "id": "96b09356-225b-41dd-8684-b003df5b7f1c",
      "name": "Log to Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2176,
        368
      ]
    },
    {
      "id": "4c34e01e-c47f-4879-a79b-f358b4e774e6",
      "name": "Log Failed Registrations",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        880,
        736
      ]
    },
    {
      "id": "0d26d3cd-509b-4f95-b188-00d41bb17e3c",
      "name": "JotForm Trigger",
      "type": "n8n-nodes-base.jotFormTrigger",
      "position": [
        -224,
        544
      ]
    },
    {
      "id": "de18b560-5a30-4b26-998f-a701590b4e9d",
      "name": "Verifi Email",
      "type": "n8n-nodes-verifiemail.verifiEmail",
      "position": [
        0,
        752
      ]
    },
    {
      "id": "1eb2b648-b557-42f1-aed5-d6b3f5b6419e",
      "name": "Merge",
      "type": "n8n-nodes-base.merge",
      "position": [
        288,
        560
      ]
    },
    {
      "id": "5b63e21f-3504-4081-8422-800bda3803b5",
      "name": "HTML to PDF",
      "type": "n8n-nodes-htmlcsstopdf.htmlcsstopdf",
      "position": [
        1200,
        368
      ]
    },
    {
      "id": "d7504f9f-ee7e-41b0-8ec3-28acf6b139be",
      "name": "Upload file",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        1856,
        368
      ]
    },
    {
      "id": "cfe08577-ff68-4961-af0a-20ad40a7393b",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -928,
        -32
      ],
      "parameters": {
        "width": 368,
        "height": 336,
        "content": "## 🎯 WORKFLOW OVERVIEW\n\n**Purpose:** Automated Pre-Issued Workshop Certificate System\n\n**What This Workflow Does:**\n1. ✅ Captures workshop registrations from Jotform\n2. ✅ Verifies email validity using"
      }
    },
    {
      "id": "3bc160b5-b5f3-4b6d-82cc-85a70e6f7beb",
      "name": "Sticky Note - Step 3 Merge",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        176,
        336
      ],
      "parameters": {
        "width": 300,
        "height": 381,
        "content": "## 🔀 STEP 3: Data Merge\n\n**What It Does:**\n- Combines Jotform data with email verification results\n- Merges by position (1st submission + 1st verification)\n- Creates unified data object for downstream"
      }
    },
    {
      "id": "343482c5-6df5-41c2-9954-5047ff76d18f",
      "name": "Sticky Note - Step 5 Data Prep",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        784,
        160
      ],
      "parameters": {
        "width": 348,
        "height": 343,
        "content": "## 🧠 STEP 5: Data Preparation\n\n**What It Does:**\n- Formats and cleans data for certificate\n- Builds full name from first + last\n- Formats date in readable format\n- Generates unique Certificate ID\n- Cr"
      }
    },
    {
      "id": "66a19ac2-10fb-465d-b54c-08593974aae0",
      "name": "Sticky Note - Step 6 PDF Generation",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1136,
        112
      ],
      "parameters": {
        "width": 316,
        "height": 405,
        "content": "## 🎨 STEP 6: PDF Certificate Generation\n\n**Certificate Design Features:**\n✨ Professional Georgia serif font\n✨ Blue theme (#1a5fb4) with double border\n✨ Centered layout\n✨ QR code for instant check-in\n✨"
      }
    },
    {
      "id": "7e7c6eda-9d79-4cc2-97a4-3c70a1c42f5b",
      "name": "Sticky Note - Step 7 Download PDF",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1456,
        128
      ],
      "parameters": {
        "width": 316,
        "height": 377,
        "content": "## ⬇️ STEP 7: Download PDF File\n\n**What It Does:**\n- Downloads PDF from generated URL\n- Converts to binary data\n- Prepares for Google Drive upload\n- Makes PDF available for email attachment\n\n\n"
      }
    },
    {
      "id": "556585b6-08ee-43c7-9ba0-2d770495b442",
      "name": "Sticky Note - Step 8 Google Drive",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1776,
        112
      ],
      "parameters": {
        "width": 300,
        "height": 407,
        "content": "## ☁️ STEP 8: Save to Google Drive\n\n**What It Does:**\n- Uploads PDF certificate to Google Drive\n- Organizes in \"Attendee Data\" folder\n- Generates shareable web view link\n- Creates permanent backup of "
      }
    },
    {
      "id": "b236ab7c-1343-401b-809a-46da6da52e78",
      "name": "Sticky Note - Step 9 Google Sheets",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2080,
        -80
      ],
      "parameters": {
        "width": 316,
        "height": 601,
        "content": "## 📊 STEP 9: Log to Google Sheets\n\n**Google Sheet:**\n\"Workshop Registrations & Certificates\"\n\n**Logged Fields:**\n\n| Columns | \n|--------|\n- Timestamp \n- Full Name \n- Email \n- Workshop  \n- Date \n- Cert"
      }
    },
    {
      "id": "92f23ba3-991c-478f-a73a-6066d71c81c9",
      "name": "Sticky Note - Step 10 Gmail",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2400,
        0
      ],
      "parameters": {
        "width": 380,
        "height": 519,
        "content": "## 📧 STEP 10: Send Confirmation Email\n\n**What It Does:**\n- Sends beautiful HTML confirmation email\n- Includes event details & QR code\n- Provides Drive link to certificate\n- Professional branded templa"
      }
    },
    {
      "id": "e52d6ffe-cd32-410f-bc4a-6df2188e3159",
      "name": "Sticky Note - False Branch",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        800,
        720
      ],
      "parameters": {
        "width": 380,
        "height": 409,
        "content": "\n\n\n\n\n\n\n\n\n\n\n\n## ❌ FALSE BRANCH: Invalid Email Path\n\n**Common Failure Reasons:**\n❌ Invalid email format\n❌ Disposable/temporary email\n❌ Domain doesn't exist\n❌ Mailbox doesn't exist\n❌ SMTP verification fa"
      }
    },
    {
      "id": "c28f87a3-365f-4fba-aec5-3f9db0f0a571",
      "name": "Sticky Note - Credentials Status",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -928,
        336
      ],
      "parameters": {
        "width": 327,
        "height": 339,
        "content": "## 🔐 CREDENTIALS SETUP CHECKLIST\n\n**Required Credentials (All Configured ✅):**\n\n1. **✅ Jotform API**\n2. **✅ VerifiEmail API**\n3. **✅ Google Drive OAuth2**\n   - Folder: Attendee Data\n4. **✅ Gmail OAuth"
      }
    },
    {
      "id": "8a808aa3-96eb-40c8-b2e1-e46258d936e4",
      "name": "Sticky Note - Step 1 Jotform",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -464,
        336
      ],
      "parameters": {
        "width": 364,
        "height": 347,
        "content": "## 📝 STEP 1: Registration Form Trigger\n\n**What It Does:**\n- Listens for new workshop registrations\n- Captures form data in real-time\n- Starts the automation workflow\n\n**Captured Fields:**\n- Full Name "
      }
    },
    {
      "id": "9e18f646-f00f-4a08-a22d-866d735cba3b",
      "name": "Sticky Note - Step 2 Email Verification",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -128,
        736
      ],
      "parameters": {
        "width": 364,
        "height": 367,
        "content": "\n\n\n\n\n\n\n\n\n\n\n\n## ✉️ STEP 2: Email Verification\n\n**What It Does:**\n- Validates email deliverability in real-time\n- Checks for disposable/temporary emails\n- Verifies email format and DNS records\n- Detects"
      }
    },
    {
      "id": "f59bfa08-733e-46d2-925a-97f717ee8162",
      "name": "Sticky Note - Step 4 IF Condition",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        480,
        288
      ],
      "parameters": {
        "width": 300,
        "height": 417,
        "content": "## 🔀 STEP 4: Conditional Split\n\n**What It Does:**\n- Routes workflow based on email validation\n- Splits into two branches: SUCCESS & FAILURE\n\n**Condition:**\n`{{ $json.valid }} === true`\n\n"
      }
    }
  ],
  "connections": {
    "Merge": {
      "main": [
        [
          {
            "node": "IF - Email Valid?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTML to PDF": {
      "main": [
        [
          {
            "node": "Download PDF File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Upload file": {
      "main": [
        [
          {
            "node": "Log to Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Verifi Email": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "JotForm Trigger": {
      "main": [
        [
          {
            "node": "Verifi Email",
            "type": "main",
            "index": 0
          },
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download PDF File": {
      "main": [
        [
          {
            "node": "Upload file",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "IF - Email Valid?": {
      "main": [
        [
          {
            "node": "Prepare Certificate Data",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Log Failed Registrations",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Log to Google Sheets": {
      "main": [
        [
          {
            "node": "Send Confirmation Email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send Confirmation Email": {
      "main": [
        []
      ]
    },
    "Prepare Certificate Data": {
      "main": [
        [
          {
            "node": "HTML to PDF",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}