DEV Community

Cover image for Batch Certificate Generation with n8n — 200+ Certs in 2.5 Minutes
Özgür S.
Özgür S.

Posted on • Originally published at renderpix.dev

Batch Certificate Generation with n8n — 200+ Certs in 2.5 Minutes

Every time a course batch completes, you have a list of students who need certificates.

The manual way: open Canva, duplicate the template, change the name, export, repeat — for every single student.

If you have 10 students, that's annoying. If you have 200, that's a full afternoon.

The better way

A single n8n workflow that:

  1. Reads student names from Google Sheets
  2. Calls the RenderPix batch API
  3. Gets back 200 certificate images
  4. Emails each student their certificate

Total time: ~2.5 minutes. Total manual work: zero.

What you'll need

  • A RenderPix account (free tier works for testing, Starter plan for production)
  • n8n (self-hosted or cloud)
  • n8n-nodes-renderpix community node
  • A Google Sheet with student data

Install the n8n node:

npm install n8n-nodes-renderpix
Enter fullscreen mode Exit fullscreen mode

Or search "RenderPix" in n8n's community node panel.

Step 1 — Design your certificate template

Write your certificate in plain HTML. Here's a clean starting point:

<div style="width:1200px;height:850px;background:white;
  display:flex;flex-direction:column;align-items:center;
  justify-content:center;border:20px solid #0f172a;
  font-family:Georgia,serif;padding:60px;box-sizing:border-box">

  <div style="font-size:16px;letter-spacing:5px;color:#64748b;
    text-transform:uppercase;margin-bottom:24px">
    Certificate of Completion
  </div>

  <div style="width:80px;height:2px;background:#22d3ee;margin-bottom:32px"></div>

  <div style="font-size:52px;font-weight:700;color:#0f172a;margin-bottom:16px">
    {{name}}
  </div>

  <div style="font-size:18px;color:#475569;text-align:center;max-width:600px">
    has successfully completed
  </div>

  <div style="font-size:28px;font-weight:600;color:#1e293b;margin:16px 0 40px">
    {{course}}
  </div>

  <div style="font-size:14px;color:#94a3b8">{{date}}</div>
</div>
Enter fullscreen mode Exit fullscreen mode

Notice the {{name}}, {{course}}, {{date}} placeholders — RenderPix replaces these at render time.

Step 2 — Set up Google Sheets

Create a sheet with these columns:

name course date
Jane Smith Advanced n8n Automation June 2026
John Doe Advanced n8n Automation June 2026

Step 3 — Build the n8n workflow

Nodes:

  1. Manual trigger (or schedule / webhook)
  2. Google Sheets — read all rows
  3. Code node — map rows to batch items array
  4. RenderPix — batch render
  5. Loop Over Items — iterate results
  6. Gmail — send each student their certificate

Code node:

const rows = $input.all();

return [{
  json: {
    items: rows.map(row => ({
      html: `YOUR_CERTIFICATE_HTML_HERE`,
      vars: {
        name: row.json.name,
        course: row.json.course,
        date: row.json.date
      },
      width: 1200,
      height: 850,
      format: 'png'
    }))
  }
}];
Enter fullscreen mode Exit fullscreen mode

RenderPix node config:

  • Operation: Batch Render
  • Items: {{ $json.items }}
  • API Key: your key from renderpix.dev dashboard

Step 4 — Handle the results

The batch endpoint returns:

{
  "results": [
    {
      "index": 0,
      "success": true,
      "image": "data:image/png;base64,iVBORw0KGgo...",
      "duration_ms": 287
    }
  ],
  "total": 200,
  "succeeded": 200,
  "failed": 0
}
Enter fullscreen mode Exit fullscreen mode

Each image field is a base64-encoded PNG. In n8n, decode it and attach to an email.

If one cert fails, the rest still go out — the batch endpoint returns HTTP 207 with per-item success/failure flags.

Results

Real numbers from a test run:

  • 200 certificates
  • ~2.5 minutes total
  • 100% success rate
  • ~$0.0016 per certificate on Starter plan

Compared to alternatives

Approach Time for 200 certs Custom design
Manual Canva 3-4 hours Limited
PDF library (PDFKit) Dev time + hosting Full
RenderPix batch 2.5 minutes Full HTML/CSS

Wrapping up

The workflow JSON is available at github.com/ozgurdogus/renderpixn8n.

RenderPix free tier: 100 renders/month, no credit card required.
renderpix.dev

Top comments (0)