PostPrep
← Blog
2026-08-30

How to Use Canva Bulk Create With Your Square Online Product Images

Draft — Post #17 · Target keyword: canva bulk create square online · Meta: Square Online exports product image URLs in a CSV, but Canva Bulk Create won't read them. Here's the full workflow to batch-c

Pete B.
Pete B.
Founder, Postprep

Draft — Post #17 · Target keyword: canva bulk create square online · Meta: Square Online exports product image URLs in a CSV, but Canva Bulk Create won't read them. Here's the full workflow to batch-create graphics from your Square catalog.

You run your shop on Square Online. Forty, eighty, two hundred products in the catalog. Every week you need fresh graphics: new arrival posts, sale announcements, a product grid for the homepage banner, listing thumbnails for Instagram and Facebook.

Each one is the same layout with a different photo, name, and price. So you export your Square catalog, open the CSV, and feed it to Canva Bulk Create. Canva merges the product names and prices fine. The images come back blank. The cells with your image URLs render as plain text or nothing at all.

This post walks through the full Canva Bulk Create Square Online workflow, why the image column fails, and the one conversion step that makes the whole thing work.

Why Canva Bulk Create Stalls for Square Online Sellers

When you export items from Square Online, you get a CSV you can open in Google Sheets, Excel, or Numbers. That export can include the image URL for each product. Square stores your product photos on its own CDN, and the export points to them.

Here is the catch most Square sellers hit twice. Square itself won't reimport images from a CSV, so those URLs are read-only as far as your store is concerned. And Canva Bulk Create won't read them either, for a different reason.

Canva's Bulk Create only accepts images that are physically embedded inside the XLSX file as binary data, in a format called DrawingML. A URL is just text to Canva. It either prints the URL as a literal string inside your template, or leaves the image slot empty. The text columns merge cleanly. Product name, price, SKU, category all drop into place. The image column does nothing. We covered the technical reason in Why Canva Bulk Create Ignores Image URLs.

For a Square seller that gap is the whole problem. Your catalog already has the photos. The export already has the URLs. But a column of links is not the same as a column of embedded images, and Canva only reads the second kind.

(Quick note to avoid confusion: this is about Square Online, the store builder from Square. It's a different platform from Squarespace, which we cover in How to Use Canva Bulk Create with Your Squarespace Product Images. The image-URL problem is the same on both, but the export steps differ.)

The Manual Workaround Most Square Sellers Try First

The standard hack looks like this. Export the catalog. Open it in Excel. Click each image cell, use Insert > Picture > Place in Cell, point to the photo on your hard drive, repeat for every product. That works in theory, if you have already downloaded every product image, named each file to match its row, and sized them all consistently.

In practice your photos live on Square's CDN, not on your laptop. So first you download two hundred images one at a time, then rename them, then insert them by hand. By the time the spreadsheet is ready you could have built the graphics manually in Canva and skipped the export entirely.

The other hack is the =IMAGE() formula in Google Sheets. It looks like it embeds the photo, and on screen it does show the image. But it fails for Bulk Create the same way. We covered why in detail in Why =IMAGE() Doesn't Work for Canva Bulk Create. Short version: =IMAGE() is a live cell reference, not embedded image data. When Canva parses the file it sees an empty cell.

What You Need Before You Start

Two things.

A Canva template per graphic type. Most Square sellers cycle through a handful of recurring layouts. A new-arrival post with product photo, name, and price. A sale graphic with the photo, original price, and discount. A listing thumbnail sized for your storefront or marketplace. A multi-product collection card. Each template needs Canva Bulk Create placeholders for the text fields like {{product_name}} and {{price}}, plus an image element where the product photo lands.

Your Square Online product export. In your Square Dashboard, go to Items, then use the export option to download your catalog as a CSV. (Square's item import and export tools live under the Items library. The exact menu wording shifts between Square Dashboard updates, so if you don't see an export button where you expect, check Square's current import and export help article — flagging that because Square's UI labels change often.)

Open the export and confirm there is a column with a direct image URL for each product. If your export does not include image URLs, you may need to pull them from your product pages instead, or add a column manually.

Step 1: Get Clean Image URLs From Your Square Catalog

You want one direct image URL per product, each ending in something like .jpg, .png, or .webp. A direct URL loads only the image when you paste it into a browser, with no surrounding store page.

If your Square export already has a usable image URL column, you are done with this step. If it does not, open the product on your live Square Online store, right-click the main product image, and choose Copy Image Address. That gives you the direct CDN link. Drop each one into a single column in your sheet.

Keep one image per row for the cleanest result. If a product has several photos and you want the main one, use the first or primary image URL.

Step 2: Build the Spreadsheet

One row per output graphic. One column per text field, plus the image URL column. A typical Square seller sheet looks like this.

product_namepricecategoryimage_url
Handmade Ceramic Mug$28Drinkwarehttps://square-cdn.com/.../mug.jpg
Linen Tea Towel Set$34Kitchenhttps://square-cdn.com/.../towel.jpg
Beeswax Candle 8oz$22Homehttps://square-cdn.com/.../candle.jpg

Save it as CSV or XLSX. Your column names do not have to match Canva exactly, since you map them in the Bulk Create panel. But matching names lets Canva auto-connect them in one click. The same one-row-per-output, image-URLs-in-their-own-column rule applies to every storefront, including the workflow we wrote for Shopify sellers.

Step 3: Convert the Spreadsheet With Postprep

This is the conversion step Canva refuses to do.

Go to postprep.app, upload your CSV, and pick the column that holds the image URLs. Postprep fetches each URL, downloads the image, and embeds it inside the XLSX as DrawingML, the binary format Canva actually reads. Every other column passes through unchanged.

A 100-row catalog takes under a minute. The free tier covers 100 rows with no account required, so you can run your whole shop through and check the result before deciding anything.

Step 4: Bulk Generate in Canva

Open your product template in Canva. Make sure you are on a plan that supports Bulk Create. Based on Canva's current plan structure that means Pro, Teams, or one of the eligible org plans, and Bulk Create runs on desktop. Canva changes plan names and eligibility periodically, so confirm against your own account rather than taking that as fixed.

In the left panel click Apps, then Bulk Create. Click Upload data and choose your converted XLSX. Drag each column onto its matching placeholder, or use Auto-connect if your column names already line up.

Click Generate designs. Canva produces one finished graphic per product, with the photo, name, and price already merged. Download the set as a ZIP, or push individual designs straight to your social scheduler.

If you run three template types off the same catalog, a new-arrival post, a sale graphic, and a storefront thumbnail, take the same XLSX into each template and run Bulk Create three times. One export, three full sets of branded graphics.

A Realistic Square Online Workflow

Here is the rhythm that keeps a Square shop's marketing graphics current without eating your week.

New product drop. Add the new items to Square as usual. Export the catalog, or just the new rows. Run the export through Postprep. Generate new-arrival posts and storefront thumbnails in Canva. Schedule the social posts.

Weekly promo. Filter your export to the products on sale this week. Add a discount column if you want the percentage on the graphic. Convert with Postprep, generate the sale set, queue it up.

Seasonal refresh. Once a quarter, run the full catalog through and regenerate your collection cards and homepage banners so the imagery stays consistent with your current branding.

The whole loop is about 10 minutes of spreadsheet work and a few minutes in Canva per template, whether your catalog is 30 products or 300. Building those graphics by hand, one product at a time, is hours of the same repetitive work every drop.

Frequently Asked Questions

Does my Square Online export actually include image URLs?

In most cases the product export can include an image URL column, though what's in the file depends on your catalog and Square's current export format. Open your export and look for a column of links before you start. If it's missing, pull the URLs from your live product pages with Copy Image Address.

Do I need a paid Square plan for this?

No. This workflow runs off your standard product export, which is available on Square's free and paid plans. The only requirement is that your products have photos and the export gives you the URLs.

What if some products have no photo yet?

Leave the image URL cell blank for those rows. Postprep skips the image embed for empty cells, and Canva leaves the placeholder visible in the generated design. Re-run the job once you add the photos.

Can I include the price and a sale badge in the same graphic?

Yes. Add a column for the regular price and another for the sale price or discount, then map both to text placeholders in your Canva template. The image column stays separate and handles the product photo.

My images come back blurry in print sizes. Why?

Postprep embeds whatever resolution the URL returns. Square's display images are sized for web. For print-size graphics, use the highest-resolution image URL available, or upload your original product photos somewhere you control and use those URLs instead.

The Short Version

Square Online hands you a catalog full of image URLs. Canva Bulk Create handles every text field on your product graphics but won't read those URLs, because it only accepts images embedded inside the XLSX as DrawingML. That one gap is what leaves your image cells blank.

Export your Square catalog. Convert it with Postprep. Bulk generate in Canva. Your whole product line ships as finished graphics without building a single one by hand.


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