PostPrep
← Blog
2026-06-13

How Nail Salons Can Use Canva Bulk Create for Service Menus, Nail Art Galleries, and Promo Posts

Draft — Post #48 · Target keyword: canva bulk create nail salons · Meta: Turn your nail art photos and price list into a full set of branded graphics from one spreadsheet. The Canva Bulk Create workfl

Pete B.
Pete B.
Founder, Postprep

Draft — Post #48 · Target keyword: canva bulk create nail salons · Meta: Turn your nail art photos and price list into a full set of branded graphics from one spreadsheet. The Canva Bulk Create workflow built for nail salons and techs.

Your phone holds three hundred photos of finished sets. Gel, acrylic, ombre, chrome, French, hand-painted art. Every one of them is a potential post, a portfolio tile, or a "book this look" graphic. Right now they are sitting in your camera roll doing nothing.

You also have a service menu to refresh, seasonal designs to promote, and a new tech to introduce. Each of those is the same branded layout with a different photo, name, and price swapped in. Canva Bulk Create is the obvious tool for that kind of repeat work. Then you try to feed it a spreadsheet of your image links and Canva hands you back a stack of designs with empty photo slots.

This post walks through the full Canva Bulk Create nail salons workflow, the one step Canva quietly refuses to handle, and a realistic monthly rhythm for a busy salon or solo nail tech.

Why Canva Bulk Create Stalls for Nail Salons

A nail business runs on images. Nail art galleries, before-and-after sets, swatch boards for gel colors, stylist headshots, seasonal collection shots. Almost every graphic you want to mass-produce has a photo at the center of it.

Canva Bulk Create handles the text side fine. Drop in a column of service names, prices, design titles, or tech names and Canva merges them in cleanly across every design. That part just works.

Image URLs are where it breaks. Canva's Bulk Create only accepts images that are physically embedded inside the XLSX file as binary data, in a format called DrawingML. A link to a photo is just text to Canva. It either prints the raw URL inside your template or leaves the photo slot blank. We explained the technical reason in Why Canva Bulk Create Ignores Image URLs.

For a nail salon that is the whole game. A gallery of 40 nail art looks with photo links is not going to render unless those photos are embedded inside the XLSX before it ever reaches Canva.

The Manual Workaround Most Nail Techs Try First

The usual hack goes like this. Open the spreadsheet in Excel, click an image cell, use Insert > Picture > Place in Cell, find the photo on your laptop, repeat for every single look. That works in theory, if every photo is already downloaded, cropped to the same ratio, named to match its row, and sitting in one folder.

In real life your photos are spread across your phone, your Instagram, a client's tagged post, and a couple of shots a coworker sent you. By the time you have them all downloaded, renamed, and inserted by hand, you could have done a full set of acrylics.

The other common attempt is the =IMAGE() formula in Google Sheets. We covered why that one dead-ends for Bulk Create in Why =IMAGE() Doesn't Work for Canva Bulk Create. Short version: =IMAGE() is a live cell reference, not real embedded image data. Canva reads the file, finds no actual image, and leaves the slot empty.

What You Need Before You Start

Two things have to be in place.

A Canva template per graphic type. Most nail businesses cycle through a small set of recurring designs. The common ones look like this.

A nail art showcase post with one finished-set photo, the design name, and a "book this look" tag. A before-and-after card. A gel or acrylic swatch tile with the color name and code. A stylist or tech intro with a headshot, name, and specialty. A service menu card with a photo, service name, and price.

Each template needs Canva Bulk Create placeholders for the text variables like {{design_name}}, {{price}}, {{tech_name}}, plus an image element for the photo.

Worth being honest here: not every nail salon graphic needs a photo. A plain text price list, a "we're closed Monday" notice, or a policy card has no image to embed, so those need no conversion at all. Bulk Create handles pure-text jobs on its own. The conversion step only matters when a photo rides along with each row.

A single source-of-truth spreadsheet. One row per output design. Columns for every text field plus one column holding the direct image URL.

If you already track your work in a Google Sheet, a Notion board, or even an Instagram content planner, you are most of the way there. The only column you may need to add is a direct URL to each photo. We have written about clean spreadsheet prep for verticals like Etsy sellers and salons and spas, and the same rules apply: one row per output, one column per field, image URLs in their own column.

Step 1: Collect Image URLs From Wherever They Live

This is the step that eats the most time, because nail photos live everywhere.

Your phone or Google Photos. Upload the shots you want to a single folder, then get a direct image link for each. For Google Drive, convert the share link to the direct format https://drive.google.com/uc?id=FILEID&export=download.

Instagram. If a look is already posted, you can use the image address, but Instagram URLs expire and can be unreliable. The cleaner path is to keep the original photo file and host it somewhere stable.

Your website or portfolio. If you post galleries to a Squarespace, Wix, or Shopify site, right-click any image and copy image address. Those URLs are stable and ready to use.

A shared cloud folder. Dropbox links work if you change the trailing ?dl=0 to ?raw=1, which returns the raw image instead of the preview page.

Drop every URL into one spreadsheet column. Name it photo or image_url, pick a convention, and stick with it.

Step 2: Build the Nail Salon Spreadsheet

A typical nail bulk sheet looks like this.

design_nameservicepricetech_namephoto
Chrome FrenchGel X$75Miahttps://yoursite.com/img/chrome-french.jpg
Autumn OmbreAcrylic Full Set$90Jordanhttps://yoursite.com/img/autumn-ombre.jpg
Hand-Painted FloralsGel + Art$110Miahttps://yoursite.com/img/florals.jpg

Save it as CSV or XLSX. Column names do not have to match Canva exactly because you map them in the Bulk Create panel, but matching names lets Canva auto-connect in one click.

Step 3: Convert the Spreadsheet With Postprep

This is the conversion step Canva will not do for you.

Go to postprep.app, upload your CSV, and pick the column that holds the image URLs. Postprep fetches each URL, downloads the photo, and embeds it inside the XLSX as DrawingML, the binary format Canva actually reads. Every other column passes through untouched.

A 40-row gallery takes well under a minute. The free tier covers 100 rows with no account required.

Step 4: Bulk Generate in Canva

Open your showcase template in Canva. Make sure you are on a plan that supports Bulk Create. Based on Canva's current documentation that includes Pro and Teams, and Bulk Create runs on the desktop app and web, not the mobile app. Plan eligibility and naming can change, so confirm against your own Canva account before you build a workflow around it.

In the left panel click Apps, then Bulk Create. Click Upload data and choose your converted XLSX. Drag each column onto its matching placeholder, or use Auto-connect if your column names already line up.

Click Generate designs. Canva produces one finished graphic per row with the nail photos, design names, prices, and tech names already merged in.

If you run three template types off the same sheet, a showcase post, a service menu card, and a swatch tile, take the same XLSX into each template and run Bulk Create three times. Same data, three sets of branded graphics. Download as a ZIP and you have a full content batch ready to schedule.

A Realistic Nail Salon Workflow

Here is what the rhythm looks like for a working salon or solo tech.

End of each week. Add the week's best finished sets to your master sheet with their photo URLs, design names, and prices. Five minutes after your last client.

Once a month. Run the sheet through Postprep. Generate a month of showcase posts, refresh your service menu cards with current photos and prices, and build any seasonal collection graphics. Schedule the whole batch in one sitting.

When something changes. New tech joins, prices go up, a holiday collection drops. Update the relevant rows, re-run Postprep, regenerate only what changed.

The whole cycle is about 20 minutes of spreadsheet time and 15 minutes in Canva per template, whether you are posting 10 looks or 100. Done by hand, a 50-photo gallery is a multi-hour evening you do not have after a full book of clients.

Frequently Asked Questions

My photos are all different shapes. Will they look right?

Canva places each photo into the image frame in your template, so the frame controls the crop and aspect ratio. For the cleanest gallery, shoot or crop your nail photos to a consistent ratio before you add the URLs to your sheet. Square works well for Instagram grids.

Can I use this for both Instagram posts and a printed menu?

Yes. Run Bulk Create once, then export the generated designs as PNG for social or PDF for print. The photos embed at their original resolution, so they hold up at print sizes as long as your source images are high enough quality.

Do I need a paid Postprep plan?

Not to start. The free tier handles 100 rows with no account. A 100-look batch is a lot of nail content for most salons, so many never need more than the free tier.

Some rows are text-only specials with no photo. Is that a problem?

No. Leave the image URL cell blank for those rows. Postprep skips the embed for empty cells and Canva leaves the placeholder as-is. You can mix photo rows and text-only rows in the same sheet.

My photos are on Instagram only. What should I do?

Instagram image URLs expire and often will not fetch reliably. Keep the original photo files and host them somewhere stable, like your website, a Google Drive folder, or a Dropbox folder, then use those links in your sheet.

Can two techs share one sheet?

Yes. Add a tech_name column and one row per look. Canva merges each tech's name onto their own designs. One sheet, the whole salon's content.

The Short Version

Canva Bulk Create does the repetitive merge work for every nail art post, swatch tile, service menu card, and tech intro you need. The one thing it will not do is turn image URLs into embedded photos inside the XLSX. Postprep is that missing step.

Build one master sheet of your looks. Convert it with Postprep. Bulk generate in Canva. Your camera roll turns into a month of branded content in about half an hour.


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