How to Use Canva Bulk Create with Your Shopify Product Images
Shopify's product export CSV has image URLs — but Canva Bulk Create won't read them. Here's the exact workflow to go from Shopify export to bulk-generated graphics in minutes.

Shopify makes it easy to export your entire product catalog as a CSV. Every row has your product title, price, description, and a URL pointing to the product image. It looks like exactly what you'd need to feed into Canva Bulk Create and generate a batch of product graphics.
The problem: Canva Bulk Create doesn't read image URLs. It ignores them entirely, treating them as plain text. Your designs come out with blank image slots — or worse, the URL printed where the product photo should be.
Here's the full workflow to get from a Shopify product export to a finished batch of Canva designs.
Why the Shopify CSV Doesn't Work Directly in Canva
Canva Bulk Create requires images to be physically embedded inside the XLSX file — not linked via URL. The technical format it needs is called DrawingML: image data stored directly in a spreadsheet cell, not referenced from an external source.
Shopify's product export gives you URLs like:
https://cdn.shopify.com/s/files/1/0123/4567/products/mug-main.jpg
That's a valid, public URL. Canva still won't use it. From Canva's perspective, it's just a string of text.
This is a known limitation documented in Canva's own help center — it's not a bug, and there's no setting to change it.
Step 1: Export Your Products from Shopify
In your Shopify admin:
- Go to Products → All products
- Click Export in the top right
- Choose which products to export (all, or a filtered selection)
- Select CSV for Excel, Numbers, or other spreadsheet applications
- Click Export products
Shopify emails you the file (or downloads it directly, depending on the size).
Open the CSV. The columns you'll want for most design templates are:
Title— product nameVendor— brand name if relevantVariant Price— priceImage Src— the product image URL (this is the column Canva can't use yet)
Step 2: Clean Up the CSV (Optional but Recommended)
Shopify's export includes a lot of columns — 30+. Most of them you don't need for design work. Before converting, it helps to trim the file down to just the columns your Canva template uses. This makes the field-mapping step in Canva much cleaner.
A minimal product graphics spreadsheet might look like:
| Title | Variant Price | Image Src |
|---|---|---|
| Ceramic Pour-Over Mug | 34.00 | https://cdn.shopify.com/.../mug.jpg |
| Linen Market Tote | 48.00 | https://cdn.shopify.com/.../tote.jpg |
| Brass Candle Holder | 29.00 | https://cdn.shopify.com/.../candle.jpg |
You can do this trimming in Excel, Google Sheets, or even Numbers — just delete the columns you don't need and save as CSV.
One thing to watch: Shopify exports one row per variant, not one row per product. If a product has 3 color variants, it shows up 3 times. The Image Src column is only filled in on the first row of each product group. You'll want to either filter to unique products or fill down the image URLs before proceeding.
Step 3: Convert Image URLs to Embedded Images
This is the step that unlocks everything. Postprep takes your CSV (with the Image Src column of Shopify URLs) and converts it to an XLSX where each image is properly embedded in a cell — the exact format Canva needs.
- Go to postprep.app
- Upload your trimmed Shopify CSV
- Select
Image Srcas the image column - Download the converted XLSX
Postprep fetches each Shopify CDN image, embeds it using DrawingML, and preserves all your other columns intact. The whole thing takes under a minute for a typical product catalog.
Step 4: Build Your Canva Template
If you don't have one already, create a template in Canva for the type of graphic you're making — product announcement posts, Instagram feed tiles, sale banners, whatever fits your store.
The key is using Bulk Create data fields as placeholders:
- Add a text element and type
{{Title}}for the product name - Add a text element and type
{{Variant Price}}for the price - Add an image placeholder where your product photo goes — this is what Canva will swap out per row
The field names in your template need to match the column headers in your XLSX exactly (case-sensitive).
Step 5: Import Into Canva Bulk Create and Generate
- In Canva, open your template
- Go to Apps → Bulk Create in the left panel
- Click Upload data and select your converted XLSX from Postprep
- Use Auto-connect fields or drag fields from the side panel onto your design elements
- Click Generate designs — Canva creates one design per row, with the real product image in place
From there you can download everything as a ZIP (individual PNGs or JPGs), or publish directly if you're using Canva's scheduling tools.
What You Can Make With This Workflow
New arrival posts. Every time you add products to your store, export the new ones, run through Postprep, generate the batch. A 20-product drop becomes 20 Instagram posts in a few minutes.
Sale graphics. Filter your Shopify export to products with a specific tag (e.g., "summer-sale"), convert, generate a batch of sale announcement graphics with consistent design.
Product highlight series. Pick your bestsellers, grab a clean subset of the catalog, generate a week's worth of feed posts in one go.
Facebook/Instagram ad creative. Build a Canva template for your ad format, generate variants for each product, export for Meta Ads Manager.
Frequently Asked Questions
Does this work with Shopify's multi-image products?
Shopify's CSV exports the first (main) image URL in Image Src. If you want a different image for a specific product, you can manually swap in the URL before converting.
What if some image URLs are broken or return a 404?
Postprep skips rows where the URL isn't reachable and flags them in the output. You can fix the URLs and reprocess, or just ignore those rows if the images aren't critical.
Can I use a filtered Shopify export — just one collection?
Yes. In Shopify, filter your product list by collection before exporting, and only those products will be in the CSV.
How many products can I process at once?
Postprep's free tier handles up to 100 rows. The one-time unlock removes that limit for larger catalogs.
Does this work for product variant images too?
If each variant has its own image URL in the Shopify export, yes — as long as the URL is populated in the Image Src column, Postprep will embed it.
The Short Version
Shopify CSV + Canva Bulk Create almost works — except for the image URL limitation. Postprep is the missing step: it converts your Shopify image URLs into properly embedded XLSX images that Canva actually reads.
Export from Shopify → convert with Postprep → bulk-generate in Canva. That's the full loop.
Try it free at postprep.app — 100 rows, no account required.