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-templates
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.
Check your inbox or spam folder to confirm your subscription.
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