PostPrep
← Blog
2026-06-13

How Dropshippers Can Use Canva Bulk Create for Product Ads, Listing Graphics, and Social Posts

Draft — Post #29 · Target keyword: canva bulk create dropshipping · Meta: Turn your product feed into ad creatives and social posts in bulk. The Canva Bulk Create dropshipping workflow that finally em

Pete B.
Pete B.
Founder, Postprep

Draft — Post #29 · Target keyword: canva bulk create dropshipping · Meta: Turn your product feed into ad creatives and social posts in bulk. The Canva Bulk Create dropshipping workflow that finally embeds your supplier image URLs.

You imported 80 winners from AliExpress this week. Each one came with a supplier image URL, a title, and a price you marked up. Now you need an ad creative, a listing graphic, and a few social posts for every single product before you can start testing.

You already know Canva Bulk Create is the right tool. One template, one spreadsheet, 80 finished designs. So you export your product feed, drop the image URL column into Canva, hit generate, and get back 80 graphics with empty image slots or the raw URL printed as text across your product card.

That is the wall every dropshipper hits. This post walks through the full Canva Bulk Create dropshipping workflow, the one conversion step Canva will not do on its own, and a repeatable rhythm for turning a fresh product import into ready-to-test creative in an afternoon.

Why Canva Bulk Create Stalls for Dropshippers

Dropshipping runs on feeds. Your product data lives in a CSV or XLSX the second you import it. AliExpress, CJdropshipping, Zendrop, Spocket, DSers, your Shopify product export. Every one of them hands you a row per product with a title, a price, variant info, and an image URL pointing at the supplier's CDN.

Canva Bulk Create merges the text fields without a fight. Drop in a column of product titles, prices, or discount badges and Canva fills each design cleanly.

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 supplier URL is just text to Canva. It either prints the URL as a literal string inside your template or leaves the image frame empty. Canva's own help docs confirm it: image URLs from cloud storage are not supported, images must be embedded directly into the sheet. We covered the technical reason in Why Canva Bulk Create Ignores Image URLs.

For a dropshipper this is the whole game. Your entire advantage is speed, testing 50 products to find the one that sells. If every product image has to be downloaded and placed by hand, you have thrown away the reason you batch in the first place.

The Manual Workaround Most Dropshippers Try First

The usual hack goes like this. Export the feed, open it in Excel, click each image cell, use Insert > Picture > Place in Cell, point at a file you downloaded from the supplier, repeat for all 80 rows. It works if every image is already saved to your laptop, sized right, and named to match the row order.

In practice you are pulling images off AliExpress product pages, a few off CJ, some from your own Shopify media library, and the rest from supplier emails. By the time you have downloaded, renamed, and inserted 80 images by hand, the trend you were chasing has already cooled off.

The other dead end is the =IMAGE() formula in Google Sheets. It looks like it works because the photo shows up in the cell. But =IMAGE() is a live cell reference, not embedded image data. When Canva parses the file it sees nothing. We broke that down in Why =IMAGE() Doesn't Work for Canva Bulk Create.

What You Need Before You Start

Two things have to be in place.

A Canva template per asset type. Most dropshippers cycle through a small set of recurring designs. A product ad creative with the photo, a hook headline, and a price or discount badge. A listing or hero image with the product on a clean branded background. A social post for Instagram or TikTok with the photo, a benefit line, and a call to action. A comparison or "before/after" style card for problem-solving products.

Each template needs Canva Bulk Create placeholders for the text variables like {{product_title}}, {{price}}, {{hook}}, and an image element for the product photo.

A single source-of-truth spreadsheet. One row per output design. Columns for every text field plus a column with the direct image URL. If you already export from DSers, Shopify, or your supplier dashboard, you are most of the way there. The same prep rules we use for Shopify stores and print-on-demand sellers apply here: one row per output, one column per data field, image URLs in their own column.

Step 1: Collect the Product Image URLs

Your feed probably already has them, but the URL has to point straight at the image file, not at a product page.

Shopify product export. The CSV includes an Image Src column with direct CDN URLs ending in .jpg or .png. Those work as-is.

AliExpress and supplier dashboards. Open the product, right-click the main image, and choose Copy image address. The URL should end in an image extension. If it ends in a page path, you grabbed the link to the listing, not the photo.

CJdropshipping, Zendrop, Spocket, DSers. Most expose a downloadable image or a direct CDN link in the product detail view. Copy the image address, not the share link.

Your own product media. If you have already uploaded edited photos to Shopify or a CDN, those URLs are clean and ready.

Drop every URL into one column. Name it image_url and keep the convention consistent across feeds.

Step 2: Build the Product Spreadsheet

A typical dropshipper's bulk sheet looks like this.

product_titlehookpricediscountimage_url
Mini Portable BlenderSmoothies anywhere in 30 seconds$24.9940% OFFhttps://cdn.shopify.com/.../blender.jpg
LED Galaxy ProjectorTurn any room into a night sky$32.0050% OFFhttps://cdn.shopify.com/.../projector.jpg
Posture Corrector BeltSit straight without thinking about it$19.9935% OFFhttps://ae01.alicdn.com/.../belt.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.

A quick honesty note: if a job is text-only, like a plain promo banner with no product photo, you do not need any of this. Canva handles text merges natively. The conversion step below only matters when you have image URLs to embed.

Step 3: Convert the Spreadsheet With Postprep

This is the step Canva refuses to do.

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

An 80-row feed takes well under a minute. The free tier covers 100 rows with no account required, which is enough to convert a full product test batch in one pass.

Step 4: Bulk Generate in Canva

Open your ad template in Canva. Make sure you are on a plan that supports Bulk Create. Per Canva's docs this includes Pro, Teams, Business, Enterprise, Education, and Nonprofits, and the feature is desktop only. (Plan eligibility is worth double-checking against your own account, since Canva changes tiers from time to time.)

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

Click Generate designs. Canva produces one finished creative per product with the photo, title, price, and discount badge already merged.

Running three template types off the same feed, an ad, a listing image, and a social post, just take the same XLSX into each template and run Bulk Create three times. Same data, three sets of creative. Download as a ZIP and you have a full product test batch ready to launch.

A Realistic Dropshipper Workflow

Here is the rhythm once the feed-to-creative loop is set up.

Product research day. You shortlist 50 to 80 candidate products from your supplier and competitor research. Export or build one master sheet with the image URL column and a hook for each product.

Creative day. Run the sheet through Postprep once. Take the converted XLSX into your ad template, your listing template, and your social template. Generate all three sets in Canva. You now have a few hundred assets from one upload.

Test and cut. Launch the ad creatives, watch what gets clicks, and kill the losers. When you add 20 new products next week, append them to the same sheet, re-run Postprep, and regenerate. The setup cost is paid once.

The whole loop is about 20 minutes of spreadsheet time and 15 minutes of Canva time per template, whether you are testing 10 products or 100. Doing it by hand is 3 to 5 hours per template at that scale, which is the difference between testing weekly and testing once a month.

Frequently Asked Questions

Can I use supplier images directly, or do I need my own photos?

Postprep embeds whatever the URL returns, including raw supplier images. That is fine for fast ad testing. Once a product proves out, most sellers swap in edited or original photos for a more branded look and re-run the batch with the new URLs.

My AliExpress image URLs sometimes break. What happens then?

If a URL is dead or blocked when Postprep fetches it, that row's image will not embed. Spot-check broken links before converting, or leave the cell blank and Canva will keep the placeholder visible so you can fill it later.

Do supplier image URLs expire?

Some supplier CDNs rotate or expire links over time. Convert your sheet while the URLs are fresh, right after you pull the feed. If you need the assets long term, host your own copies on Shopify or a CDN and use those URLs instead.

Can I pull this straight from a Shopify export?

Yes. The Shopify product CSV already has an Image Src column with direct URLs. Trim it to one row per product, add your hook and price columns, and run it through Postprep. Same workflow we cover for Shopify stores.

What about products with multiple variant images?

One row per output design. If you want a separate creative per color variant, that is one row per variant, each with its own image URL and variant label. Canva generates one design per row.

Is using supplier product photos in my ads allowed?

That depends on your supplier's terms and the platform you advertise on. Many suppliers allow it, some do not, and ad platforms have their own rules. Check before you scale a campaign on borrowed imagery. This is a legal and policy question, not a technical one, so confirm it for your own suppliers.

The Short Version

Canva Bulk Create handles the merge work for every product ad, listing graphic, and social post in your feed. The one thing it does not do is convert supplier image URLs into embedded images inside the XLSX. Postprep is the missing step.

Build one master sheet per product batch. Convert with Postprep. Bulk generate in Canva. Every product you test ships its full set of creative without you downloading a single image by hand.


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