How Artists and Galleries Can Use Canva Bulk Create for Artwork Labels, Price Lists, and Social Posts
Use Canva Bulk Create for artwork labels, price lists, and social posts. Turn one inventory spreadsheet into a full show's worth of graphics, images included.

You have forty pieces going into a show. Every one needs a wall label with the title, medium, dimensions, year, and price. The price list needs the same forty rows again, with thumbnails. Then the gallery wants an Instagram post for each piece, and you want a printed card for the ones going to the art fair.
That is four sets of forty items, all pulling from the same information you already typed into your inventory once.
Most artists do it by duplicating a Canva template and retyping. Forty times. Then a piece sells, one price changes, and half the files are wrong. Canva Bulk Create exists specifically to kill that loop, and using Canva Bulk Create for artwork labels works cleanly for the text. The images are where it falls apart.
Why Canva Bulk Create Stalls for Artists and Galleries
Bulk Create takes a spreadsheet and a template. Each column becomes a data field, each row becomes a design. Drag "Title" onto your title text box, "Medium" onto the medium line, and Canva generates a page per row.
Text merges perfectly. Titles, media, dimensions, editions, prices, inventory codes, artist statements. All of it.
Then you try to connect the image.
Your inventory export has a column of image URLs, one per piece. It looks exactly like the other columns. But Canva reads it as a string of characters, not a picture, and your labels come out with https://cdn.artworkarchive.com/... printed across the frame where the artwork should be.
This is not a bug in your file. Canva's own documentation says it plainly: image URLs from cloud photo storage are not supported and will be treated as plain text. To use images, they must be embedded directly inside the cell, not linked from it.
The technical reason is that Canva only reads images that live inside the XLSX as DrawingML objects, the same structure Excel creates when you actually insert a picture into a worksheet. A URL is text no matter how much it looks like a photo. We covered the full mechanics in why Canva Bulk Create ignores image URLs.
The Manual Workaround Most Artists Try First
There are two, and both dead-end.
Insert > Picture in Excel. Open your export, click a cell, insert the artwork photo, resize it, move to the next row. This does produce a file Canva accepts. It also runs about a minute per piece once you account for downloading the image, sizing it, and making sure it sits inside one cell rather than floating across three. Forty pieces is most of an afternoon, and a gallery with a rotating roster does it every month.
The =IMAGE() formula in Google Sheets. This one is worse because it looks like it works. You type =IMAGE(D2), the artwork appears, and you feel clever. But it is a live formula result rendered by Google Sheets, not a stored object. Export to XLSX and the picture does not come with it. Canva gets an empty cell or a formula string. Full breakdown in why =IMAGE() doesn't work for Canva Bulk Create.
Canva does offer a third path: the "Enter data manually" flow inside Bulk Create has an Add image column type, where you hover a cell, click the plus icon, and pick a photo from your Canva media library. That works. It is also one image at a time, by hand, which is the thing you were trying to avoid.
What You Need Before You Start
- A Canva plan with Bulk Create. Canva lists it for Pro, Teams, Business, Enterprise, Education, and Nonprofits, on desktop only. If you are unsure where you land, see does Canva Bulk Create require a Pro plan.
- Your inventory as a spreadsheet, with one row per piece.
- A public image URL for each piece.
- A Canva template with a frame or grid from the Elements tab where the artwork goes. Canva is specific about this: a pasted image will not accept a data connection. It has to be a frame or a grid.
Step 1: Get Your Inventory Out as a Spreadsheet
Where this comes from depends on how you track work.
Artwork Archive exports from the Pieces page: click New Report, then Export to XLS or Export to CSV. Filter first and "everything in the March show" or "everything under $2,000" comes out as its own export. There is also a separate Exhibitions export if you organize by show. Check the resulting file for a column of image links. If it has one, you are set for step 2. If not, pull image URLs from wherever your work is published instead.
Art Galleria documents both CSV upload and data export, so the same round trip is available.
Your own website. If you sell through Squarespace, Shopify, or WooCommerce, your product export already carries a public image URL column, and the workflow is identical to any product catalog. We walk that exact path in using Canva Bulk Create with Squarespace product images.
A spreadsheet you keep yourself. This is fine. You need the direct link to the image file, the one ending in .jpg or .png, not the link to the page the image sits on.
Step 2: Build the Spreadsheet
One row per piece. Columns matching the fields on your label.
| Title | Artist | Year | Medium | Dimensions | Price | Inventory | ImageURL |
| Low Tide | Marin Okafor | 2025 | Oil on linen | 36 × 48 in | $4,200 | MO-2025-011 | https://yoursite.com/img/mo-011.jpg |
| Salt Room | Marin Okafor | 2025 | Oil on linen | 24 × 24 in | $2,400 | MO-2025-012 | https://yoursite.com/img/mo-012.jpg |
| Nightjar | Marin Okafor | 2024 | Charcoal on paper | 18 × 24 in | NFS | MO-2024-003 | https://yoursite.com/img/mo-003.jpg |
Three things worth doing here rather than later.
Name columns for what they hold. Canva's Auto-match fields feature tries to connect your data to your template automatically, and clear headers give it a better shot.
Keep price formatting consistent, including the not-for-sale rows. Bulk Create prints whatever is in the cell. "NFS" and "Price on request" come out exactly as typed, which is what you want, but only if you decided in advance what they say.
Put one thing in each column. Canva treats a column as a single data field, so combining "36 × 48 in, oil on linen" into one cell costs you the ability to style them separately. Split them, use two text boxes.
Step 3: Convert the File So the Images Actually Embed
This is the step that turns a URL column into real embedded pictures.
Upload your CSV or XLSX to Postprep. It reads the image URL column, fetches each image, writes it into the cell as a proper embedded object, and hands you back an XLSX. Free tier does 100 rows with no account, which covers most single shows.
If you would rather do it yourself, the mechanics are documented in how to bulk embed images in Excel from URLs. It works. It is a script, and it is slower.
Either way the output is the same shape: a spreadsheet where the artwork lives inside the cell instead of being described by it.
Step 4: Generate the Batch in Canva
- Open your label template. Confirm the artwork placeholder is a frame or grid from the Elements tab.
- Click the page background, select Edit, then Bulk create. (Or find it under Apps → More from Canva.)
- Select Upload data and choose your converted XLSX. If the file has multiple sheets, pick the right one when prompted, and set the data range if you are asked for it.
- Connect your fields, either by clicking Auto-match fields or by dragging each one onto its element. Drag your image field onto the frame.
- Use Preview to check a few rows before committing. This is where you catch a mis-mapped field, and it is much cheaper than catching it in forty generated pages.
- Open Advanced options. Set Output to Individual designs if you want one file per piece, and set Name each page using to your Title or Inventory column so the files come back named after the work rather than "Page 7". More on that in getting separate files with the right names.
- Generate.
Canva caps a single run at 300 rows and 150 columns. Larger collections split into batches, which we cover in the Canva Bulk Create row limit.
The Workflow That Actually Repeats
This is worth setting up once because a show is not one deliverable, it is five, all from the same rows.
Treat your inventory spreadsheet as the single source of truth. Build one Canva template per output: wall label, price list card, Instagram square, art fair card, collector sheet. Run the same converted file through each.
When a piece sells, you change one cell and regenerate. When the next show opens, filter your inventory export to that show and run it again. The templates do not change. The data does.
One addition worth making: a QR column. Give every wall label a code pointing to that piece's page on your site and a paper label becomes a sales channel. That needs its own generated image per row, which is the same embedding problem again, walked through in Canva Bulk Create QR codes.
If you also shoot your own work, the near-identical loop for client galleries is in Canva Bulk Create for photographers.
FAQ
Can I use this for museum-style didactic labels with longer text?
Yes. A wall text block is just another column. Note that Bulk Create fills the text box you connect and does not resize it, so a 400-word curatorial note and a 20-word one will look very different in the same layout. Set the box to autofit, or keep entry lengths in a similar range.
Do I need image URLs if my photos are only on my computer?
Yes. The conversion step fetches from URLs, so the photos have to be somewhere reachable first. Files sitting in a local folder need to go somewhere that gives you a direct link before any of this applies.
What about pieces with multiple views, like a detail shot and an install shot?
Separate columns, separate frames. Canva connects one data field to one element, so two images means two of each.
Will this work for a gallery representing several artists?
It works better, actually. Add an Artist column, generate the whole roster in one run, and use Name each page using on the artist or inventory column so the files sort themselves.
Is there a way to skip the conversion step entirely?
Only by embedding images by hand, or by using Canva's manual "Add image" column and picking each file from your media library. Both are fine for five pieces and miserable for forty.
The Short Version
Canva Bulk Create will merge every text field on an artwork label without complaint. It will not read your image URLs, because it only sees pictures that are embedded objects inside the XLSX, and a link is text.
Export your inventory with an image URL column, run it through a converter that turns those links into embedded images, and connect it to a template with a real frame. One spreadsheet, one run, a whole show's worth of labels, price lists, and posts.
Try it free at postprep.app — 100 rows, no account required.