Paolo Ronco
PORTFOLIO
From a simple MVP to a reusable, production-ready workflow
It was a real pleasure to connect with Michal Liska, Chief Operating Officer at PDF Generator API by Actual Reports, and to see this project featured as a real-world example inside the n8n ecosystem.
What started as a simple MVP to automate certificate generation evolved into a reusable, template-based workflow that is now shared with the community. This article documents that evolution, explains how the system works, and shows how you can reuse it in your own environment.
👉 The full story from the PDF Generator API team is available here:https://pdfgeneratorapi.com/blog/how-the-n8n-community-sparked-our-new-partnership-program
This template provides a complete and reusable solution to automatically create, distribute, and verify digital certificates using n8n, with PDF Generator API templates for PDF generation.
The workflow is designed to cover the entire lifecycle of a certificate, from the initial request to public verification, in a clean and maintainable way.
It is an MVP, but already fully functional, tested, and production-ready, and can be reused with minimal configuration in different environments.
Example-certificate
Visit my Github n8n templates: https://github.com/paoloronco/n8n-templates
See the workflow on n8n Creators hub: coming soon
In many real-world scenarios, certificates are still:
This template solves those problems by providing:
YouTube Video: https://youtu.be/eqSWoPndVUg
This workflow is the evolution of the original HTML-based version.
The PDF layout is managed entirely through PDF Generator API templates.
The system exposes two main endpoints:
POST /certifications2
Handles:
GET /certificationscheck
Allows anyone to verify:
/certifications2
Each certificate is stored in an n8n Data Table, creating a persistent registry.
Stored fields:
This registry is used both for validation and auditing.
The workflow uses PDF Generator API – Generate a PDF document node.
Instead of HTML, it sends a JSON payload that maps directly to template placeholders.
Example:
{ "DueDate": "{{$now.toISODate()}}", "Candidate": "{{$('Webhook_Creation').item.json.headers.name}} {{$('Webhook_Creation').item.json.headers.surname}}", "CourseName": "{{ $('Webhook_Creation').item.json.headers.course }}", "ID": "{{ $('Generate_Certification_ID').item.json.id }}" }
⚠️ The JSON must be valid and keys must match the template placeholders exactly.
The verification endpoint:
GET /certificationscheck?id=CERTIFICATION-ID
Returns:
If valid: { "ok": true, "name": "John", "surname": "Doe" } If not valid { "ok": false }
This makes certificates publicly verifiable and tamper-resistant.
The repository includes:
{Candidate}
{CourseName}
{DueDate}
{ID}
You can freely customize:
No workflow changes are required when updating the template.
PDF Generator API provides an AI Gem powered by Gemini to help users create and refine templates.
👉 AI Gem link: https://gemini.google.com/gem/1RrpDHQocP7E7C7Bpsc7yhDT-AkuKNuT_?usp=sharing
You can:
Before importing the workflow, you need:
Name
Surname
CertificationID
workflow.json
Update these nodes:
Insert_Certification
Find_Certification_By_ID
Find_Certification_By_ID1
Click Activate and you’re ready to go.
This project started as an MVP, but it is:
You can use it for free, adapt it to your needs, and deploy it in production with minimal changes.
This repository demonstrates how:
can produce real-world, production-grade solutions, not just demos.
Check your inbox or spam folder to confirm your subscription.
Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *
Commento *
Nome *
E-mail *
Sito web
Salva il mio nome, email e sito web in questo browser per la prossima volta che commento.
Invia commento