Description
n8n-nodes-attestify
Issue certificates from any n8n workflow. This verified community node turns
any completion event in your flow — a course finished, a webinar attended, a CEU earned — into a
real certificate for your recipient, with **no signup, no API key, and zero credentials to
configure**. Drop the verify_url it returns into your completion emails, LMS, or spreadsheet.
And every certificate it issues gets a permanent, tamper-evident public verify page (powered by
Attestify) that anyone — an employer, a licensing board, the
recipient themselves — can check in two clicks, with no account and no app. That verify page is the
difference: unlike PDF or image certificate generators, whose output anyone can edit or photoshop,
an Attestify certificate is backed by an Ed25519-signed server-side record — change one
character and verification fails.
- Issues a real certificate from your workflow — no signup, no API key, zero credentials.
- Permanent public verify page per certificate (
verify_urlin the node output). - Ed25519-signed record (
signedrecordurl) verifiable against Attestify’s published public key. - Recipient PII stays on your side — email is never stored in the signed record or shown publicly.
- SSL/TLS (X.509) certificates — securing servers. This node does not issue those; n8n has
- Completion / award / credential certificates — course completions, CE credits, webinar
n8n community nodes documentation »
Which kind of “certificates”? (not SSL/TLS)
“Certificates” in n8n can mean two unrelated things:
no ACME/CA issuance node, and TLS issuance is normally handled outside n8n (Let’s Encrypt via
Traefik/Caddy/certbot, or a private CA such as step-ca).
attendance, achievements. That is what this node issues: a verifiable certificate with a
permanent public verify page.
n8n’s template library also has certificate-generator workflows (Google Slides, PDF services,
image APIs). Those produce a static PDF/PNG — fine as a keepsake, but anyone can edit one.
Use this node when the certificate needs to be checkable: it returns a permanent verify_url
backed by an Ed25519-signed server record, instead of (or alongside) a static file.
Installation
Follow the community-nodes install guide,
then enter the package name:
n8n-nodes-attestify
(Self-hosted n8n → Settings → Community nodes → Install.)
Operation
Certificate → Issue Certificate — issues one verifiable certificate per input item.
| Field | Description |
|—|—|
| Organization / Issuer | Who is issuing the certificate (shown on the cert + verify page). |
| Course / Credential | What was completed. |
| Recipient Name | The recipient. Defaults to {{ $json.name }} so it maps straight from an incoming row. |
| Recipient Email (optional) | Echoed back so you can join it to the verify URL for a mail-merge. Never stored in the signed record and never shown on the public verify page — recipient PII stays on your side. |
| Options → API Base URL | Defaults to https://attestify.novadyne.ai. Change only for self-hosting/testing. |
Output (per item)
{
"cert_id": "…",
"recipient_name": "Jane Doe",
"recipient_email": "jane@example.com",
"course": "4-Hour CE — Ethics",
"issuer": "Acme Real Estate Academy",
"verify_url": "https://attestify.novadyne.ai/cert/verify/…",
"certimageurl": "https://attestify.novadyne.ai/cert/c/….svg",
"signedrecordurl": "https://attestify.novadyne.ai/cert/c/….json"
}
Wire the output into a Send Email / Gmail / LMS node to deliver each recipient their
verifyurl. The signedrecord_url is the Ed25519-signed record anyone can verify against
Attestify’s published public key — change one character in the certificate and verification fails.
No account, no key
The free Attestify service requires no signup and no API key, so this node ships with no
credentials. A modest per-IP daily issuance cap applies (anti-abuse).
New to Attestify? How to vet this node (trust & provenance)
A fair question for any young community node. Every trust fact below is independently checkable —
none requires taking our word for it:
verification review and is listed in the in-app node browser (including n8n Cloud) as a
verified community node.
(OIDC), so every version on npm carries a
provenance attestation tying it to the exact public source commit and build run. No
maintainer-held publish token exists.
signedrecordurl returns the canonical record and its Ed25519 signature; the public key is published at
/.well-known/attestation-key.
Verify any certificate yourself, offline:
import json, base64, urllib.request
from cryptography.hazmat.primitives.asymmetric.ed25519 import Ed25519PublicKey def fetch(url):
req = urllib.request.Request(url, headers={"User-Agent": "cert-verify-example"})
return json.load(urllib.request.urlopen(req))
rec = fetch("https://attestify.novadyne.ai/cert/c/ID>.json") # signedrecord_url
key = fetch("https://attestify.novadyne.ai/.well-known/attestation-key")
pub = Ed25519PublicKey.frompublicbytes(base64.b64decode(key["publickeybase64"]))
pub.verify(base64.b64decode(rec["signature_b64"]), rec["canonical"].encode())
print("valid") # raises InvalidSignature if even one character was altered
This is the difference between cryptographic tamper-evidence and a hosted lookup page that
merely says “found”: a lookup only proves a record exists in the vendor’s database; a signature
proves the record’s content is exactly what was issued, checkable by anyone, forever.
Example
Schedule/Webhook → (your LMS "course completed" rows) → Attestify (Issue) → Gmail (send verify_url)
Importable workflow — run it in 30 seconds, no install:
workflows/issue-verifiable-certificate.json is a
2-node workflow (Manual Trigger → HTTP Request) that issues a real verifiable certificate from the
free /cert/issue API and returns a public verify_url. Copy the file’s contents, paste onto an n8n
canvas (⌘/Ctrl-V), and hit Execute workflow. It uses only n8n’s built-in nodes — no
community-node install required — so it’s the fastest way to see issuance end-to-end; swap in the
typed Attestify → Issue Certificate node above once installed.
Tutorial
Step-by-step walkthrough of the underlying API (works with or without n8n — plain HTTP, curl/Python/JS):
How to issue verifiable completion certificates programmatically — free API + public verify page