Fill Figma with real data — and see exactly what didn't fit.
DataPop populates component instances from Google Sheets, CSV or JSON. Variants switch. Images load. Every row that fails tells you which row, which field, and why.
The Figma Community listing is in review.
Why this one
The hard cases are the whole point
Switch by column
A column drives a variant property — Size=XL — checked against the component set.
No silent fall back to the first variant when a value doesn't exist.
Fills from a URL
Image URLs are fetched and placed as real image fills. A dead link becomes a numbered issue, not a blank rectangle you find three days later.
Update in place
Populated nodes are stamped, so syncing refreshes what's already there, adds new rows, and removes deleted ones — instead of duplicating the whole set again.
Big sheets don't freeze
Work runs in chunks and yields between them, so the editor stays responsive and a long run can be cancelled part-way.
Missing fonts warn
Every font on a text node is loaded before writing. A font that isn't available falls back and says so, rather than dropping the text.
No silent skips
The run report is the product. If DataPop couldn't do something, it appears in the list with a row number — including the parts that make us look bad.
Pricing
One plan, when you outgrow the free tier
Free
no account needed
Every feature, capped at 20 rows per run.
- Variants, images, re-sync
- Full issue reporting
- Google Sheets, CSV, JSON
$6 / month
DataPop Pro
Unlimited rows. Cancel any time — access runs to the end of the period you paid for.
- No row cap
- Same plugin, one key to paste
- 14-day refund, no questions
Your data
Pasted data never leaves your machine
Sheet, JSON and image URLs are fetched through this server, because Figma can't reach them from a plugin directly. Their contents stream straight through — never stored, never logged, and the web server records paths without query strings so your sheet URLs aren't retained either. Full detail on the privacy page.