Pinterest's bulk upload silently drops duplicate-link rows

1 min read PinterestCSVMarketing

A 16-row bulk pin CSV created only 2 pins because Pinterest deduplicates rows by destination link, not by image.

The symptom

I prepared a CSV with 16 rows for Pinterest’s bulk pin creation, 16 distinct images, all valid, uploaded it, and Pinterest scheduled 2 pins. There was no error and no warning about the other 14 rows. They simply did not exist after the upload.

What was happening

Pinterest’s bulk upload deduplicates by destination Link. My 16 rows had 16 unique images and pointed at only 2 unique destination URLs, so Pinterest treated every row sharing a URL as a duplicate of the first and kept one pin per unique link. That is how 16 rows collapsed to 2.

The shape of the broken file, with the repeated Link column:

Title,Media URL,Link
Pin 1,https://cdn.example.com/img01.png,https://example.com/l/thing
Pin 2,https://cdn.example.com/img02.png,https://example.com/l/thing
Pin 3,https://cdn.example.com/img03.png,https://example.com/l/thing

Same Link on every row, so Pinterest kept one and dropped the rest.

The fix

Make every row’s Link unique. The clean way is a per-pin UTM query string, which Pinterest reads as a distinct destination:

Title,Media URL,Link
Pin 1,https://cdn.example.com/img01.png,https://example.com/l/thing?utm_source=pinterest&utm_medium=pin&utm_content=pin01
Pin 2,https://cdn.example.com/img02.png,https://example.com/l/thing?utm_source=pinterest&utm_medium=pin&utm_content=pin02
Pin 3,https://cdn.example.com/img03.png,https://example.com/l/thing?utm_source=pinterest&utm_medium=pin&utm_content=pin03

Now every Link is distinct and all 16 rows survive: 16/16 scheduled. The UTM also lets you attribute clicks per pin in analytics, so you find out which image drives traffic.

While you are in there, check that the Media URL column is a publicly reachable image URL. If Pinterest cannot fetch it, that row fails too, for a different reason.

The lesson

Pinterest bulk upload deduplicates by destination link. Give every row a unique Link, which a per-pin UTM does, and the full batch goes through.

Discussion

Powered by GitHub. Sign in to leave a comment.