Sync CSV spreadsheet content to Figma using CopyDoc
Follow along with this step by step Figma tutorial video.
Steps
- Install CopyDoc from the Figma Community Plugins tab.
- Prepare a CSV spreadsheet where the first row contains headers that match Figma layer names such as #Title, #Reviews, and #Poster.
- Add content rows to the CSV, including image URLs for image fields, then save the file as .csv.
- Open the CopyDoc plugin in Figma by right-clicking the canvas and choosing Plugins > CopyDoc.
- Click Sync Content, then drag and drop the CSV file into the plugin to load the headers and preview the rows.
- Duplicate the original component or other repeatable Figma layer for each spreadsheet row, then select all of the duplicated layers.
- Click Sync Spreadsheet Rows with Figma Layers to replace matching text and image layers with content from each CSV row.

Published
Used in this video
CopyDoc
ć³ćć¼
Stop manual text updates.
Export, import, localize, and sync text, images, styles, and layouts across Figma designs.
126k+ installs
Video Transcript
Today Iām going to be showing you how to populate your Figma designs from content in a CSV spreadsheet file using the CopyDoc Figma plugin.
The first thing we need to do is just jump into the Figma Community and search for āCopyDocā, and when the first result pops up under the āPluginsā tab you can just go ahead and click on the āInstallā button on the right hand side and that will install the Figma plugin and youāll be ready to go.
Iām just going to jump back into my Figma design and today Iām going to be using a movie application just to demonstrate how we can dynamically populate this movie poster block using content that weāve populated in a CSV spreadsheet file. Before we open up the Figma plugin that we just installed, Iām going to jump into my Microsoft Excel spreadsheet; you can use other applications for this, if you want to use Google Sheets and save that as a CSV you could totally do that, or using the Mac āNumbersā app as another spreadsheet app and save it as a CSV, thatās fine as well; for today Iām just going to be showing you how to do it in Excel, but the format will be the same regardless.
The format we do need to use is fairly simple and itās going to be the same for your own content as well; the main thing to know is that the first row of your spreadsheet is effectively your header, and the header is going to be used to name your columns, and thatās going to be used to map that content back into your Figma file; what I mean by that is you can see here for example this column header is named ā#Titleā and in my Figma design if I switch back into that, you can see here in my little movie poster component I also have a text layer with the same name. Iāve got ā#Titleā in my Figma layout, so thatās the Figma text layer and Iāve also got my column name the same, so itās ā#Titleā.
The same thing is true for the reviews; in here I can see Iāve got a text layer with ā#Reviewsā and also in this image layer. Iāve got a poster, this movie poster layer which is an image in Figma and Iāve named that image layer also ā#Posterā which matches up with the ā#Posterā column in my CSV spreadsheet. What that means is weāre going to actually automatically swap out that image dynamically in a minute when we run the Figma plugin, and itās going to automatically swap in this image content into our Figma design.
To show you what that looks like if you do want to add your own images, itās fairly straightforward, you can either upload the images somewhere online on your own website and get your own link for your own images, or if you just want to grab something like a movie poster for example, you can just go to Google images, search for the image you want, open it up, and then in the image preview, just go ahead and right click on that, and then click on āCopy image addressā and then back in your spreadsheet under your image column, whatever that happens to be, you can just paste that in there and that will paste in a URL to the JPEG image. The Figma plugin will automatically pick up on the link and if itās an image layer, itāll automatically swap that into Figma later. You can go ahead and just populate the rest of these; for example, Iām going to use the āSuicide Squadā movie for this latest row and I can just populate that the same way and now weāre ready to go; our spreadsheet is all done now, this is the format that you can use for your own content.
Iāve got four different movies that I want to add into my app, so now that weāve got our CSV spreadsheet structured correctly, just make sure that you are saving it as a CSV, if you go to āFileā, āSave asā, and then under the āFile Formatā, you just want to make sure in whatever app youāre using that ā.csvā is selected; and you can just go ahead and save that to your desktop or wherever else is easiest. If it gives you this little warning, thatās fine, itās just trying to get you to save it as a Microsoft Excel file; I do have another YouTube tutorial using that file format, but for now weāre just going to ignore that and use the CSV file.
Iām going to jump back into Figma now and Iām going to run the Figma plugin that we just installed a minute ago by right clicking anywhere on the page, going down to āPluginsā and then clicking on āCopyDocā, and thatās going to fire up the Figma plugin that we just installed. Iām not going to be going through any of the other features in this Figma plugin today, you can check out our other YouTube tutorials for those; today Iām just going to be focusing on this brand new feature called āSync Spreadsheet Contentā.
You can open that up by clicking on the āSync Contentā button in the Figma plugin, so Iām going to click on that now, and you can see here itās got an option to sync a CSV file. What weāre going to do is weāre going to grab the CSV file that we just saved to our desktop over here, and Iām just going to drag and drop that file directly into this little drop zone in the CopyDoc Figma plugin. Iām going to let go of the mouse now, drop that in, and you can see itās instantly loaded up my spreadsheet columns from the CSV file, and itās giving me a preview of the headers; the headers of these little bold tags that itās pulling in the first row from our spreadsheet, and then itās also pulling in the second row from the spreadsheet content to give you a little preview of what each content might look like just to sort of show you what each of these relates to.
Okay, now that weāve done that, the last thing we need to do is just duplicate our original Figma layer. Iām using a component but you can use other groups as well; you could use a frame or a Figma group today Iām just going to be copy pasting this component into three new instances of the component; Iām just copy pasting those normally and moving them around and because these are copied instances, just to confirm you can see here the naming of those text layers and image layers are importantly still named the same as our spreadsheet headers over here.
Now that weāve copied those, that was kind of the last step, and all you need to do is now select those Figma layers; you can see in my left hand side here Iāve got all four of those layers selected and now in our Figma plugin you can see itās telling us weāve got the four selected layers. What Iām going to do now is just click on the āSync Spreadsheet Rows with Figma Layersā button; Iām going to click that, and what thatās going to do is itās going to go through and download all of those high resolution movie posters, itās going to swap that in to all of our Figma layers and also update all the text. Thatās done now, you can see itās told us that itās updated the content for 24 different layers in Figma, and itās looking really good. Weāve got our dynamic posters, so instead of just having it all the same, it swapped it out without content from the CSV spreadsheet.
We can verify that just by having a quick look, and basically the way it works is it loops through each of those selected Figma layers and then also loops through at the same time each of these rows; for each selected layer, it will use the data from one row and it will automatically swap out any matching layers it finds with these header labels, and thatās exactly what itās done. You can see weāve got the āNo Time To Dieā, āDuneā, āBlack Widowā and āSuicide Squadā all swapped out, all the minutes are swapped out, all the reviews are swapped out, the tags are all swapped out, and of course the images have all been replaced.
Thatās basically it; itās fairly simple once you figure out the structure, once you get an idea of how the spreadsheetās meant to be set up just like this. You can use this format in your own CSV spreadsheets to sync with Figma as well, but once youāve once youāve mastered that, itās a really simple process. You can use this feature as much as you want to update any kind of grids, lists or any sort of repeatable content; itās very, very useful for that.
If youāve been wondering how to sync repeatable content from a CSV spreadsheet into your Figma design designs this is a really, really simple way of going about it; and unlike another tutorial with the Google Sheets, this is all local to your computer as well. If you work at a company that doesnāt let you use Google Sheets or something like that, which is this other feature down here, then maybe the CSV option is going to be more to your liking.
Thatās it for today; I just wanted to keep it simple as possible and as short as possible. Feel free to use this CSV spreadsheet sync feature in your own Figma workflow, or with your own team, if youāve got a bunch of copywriters on your team and and need to do some efficient content updates, then this might be an option for you to try out. Thank you as always for watching, and weāll be back back soon with more Figma tutorials just like this one very soon.

Adam Brock
Founder & CEO of Hypermatic


