PostPrep
← Blog
2026-08-30

How to Bulk Upload Pinterest Pins From a Spreadsheet (Designed Graphics, Not Just Product Photos)

Draft — Post #50 · Target keyword: how to bulk upload pinterest pins · Meta: How to bulk upload Pinterest pins from a spreadsheet. Pinterest's importer needs a public Media URL per pin. Here's the ful

Pete B.
Pete B.
Founder, Postprep

Draft — Post #50 · Target keyword: how to bulk upload pinterest pins · Meta: How to bulk upload Pinterest pins from a spreadsheet. Pinterest's importer needs a public Media URL per pin. Here's the full workflow, including the Canva step.

You have 120 products and a Pinterest strategy that says three fresh pins a week. At one pin at a time, that is your entire Sunday, every Sunday, forever.

Pinterest actually gives you a way out. A business account can bulk upload up to 200 pins from a single spreadsheet: title, description, destination link, board, publish date. Drop the file in, walk away, come back to a scheduled queue.

The catch is the one column that matters most. Pinterest's importer does not accept image files. It accepts a Media URL for each row, and that URL has to point at an already-designed, already-hosted graphic. Which means before you can bulk upload anything, you need 120 finished pins. That is the part nobody explains, and it is where most sellers quietly go back to doing it by hand.

Why Canva Bulk Create Stalls Before You Get to Pinterest

The obvious tool for making 120 pins from one design is Canva Bulk Create. Build a pin template once, connect a spreadsheet, generate a design per row.

Text works exactly as advertised. Product name, price, tagline, board keyword: all of it merges cleanly.

Images do not. If your spreadsheet has an image_url column full of links like https://cdn.shopify.com/.../mug-front.jpg, Canva reads that column as plain text. You get 120 pins with a URL string printed across the photo frame and no photo. Canva only recognizes an image if it is embedded inside the spreadsheet file itself as a real DrawingML object, the way Excel stores a picture you inserted by hand. A link is not an embedded image, so Canva treats it like any other sentence. The full technical explanation is in why Canva Bulk Create ignores image URLs.

So the pipeline breaks at the first step. No product photos in the pins, no pins to host, no Media URLs to give Pinterest.

The Manual Workaround Most Sellers Try First

Two dead ends, in the order people usually hit them.

Insert > Picture in Excel. This does work. Canva reads these images correctly because they are genuine embedded objects. It is also one photo at a time: click the cell, insert, resize, repeat. At 120 products that is an hour of clicking, and you do it again when spring inventory lands.

The =IMAGE() formula in Google Sheets. This looks like the answer. The photo renders right there in the cell. Then you export to XLSX and the cell contains a formula, not a picture, so Canva sees nothing. Same failure, more confusing, because your screen showed you an image the whole time. Full breakdown in why =IMAGE() doesn't work for Canva Bulk Create.

Both roads end at the same place: Canva needs embedded images, and nothing in the normal spreadsheet toolkit produces them at volume.

What You Need Before You Start

  • A spreadsheet of what you are pinning: product or post name, description, destination URL, board name, and an image URL per row
  • A Canva pin template, 1000 x 1500px, with one image frame and your text fields named to match your column headers
  • A Pinterest business account (bulk upload is a business-account feature; personal accounts do not have Import content)
  • Somewhere public to host the finished pins if you want Pinterest to fetch them by URL. More on this in step 4, because it is the step people underestimate.

Step 1: Collect Your Image URLs

Most platforms hand these to you already.

Shopify's product CSV export includes an Image Src column with a direct CDN link per image. Etsy's data export and WooCommerce's product CSV both carry image URLs the same way. If you are pinning blog content instead of products, your CMS export usually has a featured-image column. We have platform-specific walkthroughs for Shopify and Etsy.

Two rules for the URLs: they must load in a private browser window with no login, and they must end in a real image extension. Google Drive and Dropbox share links fail both tests in practice; they serve a viewer page, not a file. Same problem later on the Pinterest side.

Step 2: Build the Spreadsheet

Keep it flat. One row per pin, one column per thing that changes.

product_namepriceimage_urlboardlink
Speckled Stoneware Mug$34https://cdn.example.com/mug-01.jpgHandmade Ceramicshttps://shop.example.com/mug-01
Linen Table Runner$52https://cdn.example.com/runner-02.jpgTable Linenshttps://shop.example.com/runner-02
Beeswax Taper Set$18https://cdn.example.com/tapers-03.jpgCandleshttps://shop.example.com/tapers-03

Column headers become the field names Canva offers you when you connect the data, so name them the way you want to see them in the Bulk Create panel. The board and link columns will not be used by Canva at all; they are riding along for the Pinterest import later.

Step 3: Convert With Postprep, Then Bulk Create in Canva

Upload your CSV or XLSX to postprep.app. It fetches every image in the URL column and writes back an XLSX with those images embedded as real DrawingML objects, sized to your frame. Free tier handles 100 rows with no account.

Then in Canva: open your pin template, Apps > Bulk Create > Upload data, and select the file Postprep gave you. Map each field to its spot on the design, including the image frame, which now shows an actual thumbnail instead of a text string. Hit Continue and Canva generates one pin per row.

Review a handful before generating all of them. Long product names are the usual culprit for a template that looked fine with three-word test data.

Step 4: Get the Pins to Pinterest

Here is the fork in the road, and the honest version matters more than the tidy one.

Pinterest's bulk importer lives under Settings > Import content > Upload .csv or .txt file. Per Pinterest's own formatting guidance, the required columns are Title, Media URL, and Pinterest board, with optional Description, Link, Publish date, and Keywords. Media URL "must be a publicly available link to the file itself," typically ending in .png or .jpg. If a board name does not exist yet, Pinterest creates it. Leave Publish date blank to publish immediately, or set a future date to schedule.

Which means your freshly generated Canva pins have to live at a public URL before Pinterest can pull them in. Two realistic paths:

Host them. Download the batch from Canva as PNGs, upload them to somewhere public that serves files directly: your own site's media library, an S3 or R2 bucket, a Cloudflare Pages folder. Then put those URLs in the Media URL column. This is the only route that gets you a genuinely hands-off 200-pin import.

Skip the CSV and upload the files. For batches under roughly 30 pins, downloading from Canva and dragging the images into Pinterest's normal scheduler is often faster than setting up hosting. You lose the spreadsheet-driven descriptions, which is a real cost if you have written keyword-rich copy per pin, but you gain not having to think about buckets.

Neither of these is a Postprep feature and we are not going to pretend otherwise. Postprep's job ends when the designs exist. What it removes is the hour of manual photo insertion between your product data and 120 finished pins, which is the step that actually stops people.

A Repeatable Monthly Workflow

Once the pieces are in place this becomes a short recurring job rather than a project.

  1. Export fresh product or post data at the start of the month. Filter to whatever is new or seasonally relevant.
  2. Paste it into the same spreadsheet template. The column headers stay identical, so nothing downstream needs rewiring.
  3. Run it through Postprep, then through the same Canva template. Swap the template's background or accent color if you want the month's pins to feel distinct.
  4. Export, host, and drop the Pinterest CSV in. Set publish dates spread across the month so the queue drips instead of dumping.

The second month takes about twenty minutes. The first one takes longer because of the hosting setup.

Two variations worth knowing. Food and recipe accounts get the most out of this because recipe data is already tabular; that workflow is covered in Canva Bulk Create for recipe cards. And if you are weighing whether to run this through a dedicated Pinterest scheduler instead of Pinterest's own importer, Tailwind alternatives for Pinterest power users compares the options.

FAQ

How many pins can I bulk upload at once?

Pinterest documents a limit of 200 images or videos per bulk upload with a business account. Several practitioners recommend staying nearer 100 to 150 per file, since a single malformed row is easier to find in a smaller batch.

Do I need Canva Pro for Bulk Create?

Bulk Create is a paid-plan feature rather than a free one. Canva's plan lineup and which tiers include it change periodically, so check Canva's current pricing page before you build a workflow around it.

Why did some of my pins fail silently?

Almost always the Media URL. Pinterest fetches the image at publish time, not upload time, so a link that has been moved, expired, or requires a login produces a pin that simply never appears. Test a few URLs in a private window before importing.

Can I use Google Drive or Dropbox links for the Media URL?

In practice, no. Those share links return a viewer page rather than the image file. This is the same reason they fail as input to Canva Bulk Create, which we cover in the Google Drive and Dropbox walkthroughs.

What column names does Pinterest's CSV actually need?

Pinterest's help documentation lists them as Title, Media URL, Pinterest board, Thumbnail (video only), Description, Link, Publish date, and Keywords. Some third-party guides list lowercase snake_case variants like board_name and image_url instead. Start from Pinterest's own sample spreadsheet rather than a blog template, and test with three rows before committing 150.

Does this work for video pins?

Partially. Pinterest supports bulk video upload with an MP4 Media URL plus a Thumbnail column, and the thumbnail can be an image URL. Canva Bulk Create generates static designs, so it can produce thumbnails for videos you made elsewhere, not the videos themselves.

The Short Version

Pinterest's bulk importer wants a public Media URL for every pin, which means the designs have to exist before you can schedule them. Canva Bulk Create is the right tool for generating 120 pins from one template, but it ignores image URLs in your spreadsheet, so your product photos never land in the design. Postprep converts that spreadsheet into an XLSX with the images actually embedded, which is the only part of this chain that requires a tool rather than patience.

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