PostPrep
← Blog
2026-06-13

How Print-on-Demand Sellers Can Use Canva Bulk Create for Listing Graphics and Mockups

Draft — Post #15 · Target keyword: canva bulk create print on demand · Meta: Generate listing graphics, mockup overlays, and promo posts for a full POD catalog with Canva Bulk Create. The spreadsheet

Pete B.
Pete B.
Founder, Postprep

Draft — Post #15 · Target keyword: canva bulk create print on demand · Meta: Generate listing graphics, mockup overlays, and promo posts for a full POD catalog with Canva Bulk Create. The spreadsheet workflow that includes your design images.

Print-on-demand lives or dies on catalog size. The winning shops list hundreds of designs across mugs, tees, posters, and totes, and every one of those listings needs graphics: a branded listing image, a promo post, sometimes a mockup overlay or a seasonal variant. Designing each one by hand is the bottleneck that keeps most POD sellers stuck at a few dozen listings.

Canva Bulk Create is the obvious fix. Build a listing-graphic template once, connect a spreadsheet of your designs, and generate a graphic per product in one pass. The catch is the same one every POD seller hits: the titles and prices merge fine, but the design images never appear.

This post walks through the full Canva Bulk Create print-on-demand workflow, why the images fail, and how to push out graphics for a whole catalog in an afternoon.

Why Canva Bulk Create Stalls for POD Sellers

A POD catalog is a near-perfect Bulk Create job. Every listing graphic follows the same layout — the design or mockup, the product name, maybe a price or a tagline — and only the content changes. Text merges without trouble.

The design image is the wall. Your artwork and mockups live as URLs: a Printful or Printify mockup link, a Gelato or Gooten asset URL, an image hosted on your own store. Canva Bulk Create cannot fetch an image from a URL. It only renders images embedded inside the uploaded XLSX as binary DrawingML data. A URL is just text to Canva, so it prints the link or leaves the frame blank. The mechanics are in Why Canva Bulk Create Ignores Image URLs.

For POD this is the entire job. A catalog of 150 designs with mockup URLs renders 150 empty frames unless those images are embedded before Canva opens the file.

The Manual Workaround Most Sellers Try First

The usual hack is to embed each mockup by hand in Excel — click the cell, Insert > Picture > Place in Cell, locate the file, repeat per design. Fine for ten products, brutal for a real catalog.

The Google Sheets =IMAGE() formula is the other dead end: it displays the mockup but never embeds the actual image bytes. We covered why in Why =IMAGE() Doesn't Work for Canva Bulk Create.

What You Need Before You Start

A Canva template per graphic type. A listing hero with the mockup, {{title}}, and a tagline. A promo post with the design, {{price}}, and a sale badge. A multi-mockup grid for a single design across products. Each template needs an image frame for the mockup and Bulk Create placeholders for the text.

A design catalog spreadsheet. One row per output graphic. Columns for the text fields plus a column with the direct image URL for the mockup or artwork. The one-row-per-output discipline from Canva Bulk Create for Etsy and Shopify stores applies directly.

Step 1: Collect Your Mockup and Design URLs

Printful / Printify. Both generate mockup images per product. Grab the mockup URL from the product's media, or export your product list if your integration includes image links. Right-click a mockup and copy image address to get a direct URL.

Your storefront export. Selling on Shopify or Etsy through a POD app means your listing images are already hosted. A Shopify export's Image Src column holds direct URLs.

Your own design files. If you host exported artwork on Drive or a CDN, use the direct file URL (for Drive, the https://drive.google.com/uc?id=FILEID&export=download form).

Drop every URL into one column named mockup or image_url.

Step 2: Build the Catalog Spreadsheet

titleproductpricetaglineimage_url
Mountain Sunrise TeeT-Shirt$26Wear the viewhttps://files.cdn.printful.com/.../tee.png
Cat Mom MugMug$18For the obsessedhttps://files.cdn.printful.com/.../mug.png
Retro Wave PosterPoster$22Throwback energyhttps://files.cdn.printful.com/.../poster.png

Save as CSV or XLSX. Matching headers to your template placeholders lets Canva auto-connect them.

Step 3: Convert the Catalog With Postprep

Go to postprep.app, upload your CSV, and select the column holding the mockup URLs. Postprep fetches each mockup, downloads it, and embeds it inside the XLSX as DrawingML. Titles, prices, and taglines pass through unchanged.

A 100-design catalog converts in under a minute. The free tier covers your first 100 rows with no account; larger catalogs run in a few quick passes.

Step 4: Bulk Generate the Graphics in Canva

Open your listing-graphic template in Canva on desktop, on a plan that supports Bulk Create. Open Apps > Bulk Create, click Upload data, and pick the converted XLSX.

Map the columns — image_url to the mockup frame, the rest to text placeholders — or use Auto-connect. Click Generate designs. Canva produces one finished, branded graphic per design with the mockup already in place.

If you run several templates (a square listing hero, a story-format promo, a Pinterest pin), load the same XLSX into each. One catalog, every graphic format your shop needs.

A Repeatable POD Workflow

New design drops. Add the new products as rows, re-export, re-convert with Postprep, regenerate.

Seasonal promos. Update a price or swap in a sale badge column, regenerate the whole catalog's promo graphics in one pass.

Marketplace expansion. Listing on a new platform with different image specs? Build a template at the new size and run the same converted XLSX through it.

A full 150-design graphics refresh is about 15 minutes of spreadsheet work and a few minutes per template.

Frequently Asked Questions

Can I generate multiple product mockups for one design?

Yes. Add a column per mockup (tee, mug, poster) and a matching image frame in the template, then convert all the image columns with Postprep. Or keep one row per mockup.

Will the mockups stay sharp for listing images?

Yes. Postprep embeds the image at its original resolution. Point the URL at the full-size mockup, not a thumbnail.

My mockups have transparent backgrounds. Does that survive?

Yes, if the source PNG is transparent. Postprep embeds whatever the URL returns.

Can I pull mockups straight from Printful or Printify?

Use the direct mockup image URL from the product's media, or an export that includes image links.

Does this work if I sell across Etsy and my own Shopify store?

Yes. Compile both into one sheet with a direct image URL per design. See Canva Bulk Create for Etsy for Etsy-specific details.

How many designs can I do at once?

Postprep's free tier covers 100 rows. For a larger catalog, run it in batches.

The Short Version

Canva Bulk Create is built for POD catalogs: one template, one row per design, a full set of listing graphics in one pass. The only thing it cannot do is turn your mockup URLs into embedded images inside the XLSX. Postprep is the missing step.

Collect your mockup URLs, convert the catalog with Postprep, map it to your template, and generate.


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