Paolo Ronco
PORTFOLIO
This Guide contains a complete end-to-end certification management system built with n8n.It automates the entire lifecycle of a digital certificate — from creation, to PDF generation, to verification via API or a user-friendly HTML page.
See all my workflows on Github paoloronco/n8n-templatesVideo: YouTube – Certificate Creator & Validator
See the workflow on n8n Creators hub: [coming soon]
Automatically generates a fully personalized certificate when a new request is received:
/certifications
Stores each issued certificate in an n8n Data Table, including:
This creates a persistent, searchable certification registry.
Builds a professional certified PDF using PDF Generator API:
document.pdf
Automatically sends the generated certificate to the candidate:
Provides a secure verification system through:
/certificationscheck
Includes a ready-to-use HTML page for certificate lookup:
certificationscheck
Files included in the repo:Certification_Check.html
Certification_Check.html
In short, this workflow automates:✔ Certificate generation✔ Certificate storage✔ Certificate validation✔ PDF production✔ Email distribution✔ Public verification interface
Together, these features form a complete, production-ready certified management platform powered by n8n.
🛠 Requirements
Before using this workflow, you must have:
Name
Surname
Certification ID
pdfGeneratorApi
gmailOAuth2
🚀 Installation
In n8n:
Update the following nodes to point to your Data Table:
Insert_Certificaton
Find_Certification_By_ID
Find_Certification_By_ID1
Make sure the Data Table has the fields:
In the workflow:
Click Activate in n8n.
🔧 How the Workflow Works
The workflow starts with:
POST https://YOUR-N8N-DOMAIN.com/webhook/certification Headers: name: John surname: Doe course: Advanced n8n email: [email protected]
The webhook passes these headers to the next nodes.
JavaScript used:
const uniqueId = Date.now().toString(36).toUpperCase() + Math.random().toString(36).substring(2, 8).toUpperCase(); return [{ id: uniqueId }];
Produces something like:LQ4Z5H8R2A1F
LQ4Z5H8R2A1F
The workflow uses:
Certification_ID_Exists
If the ID already exists, it loops back and generates a new one.
If the ID is unique, the workflow continues.
Saves:
Using the PDF Generator API, the workflow builds a certificate from an HTML template.
The default HTML provided in the workflow is just an example and can be fully customized.You can freely change:
By default, the example template includes:
After the HTML is rendered, this node generates a PDF file and outputs it as binary.document.pdf, which is then attached to the email in the next step.
binary.document.pdf
The workflow sends an email with:
Subject: Your certification is ready!Attachment: the generated document.pdf
Your certification is ready!
The recipient is the email provided to the webhook.
🔍 Certificate Verification (/certificationscheck)
The workflow provides two different ways to verify the authenticity of a certificate:
You can verify a certificate by sending a manual HTTP request:
POST /certificationscheck Headers: id: CERTIFICATION-ID-HERE
Certification_Exists
{ "ok": "true", "name": "John", "surname": "Doe" }
{ "ok": "false" }
🌐 Using This on Your Website
The repository also includes a ready-to-use verification webpage:Certification_Check.html
Inside the HTML page, the verification request uses:
fetch("https://YOUR-N8N-DOMAIN.com/webhook/certificationscheck",
Replace YOUR-N8N-DOMAIN.com with the actual domain where your n8n instance is hosted.
This mini site allows users to:
The page communicates with your /certificationscheck endpoint using JavaScript fetch() and behaves exactly like the manual API request — but in a clean, simple interface.
fetch()
This makes it easy to embed certificate verification directly into your website, LMS, or customer portal.
Your email address will not be published. Required fields are marked *
Comment *
Name *
Email *
Website
Save my name, email, and website in this browser for the next time I comment.
Post Comment