How to Use Canva Bulk Create with Your Printify Product Images
Draft — Post #34 · Target keyword: canva bulk create printify · Meta: Printify doesn't export a product CSV with image URLs. Here's how to pull your Printify mockups and run them through Canva Bulk Cr

Draft — Post #34 · Target keyword: canva bulk create printify · Meta: Printify doesn't export a product CSV with image URLs. Here's how to pull your Printify mockups and run them through Canva Bulk Create anyway.
You've got a Printify catalog full of mockups — t-shirts, hoodies, mugs, phone cases, all wearing your designs. You want to turn that catalog into a batch of Instagram posts or a product lookbook without designing each graphic by hand. You paste your mockup links into a spreadsheet, upload it to Canva Bulk Create, and every image slot comes back empty. Sometimes the raw URL prints across the design where the photo should be.
Printify doesn't give sellers a "download product catalog as CSV" button. There's no bulk image export for your mockup library, whether you're running Printify standalone or synced to Shopify, Etsy, or another storefront. The image links you have work fine in a browser. Canva just won't touch them.
Here's the actual workflow, and where Printify sellers usually get stuck before they find it.
Why Canva Bulk Create Stalls for Printify Sellers
Canva Bulk Create only accepts images that are physically embedded inside the spreadsheet file, in a format called DrawingML. A link to an image — even a real, working, public one — reads as plain text to Canva. It either drops the raw URL into the design as text, or leaves the image frame blank.
Printify mockup URLs are links, not embedded files. Same goes for the src field the Printify API returns for each product image. Both point at a real photo sitting on Printify's servers, but pointing isn't the same as embedding. We covered the full mechanics in why Canva Bulk Create ignores image URLs — short version, Canva needs the actual pixel data sitting inside the cell, not a reference to where that data lives.
This trips up Printify sellers in particular because almost everything in Printify's ecosystem is URL-based. Mockups render in the Product Creator and Mockup Generator, camera angles get tacked onto the URL as query parameters (?camera_label=front, ?camera_label=flat-lay, and so on), and the API hands back src links, not files. None of it is embedded by default, and there's no export button that changes that.
The Manual Workaround Most Printify Sellers Try First
Before finding a converter, most sellers try one of two things.
Insert > Pictures in Excel. Download each mockup from Printify, then go row by row using Insert > Pictures to drop the file in by hand. It technically works, but it's one click per image, the pictures tend to float above the cells instead of sitting inside them, and doing this for 80 SKUs eats a full afternoon.
The =IMAGE() formula in Google Sheets. This looks like the fix — paste =IMAGE("https://...") and the mockup shows up right in the sheet. The catch: it's a live formula rendering a preview, not an embedded image. Export as XLSX or CSV and the formula either breaks or gets flattened to plain text. Canva never sees a picture. We wrote the full breakdown of why this fails in our =IMAGE() post, including an Apps Script workaround for people who want to build the embedding themselves.
Both routes are fine for five products. Neither survives a real Printify catalog.
What You Need Before You Start
- A spreadsheet (CSV or XLSX) with one row per product and one column of mockup image URLs
- A Canva template built for your graphic, with
{{Name}}-style placeholders for text and an image frame for the mockup - A way to actually collect the image URLs from Printify, since there's no single export button for it
That last point is worth sitting with for a second. Printify's whole product-creation flow is designed around uploading a design and previewing it, not exporting a photo library. How you get your URLs depends on how your shop is set up.
Step 1: Collect Your Printify Image URLs
If Printify is connected to Shopify, Etsy, or another storefront. This is the easiest path. Printify pushes mockup images to your connected store, and your storefront already has a product export that includes image URLs. Export from your storefront the way you normally would — see our Shopify or Etsy guides for that step — and pick up this workflow again from Step 2.
If you're using Printify mainly for mockups, not synced to a store. Open the Product Creator or Mockup Generator in your Printify dashboard, generate the mockup for a product, then right-click the image and choose Copy image address. Paste that into your spreadsheet next to the product name. Flag this one for your own testing before building a full catalog on it: Printify's mockup pages sometimes serve images tied to your session, so open a couple of copied links in a private browser window first and confirm they load without you being logged in. If they don't, you'll need the API route below instead.
If you're comfortable with the Printify API. The product endpoint returns an images array, and each entry has a src field with a direct HTTPS URL, plus a camera_label in the query string telling you which angle it is (front, back, flat-lay, and so on). This is the most reliable option for a large catalog since it doesn't depend on session cookies, but it's a developer-facing feature — you'll want a script that loops through your products and writes src values into a spreadsheet column.
Whichever route you use, end up with something like this:
| Product | Price | Image URL |
| Retro Sunset Tee | 24.00 | https://images.printify.com/mockup/abc123/front.jpg |
| Camp Vibes Hoodie | 39.00 | https://images.printify.com/mockup/def456/front.jpg |
| Trail Mug | 16.00 | https://images.printify.com/mockup/ghi789/front.jpg |
Step 2: Clean Up the Sheet
Trim it down to what your Canva template actually uses — product name, price, and the image URL column are usually enough. Drop variant IDs, blueprint numbers, and shipping fields; a social graphic doesn't need them. If you pulled multiple camera angles per product, decide on one hero shot per row and keep just that URL.
Step 3: Convert the URLs Into Embedded Images
This is the step that actually fixes the problem. Postprep takes your spreadsheet, fetches the image behind every URL in the column you point it at, and returns an XLSX with each image embedded directly in its cell.
- Go to postprep.app
- Upload your Printify 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 70-product Printify 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
- 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, capitalization included.
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 design element — text to text, image column to your image frame
- Click Continue, then Generate designs
Canva outputs one finished design per row, mockup and all. Download the batch or push it into your scheduler.
A Repeatable Workflow for Printify Sellers
New product drops. Add rows for freshly generated mockups, run them through Postprep, and get a full set of launch graphics in one pass instead of designing each product by hand.
Multi-platform listings. The same converted XLSX can feed different templates — an Etsy listing photo, an Instagram post, a Pinterest pin — all pulling from the same embedded images.
Blueprint variants. If you sell the same design across multiple product types (tee, hoodie, mug, tote), keep one row per blueprint and re-run the batch whenever you add a new one.
Seasonal drops. Filter your sheet to a themed subset and run just those rows for a focused campaign instead of regenerating your whole catalog.
Frequently Asked Questions
Does this work with transparent PNG mockups?
Yes. Postprep embeds whatever image format the URL points to. Transparent PNGs work the same as JPGs — Canva shows the transparency if your design frame supports it.
My mockups have multiple camera angles. Which one should I use?
Pick one hero angle per product for your main spreadsheet column — usually the front view. If you want a second angle in a different design (back view, flat-lay), that's a second URL column and a second Bulk Create pass.
Do I need the Printify API to do this?
No. The API route only matters if you're pulling src values programmatically for a large catalog. Most sellers can get by copying image addresses from the Product Creator or Mockup Generator, as long as those links load in a private browser window.
Will this work for products fulfilled through Printify but sold on a platform Printify doesn't natively sync with?
Yes. As long as you can get a public URL to the mockup image, the source doesn't matter to Postprep. Copy the link from wherever it's hosted and drop it into your sheet.
What if a mockup link only works while I'm logged into Printify?
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 links that load without a session — usually the API src field, or Product Creator links you've confirmed work privately.
How big can my catalog be?
Free for the first 100 rows, no account required. Bigger catalogs need a one-time unlock, which is worth it once you're running a full Printify store with hundreds of SKUs.
The Short Version
Printify doesn't hand sellers a clean product-image export, so the real first step is just getting your mockup URLs into a spreadsheet — either from a connected storefront's export, copied image addresses from the Product Creator, or the API's src field 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 a handful of mockups to your entire catalog.
Try it free at postprep.app — 100 rows, no account required.