PostPrep
← Blog
2026-05-27

How to Use Canva Bulk Create with Your WooCommerce Product Images

WooCommerce exports product images as URLs in a CSV — but Canva Bulk Create won't read them. Here's the full workflow from WooCommerce export to bulk-generated graphics.

Pete B.
Pete B.
Founder, Postprep

WooCommerce lets you export your entire catalog as a CSV. Every row carries the product name, price, SKU, and a column of image URLs pointing at your media library. It looks like the exact input Canva Bulk Create needs to spin up a batch of product graphics.

It isn't. Canva Bulk Create reads text columns fine, but the moment it sees an image URL it gives up and treats the URL as plain text. You end up with empty image slots, or the raw URL stamped across your design where the product photo should be.

The fix is one extra step between WooCommerce and Canva. Here is the full workflow.


Why Canva Bulk Create Ignores Your WooCommerce Image URLs

This is the part most people get stuck on. Canva Bulk Create requires images to be physically embedded inside the spreadsheet using a format called DrawingML. The image data lives inside the cell. A URL pointing at your WooCommerce media library doesn't qualify, even though the URL is public and the image loads fine in a browser.

WooCommerce, like Shopify and most other ecommerce platforms, only stores references to images. The CSV export reflects that. You get rows like:

https://yourstore.com/wp-content/uploads/2026/04/ceramic-mug.jpg

Valid URL. Useless to Canva.

This is the same limitation we covered for Shopify exports and Etsy listings. The platform changes, the problem doesn't.


Step 1: Export Your Products from WooCommerce

WooCommerce has a built-in exporter that handles this without a plugin.

  1. In your WordPress admin, go to Products → All Products
  2. Click Export at the top of the page
  3. Choose which columns to export (or leave Export all columns checked)
  4. Optionally filter by product type, category, or status
  5. Click Generate CSV

The download starts immediately. Open the file and look for the Images column. This is where your URLs live.

One thing specific to WooCommerce: the Images column can hold multiple URLs separated by commas. The first URL is the main product image, anything after is a gallery image. For most Bulk Create workflows you only want the first one.


Step 2: Trim the CSV to the Columns You Actually Need

WooCommerce exports 40+ columns by default. Most of them describe stock, tax classes, dimensions, and attributes that have nothing to do with your design template.

For a typical product graphic you only need:

  • Name — product title
  • Regular price or Sale price
  • Short description — for taglines, if your template uses one
  • Images — the URL column

Open the CSV in Excel, Google Sheets, or Numbers. Delete every column you don't need and save it back as CSV. A clean file might look like:

Name Regular price Images
Ceramic Pour-Over Mug 34.00 https://yourstore.com/wp-content/uploads/2026/04/mug.jpg
Linen Market Tote 48.00 https://yourstore.com/wp-content/uploads/2026/04/tote.jpg
Brass Candle Holder 29.00 https://yourstore.com/wp-content/uploads/2026/04/candle.jpg

If your Images column has multiple URLs per row, split on the comma and keep only the first one. You can do this with a Google Sheets formula:

=TRIM(SPLIT(C2, ","))

Drop the result in a new column and use that as your image source.


Step 3: Convert the Image URLs Into Embedded Images

This is the step that fixes the Canva limitation. Postprep takes your trimmed WooCommerce CSV, fetches every image URL in the column you select, and writes a new XLSX where each image is embedded directly in its cell using DrawingML.

  1. Go to postprep.app
  2. Upload your trimmed WooCommerce CSV
  3. Pick Images as the image column
  4. Download the converted XLSX

The output keeps all your text columns intact and adds an embedded image where the URL used to be. A 50-product catalog processes in under a minute.

No account required for the first 100 rows. Larger catalogs need a one-time unlock.


Step 4: Build Your Canva Template

If you already have a template you use for product posts, skip this step. Otherwise, in Canva:

  1. Create a new design at the size you need (Instagram post, story, Pinterest pin, etc.)
  2. Add a text element for the product name and type {{Name}}
  3. Add a text element for the price and type {{Regular price}}
  4. Add an image frame where the product photo goes — this is where Canva will drop in each row's embedded image

The field names in {{double braces}} must match your XLSX column headers exactly. Case-sensitive. Spaces matter.


Step 5: Run Bulk Create

Back in Canva:

  1. With your template open, go to Apps → Bulk Create in the left panel
  2. Click Upload data
  3. Select the converted XLSX from Postprep
  4. Connect each data field to the matching element on your design — text to text placeholders, the image column to your image frame
  5. Click Continue → Generate designs

Canva produces one design per row, with the real product image in the right slot. Download the batch as PNG, JPG, or PDF, or push the designs into Canva's scheduler if you use that.


What This Workflow Is Useful For

New product launches. Filter your WooCommerce export to products added in the last week, run through Postprep, generate a batch of launch graphics for Instagram, Pinterest, and Facebook.

Seasonal sales. Tag products with summer-sale in WooCommerce, export only those rows, generate matching sale graphics with consistent pricing callouts.

Catalog refresh. Once a quarter, regenerate every product graphic from scratch with an updated design template. A 200-product store becomes 200 fresh designs in one Bulk Create run.

Affiliate or wholesale sheets. Same workflow, different template — a printable PDF tile per product instead of a social graphic.

Email campaign assets. Use Bulk Create to spit out the hero image for each product card in a newsletter.


Frequently Asked Questions

Does this work with WooCommerce variable products?

Yes, but the export gives you one row per variation. If the parent product has an image and the variations don't, the image URL column will only be populated on the parent row. Filter to parent products before exporting if you want one design per product instead of one per variant.

What about gallery images — can I use those instead of the main image?

The Images column is a comma-separated list. To use a different image, split on the comma and pick the URL you want before running Postprep. You can do this in Google Sheets with SPLIT() or Excel with TEXTSPLIT().

My WooCommerce images are on a CDN — does that matter?

No. Postprep fetches whatever URL you give it, as long as it's publicly reachable. CDN URLs work the same as URLs pointing at your wp-content/uploads folder.

What if the URLs are behind a login or password-protected staging site?

Postprep can't reach private URLs. Either move the images to a public location, or temporarily make the staging site reachable. Most production WooCommerce stores have publicly accessible image URLs by default.

How big can the catalog be?

The free tier covers 100 rows. The one-time unlock removes the cap, so a 2,000-product catalog runs in a single batch.

Can I automate this on a schedule?

Not yet through Postprep itself. The usual workflow is to export from WooCommerce when you need a new batch, run it through Postprep, and import into Canva. For repeating designs the pillar tutorial covers the full Bulk Create loop in more detail.


The Short Version

WooCommerce → CSV → Postprep → Canva. Four steps, no plugins, no Apps Script, no manual image upload. The bottleneck has always been Canva's refusal to read image URLs. Postprep is the missing converter.

Export your products, trim the CSV, run it through Postprep, plug the XLSX into Canva Bulk Create. From a fresh WooCommerce export to a finished batch of designs takes under five minutes for most stores.


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