The problem
You designed a beautiful certificate in Canva. Now you need to generate 500 personalized versions for your course graduates, training participants, or event attendees.
Canva can't do this automatically. You'd have to manually edit each certificate, change the name, download, and repeat. That's hours of tedious work.
The solution: Export your Canva design once, import it into TemplateFox, add dynamic fields, and connect it to Make. Make's Iterator module makes batch processing entire cohorts trivial — feed in a spreadsheet of graduates and get back a personalized certificate for each one.
Design your certificate in Canva
We're not going to design a certificate from scratch for this tutorial. Already have one? Jump to step 1.3.
1.1 — Find a template
Let's grab a template and customize it:
- Go to canva.com and sign up (or log in)
- In the search bar, type "certificate"
- Browse the templates and select one you like

1.2 — Customize the template
Click "Customize this template" to open it in the Canva editor. Add your branding — logo, colors, fonts.

1.3 — Remove dynamic text
Delete any text that will change per certificate (recipient name, date, etc.). We'll add these as dynamic fields in TemplateFox.
In my case, for simplicity, I'll just remove the student's first and last name.
- Select the recipient name text
- Delete it completely

Tip: Keep your design elements (borders, decorations) — just clear the text that will change per certificate.
1.4 — Export as PNG
Export your certificate as an image:
- Click Share → Download
- Choose PNG format
- Click Download
Why PNG? Simpler to work with — no font embedding issues. Your design becomes a background image.
Import and configure on TemplateFox
2.1 — Import the design
Create a new template and import your Canva design:
- Go to Templates in your dashboard
- Click Create Template
- Choose Fixed (single-page documents)
- Change dimension to A4 Landscape
- Set zoom to 75% to see the full page
- Extend the initial section to fill the entire page
- Click New Element → Image
- Upload your PNG and extend it to cover the whole background — it should fit perfectly
2.2 — Add dynamic fields
Add text fields that will be populated from Make. For this demo, we'll add several fields that cover a typical certificate:
- Add a Text element
- Type
{{name}} - Position it where the recipient name should appear
- Set the font to Great Vibes at size 90 for an elegant signature look
- Center the text horizontally and align it to the bottom of the text box
- Adjust line spacing so the text sits properly at the bottom (for Great Vibes, 0.8 works well)
- Enable Autoscale Down so long names automatically shrink to fit
Common dynamic fields you can use:
{{name}}— Student/recipient name{{course_title}}— Course or program name{{completion_date}}— Date of completion{{certificate_id}}— Unique certificate number
Tip: Click the Preview tab and add test data in the JSON panel. Test with both short and long names to verify Autoscale Down works correctly — try {"name": "Jo"} and {"name": "Christopher Montgomery-Williams"} to make sure the text scales properly in both cases.
Connect with Make
3.1 — Create the scenario
Create a Make scenario to connect your data source to TemplateFox:
- Go to make.com and create a new scenario
- Add a trigger module:
- Course platform (Teachable, Thinkific, Kajabi) → "Watch Enrollments" or "Course Completed"
- Google Sheets → "Watch Rows"
- Typeform → "Watch Responses"
- Add an HTTP module (Make > HTTP > Make a request)
- Configure the HTTP module:
- URL:
https://api.pdftemplateapi.com/v1/pdf - Method: POST
- Headers:
x-api-key: your_api_keyandContent-Type: application/json - Body: JSON with your template ID and dynamic data
- URL:
Example HTTP body
{
"template_id": "your-template-id",
"data": {
"name": "{{1.student_name}}",
"course_title": "{{1.course_name}}",
"completion_date": "{{1.completed_at}}",
"certificate_id": "CERT-{{1.enrollment_id}}"
}
}Screenshot: Make scenario with trigger and HTTP module configured
New to Make? Learn more about our Make PDF integration — visual scenario builder, 1,800+ app connections, no code required.
3.2 — Add email module
Add a module to email the certificate to the recipient:
- Add a Gmail, Microsoft 365 Email, or SMTP module after the HTTP module
- Set the To field to the student's email from the trigger
- Write a congratulatory subject and message
- Attach the PDF — use the pdf_url from the HTTP module's response
Scenario flow
Screenshot: Complete Make scenario with trigger, HTTP, and email modules
Generate certificates in bulk
The real power of Make for certificate generation is batch processing. Instead of generating one certificate at a time, you can process an entire cohort in a single scenario run.
4.1 — Iterator for cohort processing
Make's Iterator module takes an array of items and processes each one individually. This is perfect for generating certificates from a list of graduates.
- Start with a Google Sheets or Airtable module that fetches all rows (your cohort list)
- Add an Iterator module — it splits the array so each row is processed individually
- Connect the HTTP module (from step 3.1) after the Iterator
- Map each row's fields to the API body —
{{iterator.name}},{{iterator.email}}, etc. - Add the email module after the HTTP module to send each certificate
Bulk scenario flow
Screenshot: Make scenario with Iterator module for bulk certificate processing
Tip: Make processes Iterator items sequentially by default. For a cohort of 200 graduates, expect the scenario to take a few minutes. Each certificate generates in under 2 seconds, but Make adds a small delay between iterations on free plans.
4.2 — Error handling
When processing hundreds of certificates, a single failure shouldn't stop the entire batch. Make has built-in error handling for this.
- Right-click the HTTP module and select "Add error handler"
- Choose the Resume directive — this tells Make to skip the failed item and continue with the next one
- Optionally, add a Google Sheets "Add a Row" module in the error handler to log failures
- After the scenario completes, check the error log and re-run only the failed certificates
Common failure reasons
- • Missing data — Empty name or email in the spreadsheet
- • Invalid characters — Special characters that need encoding
- • Rate limits — Sending too many requests at once (add a delay if needed)
Screenshot: Error handler module attached to HTTP module in Make
Who uses this
- Online course creators — Teachable, Thinkific, Kajabi, Udemy instructors
- Corporate training teams — Compliance certifications, skill assessments
- Event organizers — Conference attendance, webinar participation
- HR departments — Employee recognition, years of service awards