PostPrep
← Blog
2026-08-30

How Landscapers Can Use Canva Bulk Create for Before-and-After Posts, Service Menus, and Seasonal Promos

Draft — Post #27 · Target keyword: canva bulk create for landscapers · Meta: Use Canva Bulk Create for landscapers to batch before-and-after posts, service menus, and seasonal promos from one spreadsh

Pete B.
Pete B.
Founder, Postprep

Draft — Post #27 · Target keyword: canva bulk create for landscapers · Meta: Use Canva Bulk Create for landscapers to batch before-and-after posts, service menus, and seasonal promos from one spreadsheet. Here's the workflow that fixes image URLs.

You finished a backyard transformation that looks incredible. Before and after, side by side, it sells itself. So you do what every landscaper does: you post one, maybe two of your best jobs a month, and the other forty projects sitting in your phone never see daylight.

The problem is not the work. The problem is that turning thirty job photos into thirty branded posts means thirty trips into Canva, dragging in each image, retyping each caption, exporting one file at a time. That is an afternoon you do not have during peak season.

Canva Bulk Create is supposed to fix exactly this. You build one template, point it at a spreadsheet, and it spits out a design per row. It works perfectly for text. The moment you try to feed it your photos through image links, it falls apart. This guide shows you why, and the one upload that makes Canva Bulk Create for landscapers actually pull in your images.

Why Canva Bulk Create Stalls for Landscapers

Here is the part nobody warns you about. You set up your spreadsheet with a column of image URLs, links to your before-and-after shots hosted somewhere online. You connect it to Bulk Create, map the image field, and hit generate.

Canva drops the URL onto the design as a line of text. Not the photo. The literal web address, sitting on top of your beautiful template in 12-point font.

This is not a bug you can configure away. Canva Bulk Create only pulls images that are already embedded inside the spreadsheet file as actual picture data. The technical name for that is DrawingML, the format Excel uses to store a picture that lives inside the file itself. A URL is just a string of characters pointing somewhere else, so Canva treats it like any other text. We break the full reason down in why Canva Bulk Create ignores image URLs, but the short version is this: if the image is not physically inside the file, Canva will never see it.

Text merges fine. Your service names, prices, neighborhoods, and CTAs all flow in without a hitch. It is only the images that break, and for a landscaper your images are the entire pitch.

The Manual Workaround Most Landscapers Try First

Most people hit the URL wall and reach for Excel. The trick that almost works is Insert, then Picture, then Place in Cell. Newer versions of Excel will drop a real embedded image into a cell, and that image does survive into Canva.

The catch is the word "manual." You are still inserting every single photo by hand, one cell at a time. If you have forty job photos, that is forty Insert-Picture clicks plus the time to find each file. You have not saved anything over just building the designs directly in Canva.

The other dead end is the =IMAGE() formula in Google Sheets. It looks like the answer. You paste a URL inside =IMAGE("...") and the photo appears right there in the cell. Feels solved. It is not. That formula only renders a preview on screen. The cell does not actually contain image data, so when you export and hand it to Canva, you are back to plain text. We walk through that whole trap in why =IMAGE() doesn't work for Canva Bulk Create.

So the two free workarounds are a manual slog or a mirage. Neither one lets a landscaper batch a whole season of content in one pass.

What You Need Before You Start

Three things and you are ready.

First, a Canva account with Bulk Create. It lives under the Apps menu and is part of Canva Pro and Canva Teams. (Plan names and what is included change often, so confirm current eligibility on Canva's own pricing page before you count on it.)

Second, your photos hosted at public URLs. If your shots are on Google Drive, Dropbox, your website, or a job-management app that gives you image links, you already have this. You just need the links in one place.

Third, a spreadsheet, either a CSV or an XLSX, with one row per post and your image link in its own column.

The Workflow, Step by Step

Step 1: Collect your image URLs

Pull together the photos you want to turn into posts. For a landscaper that usually means before-and-after pairs, finished-project hero shots, and maybe equipment or team photos for behind-the-scenes content.

Get each photo to a public link. Right-click and copy the image address from your website, grab shareable links from Drive or Dropbox, or export links from whatever CRM or job app you use. Drop those URLs into a column in your spreadsheet.

Step 2: Build the spreadsheet

Add one row per post and a column for every piece of text your template needs. Keep it simple and consistent. A before-and-after batch might look like this:

project_nameneighborhoodservice_typeimage_url
Backyard RenoHighland ParkFull Landscape Installhttps://yoursite.com/jobs/backyard1.jpg
Front Yard RefreshPasadenaLawn Renovationhttps://yoursite.com/jobs/front2.jpg
Garden Bed MakeoverEagle RockPlanting & Mulchhttps://yoursite.com/jobs/garden3.jpg

For a seasonal service menu, swap the columns for service_name, price, and a photo of that service. The structure is yours. The only rule is one column holds your image links.

Step 3: Convert it with Postprep

This is the step that replaces the manual slog. Upload your spreadsheet to Postprep. It reads your image URL column, downloads each photo, and embeds it directly into the file as real picture data, the DrawingML format Canva actually reads.

You get back an XLSX where every image is physically inside the file. The free tier handles up to 100 rows with no account required, which covers most of a landscaping season in one go. No Insert-Picture clicks, no formula tricks. If you would rather understand the embedding mechanics yourself, we cover the underlying technique in how to bulk embed images in Excel from URLs.

Step 4: Bulk generate in Canva

Design your template once. A before-and-after layout, a service card, whatever fits the batch. Add the text placeholders and an image frame where the photo should sit.

Open Bulk Create, upload the XLSX that Postprep gave you, and connect each placeholder to its column. Map your image frame to the image column. Hit generate, and Canva builds one finished design per row, photos included. Forty posts in the time it used to take to make two.

A Repeatable Seasonal Workflow

The real payoff is turning this into a routine instead of a scramble.

Set up a single spreadsheet at the start of the season and keep it open on your phone or laptop. Every time you wrap a job, add a row: project name, neighborhood, service, and the photo link. You are logging content as you work, not hunting for it later.

Once a month, or whenever you have a free hour, run that spreadsheet through Postprep and into Canva. One pass turns your backlog into a month of before-and-after posts. Build a second template for seasonal promos, spring cleanups, fall leaf removal, holiday lighting, and reuse the same image-link spreadsheet to push offers tied to the work you just did.

This is the same pattern that works for other local service businesses. Real estate agents use it for listing graphics, generating just-listed and sold posts in batches the same way you generate just-finished job posts.

FAQ

Do I need Canva Pro to use Bulk Create?

Bulk Create is a paid Canva feature, included with Pro and Teams plans. Canva changes plan details regularly, so check their current pricing page to confirm what your plan covers before relying on it.

My photos are on my phone, not online. What do I do?

Upload them somewhere that gives public links first. A Google Drive or Dropbox folder works, or your website's media library. Once each photo has a URL, drop the links into your spreadsheet and continue.

Will this work for before-and-after posts with two photos per design?

Yes. Add two image columns, before_url and after_url, and Postprep embeds both. In Canva, map each image frame to its column. One row produces one side-by-side post.

How many posts can I make at once?

Postprep's free tier handles up to 100 rows with no account. That is enough for a full season of project posts in a single batch for most landscapers.

What if some jobs do not have a good photo?

Leave that row out, or use a service-menu or testimonial template that does not need a job photo. Not every post needs an image. Text-only promos merge fine in Bulk Create on their own.

Does the image quality hold up?

The embedded photo is the same file your URL points to. Use full-resolution job photos and your posts come out crisp. Low-res links will look low-res, so start with good source images.

The Short Version

Canva Bulk Create can turn a season of landscaping jobs into a season of branded posts. The only thing standing in the way is that it reads embedded images, not image URLs, and the free workarounds are either fully manual or a formula that fakes it.

Keep one spreadsheet, log a row per job with the photo link, run it through Postprep to embed the images, and let Canva batch out before-and-after posts, service menus, and seasonal promos in one pass. The work you already did becomes the content you never had time to post.

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