PostPrep
← Blog
2026-08-30

How to Use Canva Bulk Create with Your Google Business Profile Photos

Draft — Post #45 · Target keyword: canva bulk create google business profile photos · Meta: Google Business Profile photos won't embed into Canva Bulk Create as plain URLs. Here's how to collect them

Pete B.
Pete B.
Founder, Postprep

Draft — Post #45 · Target keyword: canva bulk create google business profile photos · Meta: Google Business Profile photos won't embed into Canva Bulk Create as plain URLs. Here's how to collect them and batch-generate graphics that actually work.

You've got two years of photos sitting on your Google Business Profile. Storefront shots, finished jobs, menu items, team photos, before-and-afters, whatever keeps the listing active. It's a real photo library, and it's already public. Turn part of it into a batch of social graphics with Canva Bulk Create, and here's what actually happens: paste the photo links into a spreadsheet, upload it, and every image slot comes back blank or prints the raw URL as text.

That's not a Canva bug. It's how Bulk Create reads spreadsheets, and it trips up Google Business Profile photos the same way it trips up any other image URL. Shopify, Etsy, a client's Dropbox folder, doesn't matter.

This hits multi-location businesses and agencies hardest. Manage five storefronts or fifty client listings and you're not hand-placing a couple of pictures. You're trying to batch hundreds, and the manual route runs out of road fast.

Why Canva Bulk Create Stalls for Google Business Profile Photos

Canva Bulk Create only accepts images that are physically embedded inside the spreadsheet as binary data, in a format called DrawingML. A link to a photo, even one that's public and loads fine in a browser, is just a string of text to Canva. It either prints the raw URL across your design where the photo should sit, or leaves the image frame empty. We covered the mechanics in why Canva Bulk Create ignores image URLs.

Google Business Profile photos are exactly this kind of link. Whether you're copying a photo URL straight off your listing or pulling one from a bulk profile download, what you have is a pointer to an image hosted on Google's servers, not the image itself. Canva needs the pixel data sitting inside the cell. A pointer doesn't cut it.

The Manual Workaround Most Business Owners Try First

Two routes, and both run out of road fast.

Insert > Pictures in Excel. Download each photo from your Business Profile, then go cell by cell using Insert > Pictures to place the file manually. It works for a handful of images. Past 15 or 20, you're spending an afternoon on something that should take minutes, and the pictures tend to float over the cells instead of sitting inside them, which breaks Bulk Create just as badly as a bare URL.

The =IMAGE() formula in Google Sheets. This one looks like it should work. Paste =IMAGE("https://...") and the photo renders right in the sheet. But it's a live formula, not embedded image data. Export that sheet as XLSX or CSV and the formula breaks or exports as plain text. Canva never sees a picture. Full breakdown in why =IMAGE() doesn't work for Canva Bulk Create.

Both work fine for one location with a dozen photos. Neither survives a real multi-location photo library.

What You Need Before You Start

  • A spreadsheet (CSV or XLSX) with one row per photo or per location, and a column of image URLs
  • A Canva template for whatever graphic you're producing, with an image frame and {{placeholder}} text fields for anything that changes per row, like location name, caption, or date
  • A way to pull the URLs out of your Business Profile, covered in Step 1

One honest note before you start: Google Business Profile doesn't have a dedicated "export photos as a CSV of URLs" button built for this exact use case. You'll collect URLs one of two ways, depending on how many locations and photos you're working with.

Step 1: Collect Your Google Business Profile Photo URLs

For a single location, a handful of photos. Open your Business Profile on Google Search or Maps, click into the photo you want, right-click it, and choose Copy image address. That gives you a direct URL to that specific photo. Repeat for each one you want in your batch. Google-hosted photo URLs sometimes carry a size parameter near the end, something like =w400-h300-k-no, and you can generally swap everything after the = for s0 to pull the full-resolution version. Worth testing a couple of links before you commit to it across a whole batch.

For multiple locations, or a full photo library. If you manage several Business Profile listings (a franchise, a multi-location service business, or an agency handling client profiles), sign in to Business Profile, select the locations you want, click Actions, then Download > Businesses, and check Include photos before choosing your file type. This is Google's own bulk export path for managing profiles at scale. One flag: Google's documentation confirms the option exists but doesn't spell out whether the download lists direct photo URLs in a column or bundles photo files separately. Run a small download first and check what you actually get before building a full workflow around it.

If you're comfortable with APIs. Google's Business Profile APIs expose a media endpoint for listing photos tied to an account and location. This is a developer-facing path, and the API structure has shifted more than once as Google has split and renamed these APIs over the years. Check current developer docs before building a pipeline on an endpoint pulled from an older guide.

Whichever method you use, end up with a sheet like this:

LocationPhoto TypeImage URL
Downtown StoreStorefronthttps://lh3.googleusercontent.com/...
Westside LocationTeam Photohttps://lh3.googleusercontent.com/...
Downtown StoreCompleted Jobhttps://lh3.googleusercontent.com/...

Step 2: Clean Up the Sheet

Keep only what your template needs. Usually that's location name, a short caption or category, and the image URL column. Drop anything else you pulled along the way, like hours, categories, or review counts. If you collected multiple photos per location, decide whether you want one row per photo (a full spotlight series) or one hero photo per location (a location roundup).

Step 3: Convert the URLs Into Embedded Images

This is the step that actually fixes the Canva problem. Postprep takes your spreadsheet, fetches the image behind every URL in the column you point it at, and returns an XLSX with each photo embedded directly in its cell.

  1. Go to postprep.app
  2. Upload your spreadsheet (CSV or XLSX)
  3. Select the Image URL column
  4. Download the finished XLSX

No account needed for the first 100 rows, which covers most single-location photo batches outright and gets multi-location agencies most of the way through a first run.

Step 4: Build or Reuse Your Canva Template

If you already have a template for location posts or spotlight graphics, open it. If you're starting fresh:

  1. Start a new design at the size you need: Instagram post, Pinterest pin, or a square post sized for a Business Profile update
  2. Add a text box for the location or caption and type {{Location}}
  3. Add any other text fields you need, like {{Caption}} or {{Date}}
  4. Drop in an image frame where the photo goes

Field names in double braces need to match your spreadsheet's column headers exactly, capitalization included.

Step 5: Run Bulk Create

  1. With your template open, click Apps → Bulk Create in Canva's side panel
  2. Upload the XLSX Postprep gave you
  3. Match each column to its element: text to text, image column to your image frame
  4. Click Continue, then Generate designs

Canva generates one finished design per row. Download the set or push it straight to your scheduler.

A Repeatable Workflow for Multi-Location Businesses and Agencies

Monthly photo refresh. Pull whatever new photos went up on each location's profile that month, run them through Postprep, and generate a batch of "what's new" posts without opening a single design by hand.

New location launches. The moment a location's profile goes live with its first photos, add a row and generate launch graphics alongside your existing set. Consistent branding without rebuilding the template.

Client reporting for agencies. If you manage profiles for clients, the same spreadsheet becomes a fast way to hand back a batch of ready-to-post graphics per client, pulling straight from each client's own listing photos.

Seasonal or campaign pulls. Filter your sheet to a themed subset (holiday photos, one service category, one region) and run just those rows instead of regenerating everything.

If your business is a single storefront rather than a multi-location brand, the same steps apply at a smaller scale. See our real estate agents guide or restaurants guide for vertical-specific templates that pair well with this photo-sourcing method.

Frequently Asked Questions

Do I need to own the Business Profile to pull its photos this way?

This workflow is built for photos on profiles you manage. Business Profile photo URLs are technically public once posted, but this guide is meant for your own listings, not for pulling images off competitors' profiles.

Will this work with photos customers uploaded to my listing, not just ones I posted?

Yes, mechanically. A customer-uploaded photo has a URL the same way yours does. Just be thoughtful about using customer photos in your own marketing.

What if a photo URL stops working after I've built my sheet?

Google-hosted photo links have generally held up well, but nothing hosted on someone else's server is guaranteed permanent. If a link breaks, Postprep can't fetch it. Check that the URL opens in an incognito window before relying on it for a batch you plan to reuse.

Does the bulk spreadsheet download from Business Profile give me ready-to-use image URLs?

Google's documentation confirms you can include photos when you download profiles in bulk, but doesn't spell out whether that means URLs in a column or files bundled separately. Test it on a small batch first and confirm before you commit to it as your main collection method.

Can I use this for graphics I want to post back to Google Business Profile itself?

Yes. Nothing here is specific to Instagram or Pinterest. Build whatever size template Canva supports, including square posts sized for Business Profile updates.

How big a photo batch can I run at once?

Free for the first 100 rows, no account required. Bigger batches, like a full multi-location library, need a one-time unlock.

The Short Version

Google Business Profile doesn't hand you a purpose-built CSV of photo URLs, so the first real step is collecting them yourself: copying image addresses for a single location, using Google's bulk profile download for many locations, or the API if you're technical. From there it's the same fix every source needs. Run the sheet through Postprep to embed the images, then feed the XLSX to Canva Bulk Create.

Collect your URLs, convert with Postprep, generate in Canva. Works the same whether you're batching one location's spotlight series or a hundred-location agency refresh.

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