How Garden Centers and Plant Nurseries Can Use Canva Bulk Create for Plant Cards, Availability Lists, and Seasonal Promos
Canva Bulk Create garden center workflow: turn a nursery inventory export with photo URLs into plant cards and seasonal promos in one batch, not one by one.

It is the first week of April. You have 180 varieties on the bench, a fresh truck coming Thursday, and a marketing job that looks like this: a plant card for the shelf, an Instagram post for the new arrivals, and a printable availability list for the counter. Every one of them needs the plant's photo, its light and water requirements, its mature size, its zone, and this week's price. This is the exact job a Canva Bulk Create garden center workflow should handle in one pass.
You already have all of that. It lives in your POS or your online store, and you can export it to a spreadsheet in about thirty seconds. Every row is a plant. Every column is a field your design needs.
So you open Canva Bulk Create, upload the export, and the text fills in perfectly. Names, prices, zones, light. All of it. And where the photo should be, every single card shows the raw URL as a line of grey text.
Why Canva Bulk Create Stalls for Garden Centers
Bulk Create is genuinely good at what it does. It links each column in your data to a placeholder element on your template and generates one design per row. Canva's own documentation describes it exactly that way: columns are data fields, rows are designs.
Text columns work without a fight. Plant name, botanical name, price, sun exposure, water needs, mature height, USDA zone, pot size. Connect the column to a text box and it fills.
Image columns do not, and the reason is not a bug. Canva reads embedded images out of a spreadsheet file, not links. An XLSX file can carry actual picture data inside it, in a format called DrawingML, and that is the only thing Bulk Create's image fields will accept. A cell containing https://cdn.yourshop.com/hostas/blue-angel.jpg is, as far as Canva is concerned, a string of characters. Canva states it plainly in the Bulk Create help page: image URLs from cloud photo storage are not supported and will be treated as plain text.
That is the whole problem. Your export is correct. Your template is correct. The file format is the gap. We broke this down in detail in why Canva Bulk Create ignores image URLs.
The Manual Workaround Most Nurseries Try First
The obvious move is to open the export in Excel and use Insert > Picture > Picture from URL, dropping each photo into its cell by hand.
This works. It is also the reason so many garden centers quietly gave up on batching. Forty plants is a slow afternoon. A hundred and eighty is not happening in April, which is the exact month you needed it.
The other attempt is =IMAGE() in Google Sheets. The formula displays the photo beautifully on screen, which is what makes it such a convincing dead end. It is a rendering instruction, not embedded picture data, and it does not survive the export. Download that sheet as XLSX and the cell contains a formula result, not an image. Canva sees nothing. Full explanation here: why =IMAGE() doesn't work for Canva Bulk Create.
Manual placement is the only free path that actually works, and it costs you the time savings you came for.
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. More detail in does Canva Bulk Create require a Pro plan.
- A spreadsheet of plants with one column holding a direct, public image URL for each.
- A Canva template with a real image frame, not a pasted photo. Canva is specific about this: image placeholders must be frames or grids from the Elements tab.
Step 1: Get Your Plant Photos Out as URLs
Where your image URLs come from depends on what you run the shop on.
If you sell online, this is the easy case. Shopify, Square Online, Ecwid, BigCommerce and WooCommerce all export a product CSV with an image URL column already in it. Those URLs are public, permanent, and unsigned, which is exactly what you want. Our platform-specific walkthroughs cover the export step: Shopify and Ecwid.
If you run a retail POS without a storefront, check whether your system stores product images at all and whether the export includes a link to them. Lightspeed, Square for Retail and the garden-specific systems vary a lot here, and some export the image as an internal reference rather than a public URL. Ask your vendor before you build the workflow around it.
If your photos are on your phone, you need to host them somewhere first. Any host that serves a direct link to the image file works. What does not work is a share link to a viewer page, which returns a web page rather than a picture.
If your grower sends availability with images, treat those carefully. A wholesale availability list sometimes includes a link to the grower's photo library, and some breeders publish image libraries for retail partners. Check the terms before you put a grower's photo on your own promo. Many are happy for you to use them, some require attribution, and a few restrict it entirely.
Whatever the source, open two or three URLs in a private browser window. If the image appears on its own with no login prompt, the URL is usable.
Step 2: Build the Spreadsheet
One row per plant. One column per thing your card shows. This is where garden centers have an advantage over most Bulk Create users, because a plant card is already a data card. You are not inventing fields, you are just naming the ones on your bench tag.
| plant_name | botanical | light | water | mature_size | zone | price | image_url |
| Blue Angel Hosta | Hosta 'Blue Angel' | Full shade | Medium | 36" x 48" | 3-9 | $18.99 | https://cdn.yourshop.com/blue-angel.jpg |
| Limelight Hydrangea | Hydrangea paniculata | Full sun | Medium | 6-8' x 6' | 3-9 | $42.00 | https://cdn.yourshop.com/limelight.jpg |
| Autumn Joy Sedum | Hylotelephium | Full sun | Low | 24" x 24" | 3-9 | $12.50 | https://cdn.yourshop.com/autumn-joy.jpg |
Keep the headers plain and descriptive. Canva's Auto-match fields feature tries to guess which column belongs to which element, and clear names give it a better shot. Be aware Canva caps a single run at 300 rows and 150 columns.
One practical note on formatting: whatever your card shows, put it in its own column. If you want the tag to read "Full shade · Medium water", build that as a separate combined column in the spreadsheet rather than trying to assemble it inside Canva. Bulk Create fills fields, it does not concatenate them.
Step 3: Convert the File So Canva Can Read the Images
Upload your CSV or XLSX to Postprep. It reads the image URL column, fetches each photo, and writes it back into the cell as a real DrawingML-embedded image. What comes back is an XLSX where the pictures are genuinely inside the file.
Free tier handles 100 rows with no account, which covers a typical new-arrivals batch or a single bench section. If your spring inventory runs longer, split it by category and run it in passes. Doing hostas, then hydrangeas, then perennials is usually how you would want the designs grouped anyway.
If you would rather do it yourself, the mechanics of embedding from URLs are written up in how to bulk embed images in Excel from URLs.
Step 4: Generate the Batch in Canva
- Open your template. Confirm the photo area is a frame or grid from Elements, not a placed image.
- Click the page background, select Edit, then Bulk create.
- Choose Upload data and select the converted XLSX.
- Connect the fields. Drag each column onto its element, or use Auto-match fields and correct anything it gets wrong.
- Use Preview to check a few rows before you commit. Watch for long botanical names overflowing their text box, since that is what breaks first.
- Under Advanced options, set Output to Individual designs and set Name each page using to your plant name column. Otherwise you get files called Page 1 through Page 180 and no way to find the hydrangea. More on this in Canva Bulk Create download.
- Generate.
The Repeatable Version
The point is not doing this once in April. The point is that after the first run, the spreadsheet is the only thing you touch.
Keep one master plant sheet with every variety you carry, fully filled in, image URLs and all. Building it is the real work and you only do it once. Then each week you filter it rather than rewrite it.
Truck arrives Thursday. Filter the master sheet to the 22 varieties that came in, run the batch, and you have 22 bench tags and 22 social posts before the plants are off the cart.
End of season clearance. Filter to what is left, add a discount column, run it against a clearance template.
Bloom-time content. Add a bloom month column to the master sheet and you can pull "what's flowering now" in June, July and August without touching anything else.
Spring availability list for landscapers. Same data, a different template, output as one multi-page design instead of individual files, and you have a printable catalog. The product catalog walkthrough covers that pattern.
The master sheet gets better every season. The graphics stop being a project.
FAQ
Do I need image URLs, or can I use photos from my phone?
You need URLs. If your photos are only on a device, host them somewhere that serves a direct link to the image file first. A viewer page link will not work, because it returns a web page rather than a picture.
My plant photos are inconsistent. Some are close-ups, some are full shots. Will the batch look bad?
Probably, yes. Bulk Create drops each photo into the same frame at the same crop, so mismatched framing shows up immediately across a batch. It is worth standardizing how you shoot inventory, even loosely, before you build the master sheet. A phone on a tripod at a fixed distance against the same backdrop is enough.
Can I use the grower's or breeder's photos?
Sometimes. Many wholesale growers and plant breeders provide retail partners with image libraries and want you to use them. Others require attribution or restrict use. Check the terms attached to the library, or ask your rep. Your own photos are always the safe answer and usually look more like your shop anyway.
We have 400 varieties. Can I do them all at once?
No. Canva caps a single Bulk Create run at 300 rows. Split into batches, which for a nursery usually means splitting by category or by bench. Full detail on the caps and how to batch past them.
Does this work for hardgoods too, not just plants?
Yes, and it is the same workflow. Pottery, tools, soil amendments and giftware are ordinary retail products with photos and prices, so they behave exactly like an e-commerce catalog.
What if my inventory changes daily?
Then batch weekly, not daily. Bulk Create is worth it when you are producing a set of designs at once. For a single plant that sold out this morning, editing one design by hand is faster.
Do I need a Canva Pro plan?
Bulk Create is listed for Pro, Teams, Business, Enterprise, Education and Nonprofits, on desktop only. If your nursery does education programs or partners with a nonprofit garden, it is worth checking Canva's eligibility pages directly rather than assuming.
The Short Version
Your inventory export already contains everything a plant card needs, including a photo URL for every variety. Canva Bulk Create will fill in all the text and ignore all the photos, because it only reads images embedded inside the spreadsheet file, not links.
Run the export through Postprep first. The URLs become real embedded images, Canva connects them to your frame, and 180 plant cards generate in one pass instead of one afternoon.
Build the master sheet once. Filter it every week after that.
Try it free at postprep.app — 100 rows, no account required.