WordPress to Canva Bulk Create: How to Turn Your Posts Into Graphics (With Images)
Draft — Post #24 · Target keyword: WordPress to Canva Bulk Create · Meta: Export WordPress posts with featured image URLs, then bulk create Canva graphics that actually show the images. The full WordP

Draft — Post #24 · Target keyword: WordPress to Canva Bulk Create · Meta: Export WordPress posts with featured image URLs, then bulk create Canva graphics that actually show the images. The full WordPress to Canva Bulk Create workflow.
You run a WordPress site with 80, 200, maybe 500 published posts. Every one of them needs a Pinterest pin, a featured image, and a couple of social cards if you want it to get traffic. That is the same design repeated hundreds of times with a different title, category, and featured image.
You already know Canva Bulk Create is built for exactly this. You export your posts to a CSV, drop in the featured image URLs, upload, and let Canva merge everything into finished graphics. Then you hit the wall every WordPress owner hits: the text merges fine, but the image column comes back as raw URL strings printed across your template, or just empty slots.
This post covers the full WordPress to Canva Bulk Create workflow, the one step Canva will not do for you, and a repeatable rhythm for keeping every post's graphics current without rebuilding them by hand.
Why Canva Bulk Create Stalls for WordPress Sites
WordPress stores your content as structured data. Post title, slug, excerpt, category, author, publish date, and a featured image. Export tools like WP All Export, Admin Columns Pro, or WPQ Post CSV Exporter pull all of that into a CSV in a few clicks. The catch is in how they handle that featured image: CSV is a text format, so the image comes out as a URL like https://yoursite.com/wp-content/uploads/2026/06/cover.jpg, not the actual file.
Canva Bulk Create reads the text columns without complaint. Drop in post titles, categories, dates, or read-time and Canva merges them into your template cleanly.
The image column is where it breaks. Canva Bulk Create only accepts images that are physically embedded inside the XLSX file as binary data, in a format called DrawingML. A URL is just text to Canva. It either prints that long upload path as a literal string inside your pin template, or it leaves the image frame blank. The technical reason is covered in Why Canva Bulk Create Ignores Image URLs.
For a WordPress owner this is the gap between a 20-minute batch job and an afternoon of copy-paste. A 300-post export with featured image URLs will not render a single image in Canva unless those images are embedded in the XLSX before you upload it.
The Manual Workaround Most WordPress Owners Try First
The usual hack is the Excel insert trick. Open the export, switch to Excel, click an image cell, use Insert > Picture > Place in Cell, point to the downloaded file, and repeat for every row. It works in theory, but only if you have already downloaded all 300 featured images, named them to match each row, and lined them up in the right order. For a real WordPress media library, that is a download-and-rename marathon before you even open Canva. We broke down why that hack falls apart at scale in How to Bulk Embed Images in Excel From URLs.
The other dead end is the =IMAGE() formula in Google Sheets. It looks like it embeds the featured image, and it renders fine inside the browser, so people assume Canva will read it too. It will not. =IMAGE() is a live cell reference, not embedded image data, so Canva sees nothing when it parses the file. The full explanation is in Why =IMAGE() Doesn't Work for Canva Bulk Create.
What You Need Before You Start
Two things.
A Canva template per graphic type. Most WordPress sites cycle through a small set of recurring designs: a Pinterest pin with the post title and featured image, a blog featured image or social share card at 1200x628, and maybe a square Instagram tile. Each template needs Bulk Create placeholders for the text variables like {{post_title}}, {{category}}, and {{read_time}}, plus one image element for the featured image.
A clean export of your posts. One row per post. Columns for every text field you want on the graphic, plus one column holding the direct featured image URL. If you run WooCommerce on top of WordPress and you are creating product graphics rather than blog graphics, the sibling workflow is in How to Use Canva Bulk Create with Your WooCommerce Product Images. The steps below are for blog posts and pages.
Step 1: Export Your WordPress Posts With Featured Image URLs
WordPress's built-in Tools > Export gives you an XML file, which is awkward for this. A CSV plugin is faster. Any of these work:
- WP All Export. Add the Featured field from Available Data > Media > Images. It exports the featured image as a direct URL.
- WPQ Post CSV Exporter. Go to Tools > Export Posts CSV. It outputs title, post URL, publish date, and featured image URL in one file.
- Admin Columns Pro. Add a Featured Image column to your Posts table, then click Export.
Whatever tool you use, the result is a CSV with one row per post and a column of featured image URLs. That URL column is the one Canva cannot read on its own.
If some posts have no featured image set, leave that cell blank. You will handle those rows in the next steps.
Step 2: Build the Spreadsheet
Trim the export down to the columns you actually want on the graphic. A typical WordPress bulk sheet looks like this.
| post_title | category | read_time | featured_image |
| 12 Easy Weeknight Dinners | Recipes | 6 min | https://yoursite.com/wp-content/uploads/dinners.jpg |
| How to Start a Garden | Home | 9 min | https://yoursite.com/wp-content/uploads/garden.jpg |
| Best Budget Cameras 2026 | Gear | 11 min | https://yoursite.com/wp-content/uploads/cameras.jpg |
Save it as CSV or XLSX. Column names do not have to match Canva exactly, because you will map them in the Bulk Create panel, but matching names lets Canva auto-connect everything in one click.
One thing to confirm: the featured image URLs need to be publicly reachable. Most WordPress uploads are public by default, so a URL pasted into a private browser window should load the image directly. If your site is behind a login, a maintenance wall, or a hotlink protection plugin, those URLs will not fetch. Open one in an incognito tab to check before you go further.
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 featured 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 untouched.
A 300-row sheet finishes in about a minute. The free tier covers 100 rows with no account required, which is enough to convert a few months of posts or test the workflow on your most popular content first.
Step 4: Bulk Generate in Canva
Open your pin or featured-image template in Canva. Bulk Create runs on paid plans, and it is a desktop feature. (Canva changes plan eligibility and naming from time to time, so confirm Bulk Create is available on your current plan before you start. Flagging that rather than stating a guarantee.)
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 featured image, title, and category already merged. Download as a ZIP.
If you run three template types off the same export, a Pinterest pin, a featured image, and an Instagram tile, take the same XLSX into each template and run Bulk Create three times. One export, three full sets of branded graphics.
A Realistic WordPress Workflow
Here is the rhythm that keeps a content site's graphics current without a redesign marathon.
The back-catalog pass. Export your full post archive once. Run it through Postprep. Generate a Pinterest pin and a featured image for every existing post in two bulk jobs. This is the big one-time win: hundreds of posts get fresh, on-brand graphics in an afternoon instead of a quarter.
The weekly add. Each time you publish, your export tool picks up the new posts. Export the last week, convert with Postprep, bulk generate. Two or three new posts take about five minutes end to end.
The seasonal refresh. When you rebrand a template or run a seasonal pin design, re-export the posts you want to refresh, run the same sheet through the new template, and regenerate. The data never changes, only the design.
A full back-catalog of 300 posts runs about 30 minutes of spreadsheet and Postprep time plus 15 minutes per Canva template. Done by hand, that same catalog is days of work.
Frequently Asked Questions
Do I even need images for every graphic? Some of my pins are text-only.
If your design is purely typographic, you do not need this workflow at all. Plain Canva Bulk Create handles text-only merges fine. Postprep only matters when your template has an image frame that needs to pull a different featured image per row.
My featured images are different shapes. Will they fit my template?
Postprep embeds whatever the URL returns at its original aspect ratio. Inside Canva, the image element crops to fit your frame. For consistent results, set your Canva image frame to a fixed crop, or standardize featured image dimensions in WordPress before exporting.
Some posts have no featured image set.
Leave the URL cell blank for those rows. Postprep skips the embed for empty cells, and Canva leaves the placeholder visible in the generated design. Fill in the image later and re-run just those rows.
Can I use this for WooCommerce product images too?
Yes, but the export is different. Product images come out of WooCommerce's product CSV, not the posts export. That full workflow is in the WooCommerce guide.
My images are served through a CDN or Jetpack. Does that matter?
As long as the URL loads the actual image file in a private browser window, Postprep can fetch it. CDN and Jetpack Photon URLs usually work because they resolve to a real image. Hotlink protection is the one thing that blocks the fetch.
I run a recipe or food blog. Anything different?
Same workflow, and food blogs are a strong fit because every recipe already has a hero image in the media library. There is a vertical-specific walkthrough in How to Use Canva Bulk Create for Recipe Cards and Food Blog Graphics.
The Short Version
Canva Bulk Create can turn your entire WordPress archive into pins, featured images, and social cards in a handful of batch jobs. The one thing it will not do is read the featured image URLs in your export and embed them. That is the step Postprep handles.
Export your posts with featured image URLs. Convert with Postprep. Bulk generate in Canva. Your whole back catalog gets fresh graphics without rebuilding a single one by hand.
Try it free at postprep.app — 100 rows, no account required.