How to Use Canva Bulk Create with Your Printful Product Images
Draft — Post #33 · Target keyword: canva bulk create printful · Meta: Printful mockups don't export as a ready CSV for Canva. Here's how to pull your Printful product images and run them through Canva

Draft — Post #33 · Target keyword: canva bulk create printful · Meta: Printful mockups don't export as a ready CSV for Canva. Here's how to pull your Printful product images and run them through Canva Bulk Create.
You've built a catalog of mockups in Printful — hoodies, mugs, tote bags, phone cases, all wearing your designs. Now you want to turn that catalog into a batch of Instagram posts, Etsy graphics, or a product lookbook. You paste your mockup image links into a spreadsheet, upload it to Canva Bulk Create, and every image slot comes back empty. Or worse, the raw URL prints across your design where the product photo should be.
Printful doesn't give sellers a one-click "export to Canva" button. That's true whether you're syncing Printful to Shopify, Etsy, or WooCommerce, or using Printful standalone just for mockups. The image URLs you have are real and they load fine in a browser — Canva just won't touch them.
Here's the actual workflow, plus where Printful sellers usually get stuck before they get there.
Why Canva Bulk Create Stalls for Printful Sellers
Canva Bulk Create only accepts images that are physically embedded inside the spreadsheet file, using a format called DrawingML. A link to an image — even a working, public one — is just text as far as Canva is concerned. It drops the link into the design as a text string instead of a picture, or leaves the image frame blank.
Printful mockup URLs are links, not embedded files. Same with the thumbnail_url field Printful's API returns for synced products. They point at a real image hosted on Printful's servers, but pointing isn't embedding. We covered the mechanics of this in more detail in why Canva Bulk Create ignores image URLs — the short version is that Canva needs the pixel data sitting inside the cell, not a reference to where the pixel data lives.
This catches Printful sellers specifically because Printful's whole workflow is URL-based. Mockups live in your Product Templates dashboard, synced products carry image links from your connected store, and the API exposes URLs, not files. None of that is embedded by default.
The Manual Workaround Most Printful Sellers Try First
Before finding a converter, most people try one of two manual routes.
Insert > Pictures in Excel. You download each mockup image from Printful, then go cell by cell in Excel using Insert > Pictures to drop the file in manually. It works, technically — but it's one click per image, the pictures often float over the cells instead of sitting inside them, and resizing 60 mockups by hand eats an afternoon you don't have.
The =IMAGE() formula in Google Sheets. This looks like the fix. Paste =IMAGE("https://...") and the photo shows up right in the sheet. The catch: it's a formula that renders a preview, not an embedded image. Export that sheet as XLSX or CSV and the formula either breaks or exports as plain text. Canva never sees a picture. We wrote a full breakdown of why this formula fails in our =IMAGE() post, including the Apps Script workaround for people who want to build embedding themselves.
Both routes work for five products. Neither survives a 50-SKU Printful catalog.
What You Need Before You Start
- A spreadsheet (CSV or XLSX) with one row per product and one column of image URLs
- A Canva template built for your product graphic, with a
{{Name}}-style placeholder for text fields and an image frame for the photo - A way to pull the image URLs out of Printful — covered below
One honest note before Step 1: Printful doesn't have a dedicated "export product catalog as CSV" button the way Shopify or WooCommerce do. How you collect your URLs depends on how you sell.
Step 1: Collect Your Printful Image URLs
If Printful is connected to Shopify, Etsy, or WooCommerce. This is the easier path. Your storefront already has a product export with image URLs — Printful just supplies the images your store displays. Export from your storefront platform the way you normally would, and follow our Shopify, Etsy, or WooCommerce guides for the export step. The rest of this workflow still applies from Step 2 onward.
If you're using Printful standalone, just for mockups. Go to your Printful dashboard, open Product Templates, and open each product. Right-click a mockup image and choose Copy image address to grab its direct URL, then paste it into your spreadsheet next to the product name. This works because mockup previews are just images on the page — but double-check a couple of pasted links actually open in a new browser tab before you build your full sheet. If a link only works while you're logged in, it won't work for Postprep either.
If you're comfortable with the Printful API. The /store/products endpoint returns a thumbnail_url field per synced product, which you can pull programmatically into a spreadsheet. This is the fastest option for large catalogs, but it's a developer-facing feature — flag this one for your own testing before relying on it, since field names and response shape can shift between API versions.
Whichever route you use, end up with a spreadsheet like this:
| Product | Price | Image URL |
| Sunset Ridge Hoodie | 42.00 | https://files.cdn.printful.com/products/71/12345_hoodie.jpg |
| Ceramic Camp Mug | 18.00 | https://files.cdn.printful.com/products/19/67890_mug.jpg |
| Weekender Tote | 28.00 | https://files.cdn.printful.com/products/145/24681_tote.jpg |
Step 2: Clean Up the Sheet
Keep only what your Canva template actually needs — usually product name, price, and the image URL column. Drop variant data, SKUs, and shipping fields; they're not doing anything for a social graphic. If you pulled multiple mockup angles per product, pick the one you want as the hero shot and use that URL.
Step 3: Convert the URLs Into Embedded Images
This is the step that fixes the Canva problem. Postprep takes your spreadsheet, fetches every image behind the URLs in the column you point it at, and hands back an XLSX with each image embedded directly in its cell.
- Go to postprep.app
- Upload your Printful spreadsheet (CSV or XLSX)
- Select Image URL as the column to convert
- Download the finished XLSX
No account needed for the first 100 rows. A 60-product Printful catalog runs through in well under a minute.
Step 4: Build or Reuse Your Canva Template
If you already have a product graphic template, open it. If not:
- Start a new design at the size you need — Instagram post, Pinterest pin, Etsy listing photo, whatever you're producing for
- Add a text box for the product name and type
{{Product}} - Add a text box for price and type
{{Price}} - Drop in an image frame where the mockup goes
Field names in {{double braces}} need to match your spreadsheet's column headers exactly, including capitalization.
Step 5: Run Bulk Create
- With your template open, click Apps → Bulk Create in Canva's side panel
- Upload the XLSX Postprep gave you
- Match each spreadsheet column to its element on the design — text to text, image column to your image frame
- Click Continue, then Generate designs
Canva spits out one finished design per row, mockup and all. Download the batch or push it straight into your scheduler.
A Repeatable Workflow for Printful Sellers
New product drops. Add rows for newly launched mockups, run them through Postprep, generate a full set of launch graphics in one pass instead of designing each product by hand.
Restocks and color variants. Printful catalogs grow fast once you add colorways. Keep a running spreadsheet and re-run Bulk Create whenever a new variant batch is ready.
Multi-platform listings. The same converted XLSX can feed different Canva templates — an Etsy listing photo, an Instagram post, and a Pinterest pin, all pulling from the same embedded images.
Seasonal collections. Filter your sheet down to a themed subset (holiday designs, a summer drop) and run just those rows for a focused campaign batch.
Frequently Asked Questions
Does this work if my Printful mockups are only in PNG with a transparent background?
Yes. Postprep embeds whatever image format the URL points to. Transparent PNGs work the same as JPGs — Canva will show the transparency if your design frame supports it.
My spreadsheet has more than one mockup angle per product. What happens?
Postprep embeds the image in the column you tell it to convert. If you have multiple URL columns (front view, back view, lifestyle shot), you'd need to run the conversion once per column, or pick one hero image per product to keep it simple.
Do I need a Printful API key to do this?
No. The API route is only relevant if you're pulling thumbnail_url programmatically for a large catalog. Most sellers can get by with copying image addresses from the Product Templates dashboard.
Will this work for products I fulfill through Printful but sell somewhere Printful doesn't natively integrate with?
Yes, as long as you can get a public URL to the product image, the source doesn't matter to Postprep. Copy the mockup link from wherever it's hosted and drop it in your sheet.
What if a mockup URL requires me to be logged into Printful to view it?
Postprep can only fetch publicly reachable URLs. If a link 404s or shows a login wall in an incognito window, it won't embed. Stick to the direct CDN links from Product Templates, which are typically public.
How big can my catalog be?
Free for the first 100 rows, no account required. Larger catalogs need a one-time unlock — useful if you're running a full Printful store with hundreds of SKUs.
The Short Version
Printful doesn't hand sellers a clean CSV export the way Shopify or WooCommerce does, so the first step is just getting your mockup URLs into a spreadsheet — either from your connected storefront's export, copied image addresses in Product Templates, or the API if you're technical. From there it's the same fix every platform needs: run the sheet through Postprep to embed the images, then feed the XLSX to Canva Bulk Create.
Collect your URLs, convert with Postprep, generate in Canva. That's the whole workflow, and it scales from 10 mockups to your entire catalog.
Try it free at postprep.app — 100 rows, no account required.