PostPrep
← Blog
2026-06-13

How Yoga Studios Can Use Canva Bulk Create for Class Schedules, Instructor Cards, and Workshop Promos

Draft — Post #49 · Target keyword: canva bulk create yoga studio · Meta: Build instructor cards, weekly schedules, and workshop promos from one spreadsheet. The Canva Bulk Create yoga studio workflow

Pete B.
Pete B.
Founder, Postprep

Draft — Post #49 · Target keyword: canva bulk create yoga studio · Meta: Build instructor cards, weekly schedules, and workshop promos from one spreadsheet. The Canva Bulk Create yoga studio workflow that handles teacher headshots too.

Your studio runs 38 classes a week across nine instructors. Every Monday someone on your team rebuilds the schedule graphic for Instagram. Every time a new teacher joins, you make an "introducing" post with their headshot, their bio, and the classes they cover. Every workshop, retreat, and teacher training gets its own promo card.

It is the same handful of layouts, over and over, with a different name, headshot, class time, and price each time. You already know Canva Bulk Create is built for exactly this kind of repeat work. Then you load a spreadsheet with your instructor photo URLs and Canva ignores them, leaving every card with an empty headshot slot.

This post walks through the full Canva Bulk Create yoga studio workflow, the one step Canva will not do for you, and a weekly rhythm that turns your schedule and instructor graphics into a 20-minute job instead of a recurring chore.

Why Canva Bulk Create Stalls for Yoga Studios

A yoga studio's marketing runs on people and time slots. Instructor headshots. Class names and times. Workshop dates and prices. Retreat photos. Most of those images already live as URLs somewhere: your Mindbody or Momence profile photos, a shared Google Drive of teacher headshots, your website's instructor page, a Dropbox of retreat photography.

Canva Bulk Create handles the text side without complaint. Drop in a column of class names, instructor names, times, or prices and Canva merges them into your template cleanly.

Image URLs are where it breaks. Canva 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. It either prints the raw link as a string inside your design or leaves the photo slot blank. We covered the technical reason in Why Canva Bulk Create Ignores Image URLs.

For a studio, that is the difference between a one-click instructor card batch and a dead end. Nine teacher headshots sitting as URLs in a spreadsheet will not render unless those photos are embedded inside the XLSX before you upload it to Canva.

The Manual Workaround Most Studios Try First

The usual hack: open the spreadsheet in Excel, click the first image cell, use Insert > Picture > Place in Cell, find the headshot on your laptop, repeat for every teacher and every workshop. That works if every photo is already downloaded, cropped to the same size, named to match the row, and sitting in one folder.

In practice your teacher photos are scattered. Some came from the studio management software, some from the instructors' own phones, a couple are still in an email thread from the new hire who started last week. By the time you have them downloaded and inserted by hand, you could have rebuilt the schedule graphic the old way.

The other dead end is the =IMAGE() formula in Google Sheets. It looks like it should work because the photo shows up in the cell. It will not. We covered why in Why =IMAGE() Doesn't Work for Canva Bulk Create. Short version: =IMAGE() is a live cell reference, not embedded image data. Canva parses the file and sees nothing.

What You Need Before You Start

Two things.

A Canva template per graphic type. Most studios cycle through a small, predictable set of designs:

An instructor card with headshot, name, the styles they teach, and a short tagline. A weekly schedule post with class names, days, and times. A workshop or retreat promo with a hero image, title, date, and price. A "new teacher joins us" announcement with headshot and bio. A class-style spotlight (Vinyasa, Yin, Restorative) with a representative photo and a one-line description.

Each template needs Canva Bulk Create placeholders for the text variables like {{instructor_name}}, {{class_style}}, {{class_time}}, {{price}}, plus an image element for the headshot or hero photo.

A single source-of-truth spreadsheet. One row per output design. Columns for every text field, plus one column with the direct image URL. If you already keep instructors and schedules in Mindbody, Momence, Walla, a Notion database, or a plain Google Sheet, you are most of the way there. The only column you may need to add is a direct URL to the photo. The same clean-prep rules we wrote about for Etsy sellers apply here: one row per output, one column per field, image URLs in their own column.

Step 1: Collect Your Image URLs

This is where studios lose the most time, so it is worth doing once and keeping the list.

Studio management software (Mindbody, Momence, Walla). Instructor profile photos usually have a public image URL. Open the teacher's public profile, right-click the photo, and copy the image address.

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

Dropbox. Take the share link and change the trailing ?dl=0 to ?raw=1 to get the raw image instead of the preview page.

Your own website. If your instructor page already shows headshots, right-click each one and copy the image address. Those URLs already work.

Instructor phone photos. Have teachers send you a square headshot, drop them in one Drive folder, and pull the direct URLs from there.

Put every URL into the spreadsheet under one column. Name it headshot or image_url, pick a convention, and keep it.

Step 2: Build the Studio Spreadsheet

A typical instructor-card sheet looks like this.

instructor_namestylestaglineheadshot
Maya TorresVinyasa, PowerFlow that meets you where you arehttps://cdn.studio.com/maya.jpg
Devin ColeYin, RestorativeSlow down. Stay a while.https://cdn.studio.com/devin.jpg
Priya NairHatha, PrenatalSteady, grounded, breath-ledhttps://cdn.studio.com/priya.jpg

For a weekly schedule batch the columns shift to class_name, day, time, instructor, and a style photo URL. 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 step Canva refuses to do.

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

A sheet with nine instructors takes a few seconds. A 100-row workshop or retreat archive takes under a minute. The free tier covers 100 rows with no account required.

Step 4: Bulk Generate in Canva

Open your instructor-card template in Canva. Make sure you are on a plan that supports Bulk Create. (Canva lists Bulk Create under Pro and Teams, and it runs on the desktop app or browser, not the mobile app. Confirm your current plan in Canva, since plan names and feature tiers 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 card per row, headshots and text already merged. Download as a ZIP and you have the whole teacher roster ready to post.

Running three template types off the same data — instructor cards, a schedule post, and a workshop promo — just means taking the same XLSX into each template and running Bulk Create three times.

A Realistic Yoga Studio Workflow

Here is the rhythm that keeps it from becoming a chore.

Once per quarter. Build the master instructor sheet. One row per teacher, headshot URL included. Run it through Postprep. Generate the full set of instructor cards and "meet your teachers" graphics. Reuse them all season.

Every week. Update the schedule sheet with the current week's classes, times, and covering instructors. Re-run Postprep if the style photos changed. Generate the weekly schedule post and any class-style spotlights. Ten minutes, done.

Per workshop or retreat. Add a row with the hero image URL, title, date, and price. Run Bulk Create on the promo template. One card out, every time, in the same look.

When a teacher joins. Add one row, run the job, ship the announcement card the same day instead of waiting until you have time to design it.

The whole cadence is maybe 20 minutes of work a week regardless of how many classes or teachers you run. By hand, the instructor batch alone is an afternoon.

A note of honesty: not every studio post needs images. A plain text schedule, a class-cancellation notice, or a quote graphic needs no conversion at all. Bulk Create handles those on its own. Postprep only matters when your designs pull in headshots, retreat photos, or style images from URLs.

Frequently Asked Questions

Can I use the same sheet for Instagram posts and printed studio signage?

Yes. Canva exports the generated designs to PNG for social or PDF for print. Run Bulk Create once, download both. The photos embed at their original resolution, so they hold up at print sizes as long as the source images are large enough.

My instructor photos are all different shapes and crops. Does that matter?

Canva fits each image into the placeholder frame in your template, so the output stays consistent even if the source crops vary. For headshots, square source photos give the most predictable result.

A new teacher has not sent a headshot yet. What do I do?

Leave the image URL cell blank for that row. Postprep skips the embed for empty cells, and Canva leaves the placeholder visible. Re-run the row once the photo arrives.

My schedule lives in Mindbody. Can I export it?

Mindbody and most studio platforms export class schedules to CSV. Add a column for the style photo URL if you want images, or skip it and use Bulk Create for the text-only schedule. Same workflow either way. We walk through spreadsheet-to-Canva prep in detail in the Google Sheets to Canva Bulk Create guide.

Can I generate a separate card for each class a teacher covers?

Yes. One row per output. If Maya teaches four classes, that is four rows with the same headshot URL and four different class times. Canva makes one design per row.

Do the embedded photos slow Canva down?

A typical instructor or schedule batch is small enough that it generates in seconds. Very large image archives (hundreds of high-resolution retreat photos) take longer to upload, but a normal studio batch is quick.

The Short Version

Canva Bulk Create does the merge work for every instructor card, weekly schedule, and workshop promo your studio ships. The one thing it does not do is turn image URLs into embedded photos inside the XLSX. Postprep is that missing step.

Build one master sheet for your teachers, a rolling sheet for your weekly schedule, convert with Postprep, and bulk generate in Canva. Every instructor, class, and workshop gets its graphic without another design afternoon.


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