TL;DR: I built a community node, n8n-nodes-attestify, that issues a verifiable digital certificate for any completion event in your workflow and gives you back a permanent public verify page. No account, no API key. It’s free and early — feedback very welcome.
The problem it solves
Plenty of n8n workflows already generate certificates — PDF Generator API, Google Slides, PDF.co, an HTML-to-PDF step. They all produce a file that looks official… and that anyone can edit in two minutes. A recipient can bump their score, change the date, or swap the name. The issuer has no way to prove which one is real, and the employer / licensing board on the other end has no way to check.
What the node does
Certificate → Issue Certificate takes one input item (issuer, course/credential, recipient name, optional email) and returns verify_url, cert_image_url, signed_record_url, and cert_id.
Every certificate gets a permanent, Ed25519-signed public verify page. Change one character in the record and verification fails — so the page is the source of truth, not the PDF. Recipient name maps straight from an incoming row ({{ $json.name }}), so it drops into a batch unchanged.
A nice detail for the compliance-minded: the recipient email is never stored in the signed record and never shown on the public page — it’s only echoed back so you can mail-merge the verify URL. Recipient PII stays on your side.
A workflow that uses it
Schedule / Webhook / Sheet → (your "course completed" rows) → Attestify (Issue) → Gmail (send verify_url)
Point it at an LMS export, a Typeform/Tally submission, an Airtable view, a CRM query — anything that emits “this person finished this thing” — and each recipient gets their own certificate + a link an employer can actually check. (I’ve been testing it against the real-estate continuing-education case, where “prove you completed your CE hours” is a real recurring need, but it’s domain-agnostic.)
No account, no key
The free Attestify service needs no signup and no API key, so the node ships with no credentials — install it and run. A modest per-IP daily issuance cap applies (anti-abuse). If you self-host, there’s an API Base URL option, but the default just works.
Try it
- Node: search n8n-nodes-attestify in Settings → Community nodes → Install — it’s a verified node, so it installs on n8n Cloud as well as self-hosted, and shows up in the in-app node browser under Certificate → Issue Certificate.
- Source / issues: GitHub - novadyne-hq/n8n-nodes-attestify: n8n community node for Attestify — issue verifiable certificates, each with a permanent cryptographically-signed public verify page. · GitHub — bug reports and feature requests welcome.
It’s genuinely early — built by Novadyne. If you try it, I’d love to hear what breaks or what’s missing. If there’s a credential type or an output field that would make it fit your flow better, say so and I’ll add it.