PostPrep
← Blog
2026-06-13

How Course Creators Can Use Canva Bulk Create for Certificates, Lesson Thumbnails, and Student Welcome Cards

Draft — Post #40 · Target keyword: canva bulk create course creators · Meta: Generate completion certificates, lesson thumbnails, and welcome cards from one spreadsheet. The Canva Bulk Create workflow

Pete B.
Pete B.
Founder, Postprep

Draft — Post #40 · Target keyword: canva bulk create course creators · Meta: Generate completion certificates, lesson thumbnails, and welcome cards from one spreadsheet. The Canva Bulk Create workflow built for course creators.

A new cohort just finished your course. Forty-two students, each one expecting a personalized completion certificate with their name on it. The next cohort starts Monday, so you also owe a welcome card per student, a set of module thumbnails for the new lessons you just recorded, and a batch of social proof graphics pulling student headshots and quotes.

Every one of those is the same design with a different name, photo, or course title swapped in. You already know Canva Bulk Create is the tool for this. You build the template, drop your roster into a spreadsheet, add a column of student photo URLs, and hit generate. Canva merges the names fine. The photos come back blank.

This post walks through the full Canva Bulk Create course creators workflow, the one piece Canva will not do on its own, and a repeatable rhythm you can run every time a cohort opens or closes.

Why Canva Bulk Create Stalls for Course Creators

Course businesses run on rosters and assets. Student lists with names and completion dates. Headshots collected at signup. Module artwork. Instructor logos. Testimonial photos. Most of those images already live somewhere as a URL: a Teachable or Kajabi profile, a Google Form upload, a Notion student database, a shared Drive folder.

Canva Bulk Create handles the text without complaint. Drop in a column of student names, course titles, completion dates, or module numbers and Canva merges them in cleanly. Text-only jobs need nothing extra, so if your certificates carry no photo, you can stop here and Bulk Create works out of the box.

Image URLs are the wall. Canva's Bulk Create only accepts images that are physically embedded inside the XLSX file as binary data in a format called DrawingML. A URL is just text to Canva. Canva's own help docs spell it out: direct image URLs and links from cloud storage are not supported and get treated as plain text. So Canva either prints the raw URL string inside your design or leaves the image slot empty. We covered the technical reason in Why Canva Bulk Create Ignores Image URLs.

For a course creator this is the gap between an automated certificate run and an afternoon of manual copy-paste. A roster of 42 students with headshot URLs will not render those headshots unless the images are embedded inside the XLSX before Canva ever sees the file.

The Manual Workaround Most Course Creators Try First

The standard hack goes like this. Open the spreadsheet in Excel, click each photo cell, use Insert > Picture > Place in Cell, point to the downloaded file, repeat for every student. That works if every headshot is already saved to your laptop, sized right, and named to match the row order.

In practice you are pulling headshots from a Google Form, course-platform profiles, and a few stragglers who emailed theirs after the deadline. By the time you have downloaded, renamed, and inserted 42 images by hand, you could have designed each certificate one at a time and called it even.

The other dead end is the =IMAGE() formula in Google Sheets. It looks like it should work, since the photo renders right there in the cell. It does not. =IMAGE() is a live cell reference, not embedded image data, so Canva reads nothing when it parses the file. We broke this down in Why =IMAGE() Doesn't Work for Canva Bulk Create.

What You Need Before You Start

Two things have to be in place.

A Canva template per asset type. Most course businesses cycle through a handful of recurring designs. The common ones look like this.

A completion certificate with student name, course title, completion date, and an optional headshot or instructor signature. A lesson or module thumbnail with module number, lesson title, and a background or icon. A student welcome card with first name and an optional photo. A testimonial graphic with student headshot, name, and a pulled quote. A cohort roster or community spotlight card with photo and name.

Each template needs Canva Bulk Create placeholders for the text variables like {{student_name}}, {{course_title}}, {{completion_date}}, {{module_number}}, plus an image element for the headshot or icon.

A single source-of-truth spreadsheet. One row per output design. Columns for every text field plus a column holding the direct image URL.

If you already keep your roster in Teachable, Kajabi, Thinkific, Notion, or a plain Google Sheet, you are most of the way there. The only column you might need to add is a direct URL to the headshot. The same clean-sheet rules we use for verticals like teachers and coaches apply here: one row per output, one column per field, image URLs in their own column.

Step 1: Collect Image URLs From Wherever They Live

This is the step that eats the most time. Each source exposes URLs differently.

Course platforms (Teachable, Kajabi, Thinkific). Student profile photos usually have a viewable URL in the admin or in your CSV export. Open the profile, right-click the photo, and copy the image address.

Google Drive or Shared Drive. Convert the share link to a direct image URL using the format https://drive.google.com/uc?id=FILEID&export=download, or copy the asset into a public folder on your site CDN.

Google Forms or Typeform uploads. If students uploaded a headshot at signup, each upload has a viewable URL in the form admin. Open the file and copy the image address.

Your own brand assets. Module icons, instructor signatures, and logos stored on your course site or an S3 bucket already have working URLs.

Drop every URL into one column. Name it headshot or image_url and keep the convention consistent.

Step 2: Build the Spreadsheet

A typical course creator's bulk sheet looks like this.

student_namecourse_titlecompletion_datecohortheadshot
Maya OkonkwoLaunch Your Newsletter2026-06-05Spring 2026https://cdn.yourcourse.com/.../maya.jpg
Tom ReillyLaunch Your Newsletter2026-06-05Spring 2026https://cdn.yourcourse.com/.../tom.jpg
Priya NairLaunch Your Newsletter2026-06-05Spring 2026https://cdn.yourcourse.com/.../priya.jpg

Save it as CSV or XLSX. Column names do not have to match Canva exactly because you map them in the Bulk Create panel, but matching names lets Canva auto-connect in one click.

Step 3: Convert the Spreadsheet With Postprep

This is the conversion step Canva refuses to do.

Go to postprep.app, upload your CSV, and pick the column holding the image URLs. Postprep fetches each URL, downloads the image, and embeds it inside the XLSX as DrawingML, the binary format Canva actually reads. Every other column passes through untouched.

A 50-row sheet takes under a minute. The free tier covers 100 rows with no account required, which comfortably handles most single cohorts.

Step 4: Bulk Generate in Canva

Open your certificate template in Canva. Bulk Create runs on paid plans (Canva lists it under Pro and Teams; check your current plan, since eligibility details change). In the left panel click Apps, then Bulk Create. Click Upload data and pick your converted XLSX. Drag each column onto its matching placeholder, or use Auto-connect if your column names already match.

Click Generate designs. Canva produces one finished certificate per row with the student name, course title, date, and headshot already merged.

If you are running three templates off the same roster, a certificate, a welcome card, and a testimonial graphic, take the same XLSX into each template and run Bulk Create three times. One spreadsheet, three sets of branded assets.

Download certificates as a combined PDF for emailing, or as individual PNGs. The image data is embedded at original resolution, so it holds up if a student prints their certificate.

A Realistic Course Creator Workflow

Here is the rhythm for a course business that opens and closes cohorts on a schedule.

Enrollment opens. Export the new roster. Drop names and headshot URLs into one master sheet. Run it through Postprep. Generate welcome cards in Canva and email them as the onboarding touch.

Mid-course. Reuse the same sheet to generate module thumbnails and lesson graphics as you publish new content. Most of these are text-and-icon, so they often need no image conversion at all.

Cohort completes. Add completion dates to the master sheet. Re-run Postprep. Generate the full batch of certificates in one pass. Pull your three best testimonials into the same sheet and generate social proof graphics for your next launch.

The whole cycle is about 20 minutes of spreadsheet time and 15 minutes of Canva time per template, whether the cohort is 12 students or 600. Without the converted XLSX you are looking at hours of manual photo insertion per batch.

Frequently Asked Questions

Do I even need this if my certificates have no photo?

No. If your certificate is just name, course title, and date, that is a text-only job and Canva Bulk Create handles it directly. You only need the conversion step when a design pulls in a headshot, logo, or any other image from a URL.

My students' headshots are all different shapes and sizes. Will that break the layout?

Canva fits each embedded image into the placeholder frame you set in the template, cropping to fill. Square headshots look most consistent. If your photos vary wildly, set the image placeholder to a circle or square crop so every certificate lines up.

Some students never uploaded a photo. What happens to those rows?

Leave the image URL cell blank. Postprep skips the embed for empty cells and Canva leaves the placeholder showing in those designs. You can re-run the batch later once the photos come in, or swap in a default avatar URL for the blanks.

Can I generate certificates as a single PDF to email out?

Yes. Canva can export the generated designs as one combined PDF or as individual files. Run Bulk Create once, then choose the export format that fits your delivery, a combined PDF for a manual send or individual PNGs if your email tool personalizes attachments.

My roster lives in Kajabi. Can I use it directly?

Export your members or a cohort segment to CSV from Kajabi. Add a headshot column with each student's photo URL if you collected one. Run that file through Postprep and into Canva. Same workflow whether your platform is Kajabi, Teachable, Thinkific, or a plain spreadsheet.

Is there a Canva feature that automatically issues a certificate when a student finishes?

No. Canva certificates are designed documents, not automated credentials. There is no live connection between your course platform and Canva, so you generate certificates in batches rather than on each individual completion. Bulk Create is what makes the batch fast.

The Short Version

Canva Bulk Create handles the merge work for every certificate, thumbnail, welcome card, and testimonial graphic your course produces. The one thing it does not do is turn image URLs into embedded images inside the XLSX. Postprep is the missing step.

Keep one master sheet per cohort. Convert with Postprep. Bulk generate in Canva. Every student gets their personalized certificate and welcome card without another evening of manual photo work.


Try it free at postprep.app — 100 rows, no account required.

Try it free

Canva Bulk Create with real embedded images.

Upload your CSV or XLSX. Select your image column. Download a Canva-ready file. Free for up to 100 rows — no account needed.

Try Postprep →
Pete B.

Written by

Pete B.

Pete is a small business owner who got tired of social media eating his evenings. Posting product graphics across channels used to mean opening Canva, dropping in each image by hand, and repeating that for every listing and every platform. He kept hitting the same wall: Canva Bulk Create can save hours, but it refuses to read image URLs from a spreadsheet — turning a 5-minute workflow into a 2-hour copy-paste job. So he built Postprep to fix that one specific limitation, and writes about bulk content workflows, design tool limitations, and shipping social content without burning out.

Discussion