How Libraries Can Use Canva Bulk Create for New Arrivals, Staff Picks, and Reading Lists
Canva Bulk Create for libraries: turn one catalog export into new arrivals posts, staff picks cards, and reading list graphics with real book covers embedded.

Forty new titles landed on the new arrivals shelf this month. Your director wants a social post for each one, a printed shelf-talker for the display, and a slide for the lobby screen. You have a spreadsheet from the catalog with title, author, and ISBN in it, and a Canva template that looks great.
So you open the template, search the cover image, drag it in, retype the title, retype the author, duplicate the page, and do it thirty-nine more times. Two hours later you have forty posts and a headache, and next month the whole thing resets.
Canva Bulk Create for libraries is supposed to fix exactly this. It merges a spreadsheet into a template and spits out one design per row. The text merges perfectly. The book covers do not, and the reason is not obvious from anything Canva shows you.
Why Canva Bulk Create Stalls for Libraries
Your catalog export has a column of image URLs, or you built one. Canva reads that column as a string of characters. It will happily print https://covers.openlibrary.org/b/isbn/9780385533225-L.jpg across your cover placeholder in 8pt type.
This is documented behavior, not a glitch. Canva's own help page states that image URLs from cloud photo storage are not supported and will be treated as plain text, and that images must be embedded directly within a single cell rather than floating across cells.
The technical reason: Canva only reads images that are embedded inside the XLSX file itself as DrawingML objects. That is a specific piece of XML structure buried in the spreadsheet format. A URL sitting in a cell is text. An =IMAGE() formula in Google Sheets is also text once it leaves Google's servers. Neither survives the trip. We broke this down in detail in why Canva Bulk Create ignores image URLs.
So text merges. Covers do not. That single gap is what turns a five-minute batch into a two-hour afternoon.
The Manual Workaround Most Librarians Try First
Two things usually get tried, and both dead-end.
The first is Excel's Insert > Picture menu. You drop each cover into the cell by hand. This actually does produce a real embedded image, and Canva will read it. It also means opening forty browser tabs, right-click-saving forty JPGs, and inserting them one at a time. That is the same two hours you were trying to avoid, just moved upstream. It only makes sense for a handful of rows.
The second is =IMAGE() in Google Sheets. It looks perfect on screen. The cover appears in the cell. Then you export to XLSX and the image vanishes, because =IMAGE() is a live formula that renders in Google's viewer and stores nothing in the file. Here is the full explanation of the =IMAGE() dead end.
There is also the DIY route of writing an Apps Script or a Python script with openpyxl to embed the images programmatically. That works. It also requires someone on staff comfortable with code, which most library marketing teams do not have on hand for a monthly display refresh.
What You Need Before You Start
- A list of the titles you want graphics for, with title, author, and ISBN
- A Canva plan that includes Bulk Create, on a desktop
- A Canva template with a frame or grid where the cover goes
- A way to turn ISBNs into cover image URLs (covered in step 2)
On plans: Canva lists Bulk Create as available to Canva Pro, Canva Teams, Canva Business, Canva for Enterprise, Canva Education, and Canva for Nonprofits, on desktop only. School and academic librarians may already be covered through Canva Education, and public libraries may qualify through Canva for Nonprofits. Eligibility rules change, so check Canva's current criteria rather than taking this as a promise. If you want the fuller breakdown, see does Canva Bulk Create require a Pro plan.
Step 1: Pull Your Title List Out of the Catalog
Every major ILS can produce a list. In Koha you can use the SQL report builder or a CSV profile. In Sierra, Create Lists exports to CSV. Polaris, Follett, and Atrium all have reporting or list-export functions that reach the same place. The exact menu path differs by system and by how your consortium has it configured, so ask your systems librarian if you cannot find it.
What you want out of it is simple: one row per title, with columns for title, author, and ISBN. Add anything else you want printed on the graphic, like call number, format, or the staff member who recommended it.
If your ILS export is painful, a hand-typed list of forty ISBNs is a perfectly reasonable alternative. The ISBN is the only field that has to be exact.
Step 2: Turn ISBNs Into Cover URLs
You have two good options here, and the better one depends on what your library already pays for.
Option A: your own catalog's cover service. If your library subscribes to Syndetics or a similar enrichment service, you already have licensed cover images and a URL pattern that includes your library's client code. That is the cleanest source, because you are using images you are already entitled to display. Ask your vendor or systems librarian for the exact URL format for your account. (Baker & Taylor's Content Café shut down and Syndetics offered affected libraries a transition period, so if your covers broke recently, that is likely why.)
Option B: Open Library. The Internet Archive's Open Library Covers API builds a cover URL from an ISBN with no key and no account. The pattern is:
https://covers.openlibrary.org/b/isbn/{ISBN}-L.jpg
Sizes are S, M, and L. Add ?default=false to the end and it returns a 404 instead of a blank placeholder image when there is no cover, which is useful for spotting gaps before you generate.
If your ISBNs are in column C, one formula fills the whole column:
="https://covers.openlibrary.org/b/isbn/"&C2&"-L.jpg"
Two honest caveats on Open Library. It rate-limits ISBN-based cover requests to 100 requests per IP per five minutes, and it asks that you not crawl the API for bulk downloads. So keep batches under 100 titles, space them out, and treat this as a display-scale tool rather than a way to mirror the whole cover repository. Open Library also asks for a courtesy link back, which is easy to honor in a post caption or on your site.
Not every ISBN has a cover. Spot-check the column before you build, and swap in a placeholder or a photo of the physical book for the misses.
Step 3: Build the Spreadsheet
Keep it flat. One row per title, one column per thing that appears on the graphic.
| Title | Author | Cover URL | Shelf | Recommended by |
| The Overstory | Richard Powers | https://covers.openlibrary.org/b/isbn/9780393635522-L.jpg | New Fiction | Dana |
| Braiding Sweetgrass | Robin Wall Kimmerer | https://covers.openlibrary.org/b/isbn/9781571313560-L.jpg | Staff Picks | Marcus |
Canva caps a Bulk Create selection at 300 rows and 150 columns, and you can connect up to 150 data fields. For a monthly new arrivals batch you will not come close. If you ever do, see how to batch past the 300-row limit.
Step 4: Convert With Postprep
Upload the CSV or XLSX to postprep.app. It fetches every image in the URL column and writes it back as a real DrawingML-embedded image inside the cell, then hands you an XLSX. Free tier handles 100 rows with no account, which lines up neatly with a monthly display batch.
If you would rather understand the mechanics first, here is what embedding images in Excel from URLs actually involves.
Step 5: Generate in Canva
- Open your template. Make sure the cover placeholder is a frame or grid from the Elements tab, not a pasted image. Canva only connects image data to frames and grids.
- Click the page background, select Edit, then Bulk create. (You can also reach it under Apps, or from a Canva Sheet.)
- Choose Upload data and select the XLSX Postprep returned.
- Connect each column to its element. Auto-match usually gets it right; drag and drop to fix anything it misses.
- Preview a few rows. Confirm covers are landing in the frame, not printing as text.
- Under Advanced options, set Output to Individual designs if you want one file per book, and set Name each page using to your Title column so the files are named something a human can find later. More on that in getting separate files with the right names.
- Generate.
A Repeatable Monthly Workflow
The real win is not the first batch. It is the second one taking eight minutes.
Build three templates once: a square social post, a shelf-talker at your display card size, and a lobby slide. Keep them in a Canva folder the whole team can reach.
Then each month: run the same ILS report with a new date range, paste the ISBNs into your saved sheet so the cover URL formula fills itself, run it through Postprep, and generate against all three templates from the same file. New arrivals, staff picks, and a themed reading list for whatever the month calls for can all come out of one spreadsheet with a filter column.
Summer reading, banned books week, and seasonal displays work the same way. Change the rows, keep the templates.
FAQ
Do I need permission to use book cover images?
Publishers generally provide cover images for promotional and catalog use, and libraries have long displayed them for exactly this purpose. That said, licensing varies by source and this is not legal advice. If your library has policy on it, follow that. If you subscribe to a cover service, you are on the safest footing using their images under your subscription.
What if a book has no cover in Open Library?
Append ?default=false to the URL so a missing cover returns a 404 rather than a blank image, then check the column before converting. For gaps, photograph the physical copy or use your cover service.
Can I do this with a list of 300 new titles?
Canva's selection cap is 300 rows, so yes in one pass, but Open Library's rate limit means you should split the conversion into chunks under 100 and space them out. If you are pulling covers from your own subscription service, that limit does not apply.
Does this work on an iPad?
No. Canva lists Bulk Create as desktop only, and there is no mobile equivalent.
We are a school library. Does Canva Education cover this?
Canva lists Canva Education among the plans with Bulk Create access. Whether your school qualifies depends on Canva's current eligibility guidelines, so verify before planning around it. The same batching approach shows up in how teachers use Bulk Create for name tags and certificates.
Can I use this for author events and program flyers too?
Yes, and the pattern is identical. Swap the cover URL column for a headshot or program image column. Nonprofits use the same workflow for volunteer spotlights and event graphics.
The Short Version
Canva Bulk Create merges your title and author text fine. It ignores cover image URLs and prints them as text, because it only reads images embedded as DrawingML inside the XLSX.
Pull your list from the catalog, build a cover URL column from ISBNs with one formula, run the file through Postprep so the covers become real embedded images, then generate against a template with a frame placeholder. Forty new arrivals graphics in the time it used to take to make three.
Try it free at postprep.app — 100 rows, no account required.