# Hypermatic Docs

> Complete machine-readable documentation corpus for the Hypermatic plugin documentation.

This file contains generated Markdown versions of public Hypermatic Docs pages. For a smaller crawl map, use [/llms.txt](/llms.txt).

## Full Documentation

---
url: "/bannerify/animation/ai-prompt-animations.md"
description: "Generate Bannerify-ready JSON animations, then paste them into the Bannerify custom animations panel in Figma."
---

# Creating AI prompt JSON animations

> Generate Bannerify-ready JSON animations, then paste them into the Bannerify custom animations panel in Figma.

### Video Tutorial: Animate and export banners to HTML from Figma

This video tutorial is a complete step-by-step guide showing you how to animate and export production-ready HTML banners from Figma in seconds.
[Embedded media](https://www.youtube.com/embed/WDYRd9cSJcs)

## Generate your animation JSON on bannerify.hypermatic.com

[Video](/assets/videos/bannerify/animation/ai-prompt-animations.mp4)

1. Open [https://bannerify.hypermatic.com](https://bannerify.hypermatic.com).
2. In the **Create Your Custom Bannerify Animation** section, describe the animation you want (for example: "Elastic slide in from left with slight rotation").
3. Click **Copy Prompt to Clipboard** and paste it into ChatGPT or Claude, or click **Open Prompt in ChatGPT** / **Open Prompt in Claude**.
4. Then copy the generated animation JSON snippet.
5. Open your Figma file and run the Bannerify plugin.
6. Open the **Custom Animations** panel in Bannerify.
7. Paste the JSON into the text area labeled **Paste generated JSON code here**.
8. Confirm the animation appears in your timeline animation preset dropdowns.

The animation auto-saves on paste and can be selected like any other preset from the layer timeline animation menus.

> **Warning:** Custom animations are saved in your current Figma file. If you switch to a different Figma file, you will need to paste the JSON there again.

---

---
url: "/bannerify/animation/animating-banners.md"
description: "After you've loaded your Figma frames into Bannerify, you can apply animations to any layer in your banners by using the timeline features inside the plugin."
---

# Animating your banners

> After you've loaded your Figma frames into Bannerify, you can apply animations to any layer in your banners by using the timeline features inside the plugin.

### Video Tutorial: Animate and export banners to HTML from Figma

This video tutorial is a complete step-by-step guide showing you how to animate and export production-ready HTML banners from Figma in seconds.
[Embedded media](https://www.youtube.com/embed/-TA088FNulA)

## Selecting animations

[Video](/assets/videos/bannerify/animation/select-animations.mp4)

Bannerify comes with dozens of pre-defined keyframe based animations, which are grouped into 5 categories:

- Entrances
- Exits
- Basic Transforms
- Attention Seekers
- Background Pans

To set an **entry animation**, hover over the layer you would like to animate in the Bannerify timeline and click on the **top select box**. Scroll through the list of animations and **click** on an animation name to apply it to your layer. You'll see the banner preview update instantly with the new animation applied.

> **Tip:** **Removing animations from a layer**. If you don't want a layer to have any animations, you can either select the **No Entry Animation** and/or **No Exit Animation**, or alternatively, you can rename any Figma layer with the prefix **locked-** (eg. _locked-RectangleBackground_), which will also ensure no animations are added, and will disable the animations select box in the plugin timeline, too.

## Previewing your banner animations in the timeline

[Video](/assets/videos/bannerify/animation/preview-banner.mp4)

You can preview your animations in your banners by clicking on the **Play** icon button, and pause the timeline at any point by clicking on the **Pause** icon button. You can also restart the animation playback from the beginning by clicking on the **Restart** icon button.

To jump to a certain part of the timeline, you can click on any point in the timeline **Seconds** header on any banner, or you can click and drag your mouse left and right to scrub through the timeline that way, too.

## Adjusting the timeline length

[Video](/assets/videos/bannerify/animation/adjusting-timeline.mp4)

You can adjust the length of the entire timeline itself for all of your banners by clicking on the **Timeline** select box in the Bannerify header; selecting a length (with options from 3 seconds to 3 minutes) will automatically extend or shrink the Bannerify timeline for all of your banners. Bannerify will do its best to update your existing animations if they previously extended beyond a new shorter timeline, and vice-versa.

> **Warning:** **You can't automatically undo timeline length updates**. Selecting a new timeline length will apply the changes to the timelines across all of your banners. You will need to manually update your timeline animations again if you change your mind. With this in mind, it's usually worth setting your timeline length **before** starting to work on your animations.

## Adding exit animations

[Video](/assets/videos/bannerify/animation/exit-animation.mp4)

Adding **exit animations** works the same way as adding entry animations; instead of clicking on the top select box, you can click on the **bottom select box** to select an exit animation for your layer.

> **Note:** Please ensure that any exit animation set on a layer **is set to begin _after_ the "entry" animation ends**, otherwise this will cause issues with both animations overlapping and having conflicting transitions at the same.

## Adjusting animation speeds and timings

[Video](/assets/videos/bannerify/animation/adjust-speed.mp4)

You can adjust the speed and delay of your animations by **clicking down** on the left/right **edges** of the timeline bar for your layer, then **holding and dragging** with your mouse to adjust the length of your animation and it's start/end point.

You can shift the location of your animation on the timeline by **clicking down** on the **middle** of the timeline bar for your layer, then **holding and dragging** with your mouse; moving it either left or right to change where it is placed in your timeline.

> **Tip:** **Use your keyboard to input precise timing numbers**. If you'd prefer not to use the timeline slider, you can also set your speed and delay values by clicking on the second value in your timeline layer, and entering a new number with your keyboard (eg. *1.5*) to set the amount of seconds.

## Looping animations

[Video](/assets/videos/bannerify/animation/loop-animation.mp4)

If you have an animation on a specific layer that you would like to repeat infinitely (even after the banner timeline has finished), you can enable the **Loop** toggle next to the animation you've selected. This can be handy for very short animations that lend themselves to a looped playback (eg. "Heartbeart", "Flicker" or "Pulse").

## Copy/pasting animations

[Video](/assets/videos/bannerify/animation/copy-paste.mp4)

You can quickly copy an animation from one timeline layer to another by using the **Copy** and **Paste** buttons. Clicking on the **Copy** button will copy the animation, which can then be pasted by clicking the **Paste** button on any other layer.

> **Tip:** **Pasting a copied animation to multiple layers** You can also apply your copied animation in bulk to multiple layers by using the [bulk apply](/bannerify/animation/animating-banners#applying-bulk-animations) feature.

## Applying bulk animations

[Video](/assets/videos/bannerify/animation/bulk-animations.mp4)

To quickly apply an animation to multiple layers at the same time, select some layers using the checkboxes next to each layer name (or use **Quick Select Layers** feature), then set your animation in the slide-up area at the bottom of the plugin window. Once you're happy with your animation, click the **Apply animations to layers** button to apply the new animation to all of the selected layers.

## Quick selecting similar layers

[Video](/assets/videos/bannerify/animation/quick-select.mp4)

If you're working with a banner set that contains multiple banners with the same elements or layers, you can use the **Quick Select Layers** select box in the Bannerify header to automatically select similar layers across all of your banners. This can be a great alternative to manually checking each layer.

> **Tip:** **Example of using Quick Select Layers** For example, if all of your banners contain a layer called **CTA Button**, you will be able to click on that option to automatically check all the **CTA Button** layers for you. This will then allow you to **bulk apply** animations to that layer across all of your banners at the same time.

## Using magic delays and magic speeds

[Video](/assets/videos/bannerify/animation/magic-timeline.mp4)

The **Magic Delay** and **Magic Speed** select boxes in the Bannerify header allow you to automatically apply timings to _all_ of your layers, across _all_ of your banners with **one click**.

### Magic Delays
If you want _all_ of your layers in _all_ of your banners to have a **staggered delay** offset, you can click on the **Magic Delay** select box in the Bannerify header; selecting a delay (from 0.1 seconds to 0.5 seconds) will automatically apply that staggered delay to every layer's timeline in Bannerify for each banner.

### Magic Speeds
If you want _all_ of your layers in _all_ of your banners to be **the same speed**, you can click on the **Magic Speed** select box in the Bannerify header; selecting a speed (from 0.1 seconds to 1 second) will automatically apply that speed to every layer's timeline in Bannerify for each banner.

> **Warning:** **You can't automatically undo magic speeds/delays**. Selecting a magic speed or delay option will apply the changes to the timelines across all of your banners. You will need to manually reset them again if you change your mind.

---

---
url: "/bannerify/animation/animation-easing.md"
description: "Choose easing curves to control the timing of your custom animations."
---

# Setting the animation easing

> Choose easing curves to control the timing of your custom animations.

### Video Tutorial: Add custom animations to your Figma banner designs

This video tutorial is a complete step-by-step guide showing you how to add custom keyframe animations to your banners using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/Js4uSQ855uo)

[Video](/assets/videos/bannerify/animation/changing-easing.mp4)

You can choose what kind of easing you need your animation to have by choosing an option from the **Animation Easing** select box. Easing is automatically applied to your entire timeline, and will update the **Live Preview** area so you can see how your selected easing changes how your keyframe animation moves.

You can choose from the following easing options:

- Ease (Default)
- Linear
- Ease In
- Ease Out
- Ease In Out
- Cubic Bezier

### Setting a custom Cubic Bezier easing value

### Video Tutorial: Add cubic bezier easing to banner animations in Figma

This video tutorial is a complete step-by-step guide showing you how to add custom cubic-bezier easing to banner animations in Figma using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/uS2TRRQiYzw)

If you select the **Cubic Bezier** easing option, you'll need to paste in a valid CSS cubic-bezier value (eg. `cubic-bezier(0.65,0.05,0.36,1);`). You can generate a custom cubic beizer curve, by using a site like [https://easings.co/](https://easings.co/), or any other website service that you prefer to help to generate custom CSS cubic-bezier curves.

---

---
url: "/bannerify/animation/animation-origin-point.md"
description: "Control the pivot point for your custom animations."
---

# Setting the animation origin point

> Control the pivot point for your custom animations.

### Video Tutorial: Add custom animations to your Figma banner designs

This video tutorial is a complete step-by-step guide showing you how to add custom keyframe animations to your banners using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/Js4uSQ855uo)

[Video](/assets/videos/bannerify/animation/origin-point.mp4)

By default, the origin for all of your custom animation will be set to `Center` and `Center` for the X/Y axis, but you can customize these by clicking on the **Animation Origin Point** select input options, where you can set `Top`, `Center` or `Bottom` for the vertical axis, and `Left`, `Center` or `Right` for the horizontal axis.

Changing the animation origin will affect where the animation is "pinned" for the layer; for example, setting the origin to `Top` and `Left` would become the point for your layer at which a rotation animation is hinged on, or the point of your layer that could be scaled in/out from and to.

---

---
url: "/bannerify/animation/animation-speed-timing.md"
description: "Fine-tune the speed, duration, and delay of your animations."
---

# Adjusting animation speeds and timings

> Fine-tune the speed, duration, and delay of your animations.

[Video](/assets/videos/bannerify/animation/adjust-speed.mp4)

You can adjust the speed and delay of your animations by **clicking down** on the left/right **edges** of the timeline bar for your layer, then **holding and dragging** with your mouse to adjust the length of your animation and it's start/end point.

You can shift the location of your animation on the timeline by **clicking down** on the **middle** of the timeline bar for your layer, then **holding and dragging** with your mouse; moving it either left or right to change where it is placed in your timeline.

> **Tip:** **Use your keyboard to input precise timing numbers**. If you'd prefer not to use the timeline slider, you can also set your speed and delay values by clicking on the second value in your timeline layer, and entering a new number with your keyboard (eg. *1.5*) to set the amount of seconds.

---

---
url: "/bannerify/animation/bulk-animations.md"
description: "Apply the same animation to multiple layers at once."
---

# Applying bulk animations

> Apply the same animation to multiple layers at once.

[Video](/assets/videos/bannerify/animation/bulk-animations.mp4)

To quickly apply an animation to multiple layers at the same time, select some layers using the checkboxes next to each layer name (or use **Quick Select Layers** feature), then set your animation in the slide-up area at the bottom of the plugin window. Once you're happy with your animation, click the **Apply animations to layers** button to apply the new animation to all of the selected layers.

---

---
url: "/bannerify/animation/copy-paste-animations.md"
description: "Quickly duplicate animations from one layer to another."
---

# Copy/pasting animations

> Quickly duplicate animations from one layer to another.

[Video](/assets/videos/bannerify/animation/copy-paste.mp4)

You can quickly copy an animation from one timeline layer to another by using the **Copy** and **Paste** buttons. Clicking on the **Copy** button will copy the animation, which can then be pasted by clicking the **Paste** button on any other layer.

> **Tip:** **Pasting a copied animation to multiple layers** You can also apply your copied animation in bulk to multiple layers by using the [bulk apply](/bannerify/animation/bulk-animations) feature.

---

---
url: "/bannerify/animation/copy-paste-keyframe-properties.md"
description: "Duplicate properties from one keyframe to another."
---

# Copying and pasting keyframe properties

> Duplicate properties from one keyframe to another.

### Video Tutorial: Add custom animations to your Figma banner designs

This video tutorial is a complete step-by-step guide showing you how to add custom keyframe animations to your banners using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/Js4uSQ855uo)

[Video](/assets/videos/bannerify/animation/copy-paste-keyframe.mp4)

You can copy/paste properties from one keyframe to another by first selecting the keyframe you would like to copy the properties from, clicking the **Copy Properties** button, then selecting the keyframe you would like to paste the copied properties to, then clicking the **Paste Properties** button to paste the copied properties onto the selected keyframe.

> **Note:** **Copied properties are only available until the panel is closed**. You can copy and paste properties from/to any keyframes in your animations while the custom animations panel is open, any copied properties will be not be available to paste after you close the custom animations panel.

---

---
url: "/bannerify/animation/creating-keyframes.md"
description: "Add and manage keyframes on your custom animation timeline."
---

# Creating custom animation keyframes

> Add and manage keyframes on your custom animation timeline.

### Video Tutorial: Add custom animations to your Figma banner designs

This video tutorial is a complete step-by-step guide showing you how to add custom keyframe animations to your banners using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/Js4uSQ855uo)

[Video](/assets/videos/bannerify/animation/keyframes.mp4)

When you open the animations panel, you'll see 2 keyframes; the first keyframe (0%) and the final keyframe (100%). These are added by default and can't be removed, as a keyframe animation needs at least one frame to start the animation from and a keyframe to show where it ends.

### Selecting a keyframe to edit

You can instantly swap between any keyframes by clicking on a keyframe under the **Animation Timeline** near the top of the custom animations panel. Clicking on a keyframe will allow you to edit the properties for that specific keyframe.

### Inserting new keyframes

You can easily add more keyframes in between the default start/end (0%/100%) keyfarmes to create more complex keyframe animations. To add a new keyframe to your timeline, enter your new **keyframe percentage** (eg. **50**) in the input field, then click on the **Insert New Keyframe** button to insert a brand new keyframe at that percentage in the timeline.

Any new keyframe that you add will automatically be created with the same properties that your currently selected keyframe contains; this allows you to easily adjust properties based on other keyframes you've already added. Your newly added keyframe will also be automatically selected after you click the **Insert New Keyframe** button.

---

---
url: "/bannerify/animation/custom-keyframes.md"
description: "If you need a specific animation that isn't available in the animation presets included in Bannerify, you can create your own custom timeline animation by adding custom keyframes with your own X, Y, Scale, Rotation and Opacity properties."
---

# Creating custom keyframe animations

> If you need a specific animation that isn't available in the animation presets included in Bannerify, you can create your own custom timeline animation by adding custom keyframes with your own X, Y, Scale, Rotation and Opacity properties.

### Video Tutorial: Add custom animations to your Figma banner designs

This video tutorial is a complete step-by-step guide showing you how to add custom keyframe animations to your banners using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/Js4uSQ855uo)

## Opening the custom animations panel

[Video](/assets/videos/bannerify/animation/opening-panel.mp4)

To open the custom animations panel, click on the **Custom Animations** button in the main Bannerify header. This will open up the custom animation panel, where you'll be able to start adding your own keyframe animation.

## Creating custom animation keyframes

[Video](/assets/videos/bannerify/animation/keyframes.mp4)

When you open the animations panel, you'll see 2 keyframes; the first keyframe (0%) and the final keyframe (100%). These are added by default and can't be removed, as a keyframe animation needs at least one frame to start the animation from and a keyframe to show where it ends.

### Selecting a keyframe to edit

You can instantly swap between any keyframes by clicking on a keyframe under the **Animation Timeline** near the top of the custom animations panel. Clicking on a keyframe will allow you to edit the properties for that specific keyframe.

### Inserting new keyframes

You can easily add more keyframes in between the default start/end (0%/100%) keyfarmes to create more complex keyframe animations. To add a new keyframe to your timeline, enter your new **keyframe percentage** (eg. **50**) in the input field, then click on the **Insert New Keyframe** button to insert a brand new keyframe at that percentage in the timeline.

Any new keyframe that you add will automatically be created with the same properties that your currently selected keyframe contains; this allows you to easily adjust properties based on other keyframes you've already added. Your newly added keyframe will also be automatically selected after you click the **Insert New Keyframe** button.

## Editing keyframe properties

[Video](/assets/videos/bannerify/animation/editing-properties.mp4)

You can edit 5 different properties for any of your animation keyframes. Any differences in properties between your keyframes will automatically be animated; for example, setting scale to 2x on the 0% keyframe, and setting scale to 1x on the 100% keyframe will automatically create a "shrinking" animation.

- The **X** property will animate your element's left/right pixel position (in pixels).
- The **Y** property will animate your element's top/bottom pixel position (in pixels).
- The **Opacity** property will animate your element's transparency percentage.
- The **Rotate** property will animate your element's rotation degrees.
- The **Scale** property will animate your element's size.

### Using Percentage Based Relative X/Y Transforms

If you would prefer to set X/Y positioning based on the percentage of the animated element, you can enable the **Relative % Transforms** toggle in the keyframe properties panel, which will allow you to set a percentage value for your X/Y values (instead of pixels).

Applying a percentage X/Y transform value will automatically animate the element that the animation is applied to by using its position, and applying the percentage transform to that size; for example, setting a `10%` X transform value on a keyframe will animate a layer that's `100px` wide, by `10px`. Applying that same animation with a `10%` X transform value to a layer that's `200px` wide, will animate the layer by `20px`.

### Splitting Scale into X/Y Scale Options

If you would prefer to set the scale values for each X/Y axis individually, you can click the **Unlock Scaling** toggle in the keyframe properties panel, which will allow you to set the horizontal and vertical "Scale" values for your keyframes independently, rather than equally scaling them both for an even scale up or down animation.

This setting can be useful if you need to animate the width or height of a layer, without also affecting other X/Y axis at the same time.

## Using the live preview to see your animation

[Video](/assets/videos/bannerify/animation/live-preview-speeds.mp4)

To easily see how your animation is looking based on the keyframes and their properties that you've updated, you can look at the **Live Preview** area, which sits right next to your keyframe properties, and directly underneath the animation timeline. Any changes you make to your keyframes, properties or easing will automatically be shown in the live preview.

> **Tip:** **You can adjust the playback speed of the live preview**. If you want to see how your custom animation looks at different speeds, you can change the playback speed in the live preview by dragging the **Preview Speed** slider left and right to increase and decrease the playback speed.

## Copying and pasting keyframe properties

[Video](/assets/videos/bannerify/animation/copy-paste-keyframe.mp4)

You can copy/paste properties from one keyframe to another by first selecting the keyframe you would like to copy the properties from, clicking the **Copy Properties** button, then selecting the keyframe you would like to paste the copied properties to, then clicking the **Paste Properties** button to paste the copied properties onto the selected keyframe.

> **Note:** **Copied properties are only available until the panel is closed**. You can copy and paste properties from/to any keyframes in your animations while the custom animations panel is open, any copied properties will be not be available to paste after you close the custom animations panel.

## Deleting keyframes

[Video](/assets/videos/bannerify/animation/deleting-keyframe.mp4)

To delete an keyframe, click any keyframe under the **Animation Timeline** to select it, then click on the **Delete Keyframe** button to delete your keyframe from the timeline. Please note, that you _can't_ delete the **0%** or **100%** keyframes, as these are default keyframes required for your animation timeline.

After you delete any keyframe, the **0%** keyframe will automatically be re-selected as the active keyframe to edit.

> **Warning:** **Deleting a keyframe animation will permanently delete it**. When you delete any of your keyframes, it will be permanently removed from your timeline and you won't be able to undo the deletion. However, you are able to **Copy Properties** of a keyframe, delete it, then paste your deleted properties in a different keyframe while you're still editing your animation timeline.

## Setting the animation easing

[Video](/assets/videos/bannerify/animation/changing-easing.mp4)

You can choose what kind of easing you need your animation to have by choosing an option from the **Animation Easing** select box. Easing is automatically applied to your entire timeline, and will update the **Live Preview** area so you can see how your selected easing changes how your keyframe animation moves.

You can choose from the following easing options:

- Ease (Default)
- Linear
- Ease In
- Ease Out
- Ease In Out
- Cubic Bezier

### Setting a custom Cubic Bezier easing value

### Video Tutorial: Add cubic bezier easing to banner animations in Figma

This video tutorial is a complete step-by-step guide showing you how to add custom cubic-bezier easing to banner animations in Figma using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/uS2TRRQiYzw)

If you select the **Cubic Bezier** easing option, you'll need to paste in a valid CSS cubic-bezier value (eg. `cubic-bezier(0.65,0.05,0.36,1);`). You can generate a custom cubic beizer curve, by using a site like [https://easings.co/](https://easings.co/), or any other website service that you prefer to help to generate custom CSS cubic-bezier curves.

## Setting the animation origin point

[Video](/assets/videos/bannerify/animation/origin-point.mp4)

By default, the origin for all of your custom animation will be set to `Center` and `Center` for the X/Y axis, but you can customize these by clicking on the **Animation Origin Point** select input options, where you can set `Top`, `Center` or `Bottom` for the vertical axis, and `Left`, `Center` or `Right` for the horizontal axis.

Changing the animation origin will affect where the animation is "pinned" for the layer; for example, setting the origin to `Top` and `Left` would become the point for your layer at which a rotation animation is hinged on, or the point of your layer that could be scaled in/out from and to.

## Saving your new custom animation

[Video](/assets/videos/bannerify/animation/adding-new-animation.mp4)

To save your new animation, give your animation a name by filling in the **New Custom Animation Name** input text field, then click the **Add New Animation**

> **Note:** **Custom animations will only be saved/available to the current Figma file**. Saving an animation makes it available to any _page_ inside your _current_ Figma file; however, your saved animations _won't_ show up if you run Bannerify inside a completely different/new Figma file, as the animations are saved directly to the Figma file and can't be transferred to another file. You will need to re-create any new animations in any new Figma files; alternatively, you could setup a new _page_ in the _current_ Figma file, where your saved custom animations from this Figma file will still be available to use.

## Using your saved custom animations

[Video](/assets/videos/bannerify/animation/using-custom-animation.mp4)

Once you've saved at least one custom animation, you will be able to use them in your banners by clicking on the **entry animations** and **exit animations** select boxes in your layers timelines; you will see a new group in the select box options called **Custom Animations**, where you'll be able to see all of the custom animations that you've saved.

> **Tip:** **Bulk applying custom animations** As with other preset animations, you can also apply your custom animation in bulk by using the [bulk apply](/bannerify/animation/animating-banners#applying-bulk-animations) feature.

## Updating your saved animations

[Video](/assets/videos/bannerify/animation/update-saved-keyframes.mp4)

To update a custom animation that you've previously saved, choose the animation you'd like to update from the **Your Saved Animations** select box; this will load up your saved animation and its keyframes into the custom animation panel.

Once you've chosen the saved animation, you can edit your keyframes and properties as needed. Once you're happy with the updates, click the **Update Saved Animations** button to save the changes and _override_ the previous animation keyframes.

Please note, updating a saved animation will automatically apply the updated keyframes to any layers in your banners that was already using the custom animation you've just updated.

> **Tip:** **Create a new animation based on a saved animation**. If you want to load in a saved animation and modify it, but not "override" the saved version, you can create a new animation from it by entering in a **New Custom Animation Name** and clicking the **Add New Animation** button.

## Deleting your saved animations

[Video](/assets/videos/bannerify/animation/deleting-animation.mp4)

To delete an animation, select any option under **Your Saved Animations** to load in the animation, then click on the **Delete Saved Animation** button to delete your saved animation.

> **Warning:** **Deleting a saved animation will permanently delete it and remove it from your layers**. When you delete any of your saved animations, it will be permanently removed from **Your Saved Animations** list. Any layers in your banners that were using the deleted custom animation will be changed back to having **no animation** applied.

---

---
url: "/bannerify/animation/deleting-keyframes.md"
description: "Remove keyframes from your custom animation timeline."
---

# Deleting keyframes

> Remove keyframes from your custom animation timeline.

### Video Tutorial: Add custom animations to your Figma banner designs

This video tutorial is a complete step-by-step guide showing you how to add custom keyframe animations to your banners using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/Js4uSQ855uo)

[Video](/assets/videos/bannerify/animation/deleting-keyframe.mp4)

To delete an keyframe, click any keyframe under the **Animation Timeline** to select it, then click on the **Delete Keyframe** button to delete your keyframe from the timeline. Please note, that you _can't_ delete the **0%** or **100%** keyframes, as these are default keyframes required for your animation timeline.

After you delete any keyframe, the **0%** keyframe will automatically be re-selected as the active keyframe to edit.

> **Warning:** **Deleting a keyframe animation will permanently delete it**. When you delete any of your keyframes, it will be permanently removed from your timeline and you won't be able to undo the deletion. However, you are able to **Copy Properties** of a keyframe, delete it, then paste your deleted properties in a different keyframe while you're still editing your animation timeline.

---

---
url: "/bannerify/animation/deleting-saved-animations.md"
description: "Remove custom animations you no longer need."
---

# Deleting your saved animations

> Remove custom animations you no longer need.

### Video Tutorial: Add custom animations to your Figma banner designs

This video tutorial is a complete step-by-step guide showing you how to add custom keyframe animations to your banners using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/Js4uSQ855uo)

[Video](/assets/videos/bannerify/animation/deleting-animation.mp4)

To delete an animation, select any option under **Your Saved Animations** to load in the animation, then click on the **Delete Saved Animation** button to delete your saved animation.

> **Warning:** **Deleting a saved animation will permanently delete it and remove it from your layers**. When you delete any of your saved animations, it will be permanently removed from **Your Saved Animations** list. Any layers in your banners that were using the deleted custom animation will be changed back to having **no animation** applied.

---

---
url: "/bannerify/animation/editing-keyframe-properties.md"
description: "Customize X, Y, Scale, Rotation, and Opacity properties for your keyframes."
---

# Editing keyframe properties

> Customize X, Y, Scale, Rotation, and Opacity properties for your keyframes.

### Video Tutorial: Add custom animations to your Figma banner designs

This video tutorial is a complete step-by-step guide showing you how to add custom keyframe animations to your banners using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/Js4uSQ855uo)

[Video](/assets/videos/bannerify/animation/editing-properties.mp4)

You can edit 5 different properties for any of your animation keyframes. Any differences in properties between your keyframes will automatically be animated; for example, setting scale to 2x on the 0% keyframe, and setting scale to 1x on the 100% keyframe will automatically create a "shrinking" animation.

- The **X** property will animate your element's left/right pixel position (in pixels).
- The **Y** property will animate your element's top/bottom pixel position (in pixels).
- The **Opacity** property will animate your element's transparency percentage.
- The **Rotate** property will animate your element's rotation degrees.
- The **Scale** property will animate your element's size.

### Using Percentage Based Relative X/Y Transforms

If you would prefer to set X/Y positioning based on the percentage of the animated element, you can enable the **Relative % Transforms** toggle in the keyframe properties panel, which will allow you to set a percentage value for your X/Y values (instead of pixels).

Applying a percentage X/Y transform value will automatically animate the element that the animation is applied to by using its position, and applying the percentage transform to that size; for example, setting a `10%` X transform value on a keyframe will animate a layer that's `100px` wide, by `10px`. Applying that same animation with a `10%` X transform value to a layer that's `200px` wide, will animate the layer by `20px`.

### Splitting Scale into X/Y Scale Options

If you would prefer to set the scale values for each X/Y axis individually, you can click the **Unlock Scaling** toggle in the keyframe properties panel, which will allow you to set the horizontal and vertical "Scale" values for your keyframes independently, rather than equally scaling them both for an even scale up or down animation.

This setting can be useful if you need to animate the width or height of a layer, without also affecting other X/Y axis at the same time.

---

---
url: "/bannerify/animation/exit-animations.md"
description: "Apply exit animations to layers that animate out of view."
---

# Adding exit animations

> Apply exit animations to layers that animate out of view.

---

---
url: "/bannerify/animation/hover.md"
description: "You can add animated hover states to any layer in your Bannerify timeline, which will be included in any HTML exports from the plugin."
---

# Adding hover animation states to layers

> You can add animated hover states to any layer in your Bannerify timeline, which will be included in any HTML exports from the plugin.

### Video Tutorial: Add hover animations to your Figma banner designs

This video tutorial is a complete step-by-step guide showing you how to add hover animations to your banners using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/dOdeG78NlSw)

[Video](/assets/videos/bannerify/animation/hovers.mp4)

You can add a hover animation state (for HTML exports) to any layer in your timeline by clicking on the **Add Hover** toggle, and then selecting a hover animation from the revealed drop down selector. You can set the animation to repeat by enabling the **Loop** toggle, and you can adjust the speed of the hover animation by dragging the speed slider next to it.

To preview how the animation looks, you can hover over the layer with your mouse in the Bannerify preview window.

> **Tip:** **Applying a hover animation to multiple layers**. You can also apply a hover animation in bulk to multiple layers by using the [bulk apply](/bannerify/animation/animating-banners#applying-bulk-animations) feature.

## Adding transitional hover states

[Video](/assets/videos/bannerify/animation/button-hovers.mp4)

If you'd like to transition between two different states (for example, hovering over a CTA button and changing its colors), you can do that by creating your "hover" state layer and placing it above your original layer and applying the entry hover state to ensure it transitions in whenever that element is hovered over.

---

---
url: "/bannerify/animation/live-preview.md"
description: "See your custom animation in real-time as you adjust keyframes and properties."
---

# Using the live preview

> See your custom animation in real-time as you adjust keyframes and properties.

### Video Tutorial: Add custom animations to your Figma banner designs

This video tutorial is a complete step-by-step guide showing you how to add custom keyframe animations to your banners using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/Js4uSQ855uo)

[Video](/assets/videos/bannerify/animation/live-preview-speeds.mp4)

To easily see how your animation is looking based on the keyframes and their properties that you've updated, you can look at the **Live Preview** area, which sits right next to your keyframe properties, and directly underneath the animation timeline. Any changes you make to your keyframes, properties or easing will automatically be shown in the live preview.

> **Tip:** **You can adjust the playback speed of the live preview**. If you want to see how your custom animation looks at different speeds, you can change the playback speed in the live preview by dragging the **Preview Speed** slider left and right to increase and decrease the playback speed.

---

---
url: "/bannerify/animation/looping-animations.md"
description: "Make animations repeat infinitely on specific layers."
---

# Looping animations

> Make animations repeat infinitely on specific layers.

[Video](/assets/videos/bannerify/animation/loop-animation.mp4)

If you have an animation on a specific layer that you would like to repeat infinitely (even after the banner timeline has finished), you can enable the **Loop** toggle next to the animation you've selected. This can be handy for very short animations that lend themselves to a looped playback (eg. "Heartbeart", "Flicker" or "Pulse").

---

---
url: "/bannerify/animation/magic-delays-speeds.md"
description: "Automatically apply timing offsets and speeds to all layers across all banners."
---

# Using magic delays and magic speeds

> Automatically apply timing offsets and speeds to all layers across all banners.

[Video](/assets/videos/bannerify/animation/magic-timeline.mp4)

The **Magic Delay** and **Magic Speed** select boxes in the Bannerify header allow you to automatically apply timings to _all_ of your layers, across _all_ of your banners with **one click**.

### Magic Delays
If you want _all_ of your layers in _all_ of your banners to have a **staggered delay** offset, you can click on the **Magic Delay** select box in the Bannerify header; selecting a delay (from 0.1 seconds to 0.5 seconds) will automatically apply that staggered delay to every layer's timeline in Bannerify for each banner.

### Magic Speeds
If you want _all_ of your layers in _all_ of your banners to be **the same speed**, you can click on the **Magic Speed** select box in the Bannerify header; selecting a speed (from 0.1 seconds to 1 second) will automatically apply that speed to every layer's timeline in Bannerify for each banner.

> **Warning:** **You can't automatically undo magic speeds/delays**. Selecting a magic speed or delay option will apply the changes to the timelines across all of your banners. You will need to manually reset them again if you change your mind.

---

---
url: "/bannerify/animation/opening-custom-panel.md"
description: "Access the custom animations panel to start creating your own keyframe animations."
---

# Opening the custom animations panel

> Access the custom animations panel to start creating your own keyframe animations.

### Video Tutorial: Add custom animations to your Figma banner designs

This video tutorial is a complete step-by-step guide showing you how to add custom keyframe animations to your banners using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/Js4uSQ855uo)

[Video](/assets/videos/bannerify/animation/opening-panel.mp4)

To open the custom animations panel, click on the **Custom Animations** button in the main Bannerify header. This will open up the custom animation panel, where you'll be able to start adding your own keyframe animation.

---

---
url: "/bannerify/animation/previewing-animations.md"
description: "Preview and control your banner animations using the timeline playback controls."
---

# Previewing your banner animations in the timeline

> Preview and control your banner animations using the timeline playback controls.

[Video](/assets/videos/bannerify/animation/preview-banner.mp4)

You can preview your animations in your banners by clicking on the **Play** icon button, and pause the timeline at any point by clicking on the **Pause** icon button. You can also restart the animation playback from the beginning by clicking on the **Restart** icon button.

To jump to a certain part of the timeline, you can click on any point in the timeline **Seconds** header on any banner, or you can click and drag your mouse left and right to scrub through the timeline that way, too.

---

---
url: "/bannerify/animation/quick-select-layers.md"
description: "Automatically select matching layers across all your banners."
---

# Quick selecting similar layers

> Automatically select matching layers across all your banners.

[Video](/assets/videos/bannerify/animation/quick-select.mp4)

If you're working with a banner set that contains multiple banners with the same elements or layers, you can use the **Quick Select Layers** select box in the Bannerify header to automatically select similar layers across all of your banners. This can be a great alternative to manually checking each layer.

> **Tip:** **Example of using Quick Select Layers** For example, if all of your banners contain a layer called **CTA Button**, you will be able to click on that option to automatically check all the **CTA Button** layers for you. This will then allow you to **bulk apply** animations to that layer across all of your banners at the same time.

---

---
url: "/bannerify/animation/saving-custom-animation.md"
description: "Save your custom keyframe animation to use across your banners."
---

# Saving your new custom animation

> Save your custom keyframe animation to use across your banners.

### Video Tutorial: Add custom animations to your Figma banner designs

This video tutorial is a complete step-by-step guide showing you how to add custom keyframe animations to your banners using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/Js4uSQ855uo)

[Video](/assets/videos/bannerify/animation/adding-new-animation.mp4)

To save your new animation, give your animation a name by filling in the **New Custom Animation Name** input text field, then click the **Add New Animation**

> **Note:** **Custom animations will only be saved/available to the current Figma file**. Saving an animation makes it available to any _page_ inside your _current_ Figma file; however, your saved animations _won't_ show up if you run Bannerify inside a completely different/new Figma file, as the animations are saved directly to the Figma file and can't be transferred to another file. You will need to re-create any new animations in any new Figma files; alternatively, you could setup a new _page_ in the _current_ Figma file, where your saved custom animations from this Figma file will still be available to use.

---

---
url: "/bannerify/animation/selecting-animations.md"
description: "Choose from dozens of pre-defined keyframe based animations for your banner layers."
---

# Selecting animations

> Choose from dozens of pre-defined keyframe based animations for your banner layers.

### Video Tutorial: Animate and export banners to HTML from Figma

This video tutorial is a complete step-by-step guide showing you how to animate and export production-ready HTML banners from Figma in seconds.
[Embedded media](https://www.youtube.com/embed/-TA088FNulA)

## Animations

Bannerify comes with dozens of pre-defined keyframe based animations, which are grouped into 5 categories:

- Entrances
- Exits
- Basic Transforms
- Attention Seekers
- Background Pans

> **Tip:** **Using Split Text animations**. Bannerify also includes a dedicated set of split character, word, and line animations for supported text layers. See [Split Text Animations](/bannerify/animation/split-text) for the setup steps, supported fonts, and current caveats.

> **Tip:** **Removing animations from a layer**. If you don't want a layer to have any animations, you can either select the **No Entry Animation** and/or **No Exit Animation**, or alternatively, you can rename any Figma layer with the prefix **locked-** (eg. _locked-RectangleBackground_), which will also ensure no animations are added, and will disable the animations select box in the plugin timeline, too.

## Adding entry animations

[Video](/assets/videos/bannerify/animation/select-animations.mp4)

To set an **entry animation**, hover over the layer you would like to animate in the Bannerify timeline and click on the **top select box**. Scroll through the list of animations and **click** on an animation name to apply it to your layer. You'll see the banner preview update instantly with the new animation applied.

## Adding exit animations

[Video](/assets/videos/bannerify/animation/exit-animation.mp4)

Adding **exit animations** works the same way as adding entry animations; instead of clicking on the top select box, you can click on the **bottom select box** to select an exit animation for your layer.

> **Note:** Please ensure that any exit animation set on a layer **is set to begin _after_ the "entry" animation ends**, otherwise this will cause issues with both animations overlapping and having conflicting transitions at the same.

---

---
url: "/bannerify/animation/split-text.md"
description: "Animate text by characters, words, or lines in Bannerify, with the current setup steps, supported layer rules, and export caveats."
---

# Split text animations

> Animate text by characters, words, or lines in Bannerify, with the current setup steps, supported layer rules, and export caveats.

### Video Tutorial: Add split text animations to Figma banners

This video tutorial is a complete step-by-step guide showing you how to add split text animations (by character, word, or line) to Figma banners using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/NrzaotL5IMw)

[Video](/assets/videos/bannerify/animation/bannerify-split-text.mp4)

## Using split text animations

Bannerify includes a dedicated set of **Split Text** animations for text layers. These let you animate text by **characters**, **words**, or **lines** instead of moving the whole layer as one block.

To apply one:

1. Add a normal Figma **text layer** to your banner.
2. Load the layer into your Bannerify timeline.
3. Click the **entry** or **exit** animation select box for that text layer.
4. Open the **Split Text (GSAP Only)** group.
5. Choose the split text animation you want.
6. Preview the result in Bannerify and adjust the timing if needed.

> **Tip:** For the cleanest final output, use [HTML / GSAP export](/bannerify/export/html) when you want Bannerify's dedicated split text runtime.

## Entry and exit pairing

You can use split text on the **entry animation**, the **exit animation**, or both.

- Entry and exit split text animations stay in the same order in the select lists so they are easy to pair.
- Exit labels are mirrored where possible, such as **Type On / Type Off**, **Rise / Fall**, and **Reveal / Conceal**.
- For best results, make sure your exit animation starts **after** the entry animation has finished.

## Supported text layers

Split text is only available when the selected layer can be safely prepared as rich HTML text.

Your text layer should be:

- a normal **text layer**
- using a **web-safe font** or **Google Font**
- free from inline text links
- free from list formatting
- free from text format overrides
- not using Bannerify's scrollable text mode

If you change a supported layer back to an unsupported font or unsupported text setup later, Bannerify will keep the selected split text animation on the layer, but mark it as unavailable until the layer becomes eligible again.

## When split text is unavailable

Bannerify will block split text on layers in any of these situations:

- the selected layer is not a text layer
- the layer has a **format override**
- **Scrollable Text** is enabled on that layer
- the text contains **inline links**
- the text is formatted as a **list**
- the font is not a **web-safe font** or **Google Font**
- Bannerify cannot prepare the text layer for split text preview

When this happens, Bannerify will show the reason directly in the plugin UI instead of silently applying the animation.

## Bulk apply, paste, and numpad shortcuts

Split text follows stricter rules than normal animations when you apply it to multiple layers at once.

- Every selected layer must be a **text layer**
- Every selected text layer must already be **eligible** for split text

This rule applies to:

- **Bulk apply**
- **Copy / paste animations**
- **Numpad shortcut apply** actions

If even one selected layer is unsupported, Bannerify will block that split text action and show a warning.

## Preview and export notes

Bannerify labels this group as **Split Text (GSAP Only)** because HTML / GSAP exports use Bannerify's dedicated split text runtime.

In current versions:

- Bannerify preview supports split text
- current canvas-rendered export paths can also render split text
- HTML / GSAP export is still the best option when you want the most faithful text-based split animation output

## Best results

- Use split text most often on short headlines, callouts, or compact copy.
- Keep intentional line breaks in mind, because line-based split animations follow the rendered text layout.
- Preview the animation at the final banner size before exporting.

---

---
url: "/bannerify/animation/static-end-frames.md"
description: "This feature works by automatically preventing your “exit” animation from playing, and keeping your layer in the final state of its “entry” animation for the rest of the time that your banner is visible after it finishes all its playback iterations."
---

# Keeping layers as a static end frame in HTML exports

> This feature works by automatically preventing your “exit” animation from playing, and keeping your layer in the final state of its “entry” animation for the rest of the time that your banner is visible after it finishes all its playback iterations.

[Video](/assets/videos/bannerify/animation/static-end-frame.mp4)

If some of your banner layers include entry/exit animations on a banner that is also set to only loop a certain number of times (rather than infinitely) in **HTML exports**, this can end up resulting in some of your exit animations making layers invisible after the final banner playback iteration.

To resolve this issue for this scenario, you can specify any layer in your banner's timeline to remain visible after your banner's final playback iteration.

You can optionally enable this setting by clicking any layer's **Settings** icon button in the main timeline to open the layer settings, and enabling the **Keep layer as static end frame (remove final exit animation)** toggle.

> **Tip:** **Bulk applying static layer settings** As with other layer settings, you can also apply your custom static end frame setting to layers in bulk by using the [bulk apply](/bannerify/animation/animating-banners#applying-bulk-animations) feature.

---

---
url: "/bannerify/animation/timeline-length.md"
description: "Change the duration of your banner timeline from 3 seconds to 3 minutes."
---

# Adjusting the timeline length

> Change the duration of your banner timeline from 3 seconds to 3 minutes.

[Video](/assets/videos/bannerify/animation/adjusting-timeline.mp4)

You can adjust the length of the entire timeline itself for all of your banners by clicking on the **Timeline** select box in the Bannerify header; selecting a length (with options from 3 seconds to 3 minutes) will automatically extend or shrink the Bannerify timeline for all of your banners. Bannerify will do its best to update your existing animations if they previously extended beyond a new shorter timeline, and vice-versa.

> **Warning:** **You can't automatically undo timeline length updates**. Selecting a new timeline length will apply the changes to the timelines across all of your banners. You will need to manually update your timeline animations again if you change your mind. With this in mind, it's usually worth setting your timeline length **before** starting to work on your animations.

---

---
url: "/bannerify/animation/updating-saved-animations.md"
description: "Edit and update previously saved custom animations."
---

# Updating your saved animations

> Edit and update previously saved custom animations.

### Video Tutorial: Add custom animations to your Figma banner designs

This video tutorial is a complete step-by-step guide showing you how to add custom keyframe animations to your banners using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/Js4uSQ855uo)

[Video](/assets/videos/bannerify/animation/update-saved-keyframes.mp4)

To update a custom animation that you've previously saved, choose the animation you'd like to update from the **Your Saved Animations** select box; this will load up your saved animation and its keyframes into the custom animation panel.

Once you've chosen the saved animation, you can edit your keyframes and properties as needed. Once you're happy with the updates, click the **Update Saved Animations** button to save the changes and _override_ the previous animation keyframes.

Please note, updating a saved animation will automatically apply the updated keyframes to any layers in your banners that was already using the custom animation you've just updated.

> **Tip:** **Create a new animation based on a saved animation**. If you want to load in a saved animation and modify it, but not "override" the saved version, you can create a new animation from it by entering in a **New Custom Animation Name** and clicking the **Add New Animation** button.

---

---
url: "/bannerify/animation/using-saved-animations.md"
description: "Apply your saved custom animations to layers in your banners."
---

# Using your saved custom animations

> Apply your saved custom animations to layers in your banners.

### Video Tutorial: Add custom animations to your Figma banner designs

This video tutorial is a complete step-by-step guide showing you how to add custom keyframe animations to your banners using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/Js4uSQ855uo)

[Video](/assets/videos/bannerify/animation/using-custom-animation.mp4)

Once you've saved at least one custom animation, you will be able to use them in your banners by clicking on the **entry animations** and **exit animations** select boxes in your layers timelines; you will see a new group in the select box options called **Custom Animations**, where you'll be able to see all of the custom animations that you've saved.

> **Tip:** **Bulk applying custom animations** As with other preset animations, you can also apply your custom animation in bulk by using the [bulk apply](/bannerify/animation/bulk-animations) feature.

---

---
url: "/bannerify/design/custom-css-classes.md"
description: "You can optionally add custom CSS class names to any layers in your timeline for HTML exports, which may be useful for any kind of custom coding/development work."
---

# Add custom CSS class names for layers in your HTML exports

> You can optionally add custom CSS class names to any layers in your timeline for HTML exports, which may be useful for any kind of custom coding/development work.

[Video](/assets/videos/bannerify/design/custom-css-classes.mp4)

If you would like to override the image scale size for any layer in your timeline, you can optionally do this for any layer by clicking any layer's **Settings** icon button in the main timeline to open the layer settings, and entering your custom CSS class name into the **Optionally include custom CSS classes to this layer in HTML exports** input field.

This will ensure that your layer will include your specified custom CSS class name to its HTML `class` attribute when they're exported to HTML from the Bannerify plugin.

> **Tip:** **Bulk applying custom CSS class name settings**. As with other layer settings, you can also apply your custom CSS class name to layers in bulk by using the [bulk apply](/bannerify/animation/animating-banners#applying-bulk-animations) feature.

---

---
url: "/bannerify/design/figma-frames.md"
description: "Bannerify works by looking through all of your **top level frames and instances** in the active Figma page and using each one as its own **banner**. Bannerify will also load top level elements inside of a Figma component set (or 'variants) layer as banners."
---

# Designing your banners in Figma

> Bannerify works by looking through all of your **top level frames and instances** in the active Figma page and using each one as its own **banner**. Bannerify will also load top level elements inside of a Figma component set (or 'variants) layer as banners.

### Video Tutorial: Animate and export banners to HTML from Figma

This video tutorial is a complete step-by-step guide showing you how to animate and export production-ready HTML banners from Figma in seconds.
[Embedded media](https://www.youtube.com/embed/-TA088FNulA)

## Starting from a blank Figma page

[Video](/assets/videos/bannerify/design/blank-frames.mp4)

To quickly get started designing your own banners, Bannerify will offer to create some standard banner sizes automatically for you when the plugin is run inside of an empty Figma page.

## Structuring your Figma banner frame layers

[Video](/assets/videos/bannerify/design/frame-children.mp4)

The **direct child layers** of each frame are used as the default **elements** inside of each banner. As we'll see in the sections below, each of these elements can be individually animated inside the Bannerify plugin to create your banners.

> **Note:** **Hidden child layers will be included in your banner frames** Any direct child layers that have been toggled to **hidden** in Figma will still appear in your Bannerify layers timeline. The reason for this is to allow child layers to be visibly hidden while designing banners that may contain elements that need to be transitioned in and out over multiple stages. Bannerify will automatically display these hidden layers in their visually un-hidden state.

> **Tip:** **Hiding Figma layers from your timeline**. If you don't want a certain layer in your Figma frame to be included in the timeline, you can rename any Figma layer with the prefix **hide-** (eg. _hide-RectangleBackground_), which will ensure this layer doesn't get included in the plugin timeline or your banner exports.

## Starting with banners you've already designed

[Video](/assets/videos/bannerify/design/loading-existing.mp4)

If you've already created some banner designs in Figma, running the Bannerify plugin on your page will automatically load a list of the available frames or instances in your file that can be used as banners.

You can either check/uncheck only the banners you'd like the plugin to load and then click **Load Checked Banners** button, or you can click the **Load All Banners** button to automatically load all of them.

## Refreshing or re-loading multiple/all banners

[Video](/assets/videos/bannerify/design/refreshing-all-banners.mp4)

If you add or update any layers in your Figma file while Bannerify is already running, they won't be updated automatically. However, there are two ways to refresh your banners.

To refresh all of the banners in your timeline, or load in brand new banners from your Figma file, you can click the **Refresh** icon in the main plugin header menu.

This will show the initial banner selection screen again, where you can either check/uncheck only the banners you'd like the plugin to load and then click **Load Checked Banners** button, or you can click the **Load All Banners** button to automatically load all of them. Any updated layers will show up in the Bannerify timeline and real-time previews.

## Refreshing a single banner

[Video](/assets/videos/bannerify/design/refreshing-single-banners.mp4)

If you add or update any layers in your Figma file while Bannerify is already running, they won't be updated automatically. However, there are two ways to refresh your banners.

To quickly refresh a single banner, you can click the **Refresh** icon in the banner's header bar to only refresh the layers for that banner, any updated layers will show up in the Bannerify timeline and real-time previews.

## Setting a solid banner background fill

[Video](/assets/videos/bannerify/design/setting-background-fill.mp4)

You can set a solid background colour of any banner by setting the solid **Fill** of that frame to the colour you need in Figma; this may be seen briefly before your image elements load.

## Auto-scrolling banners into view

[Video](/assets/videos/bannerify/design/scroll-layers.mp4)

To easily switch between editing banners, Bannerify automatically scrolls a banner into view in the timeline when it's corresponding layer (or child layer) is clicked on the Figma page.

This also works the other way around, where if you click on the **frame** or **instance** icon button above any of your banner previews in the timeline, the corresponding Figma layer will be automatically scrolled and zoomed into view on your Figma page.

## Resizing the plugin window

[Video](/assets/videos/bannerify/design/resize-window.mp4)

If you're using a bigger (or smaller) computer monitor, Bannerify allows you to resize the plugin window to make it easier to use and view the timeline depending on the size of your screen. You can resize the window from smaller to larger (4K) sizes by clicking on the size dropdown in the main plugin header menu.

---

---
url: "/bannerify/design/generate-new-banners.md"
description: "Create multiple new banner sizes from one or more existing Figma frames, then optionally let Bannerify resize and re-layout the content for each new output size."
---

# Generating new banners from existing Figma frames

> Create multiple new banner sizes from one or more existing Figma frames, then optionally let Bannerify resize and re-layout the content for each new output size.

If you've already designed one or more banner frames in Figma, Bannerify can generate brand new banner frames in multiple sizes from those originals.

This is useful when you've finished one strong master size and want Bannerify to produce a first-pass set of other standard ad sizes without manually rebuilding every layout from scratch.

## What this feature does

- Duplicates selected top-level Figma frames or instances into new frames.
- Lets you choose multiple standard banner sizes at once.
- Supports custom output sizes.
- Can optionally re-layout text, logos, CTAs and graphics for each new aspect ratio.
- Leaves your original source frames unchanged.

> **Tip:** Use this as a production shortcut, not a substitute for creative review. Bannerify can get you very close quickly, and you can then make any final design adjustments directly in Figma.

## Step 1. Open the Generate tab

Open Bannerify in Figma, then switch from the normal **Load** tab to the **Generate** tab.

Bannerify will scan the current page for top-level Figma frames and instances that can be used as source banners.

## Step 2. Select your source frames

Check the one or more source frames you want to use as the starting point.

Good candidates include:

- completed banner designs
- a strong master size such as `300x250` or `1200x628`
- frames with clean structure and clearly grouped elements

Bannerify generates new frames from the selected sources; it does not overwrite the originals.

## Step 3. Choose the output sizes

Enable the banner sizes you want to generate.

The Generate tab includes a set of common ad sizes such as:

- Leaderboard (`728x90`)
- Medium Rectangle (`300x250`)
- Large Rectangle (`336x280`)
- Skyscraper (`120x600`)
- Wide Skyscraper (`160x600`)
- Half-Page Skyscraper (`300x600`)
- Banner (`468x60`)
- Square (`250x250`)

If you need a non-standard size, enter a custom width and height and click **Add Custom Size**.

## Step 4. Optionally enable smart layout

If you want Bannerify to adapt the contents of each new banner automatically, turn on:

- **Auto re-layout new Figma frame content layers (BETA)**

When enabled, Bannerify will try to resize and reposition the content in each new frame so it fits the target aspect ratio more naturally.
It also tries to keep content closer to its original frame bias, so layouts that started top-heavy or edge-aligned are less likely to drift back toward the middle.

When disabled, Bannerify will still create the new frame sizes, but it will only resize the outer frame and leave the inner content placement closer to the original source layout.

## Step 5. Click Generate

Click the **Generate** button to create the selected sizes.

Bannerify will create new Figma frames on the page, named from the source frame plus the output size, for example:

- `Homepage Promo / Leaderboard (728x90)`
- `Homepage Promo / Medium Rectangle (300x250)`
- `Homepage Promo / Half-Page Skyscraper (300x600)`

## What smart layout tries to adapt

When the re-layout toggle is enabled, Bannerify will try to:

- resize and reposition text blocks
- keep headlines more readable in narrow, tall, or very short wide formats
- keep top-, middle-, or bottom-biased content closer to its original source position
- avoid shrinking the whole composition too much when the new size stays close to the original aspect ratio
- preserve spacing around wider text areas
- move decorative elements and shapes to fit the new aspect ratio
- keep grouped content together where possible
- reduce obvious overlaps and overflow

The exact result depends on the source frame structure and the aspect ratio difference between the original and target size.

## When to enable or disable re-layout

### Turn it on when

- you want a fast first pass for multiple new sizes
- your source banner has clearly structured content
- you want Bannerify to do the heavy lifting before final polish

### Leave it off when

- you only want the new frame sizes created quickly
- you plan to manually reposition everything yourself in Figma
- the source layout is very custom and you want exact manual control

## Best practices for better results

You'll get the most consistent output when your source banners are structured clearly in Figma.

### Keep important elements as direct children or logical groups

For example:

- headline group
- body copy group
- CTA or button group
- logo group
- product image group

This makes it easier for Bannerify to identify what each element is doing and re-layout it sensibly.

### Avoid using one giant flat frame of unrelated layers

If every element sits loose in the root frame with no logical grouping, Bannerify has less semantic information to work with.

### Give long copy a sensible text box

If your banner contains long legal copy or disclaimer text, set up the text layer with a realistic width in the source frame.

If the copy needs to remain scrollable in HTML exports, see [Scrollable Text Layers](/bannerify/design/scrollable-text).

### Use Sections only for multi-scene banners

The Generate feature creates new sizes from existing frames.

If you want to combine several frames into one animated banner sequence, see [Multi-Scene Banners](/bannerify/design/scenes).

## After generation

The generated banners are normal Figma frames. You can:

- tweak the layout manually
- animate them in Bannerify
- export them to HTML, GIF, MP4, WebM or other supported formats

If you later update the original source design, simply generate a fresh batch again.

## Troubleshooting tips

- If the generated layouts need too much manual correction, try turning the re-layout toggle off and resize the variants manually.
- If text-heavy sizes still need adjustment, simplify the source layout and try generating again.
- If generated banners contain too much copy for very small sizes, shorten the source copy or use scrollable or popup text patterns.
- If you want Bannerify to treat multiple frames as one banner, use [Figma Sections](/bannerify/design/scenes) instead of the Generate feature.

## Summary

The Generate feature is the fastest way to turn one or more finished Figma banners into a full set of new banner sizes.

Select your source frames, choose your output sizes, decide whether to enable **Auto re-layout new Figma frame content layers (BETA)**, and let Bannerify generate new frames directly on the page.

---

---
url: "/bannerify/design/gif.md"
description: "There are two different options for using GIFs in your banner designs, each one works a bit differently, depending on how you'd like to incorporate the GIF into your design. "
---

# Including animated GIFs in your HTML banners

> There are two different options for using GIFs in your banner designs, each one works a bit differently, depending on how you'd like to incorporate the GIF into your design. 

> **Note:** Your GIF layer will need to be included in the main timeline. Any **_nested_ layers containing a GIF won't be rendered** or included in your HTML exports. Embedded animated GIFs will also **not be included in GIF/Video exports** from Bannerify.

> **Tip:** **Flagging transparent GIFs**. By default, your GIF exports won't include transparency. If your GIF does require transparency, please add the word **transparent** anywhere in your Figma layer's name.

## Using animated GIFs as image layers

[Video](/assets/videos/bannerify/design/animated-gif-layer.mp4)

You can drag a `.gif` file inside of any top level banner, which will add it as a Figma image layer.

This method won't allow to include any other content over the top of the animated GIF, however, any additional Figma fills (eg color/gradient overlays) on this frame will also be included in the final `.gif` export.

## Using animated GIFs as background fills on a frame layer

[Video](/assets/videos/bannerify/design/animated-gif-fill.mp4)

Alternatively, you can also drag a `.gif` file from your computer onto a frame layer's **fill**, which will set it as an image fill on the background of the frame. Any additional Figma fills (eg color/gradient overlays) on this frame will also be included in the final `.gif` export.

The advantage of this is that you can then add other Figma layers (text, images etc) inside of the frame on top of your animated GIF, and those will also be included in the `.gif` that gets exported with your HTML banners.

---

---
url: "/bannerify/design/hide-layers-from-backup.md"
description: "By default, all of the layers from your Figma frame will be included in the HTML exports backup.jpg file, but you can specify certain layers to be excluded."
---

# Hide certain layers from your HTML backup.jpg image

> By default, all of the layers from your Figma frame will be included in the HTML exports backup.jpg file, but you can specify certain layers to be excluded.

[Video](/assets/videos/bannerify/design/hide-backup-layers.mp4)

If you have different content layers transitioning in and out at different points in your banner animation, you will likely want to hide some of those from appearing in the your backup.jpg file.

If you would like to hide any layer in your timeline from being included in the `backup.jpg` file with your HTML exports, you can optionally do this for any layer by clicking any layer's **Settings** icon button in the main timeline to open the layer settings, and enabling the **Hide this layer from being included in your backup.jpg** toggle.

This will automatically hide that layer from appearing in your `backup.jpg` file during the export of your HTML banners.

> **Tip:** **Bulk applying backup.jpg hide settings**. As with other layer settings, you can also apply your backup exclusion to layers in bulk by using the [bulk apply](/bannerify/animation/animating-banners#applying-bulk-animations) feature.

---

---
url: "/bannerify/design/links.md"
description: "There are two ways to add URL links to your HTML banner exports in Bannerify; one is to include an `<a>` link tag around the entire banner, and the other is to add clickable links to individual layers in your timeline. "
---

# Adding clickable URL links to your banners

> There are two ways to add URL links to your HTML banner exports in Bannerify; one is to include an `<a>` link tag around the entire banner, and the other is to add clickable links to individual layers in your timeline. 

> **Note:** **Links only applies to HTML exports**. Please note that this will only apply to all HTML export options, and won't have any effect on GIF or video exports from the plugin.

## Adding a clickable URL to the entire banner

[Video](/assets/videos/bannerify/design/banner-link-tag.mp4)

To add a link around your entire banner, you can paste a link into the URL field inside of the export settings panel. This will automatically wrap your entire banner inside of an `` tag, which has an `href` set to the URL that you specified in the input field.

## Adding a clickable URL to a specific timeline layer

[Video](/assets/videos/bannerify/design/prototype-link.mp4)

If you need to make a certain timeline layer clickable, you can do this by clicking on that layer in your Figma canvas, then adding an **Open link** interaction under the native Figma **Prototype** panel. Pasting your link into the URL field of the Figma interaction will automatically include an `onclick="window.open('https://yourwebsitelink.com', '_blank')"` attribute to that element in your HTML banner export.

> **Tip:** **Only applies to layers visible in your Bannerify timeline**. Please note that this will only be applied to layers that are visible in your Figma timeline. By default, this means direct child layers of your banner frame; you can optionally [include nested layers](/bannerify/animation/animating-banners#animating-nested-child-layers-individually) via the plugin, and then apply a prototype link interaction to those nested layers, if desired, too.

## Using Enabler.exit() on timeline layers for DoubleClick exports

If you export with the **DoubleClick Studio** format, you can also set a timeline layer's Figma prototype URL to an `Enabler.exit(...)` call instead of a normal website URL.

1. Select a layer in your timeline (for example your CTA button).
2. In Figma's **Prototype** panel, add an **On click -> Open link** interaction.
3. In the URL field, enter a DoubleClick exit call like:

```js
Enabler.exit("CTA Exit");
```

4. Export your banner with Bannerify using the **DoubleClick Studio** format.

Bannerify will then:
- bind that layer to `Enabler.exit("CTA Exit")`,
- keep the default full-banner background exit (`Enabler.exit("Background Exit")`),
- prevent the layer click from bubbling to the background exit, so you do not get duplicate exit calls.

> **Tip:** **Use this only for DoubleClick exports**. For non-DoubleClick HTML formats, use regular website URLs in Prototype links (for example, `https://example.com`).

---

---
url: "/bannerify/design/lottie.md"
description: "You can embed Lottie file animations to any Figma layer in your Bannerify timeline by clicking on the **Settings** icon button for that layer, and then pasting in a URL pointing to a valid Lottie file (`.json`) into the Lottie embed input field."
---

# Including Lottie file animations in your banners

> You can embed Lottie file animations to any Figma layer in your Bannerify timeline by clicking on the **Settings** icon button for that layer, and then pasting in a URL pointing to a valid Lottie file (`.json`) into the Lottie embed input field.

### Video Tutorial: Add Lottie animations to Figma banner exports

This video tutorial is a complete step-by-step guide showing you how to add Lottie file animations to your banners using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/JOJXVPWejOw)

[Video](/assets/videos/bannerify/design/lottie-animation.mp4)

To get a Lottie animation, you can either [browse the selection of animations](https://lottiefiles.com/featured?ref=bannerify) on LottieFiles.com, or if you've created your own using the [After Effects plugin](https://lottiefiles.com/plugins/after-effects), you can upload your `.json` file to the LottieFiles website as a [private animation](https://lottiefiles.com/preview?ref=bannerify), and then copy the URL link to your animation in the same way to use it in Bannerify.

By default, your Lottie animation will automatically loop, but you can change this if needed by turning off the **Loop Embed** toggle.

To remove a Lottie animation from your layer, click on the the **Settings** icon button again and remove the URL from the Lottie embed input field.

> **Tip:** **Bulk applying Lottie file URLs** As with other layer settings, you can also apply your Lottie file URL setting to layers in bulk by using the [bulk apply](/bannerify/animation/animating-banners#applying-bulk-animations) feature.

> **Note:** **Complex visual effects/masks in video/GIF exports**. If you're exporting banners containing Lottie files to video or GIFs from Bannerify, certain Lottie files contain special effects, masks or styles that won't be supported as they are in the HTML exports.

> **Warning:** **Some ad platforms will block Lottie animations from being used**. If you're exporting banners containing Lottie files to HTML for ad platforms like Google Ads, some of these platforms won't allow you to upload your banners, as they don't allow third party Javascript libraries (like Lottie) to be used.

---

---
url: "/bannerify/design/nested.md"
description: "By default, Bannerify only loads the direct child layers from your Figma banners into the timeline, but you can also include nested child layers when needed, too."
---

# Animating nested layers in your banner frames

> By default, Bannerify only loads the direct child layers from your Figma banners into the timeline, but you can also include nested child layers when needed, too.

[Video](/assets/videos/bannerify/design/nested-layers.mp4)

To choose which layers in your banner frame you'd like to expand and load into your Bannerify timeline as animatable layers, you can click on the **List** icon button at the top of your banner in the timeline, then click on the **Arrow** icon next to any layers with child layers to expand or collapse them as needed.

Closing this panel will automatically refresh your banner to reveal all of the nested children you exposed in your timeline as new individual layers in your timeline.

Bannerify also supports Figma [slot layers](https://help.figma.com/hc/en-us/articles/38231200344599-Use-slots-to-build-flexible-components-in-Figma) inside your banner frames. These slot containers are treated like nested layer groups in the Bannerify layer picker, and start expanded by default the first time Bannerify loads them so their child layers are immediately available in your timeline. If you manually collapse one of those Slot layers, Bannerify will remember that preference for later refreshes instead of forcing it open every time.

> **Tip:** Alternatively, you can specify which layers should be expanded (to load their nested children into the timeline) by adding `[expand]` to the parent layer name, without needing to use the nested user interface in the plugin, described above.

---

---
url: "/bannerify/design/override-image-format.md"
description: "By default, Bannerify will try to automatically select the best image file format for each layer, but you can specify your own file format overrides for any layers in your timeline."
---

# Override the image file format for layers in your HTML exports

> By default, Bannerify will try to automatically select the best image file format for each layer, but you can specify your own file format overrides for any layers in your timeline.

[Video](/assets/videos/bannerify/design/override-image-format.mp4)

If you would like to override the image file format for any layer in your timeline, you can optionally do this for any layer by clicking any layer's **Settings** icon button in the main timeline to open the layer settings, and selecting an option from the **Optionally override the image format for this layer in banner exports** dropdown select list:

- Auto-detect optimal format _(Default)_
- Export layer as JPG _(.jpg)_
- Export layer as PNG _(.png)_
- Export layer as SVG _(.svg)_

This will ensure that your layer will always be exported to the image format you've selected when they're exported to HTML from the Bannerify plugin.

> **Tip:** **Bulk applying image format override settings**. As with other layer settings, you can also apply your image format override to layers in bulk by using the [bulk apply](/bannerify/animation/animating-banners#applying-bulk-animations) feature.

---

---
url: "/bannerify/design/override-image-scale.md"
description: "By default, Bannerify will use your global image scale setting in the HTML export settings panel, but you can specify individual image scale overrides for any layers in your timeline."
---

# Override the image scale for layers in your HTML exports

> By default, Bannerify will use your global image scale setting in the HTML export settings panel, but you can specify individual image scale overrides for any layers in your timeline.

[Video](/assets/videos/bannerify/design/override-image-scale.mp4)

If you would like to override the image scale size for any layer in your timeline, you can optionally do this for any layer by clicking any layer's **Settings** icon button in the main timeline to open the layer settings, and selecting an option from the **Optionally override the image scale for this layer in banner exports** dropdown select list:

- Use Global HTML Export Image Scale Setting _(Default)_
- Export this layer at @0.5x Resolution
- Export this layer at @1x Resolution
- Export this layer at @1.5x Resolution
- Export this layer at @2x Resolution (Retina)

This will ensure that your layer will always be exported at the scaling resolution that you've selected when they're exported to HTML from the Bannerify plugin.

> **Tip:** **Bulk applying image scale override settings**. As with other layer settings, you can also apply your image scale override to layers in bulk by using the [bulk apply](/bannerify/animation/animating-banners#applying-bulk-animations) feature.

---

---
url: "/bannerify/design/popups.md"
description: "You can use Bannerify to add a simple overlay popup to display rich text text (eg. disclaimers or terms and conditions) that shows up when you click on a certain layer in your banner."
---

# Adding clickable rich text popup overlay links to your banners

> You can use Bannerify to add a simple overlay popup to display rich text text (eg. disclaimers or terms and conditions) that shows up when you click on a certain layer in your banner.

### Video Tutorial: Add rich text popup overlays to HTML Figma banners

This video tutorial is a complete step-by-step guide showing you how to add rich text popup overlays to HTML Figma banners using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/fOlw2ghGcIc)

[Video](/assets/videos/bannerify/design/popup-overlays.mp4)

If you need to have a popup overlay with scrollable (and dismissible) rich text included in your banner, which can be opened by clicking on a certain layer in your banner timeline, you can do this by [selecting those desired trigger layers](/bannerify/animation/animating-banners#quick-selecting-similar-layers) in each of your banners, then choosing any animation options under the **Generate Popup Overlay Disclaimers** section in the bulk actions window at the bottom of the plugin (which appears when multiple layers are checked in your timeline).

Once your happy with the popup animation settings, clicking the **Create Popup Links** button will automatically create a "Popup" component (containing a text layer and a close button) on your Figma page and automatically linking each of your selected layers as a trigger to point to that new Popup component via the native Figma Prototype link feature.

You're welcome to modify the content of the text layer, adjust the font size and change the solid color fills of the popup background, close icon and the text layer.

When you export your HTML banners, the plugin will automatically look for those Figma Prototype links and the Popup component that they're pointing to, and generate the clickable triggers and popup overlay code in your final exported banner set.

### Customizing scrollbar styles

If you want to customize the scrollbar styling for scrollable truncated text layers or popup overlay text, enable **Inject Custom Code** in your HTML export settings, then paste this into the **Custom CSS** field.

```css
:root {
  --bannerify-scrollbar-color: #ff6600;
  --bannerify-scrollbar-track-color: rgba(0, 0, 0, 0.12);
  --bannerify-scrollbar-width: 8px;
  --bannerify-scrollbar-height: 8px;
  --bannerify-scrollbar-radius: 8px;
}

/* Scrollable truncated text + popup overlay text */
[data-bnfy-scroll="1"],
dialog[id^="o_"] [class$="_text"] {
  scrollbar-color: var(--bannerify-scrollbar-color)
    var(--bannerify-scrollbar-track-color);
  scrollbar-width: thin;
}

/* Chrome, Edge, Safari */
[data-bnfy-scroll="1"]::-webkit-scrollbar,
dialog[id^="o_"] [class$="_text"]::-webkit-scrollbar {
  width: var(--bannerify-scrollbar-width);
  height: var(--bannerify-scrollbar-height);
}

[data-bnfy-scroll="1"]::-webkit-scrollbar-thumb,
dialog[id^="o_"] [class$="_text"]::-webkit-scrollbar-thumb {
  background-color: var(--bannerify-scrollbar-color);
  border-radius: var(--bannerify-scrollbar-radius);
}

[data-bnfy-scroll="1"]::-webkit-scrollbar-track,
dialog[id^="o_"] [class$="_text"]::-webkit-scrollbar-track {
  background-color: var(--bannerify-scrollbar-track-color);
}
```

You can change the values at the top to update the scrollbar color, track color, width, height, and corner radius. Some browsers and mobile devices may still render scrollbars using their native system style, but the CSS will be applied wherever the client allows custom scrollbar styling.

> **Warning:** Please note, this component is designed to be extremely simple, with just the single text layer (for disclaimer text) and the close button. Feel free to customize the text content, font styles and colors, but any **other customizations or additional layers added may break the exported HTML** as a result.

---

---
url: "/bannerify/design/scenes.md"
description: "Learn how to combine multiple same-size Figma frames into a single multi-scene banner by wrapping them in a Section, then animate and export them as HTML, GIF, or video using Bannerify."
---

# Creating multi-scene banners using Figma Sections

> Learn how to combine multiple same-size Figma frames into a single multi-scene banner by wrapping them in a Section, then animate and export them as HTML, GIF, or video using Bannerify.

### Video Tutorial: Create multi-scene animated banners in Figma

This video tutorial is a complete step-by-step guide showing you how to create multi-scene animated banners in Figma (and export to HTML or video) using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/_RJoxtwDC04)

## What are multi-scene banners?

By default, Bannerify treats each top-level Figma frame as a separate banner.

When you enable **Use Figma sections as multi scene banners**, Bannerify treats each **Figma Section** as one banner, and each same-size frame inside that section as a separate scene in the same timeline.

This is ideal when you want to sequence multiple creative states/messages in one banner export.

Bannerify follows the Figma visual frame layer order inside the section, so if you move the scene frames around in Figma, the scene order in Bannerify will update after you refresh and reload the banners.

## Quick setup

1. Create your banner frames in Figma as normal.
2. Select the frames that should become scenes in one banner.
3. Right-click and choose **Wrap in new section**.
4. In Bannerify, click **Refresh all banners** to return to the load screen.
5. Enable **Use Figma sections as multi scene banners**.
6. Click **Load checked banners** (or **Load all banners**).

You should now see one banner per section, with layers grouped by scenes in the timeline.

## Step-by-step workflow

### 1. Run Bannerify

Open Bannerify from Figma plugins.
If you use it often, save it to your **Saved plugins** list for quick access.

### 2. Confirm default behavior (optional)

Before enabling sections mode, Bannerify will load top-level frames as separate banners.

This is useful to verify your source frames are detected correctly.

### 3. Wrap scene frames in a Section

Select all frames you want to combine into one multi-scene banner, then use:

**Right click -> Wrap in new section**

That section now becomes your single banner container in sections mode.

### 4. Reload and switch to sections mode

Click **Refresh all banners** in Bannerify, then enable:

**Use Figma sections as multi scene banners**

Bannerify will now scan sections instead of individual frames.

### 5. Load section banners

Click **Load checked banners** or **Load all banners**.

You will now see:
- One banner per section
- Scene groupings in the timeline (Scene 1, Scene 2, Scene 3, etc.)
- Scene-aware layer labeling and controls

> **Tip:** If you want Scene 3 to appear before Scene 2, or Scene 1 to move to the end, move the scene frames into the Figma visual frame layer order you want inside the section, then refresh and reload the section in Bannerify.

### 6. Adjust timeline length for scene sequencing

If scenes currently overlap, increase the timeline length (for example from `5s` to `15s`. and click **Update timeline length**.

Then adjust layer timings so each scene enters/exits in sequence across the longer timeline.

> **Tip:** Use grouped scene timing controls to shift scene timing blocks more quickly instead of adjusting every layer one-by-one.

### 7. Preview and export

Use preview playback to validate scene order and timing, then export as needed:

- **HTML** export for ad/platform code packages
- **GIF** export for animated image output
- **MP4/Video** export for video deliverables

All scenes in a section are exported as one combined banner sequence.

## Working with multiple sizes and multiple sections

You can duplicate sections to create additional banner sizes/variants.

On refresh, Bannerify will load each section as a separate banner, each containing its own set of scenes.
This lets you export multiple dimensions and multi-scene variants in a single batch.

## Important requirement: scene frames must match dimensions

For frames to be treated as scenes in the same banner, they must have identical dimensions inside the section.

If one frame has even a 1px difference, Bannerify may exclude it from that section's scene set.

> **Warning:** Example: if two frames are `269x250` and one is `268x250`, Bannerify can load only the matching-size frames as scenes.

If this happens:

1. Make all scene frames in the section the exact same width and height.
2. Refresh the banners.
3. Reload the section banner.

## Troubleshooting checklist

- **Only some scenes are loading**: verify all frames in the section have identical dimensions.
- **Section changes are not appearing**: click **Refresh all banners** and reload.
- **Scene order is wrong**: reorder the frames inside the Figma section, then click **Refresh all banners** and reload.
- **Scenes overlap too much**: increase timeline length and redistribute timings.
- **Export looks different from preview**: re-check layer timings and scene order after timeline changes.

## Summary

Using Figma Sections with Bannerify is the fastest way to build longer, narrative banner sequences without forcing everything into one giant frame.

Design each scene as a normal frame, wrap them in a section, enable sections mode, then animate/export as one combined banner.

---

---
url: "/bannerify/design/scrollable-text.md"
description: "Use truncated text layers in Figma to export selectable, scrollable HTML text in Bannerify, with manual scroll or optional auto-scroll timing."
---

# Adding scrollable truncated text layers to your banners

> Use truncated text layers in Figma to export selectable, scrollable HTML text in Bannerify, with manual scroll or optional auto-scroll timing.

### Video Tutorial: Add scrollable text disclaimers to HTML Figma banners

This video tutorial is a complete step-by-step guide showing you how to add scrollable text disclaimers (with auto-scroll) to HTML Figma banners using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/lDPV4QU_ZRU)

[Video](/assets/videos/bannerify/design/scrollable-text.mp4)

If you need long legal text, safety copy, or PI content to stay readable in a compact area, Bannerify can export a truncated text layer as native scrollable HTML text.

If you want a dismissible overlay instead of inline scrolling text, see [Add Popup Overlay](/bannerify/design/popups).

### Step 1. Create a truncated text layer in Figma

Create a text layer with a fixed text box size, and make sure it is set to **Truncate** (instead of auto-growing).

The visible text box size becomes the scroll container in HTML exports, while the full text content is preserved inside it.

### Step 2. Enable scrollable HTML text in Bannerify

Open the layer settings for that text layer, then enable:

- **Enable scrollable HTML text**

This feature is only available for truncated text layers.

### Step 3. Choose scroll behavior

When enabled, choose one of these modes:

- **Manual User Scrollable**: user scrolls manually for the full timeline.
- **Auto Scroll on Layer Enter**: starts auto-scrolling when the layer enters.
- **Auto Scroll on Banner End**: starts auto-scrolling when the banner timeline finishes.

#### Banner loop behavior

- If playback count is finite, **Auto Scroll on Banner End** triggers only on the final playthrough.
- If the banner is set to infinite looping, **Auto Scroll on Banner End** is skipped.

### Step 4. Review export notes

- Scrollable truncated text is exported in **HTML** outputs.
- Native browser/device scrollbar styling is used.
- If that layer has an image format override applied, scrollable HTML text is disabled for that layer.

### Customizing scrollbar styles

If you want to customize the scrollbar styling for scrollable truncated text layers or popup overlay text, enable **Inject Custom Code** in your HTML export settings, then paste this into the **Custom CSS** field.

```css
:root {
  --bannerify-scrollbar-color: #ff6600;
  --bannerify-scrollbar-track-color: rgba(0, 0, 0, 0.12);
  --bannerify-scrollbar-width: 8px;
  --bannerify-scrollbar-height: 8px;
  --bannerify-scrollbar-radius: 8px;
}

/* Scrollable truncated text + popup overlay text */
[data-bnfy-scroll="1"],
dialog[id^="o_"] [class$="_text"] {
  scrollbar-color: var(--bannerify-scrollbar-color)
    var(--bannerify-scrollbar-track-color);
  scrollbar-width: thin;
}

/* Chrome, Edge, Safari */
[data-bnfy-scroll="1"]::-webkit-scrollbar,
dialog[id^="o_"] [class$="_text"]::-webkit-scrollbar {
  width: var(--bannerify-scrollbar-width);
  height: var(--bannerify-scrollbar-height);
}

[data-bnfy-scroll="1"]::-webkit-scrollbar-thumb,
dialog[id^="o_"] [class$="_text"]::-webkit-scrollbar-thumb {
  background-color: var(--bannerify-scrollbar-color);
  border-radius: var(--bannerify-scrollbar-radius);
}

[data-bnfy-scroll="1"]::-webkit-scrollbar-track,
dialog[id^="o_"] [class$="_text"]::-webkit-scrollbar-track {
  background-color: var(--bannerify-scrollbar-track-color);
}
```

You can change the values at the top to update the scrollbar color, track color, width, height, and corner radius. Some browsers and mobile devices may still render scrollbars using their native system style, but the CSS will be applied wherever the client allows custom scrollbar styling.

> **Warning:** Scrollable HTML text is designed for truncated text layers only. If your layer is not truncated, it should be exported using normal text/image behavior.

---

---
url: "/bannerify/design/unclip-content.md"
description: "By default, Bannerify only exports the visible image areas inside of your banner, which helps to save on un-needed image data being included in your HTML exports, but you can optionally override this behavior."
---

# Including a layer's unclipped image content

> By default, Bannerify only exports the visible image areas inside of your banner, which helps to save on un-needed image data being included in your HTML exports, but you can optionally override this behavior.

[Video](/assets/videos/bannerify/design/unclip-layer.mp4)

If you do need to include the full unclipped image area outside of your banner dimensions, due to the animation moving in/out of the overall banner frame area, you can optionally do this for any layer by clicking any layer's **Settings** icon button in the main timeline to open the layer settings, and enabling the **Include full unclipped layer** toggle.

This will unclip any parent frames for that layer during export and include the full layer content previously being clipped, and allow you to see that extra image area being included in animations that move the animation in/out of the banner's dimensions.

> **Tip:** **Bulk applying clipping settings**. As with other layer settings, you can also apply your custom clipping setting to layers in bulk by using the [bulk apply](/bannerify/animation/animating-banners#applying-bulk-animations) feature.

> **Warning:** **Unclipping image layers will increase file sizes**. Please use this feature carefully if you need to keep your banner file sizes low. Unclipping a layer's content area will include more of the image, so this is especially important to be mindful of if your image layers are much larger in dimensions to the banner dimensions (which usually acts as the clipping size, by default).

---

---
url: "/bannerify/design/variants.md"
description: "Bannerify can export multiple HTML, GIF, MP4, WebM, APNG, WebP, image, or PDF banner variants from a single Figma banner set by applying rows from a CSV, XLSX, or ZIP spreadsheet source during export."
---

# Creating banner variants from spreadsheet data

> Bannerify can export multiple HTML, GIF, MP4, WebM, APNG, WebP, image, or PDF banner variants from a single Figma banner set by applying rows from a CSV, XLSX, or ZIP spreadsheet source during export.

### Video Tutorial: Bulk export Figma banner variants from a spreadsheet

This video tutorial is a complete step-by-step guide showing you how to bulk export Figma banner variants from a spreadsheet to HTML or Video/GIF using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/EiVk0G0nEU4)

[Video](/assets/videos/bannerify/export/banner-spreadsheet-variants.mp4)

Bannerify can turn one loaded banner set into many exported variants by applying one spreadsheet row at a time during export. Bannerify does not permanently sync the spreadsheet into your Figma file. Instead, it uses your selected rows as temporary export inputs, generates each banner variant, and then packages those files into your final `.zip`.

Banner variants work with:

- HTML banner exports
- GIF, MP4, WebM, animated WebP, and animated PNG exports
- Static JPG, PNG, WebP, and PDF exports

## Step 1: Match your spreadsheet headers to Figma layer names

The first row of your spreadsheet should contain the layer names you want Bannerify to replace during export.

For text layers, rename your Figma text layers to match the spreadsheet headers exactly.

For image layers, rename your Figma image-filled layers to match the spreadsheet headers exactly, then put either an image URL, a `data:image/...` value, or a ZIP asset reference in the spreadsheet cell.

For embedded media layers, rename the target non-text Figma layer to match the spreadsheet header exactly, then put either a direct `.mp4`, `.webm`, or `.json` URL in the spreadsheet cell, or a matching `.mp4`, `.webm`, or `.json` file reference from an uploaded ZIP source. Bannerify will treat video values as embedded video sources and `.json` values as embedded Lottie sources during export.

For style sync, rename the target layer to match the spreadsheet header exactly, then put a valid CSS declaration string in the spreadsheet cell, such as `color:#ffffff; font-size:48px;` or `display:none;`.

For visibility control, you can also put `_hide` or `_show` in a matching spreadsheet cell to hide or show that Figma layer during variant export.

Here is a simple example:

| headline | cta | logo | badge |
| --- | --- | --- | --- |
| Shop now pay later | Download the app | logo-1.png | display:none; |
| Split your payments | Learn more | logo-2.png | opacity:0.5; |
| Flexible spending power | Get started | logo-3.png | background-color:#111111; color:#ffffff; |

Each data row becomes one banner variant.

> **Tip:** If you upload a `.zip` file instead of a plain `.csv` or `.xlsx`, Bannerify will use the first spreadsheet file it finds inside the ZIP and can also resolve bundled images, `.mp4`, `.webm`, and `.json` media files from the same ZIP by filename or relative path.

## Supported spreadsheet cell values

Bannerify currently applies these spreadsheet value types during variant export:

- Plain text values for matching Figma text layers
- Image references for matching image-filled layers:
  image URLs, `data:image/...` values, or image file references bundled inside an uploaded ZIP
- Direct `.mp4`, `.webm`, or `.json` URLs for matching embedded media layers
- `.mp4`, `.webm`, or `.json` file references bundled inside an uploaded ZIP for matching embedded media layers
- CSS declaration strings for matching sync target layers
- `_hide` and `_show` visibility commands for matching layers

If you want to control visibility or styling from the spreadsheet, use CSS values such as `display:none;`, `opacity:0;`, `left:20px;`, or `transform:translateX(40px);`.

Bannerify currently accepts these CSS properties in spreadsheet values:

- `width`, `height`, `opacity`
- `background`, `background-image`, `background-color`
- `border-radius`, `border`, `border-left`, `border-right`, `border-top`, `border-bottom`, `border-color`, `border-width`
- `font-size`, `color`, `font-family`, `font-weight`, `text-transform`, `font-style`, `line-height`, `text-align`, `vertical-align`
- `display`, `flex-direction`, `gap`, `justify-content`, `align-items`
- `padding`, `padding-top`, `padding-right`, `padding-bottom`, `padding-left`
- `box-shadow`, `filter`, `transform`, `left`, `top`

## Step 2: Upload your CSV, XLSX, or ZIP file

Open the **Variants** panel in Bannerify and upload a `.csv`, `.xlsx`, or `.zip` file in the **Data Source** section.

After Bannerify reads the file, it will show a preview of the active spreadsheet on the left side of the panel. This lets you check that your headers and row values look correct before you export anything.

The preview table highlights image values with thumbnails, shows video values as `Video Embed` or `Video URL` badges, shows CSS declaration values as style tokens, and displays `_hide` / `_show` values as layer visibility commands so you can quickly spot non-text rows before export.

If you upload a new file later, Bannerify will replace the current file-based source with the latest one.

## Step 3: Enable variants and choose which rows to export

Once a spreadsheet is loaded, turn on **Enable Banner Variants During Exports**.

You can then use the checkboxes in the table to choose exactly which rows should be exported as variants:

- Use the checkbox in the table header to select or unselect all rows
- Use the checkbox on any row to include or exclude that individual variant
- Only checked rows are used during export

Bannerify remembers those row selections for the saved spreadsheet source, so when you reopen the plugin your included and excluded rows stay the same.

## Missing fonts and export fallback behavior

When variants are enabled, Bannerify checks your selected banners for missing fonts before export.

If Bannerify finds missing font layers in Figma, it will warn you in the Variants panel. In that case, Bannerify falls back to exporting the original banners instead of trying to render broken spreadsheet variants.

## Automatic variant folder and file naming

If you leave **Export Folder Structure Naming** blank, Bannerify names each exported variant automatically.

The automatic rules are:

1. Original exports included alongside spreadsheet variants are grouped inside `row-0` for small spreadsheets, or `row-000` when the total row count requires zero padding.
2. The variant folder path uses the spreadsheet's `folder` value if present.
3. If there is no `folder` value, Bannerify falls back to `row-1`, `row-2`, and so on for smaller spreadsheets, and zero-pads them for larger sets like `row-001`, `row-002`.
4. The exported file name uses the spreadsheet's `name` value if present.
5. If there is no `name` value, Bannerify keeps the original Figma banner name for the export.

That means a blank naming field can produce paths like these:

- `row-0/300x250_Homepage Hero`
- `product-launch/300x250_Homepage Hero`
- `row-003/300x250_Homepage Hero`

## Customizing export folder and file names

You can override the automatic naming by entering your own template into **Export Folder Structure Naming**.

Use either:

- `name-only-template`
- `folder/name-template`

Anything before the final `/` becomes the variant folder path. Anything after it becomes the exported file name.

### Using spreadsheet header placeholders

You can use any spreadsheet header as a dynamic token by wrapping it like this:

- `#{headline}`
- `#{cta}`
- `#{campaign}`
- `#{product_name}`

If your header contains spaces or punctuation, Bannerify also supports the normalized underscore form. For example, a header called `CTA Label` can be used as `#{CTA Label}` or `#{cta_label}`.

### Using Bannerify's built-in placeholders

Bannerify also supports a few built-in values:

- `#{row_number}` for the current row number, starting at `1`
- `#{row_index}` for the zero-based row index
- `#{figma_name}` for the Figma banner name
- `#{figma_width}` for the banner width
- `#{figma_height}` for the banner height
- `#{figma_size}` for the banner size, like `300x250`
- `#{source}` for the spreadsheet source name
- `#{source_slug}` for a slugified version of the source name
- `#{platform}` for the current export platform

Examples:

- `#{campaign}/#{figma_size}_#{figma_name}`
- `#{row_number}_#{headline}`
- `exports/#{campaign}/#{figma_name}`
- `exports/#{row_number}_#{figma_size}`

> **Tip:** If you have spreadsheet headers that overlap with built-in token names, such as `name` or `folder`, you can explicitly reference the raw spreadsheet value with `#{csv_name}` or `#{csv_folder}`.

## ZIP structure and preview page behavior

When variants are enabled, Bannerify exports each row into its own variant folder inside the final `.zip` file.

For HTML exports, the generated preview `index.html` automatically points to each variant banner's exported path.

For canvas-based exports such as GIF, MP4, WebM, animated WebP, animated PNG, and static image exports, the preview `index.html` also follows the same variant folder and file naming rules.

That means your preview page stays in sync with:

- selected spreadsheet rows
- custom folder and file naming templates
- automatic `row`, `folder`, or `name` based fallback paths

## How spreadsheet media files are packaged

When a spreadsheet row swaps an embedded media layer, Bannerify handles the media according to the source type:

- Direct `.mp4`, `.webm`, or `.json` URLs stay as remote URLs in exported HTML banners
- ZIP-bundled `.mp4`, `.webm`, or `.json` files are copied into each exported HTML banner folder and referenced locally
- For canvas-based exports such as GIF, MP4, WebM, animated WebP, and animated PNG, Bannerify reads either the remote media URL or the ZIP media file during rendering, then uses that temporary media source for the exported frames

Bannerify only applies those spreadsheet media values during export. It does not permanently overwrite the original media URL stored on your Figma layer.

## Practical tips

- Keep your spreadsheet headers short and descriptive
- Use row checkboxes to exclude draft rows instead of deleting them
- Use a ZIP source when you want to bundle a spreadsheet with local image assets or local `.mp4`, `.webm`, or `.json` media files
- Use direct media URLs when your `.mp4`, `.webm`, or `.json` files are already hosted online
- Use image-filled layers for GIF file swaps; embedded media variants currently cover `.mp4`, `.webm`, and `.json`
- Leave naming blank unless you need a custom folder structure
- Test one export first if you are introducing a new naming template

---

---
url: "/bannerify/design/video.md"
description: "You can embed video files to any Figma layer in your Bannerify timeline by clicking on the **Settings** icon button for that layer, and then pasting in a URL pointing to a valid video file (`.mp4` or `.webm`) into the video embed input field."
---

# Including Video file embeds in your banners

> You can embed video files to any Figma layer in your Bannerify timeline by clicking on the **Settings** icon button for that layer, and then pasting in a URL pointing to a valid video file (`.mp4` or `.webm`) into the video embed input field.

### Video Tutorial: Add video embeds to Figma banner exports

This video tutorial is a complete step-by-step guide showing you how to add video file embeds to your banners using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/8eqKeU4c4bc)

> **Warning:** **YouTube/Vimeo links will not work.** You must link directly to an .mp4 video file URL, by uploading your video to a service like [Dropbox](https://www.dropbox.com/) first.

[Video](/assets/videos/bannerify/design/video-embeds.mp4)

While the Figma Plugin API doesn't support reading video files directly from your Figma file layers, Bannerify allows you to embed videos into your timeline layers by pasting in a direct URL pointing to an `.mp4` or `.webm` file.

To get a video file, you can either browse the selection of free stock videos on a site like [Pixabay](https://pixabay.com/videos/), or you can upload your own `.mp4` or `.webm` file to a file hosting service like [Dropbox](https://dropbox.com) or [Backblaze B2](https://www.backblaze.com/b2/cloud-storage.html), and then copy the URL link to your animation to use it in Bannerify.

By default, your video will automatically loop, but you can change this if needed by turning off the **Loop Embed** toggle.

To remove a video animation from your layer, click on the the **Settings** icon button again and remove the URL from the video embed input field.

> **Note:** If you're copying a Dropbox link, please ensure it's linking direclty to the video file itself (you should `.mp4` as part of the URL), as sometimes Dropbox "Share"/"Copy Link" buttons will link to an entire folder instead, depending on which part of the Dropbox interface they're viewed from.

> **Tip:** **Bulk applying video file URLs** As with other layer settings, you can also apply your video file URL setting to layers in bulk by using the [bulk apply](/bannerify/animation/animating-banners#applying-bulk-animations) feature.

> **Tip:** **Spreadsheet-driven video and Lottie swaps** You can also swap embedded media per spreadsheet row during export by using the [variants workflow](/bannerify/design/variants) with direct `.mp4`, `.webm`, or `.json` URLs, or matching `.mp4`, `.webm`, or `.json` files bundled inside an uploaded ZIP source.

> **Warning:** **Keep the total size of any video embeds under 4mb** to avoid your banner ad getting blocked by [Chrome's heavy ad policy update](https://developer.chrome.com/blog/heavy-ad-interventions) that they've rolled out.

---

---
url: "/bannerify/export/animated-png.md"
description: "Once you've finished animating your layers in the timeline, you can export your banners to animated PNG (APNG) files."
---

# Exporting your banners to animated PNG image

> Once you've finished animating your layers in the timeline, you can export your banners to animated PNG (APNG) files.

### Video Tutorial: Export banners to animated PNG (APNG) images from Figma

This video tutorial is a complete step-by-step guide showing you how to export production-ready animated banners from Figma to animated PNG (APNG) images using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/GoBXTURjPuM)

[Video](/assets/videos/bannerify/export/animated-apng.mp4)

After you've clicked the **Export to GIF/Video** and configured your export settings, you can click the **Export APNG** button at the bottom of the export panel to begin exporting your banners from Figma to animated PNG images. This will export your animated banners to [animated PNG](https://www.litmus.com/blog/animated-pngs-in-email-an-alternative-to-gifs) image files.

> **Note:** **Browser Support**. Due to browser compatibility issues, **Animated PNG** images can _only_ be exported using [Chrome](https://www.google.com/intl/en_us/chrome/) or the [Figma Desktop App](https://www.figma.com/downloads/).

> **Tip:** **Including or excluding banners in your export**. By default, all of the top level layers in your Figma file that are loaded into Bannerify as banners will be included in your export; if you would like to exclude any banners from being included (without [re-loading the selected banners](/bannerify/design/figma-frames#refreshing-your-banners-from-figma) in), you can toggle the **Include Banner in Export** switch in any banner's timeline header to "off"; this will hide that banner's timeline and also exclude it from being added to any exports.

### Frames Per Second

You can change the framerate of your GIF exports by using the **Frames Per Second** select box options. You can select from the FPS options below:

- 60 FPS (Ludicrous Mode)
- 30 FPS (Ultra Smooth)
- 24 FPS (Smooth)
- 18 FPS (Less Smooth)
- 12 FPS (Least Smooth)
- 6 FPS (Jittery)

> **Warning:** **Higher FPS will take longer to render**. Please note that more frames will take longer to export and ouput larger file sizes. For example, exporting a **5 second timeline** at **24 FPS** will render out **120 frames** _per_ banner.

### Downloading the final PNG .zip file

After Bannerify has finished processing your banners, you'll be shown a confirmation message; you can download your `.zip` file containing your exported banners by clicking the **Download your .zip file** button.

> **Tip:** **Saving file downloads from Figma** If you're using the Figma **desktop app**, you'll see a prompt appear to download your file. However, if you're using Figma in a **web browser**, your file will automatically be downloaded to your computer by default (usually to the **Downloads** directory on your computer).

### Opening your PNG .zip file

After you've downloaded your `.zip` file from Figma to your computer, you can open your file explorer to the directory where it was saved. **Double clicking** on the exported `.zip` file will unzip the contents and let you use your banners however you like.

---

---
url: "/bannerify/export/animated-webp.md"
description: "Once you've finished animating your layers in the timeline, you can export your banners to animated WebP files."
---

# Exporting your banners to animated WebP image

> Once you've finished animating your layers in the timeline, you can export your banners to animated WebP files.

### Video Tutorial: Export banners to animated WebP images from Figma

This video tutorial is a complete step-by-step guide showing you how to export production-ready animated banners from Figma to animated WebP images using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/-MsleYiQHIQ)

[Video](/assets/videos/bannerify/export/animated-webp.mp4)

After you've clicked the **Export to GIF/Video** and configured your export settings, you can click the **Export WebP** button at the bottom of the export panel to begin exporting your banners from Figma to animated WebP images. This will export your animated banners to [animated WebP](https://css-tricks.com/gifs-without-the-gif-the-most-performant-image-and-video-options-right-now/#aa-use-animated-webp) image files.

> **Note:** **Browser Support**. Due to browser compatibility issues, **Animated WebP** videos can _only_ be exported using [Chrome](https://www.google.com/intl/en_us/chrome/) or the [Figma Desktop App](https://www.figma.com/downloads/).

> **Tip:** **Including or excluding banners in your export**. By default, all of the top level layers in your Figma file that are loaded into Bannerify as banners will be included in your export; if you would like to exclude any banners from being included (without [re-loading the selected banners](/bannerify/design/figma-frames#refreshing-your-banners-from-figma) in), you can toggle the **Include Banner in Export** switch in any banner's timeline header to "off"; this will hide that banner's timeline and also exclude it from being added to any exports.

### Frames Per Second

You can change the framerate of your GIF exports by using the **Frames Per Second** select box options. You can select from the FPS options below:

- 60 FPS (Ludicrous Mode)
- 30 FPS (Ultra Smooth)
- 24 FPS (Smooth)
- 18 FPS (Less Smooth)
- 12 FPS (Least Smooth)
- 6 FPS (Jittery)

> **Warning:** **Higher FPS will take longer to render**. Please note that more frames will take longer to export and ouput larger file sizes. For example, exporting a **5 second timeline** at **24 FPS** will render out **120 frames** _per_ banner.

### Downloading the final WebP .zip file

After Bannerify has finished processing your banners, you'll be shown a confirmation message; you can download your `.zip` file containing your exported banners by clicking the **Download your .zip file** button.

> **Tip:** **Saving file downloads from Figma** If you're using the Figma **desktop app**, you'll see a prompt appear to download your file. However, if you're using Figma in a **web browser**, your file will automatically be downloaded to your computer by default (usually to the **Downloads** directory on your computer).

### Opening your WebP .zip file

After you've downloaded your `.zip` file from Figma to your computer, you can open your file explorer to the directory where it was saved. **Double clicking** on the exported `.zip` file will unzip the contents and let you use your banners however you like.

---

---
url: "/bannerify/export/backup-image.md"
description: "This can be helpful for certain advertising platforms that prefer (or require) you to include a backup static fallback JPG image."
---

# Including a backup.jpg fallback image file for all banners

> This can be helpful for certain advertising platforms that prefer (or require) you to include a backup static fallback JPG image.

[Video](/assets/videos/bannerify/export/add-backup-image.mp4)

Enabling the **Include a "backup.jpg" for all banners** toggle will automatically export your frames from Figma as a @1x JPG and be included in each banner folder as a `backup.jpg` file.

Specifying a maximum size in kilobytes (kb) will automatically optimize the `backup.jpg` image file to be under your specified limit. If you don't specify a size limit for your backup image, it will automatically default to 200kb (you also can set a higher limit, if needed).

## Hiding layers from your backup images

[Video](/assets/videos/bannerify/design/hide-backup-layers.mp4)

If you have different content layers transitioning in and out at different points in your banner animation, you will likely want to hide some of those from appearing in the your `backup.jpg` file.

You can do this by enabling the **Hide in backup.jpg** toggle for any layer in its [layer settings panel](/bannerify/design/hide-layers-from-backup), which will ensure it doesn't get included in the backup image for that banner.

> **Tip:** You can also show or hide elements from your `backup.jpg` file in bulk by using the [bulk apply](/bannerify/animation/animating-banners#applying-bulk-animations) feature.

---

---
url: "/bannerify/export/banner-size-optimization.md"
description: "Some ad platforms have a size limit per banner (eg. 150kb), so you can use this HTML export setting to try and automatically fit each banner under that size threshold."
---

# Setting a maximum file size target for each banner in your HTML exports

> Some ad platforms have a size limit per banner (eg. 150kb), so you can use this HTML export setting to try and automatically fit each banner under that size threshold.

[Video](/assets/videos/bannerify/export/set-target-size.mp4)

Enabling the **Maximum file size target for each banner** option will allow you to specify a maximum size in kilobytes (kb) for each banner; the plugin will automatically optimize the image assets to be under your specified limit. If you don't specify a size limit with the compression option enabled, it will automatically default to 150kb, which is the size limit (per banner) imposed by Google Ads.

> **Note:** **If you have a low file size target, and also have lots of image assets in your banners** (and/or have the global image scale set to `1.5x` or `2x`), the banner sizes still may end up larger than your target, as there is a limit to how much each image asset can be compressed before it's un-usable.

> **Tip:** **Exporting WebP images instead of JPG/PNG**. You can optionally use WebP compression by enabling the **Use WebP** toggle switch. Enabling the the **Use WebP** toggle will automatically compress/convert any of JPG/PNG images into Google's **[WebP](https://en.wikipedia.org/wiki/WebP)** format instead; which is designed to have a better image:quality ratio. Please check the [WebP browser support](https://caniuse.com/webp) to ensure that using this feature aligns with the browsers you're supporting with your banner ads.

> **Warning:** **Any animated GIF files will not be included in the target file size**. Please note, due to GIFs being large in file size by default and not highly compressible, any maximum file size targets will not include any animated GIFs that are included in your HTML banner export.

---

---
url: "/bannerify/export/code-output.md"
description: "Bannerify supports exporting HTML banners for a variety of different ad platforms (eg. Google Ads), or you can also export generic HTML banners without any clickTag code included."
---

# Select the target ad platform or HTML output type for your banners

> Bannerify supports exporting HTML banners for a variety of different ad platforms (eg. Google Ads), or you can also export generic HTML banners without any clickTag code included.

## Standard HTML export options

[Video](/assets/videos/bannerify/export/use-editable-text.mp4)

This will export your banners to vanilla HTML, **without clickTags**.

- Vanilla HTML/CSS
- Vanilla HTML/CSS/JavaScript ([GreenSock GSAP](https://greensock.com/gsap/))

## Advertising platform export options

[Video](/assets/videos/bannerify/export/select-ad-option.mp4)

This will export your banners to platform specific HTML/Javascript, **with clickTags**.

- [AdForm](https://site.adform.com)
- [AdRoll](https://www.adroll.com/)
- [Adition](https://www.adition.com/)
- [Adobe Advertising Cloud](https://business.adobe.com/au/products/advertising/adobe-advertising-cloud.html)
- [AppNexus](https://www.appnexus.com/fr)
- [Basis](https://basis.com/)
- [DemandSience](https://demandscience.com/) (formerly Terminus)
- [DoubleClick Campaign Manager (DCM)](https://developers.google.com/doubleclick-advertisers)
- [DoubleClick Studio](https://support.google.com/richmedia/answer/2389093?hl=en)
- [Display & Video 360 (DV360)](https://marketingplatform.google.com/about/display-video-360/)
- [FlashTalking](https://www.flashtalking.com/)
- [Google Ads](https://ads.google.com/intl/en_au/home/)
- [IAB](https://iabaustralia.com.au/)
- [Jivox (Dynamic Creative)](https://jivox.com/)
- [Responsive Display Ads](https://support.google.com/google-ads/answer/6363750?hl=en-AU)
- [Sizmek](https://sizmek.com/)
- [StackAdapt](https://www.stackadapt.com/)
- [The Trade Desk](https://www.thetradedesk.com/)
- [Yandex](https://yandex.com/support/direct/products-cpm-campaign/about.html)

## Rendering text layers as `` tags instead of SVG `` tags

[Video](/assets/videos/bannerify/export/use-editable-text.mp4)

By default, Bannerify will export any text layers as SVG image files to ensure your text is visually accurate; however, if you would prefer to render the text as rich text HTML `` tags instead, you can enable the **Export text as <p> tags instead of <svg>** toggle in the HTML export settings panel.

> **Note:** Enabling this option will automatically embed any **Google Fonts** into your banners, but if you're using a 3rd party/custom font, you will need to handle embedding the webfont files yourself, using the custom code injection feature.

---

---
url: "/bannerify/export/gif.md"
description: "Once you've finished animating your layers in the timeline, you can export your banners to animated GIF files."
---

# Exporting your banners to animated GIF files

> Once you've finished animating your layers in the timeline, you can export your banners to animated GIF files.

### Video Tutorial: Export banners to GIFs from Figma

This video tutorial is a complete step-by-step guide showing you how to export production-ready animated banners from Figma to GIFs using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/J2wk4r1QL1k)

[Video](/assets/videos/bannerify/export/animated-gif.mp4)

Once you're happy with your banners and would like to export them to GIF, WebM, MP4 or animated WebP file you can click the **Export to GIF/Video** button in the Bannerify header. This will open the GIF/Video export settings.

> **Note:** **Including or excluding banners in your export**. By default, all of the frames in your Figma file that are loaded into Bannerify as banners will be included in your export; if you would like to exclude any banners from being included, you can toggle the **Export** switch in any banner's timeline header to "off"; this will hide that banner's timeline and also exclude it from being added to any exports.

> **Tip:** **Including or excluding banners in your export**. By default, all of the top level layers in your Figma file that are loaded into Bannerify as banners will be included in your export; if you would like to exclude any banners from being included (without [re-loading the selected banners](/bannerify/design/figma-frames#refreshing-your-banners-from-figma) in), you can toggle the **Include Banner in Export** switch in any banner's timeline header to "off"; this will hide that banner's timeline and also exclude it from being added to any exports.

### Frames Per Second

You can change the framerate of your GIF exports by using the **Frames Per Second** select box options. You can select from the FPS options below:

- 60 FPS (Ludicrous Mode)
- 30 FPS (Ultra Smooth)
- 24 FPS (Smooth)
- 18 FPS (Less Smooth)
- 12 FPS (Least Smooth)
- 6 FPS (Jittery)

> **Warning:** **Higher FPS will take longer to render**. Please note that more frames will take longer to export and ouput larger file sizes. For example, exporting a **5 second timeline** at **24 FPS** will render out **120 frames** _per_ banner.

### Lossless or lossy compression

By default, GIFs are exported with *Lossless* compression, which means that the file size is kept low without any noticeable quality loss. If you require even smaller GIFs (at the expensive of some quality loss), you can enable **Lossy** compression instead, and adjust the custom compression quality slider to your needs.

> **Note:** **Setting advanced dithering options**. If you know what you're doing, you can customise the type of [dithering](https://en.wikipedia.org/wiki/Dither#Examples_2) that's used in your GIF export by changing the image dithering dropdown selector option in the GIF export settings panel.

### Using global color palette

If you're exporting a GIF where the color palette for every frame is the same (with only some minor movement, text changes etc between them) and are seeing some color artifacts, you may want to enable the **All frames have the same color palette** toggle option, which will re-use the color palette from the first frame in your GIF, and apply that to all of the other frames in your GIF, too.

> **Warning:** **Global color palettes can be buggy**. Please only use this option as a last resort if your GIF is showing unwanted color related artifacts or banding, as it can cause other issues if some colors in other frames of your GIF aren't included in the first frame.

### Infinitely loop playback

Enabling the **infinitely loop playback** option will export GIFs that continuously loop their animation timeline forever. If you disable this setting, your GIFs will play through their animation timeline once, and then freeze on the final frame of the animation. This option only applies to **GIF** exports.

### Flagging transparent backgrounds for GIFs

By default, your GIF exports won't include transparent backgrounds. If your GIF does require transparency, please add the word **transparent** anywhere in your banner (parent Figma frame) layer name.

### Downloading the final GIF .zip file

After Bannerify has finished processing your banners, you'll be shown a confirmation message; you can download your `.zip` file containing your exported banners by clicking the **Download your .zip file** button.

> **Tip:** **Saving file downloads from Figma** If you're using the Figma **desktop app**, you'll see a prompt appear to download your file. However, if you're using Figma in a **web browser**, your file will automatically be downloaded to your computer by default (usually to the **Downloads** directory on your computer).

### Opening your GIF .zip file

After you've downloaded your `.zip` file from Figma to your computer, you can open your file explorer to the directory where it was saved. **Double clicking** on the exported `.zip` file will unzip the contents and let you use your banners however you like.

---

---
url: "/bannerify/export/html.md"
description: "Once you've finished animating your layers in the timeline, you can export your banners to animated HTML banners"
---

# Exporting your banners to HTML

> Once you've finished animating your layers in the timeline, you can export your banners to animated HTML banners

### Video Tutorial: Export banners to HTML/GSAP from Figma

This video tutorial is a complete step-by-step guide showing you how to export production-ready animated banners from Figma to HTML/GreenSock (GSAP) in seconds using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/SS2J6k5Wo7s)
### Video Tutorial: Export HTML banners from Figma to multiple ad platforms

This video tutorial is a complete step-by-step guide showing you how to export animated HTML banners from Figma to multiple ad platforms with one click using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/Q16MPp9YKjg)

[Video](/assets/videos/bannerify/export/html-export.mp4)

## Exporting to HTML

Once you're happy with your banners and would like to export them to HTML, you can click the **Export to HTML** button in the Bannerify header. This will open the HTML export settings.

After you've configured all of your HTML export settings, you can click the **Export Banners** button at the bottom of the export panel to begin exporting your banners from Figma to HTML.

After Bannerify has finished processing your banners, you'll be shown a confirmation message; you can download your `.zip` file containing your exported banners by clicking the **Download your .zip file** button.

After you've downloaded your `.zip` file from Figma to your computer, you can open your file explorer to the directory where it was saved. **Double clicking** on the exported `.zip` file will unzip the contents and let you use your banners however you like.

> **Note:** **Please ensure you unzip the exported `.zip` file first** before using the banners or uploading them to an ad platform, as the exported .zip file contains all of the individual banners (and the nested `_zips` folder, where all of your banners are pre-zipped individually, ready to be uploaded to an ad platform).

> **Tip:** **Saving file downloads from Figma** If you're using the Figma **desktop app**, you'll see a prompt appear to download your file. However, if you're using Figma in a **web browser**, your file will automatically be downloaded to your computer by default (usually to the **Downloads** directory on your computer).

## Standard Options

### Adding a 1px black border to all banners

Enabling the 1px border option will automatically include a `1px solid black` border to the CSS of all of your banners. This can be helpful for certain advertising platforms that prefer (or require) you to include a 1px black border to your banners.

### Adding a preloader animations to all banners

Enabling the preloader option will automatically include a preloader to the HTML of all of your banners. This loading animation will be displayed until all of the banner's images have loaded in the web browser.

## Playback Options

### Setting the number of times to play through banners

Setting this option will specify how many times you would like the banner timeline on all of your banners to play through from start to end. The default option is **1**, which means that your banners will play through the animation timeline from start to end **once**.

You can change this number by entering a higher number into the number input field, like **6**, for example. This would ensure that the timeline animation for all of your banners are played through **six times** from start to end.

### Infinitely looping your banners

You can repeat the animation timeline to play on repeat _forever_ in all of your banners by enabling the **Infinitely loop all banners** option.

## Include individual .zip files for each banner

Enabling the **Include individual .zip files for each banner** toggle will include an additional folder called `_zips` in your exported file. The `_zips` folder will contain individual zip files for each of the banners that you've exported. This can be useful and time saving if your advertising platform requires you to upload a zip file for each banner.

> **Info:** **Optionally include backup.jpg from zips** If you want the `backup.jpg` image file to be included inside each zip, enabling the **Add "backup.jpg" to individual zip files** toggle will ensure that `backup.jpg` images are included inside your individual zips. If this toggle is disabled while individually zipping your banners, and you've _also_ enabled the **Include a "backup.jpg" for all banners** toggle, all of your backup images will also be included in a `_backups` folder inside the root directory of the main Bannerify exported `.zip` file.

## Including or excluding banners in your export

By default, all of the top level layers in your Figma file that are loaded into Bannerify as banners will be included in your export; if you would like to exclude any banners from being included (without [re-loading the selected banners](/bannerify/design/figma-frames#refreshing-your-banners-from-figma) in), you can toggle the **Include Banner in Export** switch in any banner's timeline header to "off"; this will hide that banner's timeline and also exclude it from being added to any exports.

## Minified code exports

To optimize file sizes, Bannerify will minifies all the code that's exported by default, and will save out a single `.html` file per banner. If you need your code to be more readable and/or split out into separate `.html`, `.css`, `.js` files, you can turn off the **Minified** toggle in the code export options.

## Export text as paragraph tags instead of SVG images

By default, any text layers in your Bannerify timeline will be exported as SVG images (in image tags), but you can optionally export these as rich text (in paragraph tags) instead by enabling the **Export text as <p> tags instead of <svg>** toggle option.

---

---
url: "/bannerify/export/inject-custom-code.md"
description: "You can (optionally) inject any custom HTML, CSS and Javscript into all of your banners from the HTML export settings panel."
---

# Inject custom HTML/CSS/Javascript code into all of your HTML banner exports

> You can (optionally) inject any custom HTML, CSS and Javscript into all of your banners from the HTML export settings panel.

### Video Tutorial: Add custom HTML, CSS, and Javascript to Figma banner exports

This video tutorial is a complete step-by-step guide showing you how to add custom HTML, CSS, and Javascript to Figma banner exports using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/Uwe6PLmErRU)

[Video](/assets/videos/bannerify/export/inject-custom-code.mp4)

If you need to add your own custom HTML/CSS/Javascript to all of your HTML banner exports, you can enable the **Inject Custom Code** toggle in the export settings, which will allow you to add custom HTML before the closing `` (for adding content) or `` (for adding meta tags or asset links) tags, or adding custom CSS to a new **style** tag, or adding custom Javascript code inside new a `` tag.

> **Tip:** **Custom disclaimer overlay toggle example**. You can reference [this CodePen HTML/CSS/JS code example](https://codepen.io/hypermatic/pen/YzbPjvK) as a basic example for a common use case for this feature, which will inject a toggleable disclaimer pop-up over your banners. Feel free to copy and modify the styles and content as needed.

## Saved Custom Code Presets (Optional)

[Video](/assets/videos/bannerify/export/saved-code-presets.mp4)

The **Saved Custom Code Presets** feature allows you to save and reuse different configurations of custom HTML, CSS, and JavaScript code when exporting banners. To use it, you can populate your custom code in the four available areas (Head HTML, Body HTML, CSS, and JavaScript), enter a descriptive name, and click **Save as New Preset** to store that configuration for future use.

Once saved, you can quickly load any preset from the **Load Saved Preset (Optional)** dropdown menu to instantly populate all custom code areas with your saved configuration. This eliminates the need to manually copy and paste code snippets each time you export banners with different requirements. You can manage your presets by deleting ones you no longer need or updating existing ones by loading them, making changes, and saving with the same name. All presets are stored locally within your current Figma app (using the [clientStorage](https://www.figma.com/plugin-docs/api/figma-clientStorage/) API from Figma) and persist whenever you reopen the Bannerify code panel across different Figma files, making it easy to maintain consistent code across multiple export sessions.

---

---
url: "/bannerify/export/make.md"
description: "If you would like to upload your banners online (rather than just included locally in the exported `.zip` file), you can use the built-in custom Make webhook upload integration in the Bannerify HTML export settings."
---

# Automatically upload your banners to a Make Webhook URL

> If you would like to upload your banners online (rather than just included locally in the exported `.zip` file), you can use the built-in custom Make webhook upload integration in the Bannerify HTML export settings.

To use this feature, you can click the **Export to HTML** button in the Bannerify header, enable the **Upload Preview Page** toggle, select the **Make** dropdown option, then paste in your valid [Make webhook](https://help.make.com/webhooks) URL.

After you click the **Export Banners** button, you will see confirmation of the Make webhook POST being completed, with your .zip file containing the banners uploaded, along with a link to view your "Zap" history to confirm it ran in Make as expected.

---

---
url: "/bannerify/export/netlify.md"
description: "If you would like to host the preview page of all your banners online (rather than just included locally in the exported `.zip` file), you can use the built-in Netlify upload integration in the Bannerify HTML export settings."
---

# Automatically upload preview page to a Netlify URL

> If you would like to host the preview page of all your banners online (rather than just included locally in the exported `.zip` file), you can use the built-in Netlify upload integration in the Bannerify HTML export settings.

### Video Tutorial: Upload preview links for HTML banners from Figma to Netlify

This video tutorial is a complete step-by-step guide showing you how to upload preview links for HTML banners from Figma to Netlify using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/ZBJeKCTWo4k)

[Video](/assets/videos/bannerify/export/netlify-upload.mp4)

To use this feature, you can click the **Export to HTML** button in the Bannerify header, enable the **Upload Preview Page** toggle, select the **Netlify** dropdown option, then paste in your Netlify [personal access token](https://app.netlify.com/user/applications) to connect Bannerify and create a new Netlify site for the current Figma page.

> **Warning:** **If Netlify is blocked on your network**. If preview uploads work for one teammate but not another, ask your IT team to allow `proxy.hypermatic.com` and `api.netlify.com`.

You can optionally click on the **Change site name** link to update the auto-generated subdomain name from Netlify to something more personalized, and then click the **Refresh** icon button in Figma after saving it in Netlify to show the updated URL.

After you click the **Export Banners** button, you will see confirmation of the Netlify preview page being uploaded, along with a link to view it, and another link to the Netlify settings page to manage the site.

---

---
url: "/bannerify/export/preview.md"
description: "Bannerify includes an HTML preview page inside of your banner .zip file exports, which is great for easily sharing a preview of all your banners to a client or stakeholder on your team."
---

# Customizing the preview page for your exported HTML banners

> Bannerify includes an HTML preview page inside of your banner .zip file exports, which is great for easily sharing a preview of all your banners to a client or stakeholder on your team.

[Video](/assets/videos/bannerify/export/customize-preview-page.mp4)

When you export any HTML banners, Bannerify will automatically include an HTML preview page. This file loads in all of your exported banners on the same page, and lays them out in a grid where you can see them all at the same time.

By default, the **Generate Preview Page** toggle is enabled in your HTML export settings panel, but if you'd prefer to exclude a preview page from being generated and added to your `.zip` package, you can optionally turn off this toggle, if needed.

## Preview Page Title

The name of your **Figma document** will be used as the `` tag for the exported HTML preview page from Bannerify.

## Preview Page Banner Order

The order of your banner frames in the Figma layers panel will be used to order your banners on the preview page.

## Selecting a layout for your preview page

Updating the **preview page layout** select box option will set the grid style used to position your banners in the generated `index.html` preview page. You can change this by selecting a different option in the select box.

### Masonry Layout Grid

The masonry layout mode option will automatically figure out the best layout to fit all of your banners. This can be a good option for a large banner set.

### Centered Layout Grid

The centered layout mode option will vertically align and horitzontally center all of the banners. This can be a good option for smaller banner sets.

## Enabling "Dark Mode" on your preview page

Enabling the **Dark Mode** setting will set a dark theme/background to your generated `index.html` preview page. You can enable this setting if your banner designs work better against a darker background.

## Adding a branded header to your preview page

If you're showing your `index.html` preview page to clients or third party stakeholders, you can add some custom HTML and CSS to apply your own branding or custom header to the page. Any HTML you add will be

### Custom HTML

Any code added to the **Custom HTML** field will be injected directly after the `` tag in the generated `index.html` page. You can add anything here, like a custom header, or something as simple as an `` tag linking to your company logo.

### Custom CSS

Any code added to the **Custom CSS** field will be injected into a custom `style` tag (so you don't need to add your own `style` tag in your input) in the `index.html` page. This can be used to style the **Custom HTML** you've added.

---

---
url: "/bannerify/export/retina-images.md"
description: "You can export JPG and PNG banner images at 0.5x, 1x, 1.5x, or 2x resolution from the global image scale setting in the HTML export settings panel."
---

# Rendering banner images at different resolutions in your exported HTML banners

> You can export JPG and PNG banner images at 0.5x, 1x, 1.5x, or 2x resolution from the global image scale setting in the HTML export settings panel.

[Video](/assets/videos/bannerify/export/enable-retina-images.mp4)

Using the **Global Image Scale** option will automatically export any **JPG** and **PNG** images at your selected scale: `0.5x`, `1x`, `1.5x`, or `2x`.

Higher scales will give you sharper looking images in your banners, but will also increase the file sizes of any **JPG** and **PNG** images.

You can also optionally [override this per layer](/bannerify/design/override-image-scale) by clicking any layer's **Settings** icon button in the main timeline to open the layer settings, where you can specify forcing the layer to be exported as `0.5x`, `1x`, `1.5x`, `2x`, or left as the default, which will use the global **Global Image Scale** setting.

---

---
url: "/bannerify/export/video.md"
description: "Once you've finished animating your layers in the timeline, you can export your banners to MP4 videos."
---

# Exporting your banners to MP4 videos

> Once you've finished animating your layers in the timeline, you can export your banners to MP4 videos.

### Video Tutorial: Export banners to MP4 videos from Figma

This video tutorial is a complete step-by-step guide showing you how to export production-ready animated banners from Figma to MP4 Videos using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/rlq7Zq0fl7o)

[Video](/assets/videos/bannerify/export/animated-mp4.mp4)

After you've clicked the **Export to GIF/Video** and configured your export settings, you can click the **Export MP4** button at the bottom of the export panel to begin exporting your banners from Figma to MP4. This will export your animated banners to [h264](https://en.wikipedia.org/wiki/Advanced_Video_Coding) encoded [MP4](https://en.wikipedia.org/wiki/WebM) videos.

> **Note:** **Browser Support**. Due to browser compatibility issues, **MP4** videos can _only_ be exported using [Chrome](https://www.google.com/intl/en_us/chrome/) or the [Figma Desktop App](https://www.figma.com/downloads/).

> **Info:** **MP4s are automatically optimized**. MP4 video exports will automatically be optimized to get the best quality at the lowest file size.

> **Tip:** **Including or excluding banners in your export**. By default, all of the top level layers in your Figma file that are loaded into Bannerify as banners will be included in your export; if you would like to exclude any banners from being included (without [re-loading the selected banners](/bannerify/design/figma-frames#refreshing-your-banners-from-figma) in), you can toggle the **Include Banner in Export** switch in any banner's timeline header to "off"; this will hide that banner's timeline and also exclude it from being added to any exports.

### Frames Per Second

You can change the framerate of your GIF exports by using the **Frames Per Second** select box options. You can select from the FPS options below:

- 60 FPS (Ludicrous Mode)
- 30 FPS (Ultra Smooth)
- 24 FPS (Smooth)
- 18 FPS (Less Smooth)
- 12 FPS (Least Smooth)
- 6 FPS (Jittery)

> **Warning:** **Higher FPS will take longer to render**. Please note that more frames will take longer to export and ouput larger file sizes. For example, exporting a **5 second timeline** at **24 FPS** will render out **120 frames** _per_ banner.

### Adding an audio track to MP4 video exports

### Video Tutorial: Add audio to Figma video banner exports

This video tutorial is a complete step-by-step guide showing you how to add audio files to your MP4 video banner exports in Figma using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/XLg0YGQglgA)

Before exporting your MP4 video, you can optionally include an .mp3 audio file to your exported videos by dragging and dropping an `.mp3` file from your computer (you can download .mp3 music files from a site like [Pixabay](https://pixabay.com/music/search/)) into the Bannerify export settings. Then you can click the **Export MP4** button at the bottom of the export panel to begin exporting your banners from Figma to MP4 with the audio track automatically included.

Alternatively, if you've already embedded a video URL into one of your layers and would prefer to use the audio from that video, you can enable the **Use audio from embedded video** toggle, and this will automatically include the audio from the video on your banner's timeline layer.

> **Note:** **Browser Support**. Due to browser compatibility issues, **MP4** videos can _only_ be exported using [Chrome](https://www.google.com/intl/en_us/chrome/) or the [Figma Desktop App](https://www.figma.com/downloads/).

### Downloading the final MP4 video .zip file

After Bannerify has finished processing your banners, you'll be shown a confirmation message; you can download your `.zip` file containing your exported banners by clicking the **Download your .zip file** button.

> **Tip:** **Saving file downloads from Figma** If you're using the Figma **desktop app**, you'll see a prompt appear to download your file. However, if you're using Figma in a **web browser**, your file will automatically be downloaded to your computer by default (usually to the **Downloads** directory on your computer).

### Opening your MP4 video .zip file

After you've downloaded your `.zip` file from Figma to your computer, you can open your file explorer to the directory where it was saved. **Double clicking** on the exported `.zip` file will unzip the contents and let you use your banners however you like.

---

---
url: "/bannerify/export/webm-video.md"
description: "Once you've finished animating your layers in the timeline, you can export your banners to WebM videos."
---

# Exporting your banners to WebM videos

> Once you've finished animating your layers in the timeline, you can export your banners to WebM videos.

### Video Tutorial: Export banners to WebM videos from Figma

This video tutorial is a complete step-by-step guide showing you how to export production-ready animated banners from Figma to WebM Videos using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/Nur9nWx9Qhs)

[Video](/assets/videos/bannerify/export/animated-webm.mp4)

After you've clicked the **Export to GIF/Video** and configured your export settings, you can click the **Export WebM** button at the bottom of the export panel to begin exporting your banners from Figma to WebM. This will export your animated banners to [WebM](https://en.wikipedia.org/wiki/WebM) videos.

> **Note:** **Browser Support**. Due to browser compatibility issues, **WebM** videos can _only_ be exported using [Chrome](https://www.google.com/intl/en_us/chrome/) or the [Figma Desktop App](https://www.figma.com/downloads/).

> **Note:** **WebMs are automatically optimized**. WebM video exports will automatically be optimized to get the best quality at the lowest file size.

> **Tip:** **Including or excluding banners in your export**. By default, all of the top level layers in your Figma file that are loaded into Bannerify as banners will be included in your export; if you would like to exclude any banners from being included (without [re-loading the selected banners](/bannerify/design/figma-frames#refreshing-your-banners-from-figma) in), you can toggle the **Include Banner in Export** switch in any banner's timeline header to "off"; this will hide that banner's timeline and also exclude it from being added to any exports.

### Frames Per Second

You can change the framerate of your GIF exports by using the **Frames Per Second** select box options. You can select from the FPS options below:

- 60 FPS (Ludicrous Mode)
- 30 FPS (Ultra Smooth)
- 24 FPS (Smooth)
- 18 FPS (Less Smooth)
- 12 FPS (Least Smooth)
- 6 FPS (Jittery)

> **Warning:** **Higher FPS will take longer to render**. Please note that more frames will take longer to export and ouput larger file sizes. For example, exporting a **5 second timeline** at **24 FPS** will render out **120 frames** _per_ banner.

### Downloading the final WebM video .zip file

After Bannerify has finished processing your banners, you'll be shown a confirmation message; you can download your `.zip` file containing your exported banners by clicking the **Download your .zip file** button.

> **Tip:** **Saving file downloads from Figma** If you're using the Figma **desktop app**, you'll see a prompt appear to download your file. However, if you're using Figma in a **web browser**, your file will automatically be downloaded to your computer by default (usually to the **Downloads** directory on your computer).

### Opening your WebM video .zip file

After you've downloaded your `.zip` file from Figma to your computer, you can open your file explorer to the directory where it was saved. **Double clicking** on the exported `.zip` file will unzip the contents and let you use your banners however you like.

## Configuring video export FPS (frames per second) settings

You can change the framerate of your video exports by using the **Frames Per Second** select box options. You can select from the FPS options below:

- 60 FPS (Ludicrous Mode)
- 30 FPS (Ultra Smooth)
- 24 FPS (Smooth)
- 18 FPS (Less Smooth)
- 12 FPS (Least Smooth)
- 6 FPS (Jittery)

---

---
url: "/bannerify/export/zapier.md"
description: "If you would like to upload your banners online (rather than just included locally in the exported `.zip` file), you can use the built-in custom Zapier webhook upload integration in the Bannerify HTML export settings."
---

# Automatically upload your banners to a Zapier Webhook URL

> If you would like to upload your banners online (rather than just included locally in the exported `.zip` file), you can use the built-in custom Zapier webhook upload integration in the Bannerify HTML export settings.

### Video Tutorial: Export animated HTML banners from Figma to Google Drive with Zapier

This video tutorial is a complete step-by-step guide showing you how to export animated HTML banners from Figma to Google Drive with Zapier using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/yVS3gDPDNUo)

[Video](/assets/videos/bannerify/export/zapier-upload.mp4)

To use this feature, you can click the **Export to HTML** button in the Bannerify header, enable the **Upload Preview Page** toggle, select the **Zapier** dropdown option, then paste in your valid [Zapier webhook](https://zapier.com/apps/webhook/integrations) URL.

After you click the **Export Banners** button, you will see confirmation of the Zapier webhook POST being completed, with your .zip file containing the banners uploaded, along with a link to view your "Zap" history to confirm it ran in Zapier as expected.

---

---
url: "/bannerify/faq/plans.md"
description: "To get unlimited usage of all of the Bannerify Pro features, you will need to purchase a license from the [Hypermatic website](https://hypermatic.com/bannerify#pro)."
---

# Bannerify Free vs Bannerify Pro

> To get unlimited usage of all of the Bannerify Pro features, you will need to purchase a license from the [Hypermatic website](https://hypermatic.com/bannerify#pro).

Bannerify includes 10 free trials of the _Pro_ version. Once these trials have been used up, the Figma plugin will revert to their _Free_ version, which will have limited functionality.

  - **Bannerify Free**: ### Animation Timeline Unlimited Usage       ### WebM Exports Unlimited Usage       ### HTML Exports Try during 10 Pro Trials       ### GIF Exports Try during 10 Pro Trials       ### MP4 Video Exports Try during 10 Pro Trials
  - **Bannerify Pro**: ### Animation Timeline Unlimited Usage       ### WebM Exports Unlimited Usage       ### HTML Exports Unlimited Usage       ### GIF Exports Unlimited Usage       ### MP4 Video Exports Unlimited Usage

---

---
url: "/bannerify/faq/security.md"
description: "Bannerify runs as an official plugin inside of Figma's own app, which are reviewed and approved by the Figma team."
---

# Bannerify Security

> Bannerify runs as an official plugin inside of Figma's own app, which are reviewed and approved by the Figma team.

The Figma plugin is run directly from Figma's own servers, and runs inside of a your Figma file, which means that it inherits all of the [security](https://www.figma.com/security/) and infrastructure of the Figma platform, which exceed industry standards for data protection and security:

- SOC 2 Type 2
- SOC 3
- Cloud Security Alliance (CSA) STAR: Level 1
- ISO/IEC 27001:2013
- ISO/IEC 27018:2019
- EU Cloud Code of Conduct (COC): Level 2

There's **no additional software** that needs to be installed to use the Figma plugin, as Figma plugins run as a built-in part of Figma's own native functionality, and all Figma plugins easily accessibile and can be instantly run from inside any Figma file, or via the official [Figma Community](https://www.figma.com/community) ecosystem inside of the Figma app.

If your organization is already approved to use Figma, then you _already have access_ to Figma plugins.

## How Bannerify works

The [Bannerify Figma plugin](https://www.figma.com/community/plugin/796124491692147799) helps users easily export animated banners to production-ready HTML or video files.

Bannerify is designed to be privacy and security focused, so nothing _ever_ leaves your Figma file.

All functionality and file exports are handled client-side directly in the Figma plugin using the [Figma Plugins API](https://www.figma.com/plugin-docs/), and are _never_ uploaded, processed or stored anywhere in the cloud or outside of Figma.

## What Bannerify does and doesn't do

Bannerify uses the [Figma Plugins API](https://www.figma.com/plugin-docs/) to help users export production ready animated banners from Figma to HTML or video files, and download them _directly_ to their computer.

Bannerify doesn't rely on _any_ external servers to handle exporting banners from Figma to code or video files, which means that nothing in your Figma file ever leaves the Figma plugin or Figma itself; any files that are exported via the plugin are done so entirely locally to the user's own computer.

### Bannerify does

- Allow users to automatically export their animated banners to HTML files.
- Allow users to automatically export their animated banners to MP4, WebM or GIF files.
- Allow users to _optionally_ upload their exported HTML banners to their _own_ [Netlify](https://www.netlify.com/) account to automatically generate a preview link for stakeholders.
- Download any exported banner files _directly_ to the user's computer.

### Bannerify does _not_

- Upload _any_ data from your Figma file.
- Store _any_ data from your Figma file.
- Use _any_ servers or cloud storage to process or store your Figma data.
- Collect or store _any_ personal information (Figma plugins *cannot* access any private information about Figma projects, Figma teams or Figma users).

## How Figma plugins work

Figma plugins are written in HTML/CSS/Javascript, and are run in a tightly controlled [sandbox environment](https://www.figma.com/plugin-docs/how-plugins-run/) inside of the main Figma application.

Figma plugins can only do whatever Figma allows them to do inside the permissions of the [Figma Plugins API](https://www.figma.com/plugin-docs/), and importantly, **plugins don't have any access to personal information** about the Figma user running the plugin.

## What Figma plugins can and can't do

As per the article on [Figma plugin security](https://www.figma.com/blog/how-we-built-the-figma-plugin-system/), there are a limited number of things that Figma plugins can do, and many more things that they can't do:

### Figma plugins can

- Only be run by an explicit user action
- Show UI in a single plugin-specific dialog
- Read any data in your Figma document (e.g. a “find layer by name” plugin)
- Modify any data in your Figma document (e.g. a “rename selected layers” plugin)
- Communicate with any server over the internet (e.g. an “import from service X” plugin)

### Figma plugins _cannot_

- Run by themselves
- Get information about the project or team that owns the file
- Access anything when they aren’t running
- Access data from any files other than the file they were run in
- Change Figma’s UI outside of the plugin UI dialog

> **Tip:** Figma account administrators at your company can [configure an allowlist of plugins](https://help.figma.com/hc/en-us/articles/4404228724759-Manage-plugins-and-widgets-in-an-organization) that are allowed inside the organization. This can be used to prevent untrusted Figma plugins from being run in any file in that organization.

---

---
url: "/bannerify/faq/troubleshooting.md"
description: "Troubleshooting guide for Bannerify exports, rendering issues, and platform constraints."
---

# Troubleshooting Bannerify

> Troubleshooting guide for Bannerify exports, rendering issues, and platform constraints.

### Rotated parent frame causing layer positioning issues

This usually occurs if the **parent frame** has been rotated to something other than **0 degrees** (e.g., "-90" or "180") before the contents were added, which throws off the positioning of the child layers. To resolve this, you can create a new **unrotated** frame with the same dimensions and copy or drag the child layers from the original rotated frame into the new frame with no rotation set.

  ### Text layer bounding box (cropping)

The other thing that might be throwing off the position or cropping a text layer is if the size of the text box doesn't match the size of the text itself; for example, if there are multiple lines of text, but the "bounding box" height is only very short, this will cause the positioning to be offset incorrectly. To resolve this, you can tweak the height of the bounding box to match the size of the text content itself.

  ### Blurred SVGs with shadows in Safari

There is a [known issue](https://forum.figma.com/t/pixelization-of-the-drop-shadow-of-my-svg-on-safari/36410/7) with SVGs that contain any drop shadows in Safari, where it will rasterize the vector into pixels instead, and that causes it to look less sharp.

    One suggestion in the thread above would be to split the shadow layer and button/content layer onto two different layers; so the button layer above without a shadow would still render as a sharp looking SVG in Safari, and the layer underneath would only serve to add the shadow behind it.

    Alternatively, you could also override the image format just for that button CTA layer to "PNG" via the plugin, and also override that layer's scale setting to @2x retina, and this would ensure the CTA gets exported as a 2x PNG image, which will keep it looking sharp and avoid the SVG shadows issue in Safari.

  ### Colors/gradients in GIFs look a bit grainy

GIFs are a bit different from normal JPG/PNG images, as they can only contain a maximum of 256 colors. If you're using highly detailed images or gradients with lots of color variation, it's expected that it won't look as sharp or have the same color accuracy as the original images used as the source of the GIF due to this limitation of the GIF format.

  ### Transparency isn't showing in GIFs

The GIF file format supports either 0% opacity or 100% opacity, but nothing in between. This means that you can have an animated GIF with a completely transparent background behind elements that are completely opaque and visible. This means that layers either need to be completely transparent or not; any layers with lower than 50% opacity will be transparent, while any layers with opacity greater than 50% will be opaque.

    **Flagging transparent GIFs in Figma**. By default, your GIF exports won't include transparency. If your GIF does require transparency, please add the word **transparent** anywhere in your Figma layer's name.

  ### Where to host .mp4 video files

For adding videos to Bannerify, the plugin will load up any URLs that link directly to a .mp4 file, so unfortunately, URLs pointing to Vimeo/YouTube or any web-based player-type links won't be usable in this case. One good option for hosting videos is [Backblaze B2](https://www.backblaze.com/b2/cloud-storage.html); you can sign up for a free account that gives you 10gb of free storage, and if you create a public storage bucket, you should be able to copy/paste the links for any video files you upload to it and drop that link to the .mp4 into Bannerify. Another popular file hosting option is [Dropbox](https://www.dropbox.com/), which will let you upload your `.mp4` file and use that link in the Bannerify plugin; Bannerify will automatically handle changing the `?dl=0` to `?raw=1` to ensure the link points directly to the video file (rather than the Dropbox website player).

  ### Thin white line around image exports

Occasionally some images will contain a faint, thin white line around the edges. Figma [does this](https://twitter.com/Skcrub/status/1255544876701270017) if a layer isn't positioned on a rounded pixel value (e.g., Y: 156.76 or X: 56.3) will automatically result in this sub-pixel line getting included in the export. Bannerify tries to automatically round these values for layers that allow resizing via the Figma Plugin API, but to manually resolve the issue (if needed), please ensure that your layer positions are all rounded pixel values.

  ### High-res banners not exporting to MP4

If you're exporting high-resolution banners to MP4 video from the plugin, sometimes Figma hits its 2gb memory limit ceiling and can't render out the video file to `.mp4` directly. To workaround this, you can export your banners from Bannerify to the WebM format instead and then convert the exported `.webm` video files to `.mp4` outside of Figma using the [Handbrake](https://handbrake.fr/) video transcoder.

  ### Google Ads not being validated

There are a couple of common reasons why an HTML banner might not be uploading or being validated by Google. Usually, the banner file size will be too large, or the banner sizes don't exactly meet the "standard" sizes. You can use these services to validate your banners for [Google Ads](https://h5validator.appspot.com/adwords/asset) or [DoubleClick](https://h5validator.appspot.com/dcm/) before uploading them.

  ### Blank file extensions using Figma desktop app on Windows

There's a known issue with the Figma desktop app (only on Windows), which also happens for normal file exports from Figma. When you go to save your file, you may see an "all files" label. If you ignore this and continue by clicking "Save," it should still save the file with the correct extension and allow you to open it as expected after it has downloaded to your computer. If it still saves the file with a blank extension, you should be able to rename the file to manually append the correct extension to the file name.

  ### Google HTML validator converting SVG elements with drop shadow into PNG (when uploaded via mobile)

For some reason, when uploading a banner .zip to the [DCM Validator](https://h5validator.appspot.com/dcm/asset) via a mobile device (eg. iPhone) browser, the validator will automatically convert any SVG elements that contain a drop shadow into a PNG instead, causing it to look more pixelated in the preview.

  ### Pixelated image exports

If you're exporting banners while the image assets in Figma are still progressively loading, they may be exported looking pixelated, as the image wasn't fully loaded in the Figma file before it was exported. To resolve this, please ensure that all of the images have loaded 100% and are looking sharp inside the Figma file before exporting your banners with the Bannerify plugin. To help further with solving this issue, you can use the ["Downsizer" feature](https://docs.hypermatic.com/tinyimage/usage.html#downsizing-your-figma-layer-fills) in [TinyImage](https://www.figma.com/community/plugin/789009980664807964/TinyImage-Compressor) to shrink down your image fills to match their layer size, which will shrink their file size and ensure they load much faster in your Figma file.

  ### Adding aria-hidden='true' attributes to layers

If you need to include aria-hidden attributes for accessibility reasons, you can do this per-layer by including `aria-hidden` in your Figma layer name; this will automatically include `aria-hidden="true"` to that HTML element when the banners are exported to HTML.

  ### VPN may be required in China

Please note, if you're in China, the accounts server _may_ be blocked by "The Great Firewall of China." If you're seeing an activation error, despite using a valid key, you will likely need to use a [VPN](https://protonvpn.com/free-vpn/) to resolve the issue.

  ### 'An error occurred while loading the plugin environment'

This may happen in the Figma desktop app if [the Use Developer VM](https://www.figma.com/plugin-docs/debugging/#developer-vm) debug setting in Figma is enabled by mistake; you can make sure it's turned off by **right-clicking** anywhere on your Figma canvas, hovering over **Plugins**, then hovering over **Development**, and making sure that the **Use Developer VM** is _unchecked_; after it is unchecked (and does _not_ have a tick icon next to it), re-running the Figma plugin should work as expected.

---

---
url: "/bannerify/overview/install.md"
description: "Ensure you're logged into your Figma account, then follow the steps below to install and run the [Bannerify Figma plugin](https://www.figma.com/community/plugin/796124491692147799/bannerify-banner-studio)."
---

# Install and run the Bannerify Figma Plugin

> Ensure you're logged into your Figma account, then follow the steps below to install and run the [Bannerify Figma plugin](https://www.figma.com/community/plugin/796124491692147799/bannerify-banner-studio).

### Video Tutorial: How to install (and remove) Figma plugins

This video tutorial is a complete step-by-step guide showing you the new process of how to install (and remove) Figma plugins after the mid-2024 "UI3" update to the Figma app
[Embedded media](https://www.youtube.com/embed/CzjxF2Jv6PM)

## Installing the Bannerify Figma Plugin

1. Open any Figma file.
2. Click on the **Actions** icon in the bottom Figma toolbar.
3. Click the **Plugins & Widgets** tab to filter results to Figma plugins.
4. Search for **Bannerify** in the search bar.
5. Click on the **Bannerify** search result.
6. Click the **Save** button to install the Bannerify plugin.

> **Note:** Figma users in a **Figma Organization** may only be able to install approved plugins. Please contact your Figma Org admin at your company to [approve the Bannerify plugin](https://help.figma.com/hc/en-us/articles/4404228724759-Manage-plugins-and-widgets-in-an-organization) if you're unable to install certain Figma plugins.

## Running the Bannerify Figma Plugin

Once you've [installed](#installing-the-figma-plugin) the **Bannerify** Figma plugin, to run the plugin in your Figma file:

  1. **Right-click** anywhere on your Figma file's page canvas
  2. Hover your mouse over the **Plugins** ▶ menu item
  3. Hover your mouse over the **Saved plugins** ▶ menu item
  4. Click on the **Bannerify** plugin menu item

> **Tip:** After you've run the **Bannerify** plugin once in a Figma file, you'll be able to quickly re-launch it by clicking the **Bannerify** icon in the right-hand side Figma column (under the **Plugin** subheading).

> **Warning:** Only Figma users with **Edit** access to a Figma file can run a Figma plugin in that Figma file; if you only have **View** permissions, you won't be able to run any Figma plugins in that file.

## Uninstalling the Bannerify Figma plugin

1. Open any Figma file.
2. Click on the **Actions** icon in the bottom Figma toolbar.
3. Click the **Plugins & Widgets** tab to filter results to Figma plugins.
4. Search for **Bannerify** in the search bar.
5. Click on the **Bannerify** search result.
6. Click the **Remove** button to uninstall the Bannerify plugin.

> **Note:** This will remove the plugin from your **Saved Plugins** list, however, the Figma plugin may still show up under your **Recents** list (if it has been recently run), as Figma saves this list of recent plugins in your browser's/app's local storage. The plugin will vanish from the Recents menu after other plugins are run to take its place.

---

---
url: "/bannerify/overview/pro.md"
description: "After trying out all the Pro features of Bannerify **10 times**, you can optionally upgrade to continue using all the extra features that are only available in the Pro version; or if you're a casual user, you can continue using the Free version forever."
---

# Activating Bannerify Pro

> After trying out all the Pro features of Bannerify **10 times**, you can optionally upgrade to continue using all the extra features that are only available in the Pro version; or if you're a casual user, you can continue using the Free version forever.

> **Tip:** Need a Bannerify Pro account? You can purchase a Pro account for you or your team by visiting the [Bannerify](https://www.hypermatic.com/bannerify/#pro) product page on the Hypermatic website.

## Activating the Figma plugin with an Bannerify Pro license key

1. [Purchase a Bannerify Pro license](https://www.hypermatic.com/bannerify/#pro) for you or your team.
2. [Run the Bannerify Plugin](/bannerify/overview/install), then click on the **Upgrade Now** button at the bottom of the Figma plugin window.
3. **Paste in your Pro License Key** (from your license purchase receipt), then click the **Unlock** button.

This will unlock the Pro version of Bannerify and give you unlimited use all of the Figma plugin features.

> **Warning:** Please note, if you're in China, the accounts server _may_ be blocked by "The Great Firewall of China". If you're seeing a activation error, despite using a valid key, you will likely need to use a [VPN](https://protonvpn.com/free-vpn/) to resolve the issue.

> **Info:** If you ever need to use a different license key at any time (eg. you were using your own personal Pro license key, but now your employer is buying you a Pro license to use instead), you can press **CTRL + K** while your plugin window is open in Figma, and this will bring up the license key prompt again, where you can enter a different license key.

---

---
url: "/bannerify/overview/quickstart.md"
description: "Animate and export production ready banners from Figma to HTML, GIFs and Videos, in seconds."
---

# Get Started with Bannerify

> Animate and export production ready banners from Figma to HTML, GIFs and Videos, in seconds.

[![Bannerify Figma Plugin](https://www.hypermatic.com/bannerify.jpg)](https://www.figma.com/community/plugin/796124491692147799/bannerify-banner-studio)

## Install & Activate Bannerify

- [Install & Run the Figma plugin](/bannerify/overview/install.md): How to run Bannerify inside of Figma
- [Activate Bannerify Pro](/bannerify/overview/pro.md): How to buy and use a Pro license key

## Using Bannerify

  - [Bannerify Documentation](/bannerify/design/figma-frames.md): Detailed docs with short screencaps
  - [Bannerify Video Tutorials](/bannerify/tutorials.md): Full step-by-step video walkthroughs

## Frequently Asked Questions

- [Troubleshooting Bannerify](/bannerify/faq/troubleshooting.md): Common issues issues you may run into
- [Bannerify Security](/bannerify/faq/security.md): Details about how Bannerify works
- [Receipts](/faq/receipts.md): Find email receipts and PDF invoices
- [Billing](/faq/billing.md): Manage your Pro subscription
- [License Seat Management](/faq/seats.md): Manage the Figma users on your key
- [Bannerify Free vs Pro](/bannerify/faq/plans.md): Compare Free vs Pro features

[Video](https://www.hypermatic.com/assets/videos/bannerify/BANNERIFY_DEMO.mp4)

## Bannerify Features

- Criminally easy timeline animation and real-time previews inside Figma.
- Generates all the images, HTML, CSS and Javascript you need for every banner.
- Export to HTML/CSS, GSAP, ``, Google Ads, DoubleClick and many more.
- Create your own animations, or use dozens of professional presets.
- Set a maximum file size (kb) per banner for automatic asset optimization.
- Optionally include static fallback "backup" JPG for every banner.
- Impress your clients with beautifully responsive HTML preview pages (with optionally auto-upload to Netlify, Zapier or Make).
- Export your animated banners to HTML/CSS, GIF, MP4, WebM, animated WebP and animated PNG (APNG) files, GSAP (Greensock), AdForm, AdForm Mobile (MRAID), Adition, AdRoll, Adobe Ad Cloud, AppNexus, Basis, Delta Projects, DoubleClick (DCM), DoubleClick Studio, DV360, FlashTalking, Google Ads, Google Display Network, IAB, Jivox (Dynamic Creative), Responsive Display Ad, 6sense (Dynamic Creative), Sizmek, StackAdapt, DemandScience (formerly Terminus), The Trade Desk, BidTheatre, Xandr, Amazon Ads, USSD (Tap to SMS), USSD (Tap to Call), Yandex and more!
- Automatically saves all of your exported banners and preview page as a single .zip file.

---

---
url: "/bannerify/tutorials.md"
description: "The best free Figma tutorial videos for beginners (or power users) to level up."
---

# Bannerify Video Tutorials

> The best free Figma tutorial videos for beginners (or power users) to level up.

## Designing Banners

### Animate and export banners to HTML from Figma

This video tutorial is a complete step-by-step guide showing you how to animate and export production-ready HTML banners from Figma in seconds.
[Embedded media](https://www.youtube.com/embed/-TA088FNulA)

### Create multi-scene animated banners in Figma

This video tutorial is a complete step-by-step guide showing you how to create multi-scene animated banners in Figma (and export to HTML or video) using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/_RJoxtwDC04)

### Add video embeds to Figma banner exports

This video tutorial is a complete step-by-step guide showing you how to add video file embeds to your banners using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/8eqKeU4c4bc)

### Animate and export banners to HTML from Figma

This video tutorial is a complete step-by-step guide showing you how to animate and export production-ready HTML banners from Figma in seconds.
[Embedded media](https://www.youtube.com/embed/WDYRd9cSJcs)

### Add custom animations to your Figma banner designs

This video tutorial is a complete step-by-step guide showing you how to add custom keyframe animations to your banners using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/Js4uSQ855uo)

### Add hover animations to your Figma banner designs

This video tutorial is a complete step-by-step guide showing you how to add hover animations to your banners using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/dOdeG78NlSw)

### Add masked animations to Figma banners

This video tutorial is a complete step-by-step guide showing you how to add masked animations to Figma banners using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/GIGNYoB6oCM)

### Add split text animations to Figma banners

This video tutorial is a complete step-by-step guide showing you how to add split text animations (by character, word, or line) to Figma banners using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/NrzaotL5IMw)

### Add cubic bezier easing to banner animations in Figma

This video tutorial is a complete step-by-step guide showing you how to add custom cubic-bezier easing to banner animations in Figma using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/uS2TRRQiYzw)

### Add Lottie animations to Figma banner exports

This video tutorial is a complete step-by-step guide showing you how to add Lottie file animations to your banners using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/JOJXVPWejOw)

### Add scrollable text disclaimers to HTML Figma banners

This video tutorial is a complete step-by-step guide showing you how to add scrollable text disclaimers (with auto-scroll) to HTML Figma banners using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/lDPV4QU_ZRU)

### Add rich text popup overlays to HTML Figma banners

This video tutorial is a complete step-by-step guide showing you how to add rich text popup overlays to HTML Figma banners using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/fOlw2ghGcIc)

## HTML Exports

### Export banners to HTML/GSAP from Figma

This video tutorial is a complete step-by-step guide showing you how to export production-ready animated banners from Figma to HTML/GreenSock (GSAP) in seconds using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/SS2J6k5Wo7s)

### Add custom HTML, CSS, and Javascript to Figma banner exports

This video tutorial is a complete step-by-step guide showing you how to add custom HTML, CSS, and Javascript to Figma banner exports using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/Uwe6PLmErRU)

### Export animated HTML banners from Figma to multiple ad platforms

This video tutorial is a complete step-by-step guide showing you how to export animated HTML banners from Figma to multiple ad platforms with one click using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/Q16MPp9YKjg)

### Upload preview links for HTML banners from Figma to Netlify

This video tutorial is a complete step-by-step guide showing you how to upload preview links for HTML banners from Figma to Netlify using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/ZBJeKCTWo4k)

### Export animated HTML banners from Figma to Google Drive with Zapier

This video tutorial is a complete step-by-step guide showing you how to export animated HTML banners from Figma to Google Drive with Zapier using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/yVS3gDPDNUo)

### Bulk export Figma banner variants from a spreadsheet to HTML or Video/GIF

This video tutorial is a complete step-by-step guide showing you how to bulk export Figma banner variants from a spreadsheet to HTML or Video/GIF using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/EiVk0G0nEU4)

## GIF/Video Exports

### Export banners to MP4 videos from Figma

This video tutorial is a complete step-by-step guide showing you how to export production-ready animated banners from Figma to MP4 Videos using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/rlq7Zq0fl7o)

### Add audio to Figma video banner exports

This video tutorial is a complete step-by-step guide showing you how to add audio files to your MP4 video banner exports in Figma using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/XLg0YGQglgA)

### Export banners to GIFs from Figma

This video tutorial is a complete step-by-step guide showing you how to export production-ready animated banners from Figma to GIFs using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/J2wk4r1QL1k)

### Export banners to WebM videos from Figma

This video tutorial is a complete step-by-step guide showing you how to export production-ready animated banners from Figma to WebM Videos using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/Nur9nWx9Qhs)

### Export banners to animated PNG (APNG) images from Figma

This video tutorial is a complete step-by-step guide showing you how to export production-ready animated banners from Figma to animated PNG (APNG) images using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/GoBXTURjPuM)

### Export banners to animated WebP images from Figma

This video tutorial is a complete step-by-step guide showing you how to export production-ready animated banners from Figma to animated WebP images using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/-MsleYiQHIQ)

### Bulk export Figma banner variants from a spreadsheet

This video tutorial is a complete step-by-step guide showing you how to bulk export Figma banner variants from a spreadsheet to HTML or Video/GIF using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/EiVk0G0nEU4)

## Ad Platforms

### Export banners for Google Ads from Figma

This video tutorial is a complete step-by-step guide showing you how to export production-ready animated banners from Figma to HTML for Google Ads in seconds.
[Embedded media](https://www.youtube.com/embed/ZFeByEwsjME)

### Export responsive HTML banners from Figma

This video tutorial is a complete step-by-step guide showing you how to export production-ready animated banners from Figma to responsive HTML using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/RXBaPS4nSQ4)

### Export banners for DoubleClick from Figma

This video tutorial is a complete step-by-step guide showing you how to export production-ready animated banners from Figma to HTML for DoubleClick Studio in seconds using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/vyxXHZ4rpos)

### Export banners for AdForm from Figma

This video tutorial is a complete step-by-step guide showing you how to export production-ready animated banners from Figma to HTML for AdForm in seconds using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/8P5W9Q9v-5g)

### Export banners for DCM from Figma

This video tutorial is a complete step-by-step guide showing you how to export production-ready animated banners from Figma to HTML for DoubleClick Campaign Manager (DCM) in seconds using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/8nWhYP7cnk8)

### Export banners for Flashtalking from Figma

This video tutorial is a complete step-by-step guide showing you how to export production-ready animated banners from Figma to HTML for Flashtalking in seconds using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/lCjG54qAFb4)

### Export banners for IAB from Figma

This video tutorial is a complete step-by-step guide showing you how to export production-ready animated banners from Figma to HTML for IAB in seconds using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/JHucv6UEaBU)

### Export banners for Sizmek from Figma

This video tutorial is a complete step-by-step guide showing you how to export production-ready animated banners from Figma to HTML for Sizmek in seconds using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/xuGoT7KbVOw)

### Export banners for AppNexus from Figma

This video tutorial is a complete step-by-step guide showing you how to export production-ready animated banners from Figma to HTML for AppNexus in seconds using the Bannerify plugin.
[Embedded media](https://www.youtube.com/embed/qRBXJX0yChc)

---

---
url: "/commentful/comments/comment-metadata.md"
description: "You can add metadata (eg. a title, tags, categories, due dates, assignees, etc) to any Figma comment in your kanban board to help provide more useful context."
---

# Adding custom metadata to your Figma comments

> You can add metadata (eg. a title, tags, categories, due dates, assignees, etc) to any Figma comment in your kanban board to help provide more useful context.

[Video](/assets/videos/commentful/comments/edit-comment-metadata.mp4)

To add or update metadata on your Figma comments, make sure the _Figma Comments_ tab is selected, then click on any Figma comment card to open up its details panel in the plugin.

Once you've clicked on a Figma comment, under the _Overview_ tab in the comment details popup panel, you can populate any metadata you like, which will be saved in real-time, and will be visible from the main kanban board, and from the same **Details** panel.

---

---
url: "/commentful/comments/custom-statuses.md"
description: "You can organize your Figma comments into a Trello-style kanban board with your own custom statuses"
---

# Organise Figma comments into custom statuses

> You can organize your Figma comments into a Trello-style kanban board with your own custom statuses

## Creating a new custom comment status

[Video](/assets/videos/commentful/comments/add-custom-status.mp4)

Under the **Figma Comments** tab, you can create custom columns for your kanban board under to organize your Figma comments into different custom statuses.

YOu can do this by horizontally scrolling to the far-right hand side of the plugin, selecting your **New Status Icon**, choosing your **New Status Color**, providing a **New Status Label**, and then clicking on the **Add New Custom Status** button to create and save your new status.

Once your status has been created, it will show up as the far-right column next to any existing statuses you've already added.

> **Tip:** The default **Backlog** status will always be present as a default category where any new/uncategorized Figma comments will show up for you to assign their own custom status.

### Editing a custom comment status

You can edit a custom status at any time by clicking on the **3 Dots** icon button next to any custom status label, updating your icon/color/label, then clicking the **Update Custom Status** button to save your updated status details.

### Deleting a custom comment status

You can delete a custom status at any time by clicking on the **3 Dots** icon button next to any custom status label, then enabling the **I want to delete this custom status** toggle, then clicking the **Delete Custom Status** button to remove custom status.

> **Note:** This will only delete your custom status, and **will not delete any Figma comments** already inside of that status; these comments will automatically be moved to the **Backlog** status after your custom status has been deleted.

## Re-arrange custom comment status swimlanes

[Video](/assets/videos/commentful/comments/rearrange-statuses.mp4)

After you've created at least two custom statuses, you can re-arrange them on your kanban board underneath the **Figma Comments** at any time by clicking the custom status column **Label** text and dragging it horizontally left or right to shift it before or after other custom status columns.

Once you've dragged the column where you'd like it to be placed, letting go of your mouse to _drop_ the status will save it in its new ordered location.

---

---
url: "/commentful/comments/export-comments.md"
description: "You can export and download your Figma comments to a CSV spreadsheet file at any time from the Commentful plugin."
---

# Exporting Figma comments to a CSV file

> You can export and download your Figma comments to a CSV spreadsheet file at any time from the Commentful plugin.

[Video](/assets/videos/commentful/comments/export-comments-to-csv.mp4)

To export a list of your Figma comments, with the _Figma Comments_ tab selected in the plugin, you can click on the **Export Comments** button in the bottom right of the plugin window.

This will automatically export and download your Figma comments, which will be saved directly to your computer as a `.csv` file you can open as a spreadsheet in an app of your choice (eg. Microsoft Excel, Google Sheeets or Apple Numbers).

---

---
url: "/commentful/comments/post-comments.md"
description: "You can quickly post new Figma comments and replies from the Commentful plugin"
---

# Posting new Figma comments from the plugin

> You can quickly post new Figma comments and replies from the Commentful plugin

## Posting a new Figma comment from the Commentful plugin

[Video](/assets/videos/commentful/comments/attach-comment-to-node.mp4)

To post a new comment, you can either leave a comment pin normally (using the native Comment feature in Figma), or you can click on the **Plus** icon button next to any status column under the _Figma Comments_ tab in the Commentful plugin.

Once you've clicked the **Plus** button, you'll need to click on a single Figma layer, which will automatically attach the new Figma comment to that exact layer, making it easier to attach the comment to the layer (if its visual position moves around later, etc).

You will also be able to [add metadata](/commentful/comments/comment-metadata) to your new Figma comment, like a title for the comment, custom tags, a [custom status](/commentful/comments/custom-statuses), due date and assignee.

Once you've selected the Figa layer and added your metadata, you can use the built-in markdown editor to write your new comment, then click the **Post New Figma Comment** button to post your new Figma comment.

> **Note:** After your new comment has been posted from the plugin, it will show up in both the native Figma comment pin and also be loaded into the Commentful plugin (via the Figma API), so anyone who isn't using the Commentful plugin will still be able to see it in the Figma file (when the Figma Comments view is active).

> **Tip:** Figma comments [support markdown syntax](https://help.figma.com/hc/en-us/articles/360041068574-Add-comments-to-files#Add_text_styling_to_comments), so to make this easier, Commentful includes a visual markdown editor to make it easier for you to add bold/italics or links.

> **Warning:** ** Figma API Rate Limits (Effective Nov 17, 2024)** Figma limits API requests to **5 per minute** for Figma users on their Starter (free) tier. Commentful automatically mitigates this limit with caching and request limiting. For heavier usage (eg. posting many comments per minute via the Commentful plugin), consider upgrading to a Full Figma seat.

## Replying to Figma comment threads from the Commentful plugin

[Video](/assets/videos/commentful/comments/post-a-thread-comment.mp4)

You can reply to any Figma comment by clicking on its card under the **Figma Comments** tab, then using the built-in markdown editor to write your reply, then click the **Reply To Figma Thread** button to post your reply to the comment thread.

> **Note:** After the your comment reply has been posted from the plugin, it will show up in both the native Figma comment pin and also be loaded into the Commentful plugin (via the Figma API), so anyone who isn't using the Commentful plugin will still be able to see it in the Figma file (when the Figma Comments view is active).

> **Tip:** Figma comments [support markdown syntax](https://help.figma.com/hc/en-us/articles/360041068574-Add-comments-to-files#Add_text_styling_to_comments), so to make this easier, Commentful includes a visual markdown editor to make it easier for you to add bold/italics or links.

> **Warning:** ** Figma API Rate Limits (Effective Nov 17, 2024)** Figma limits API requests to **5 per minute** for Figma users on their Starter (free) tier. Commentful automatically mitigates this limit with caching and request limiting. For heavier usage (eg. posting many comments per minute via the Commentful plugin), consider upgrading to a Full Figma seat.

---

---
url: "/commentful/comments/search-and-filter-comments.md"
description: "You can quickly find the Figma comments you're looking for by either searching via keywords, applying narrowing filters, or sorting your comments by different properties."
---

# Searching, filtering and sorting your Figma comments

> You can quickly find the Figma comments you're looking for by either searching via keywords, applying narrowing filters, or sorting your comments by different properties.

## Search your Figma comments

[Video](/assets/videos/commentful/comments/search-comments.mp4)

To search your Figma comments, with the _Figma Comments_ tab selected, you can start typing a keyword in the **Search Input** field to instantly trigger an automatic content search of your Figma comments.

You can **click on any item** in the search results list to open that comment card in the Commentful plugin.

## Filter your Figma comments

[Video](/assets/videos/commentful/comments/filter-comments.mp4)

To filter your Figma comments, with the _Figma Comments_ tab selected, you can click on the **Filter** icon button (to the right of the search input field) in the plugin subheader to bring up the filters panel.

With the filtering panel open, you can apply any desired filters to narrow down the Figma comments that will be displayed in your kanban board under the **Figma Comments** tab; these can include filtering by comment date ranges, filtering by Commentful tags, filtering by Figma user and filtering by which Figma frame(s) the Figma comments belong to.

> **Tip:** You can clear your applied filters at any time by re-opening the filters panel (by clicking on the **Filters** icon button in the plugin subheader), then clicking the **Clear Filters** button, which will reset all the filters and show all of your Figma comments again (without any narrowing/filtering of comments applied).

## Sort your Figma comments

[Video](/assets/videos/commentful/comments/sort-comment-order.mp4)

To sort your Figma comments, with the _Figma Comments_ tab selected, you can click on the **Sort** select box at the bottom of the plugin window to use the comment sorting dropdown options.

This dropdown box will let you sort by:

- The **Last Reply** in any Figma comment (this is default sort option).
- The Figma comment **Created Date**.
- The name of the Figma **User** who posted the comment.

Selecting any of these dropdown options will autmatically sort your Figma comments in the kanban board by the ordering you've selected.

---

---
url: "/commentful/comments/view-comments.md"
description: "You can easily view all of the Figma comments in your file from the _Figma Comments_ tab in the Commentful plugin."
---

# Viewing native Figma comments left by any Figma users in your current file

> You can easily view all of the Figma comments in your file from the _Figma Comments_ tab in the Commentful plugin.

## Loading Figma comments from your file automatically

[Video](/assets/videos/commentful/comments/leave-a-figma-comment.mp4)

After you've successfully connected your Figma file to the plugin, Commentful will automatically check for new Figma comments in your file every 60 seconds (to avoid API rate limits), allowing you to see all of your Figma comments at once, and [organize them](/commentful/comments/custom-statuses) into a Trello-style board, [search and filter](/commentful/comments/search-and-filter-comments) them, [add todo items](/commentful/todos/assign-todos), or [apply custom metadata](/commentful/comments/comment-metadata) like tags, assignees, due dates, etc, to them.

> **Warning:** ** Figma API Rate Limits (Effective Nov 17, 2024)** Figma limits API requests to **5 per minute** for Figma users on their Starter (free) tier. Commentful automatically mitigates this limit with caching and request limiting. For heavier usage (eg. posting many comments per minute via the Commentful plugin), consider upgrading to a Full Figma seat.

## See an activity overview of all the latest Figma comments post

[Video](/assets/videos/commentful/comments/view-latest-comment-activity.mp4)

You can click on the **Alert Bell** icon button to quickly see an overview of all of the latest Figma comment activity in your Figma file, and quickly jump to where they're located in your Figma file, or open up the comment in the plugin to view the full thread of replies (or add your own new reply).

## Jump to a pin to show where a Figma comment is on your canvas

[Video](/assets/videos/commentful/comments/jump-to-comment-pin.mp4)

To instantly reveal where any comment was posted on your Figma canvas, you can click on any numbered **Pin** icon button to jump to the spot where the Figma comment was posted, along with adding a visual numbered pin to the canvas (which will be removed automatmically when the plugin is closed).

---

---
url: "/commentful/faq/plans.md"
description: "To get unlimited usage of all of the Commentful Pro features, you will need to purchase a license from the [Hypermatic website](https://hypermatic.com/commentful#pro)."
---

# Commentful Free vs Commentful Pro

> To get unlimited usage of all of the Commentful Pro features, you will need to purchase a license from the [Hypermatic website](https://hypermatic.com/commentful#pro).

Commentful includes 10 free trials of the _Pro_ version. Once these trials have been used up, the Figma plugin will revert to their _Free_ version, which will have limited functionality.

  - **Commentful Free**: ### Todo List Items Unlimited Usage       ### Figma Comment Updates Try during 10 Pro Trials       ### Shared Review Links Try during 10 Pro Trials
  - **Commentful Pro**: ### Todo List Items Unlimited Usage       ### Figma Comment Updates Unlimited Usage       ### Shared Review Links Unlimited Usage

---

---
url: "/commentful/faq/security.md"
description: "Commentful runs as an official plugin inside of Figma's own app, which are reviewed and approved by the Figma team."
---

# Commentful Security

> Commentful runs as an official plugin inside of Figma's own app, which are reviewed and approved by the Figma team.

The Figma plugin is run directly from Figma's own servers, and runs inside of a your Figma file, which means that it inherits all of the [security](https://www.figma.com/security/) and infrastructure of the Figma platform, which exceed industry standards for data protection and security:

- SOC 2 Type 2
- SOC 3
- Cloud Security Alliance (CSA) STAR: Level 1
- ISO/IEC 27001:2013
- ISO/IEC 27018:2019
- EU Cloud Code of Conduct (COC): Level 2

There's **no additional software** that needs to be installed to use the Figma plugin, as Figma plugins run as a built-in part of Figma's own native functionality, and all Figma plugins easily accessibile and can be instantly run from inside any Figma file, or via the official [Figma Community](https://www.figma.com/community) ecosystem inside of the Figma app.

If your organization is already approved to use Figma, then you _already have access_ to Figma plugins.

## How Commentful works

The [Commentful Figma plugin](https://www.figma.com/community/plugin/1030968261424288884) uses the [Figma Plugins API](https://www.figma.com/plugin-docs/) and the [Figma REST API](https://www.figma.com/developers/api) to load in the Figma comments from your current file and allow them to be organized within the plugin's user interface.

It also allows users to keep a todo list of tasks, which are stored inside of the Figma file itself via the Figma Plugins API, and are _never_ uploaded, stored or used outside of the plugin.

You can also optionally create "Review" links, which allows users to optionally create password-protected URLs, which can be shared (by their choice) with any stakeholders to allow them to provide feedback on designs without needing a Figma account via the Commentful web app.

Any uploads and cloud storage services used by the Commentful Plugin and Commentful Web App are hosted on [Google Cloud](https://cloud.google.com/) (the same infrastructure that Google hosts all of its own products with), via [Google Firebase](https://firebase.google.com/).

As per the [Privacy and Security in Firebase](https://firebase.google.com/support/privacy), all Firebase services (aside from App Indexing) have successfully completed the **ISO 27001** and **SOC 1**, **SOC 2**, and **SOC 3** evaluation process, and some have also completed the **ISO 27017** and **ISO 27018** certification process.

## What Commentful does and doesn't do

Commentful uses the [Figma Plugins API](https://www.figma.com/plugin-docs/) and the [Figma REST API](https://www.figma.com/developers/api) to load in the Figma comments from your current file and allow them to be organized within the plugin's user interface.

### Commentful does

- Allow users to connect their Figma file to the plugin via the official [Figma REST API](https://www.figma.com/developers/api) to be able to read and post Figma comments in the current on the current Figma user's behalf.
- Encrypt any image uploads with AES-256.
- Download Excel (.xlsx) file exports of comments, todos and feedback files directly to the user's computer.
- Allow users to optionally create password-protected "Review" links that can be shared with stakeholders.

### Commentful does _not_

- Share _any_ comments, todos or other data from your Figma file design.
- Make _any_ password-protected "Review" URLs created via the plugin publicly accessible or indexed by any search engines.
- Collect or store _any_ personal information (Figma plugins *cannot* access any private information about Figma projects, Figma teams or Figma users).

## How Figma plugins work

Figma plugins are written in HTML/CSS/Javascript, and are run in a tightly controlled [sandbox environment](https://www.figma.com/plugin-docs/how-plugins-run/) inside of the main Figma application.

Figma plugins can only do whatever Figma allows them to do inside the permissions of the [Figma Plugins API](https://www.figma.com/plugin-docs/), and importantly, **plugins don't have any access to personal information** about the Figma user running the plugin.

## What Figma plugins can and can't do

As per the article on [Figma plugin security](https://www.figma.com/blog/how-we-built-the-figma-plugin-system/), there are a limited number of things that Figma plugins can do, and many more things that they can't do:

### Figma plugins can

- Only be run by an explicit user action
- Show UI in a single plugin-specific dialog
- Read any data in your Figma document (e.g. a “find layer by name” plugin)
- Modify any data in your Figma document (e.g. a “rename selected layers” plugin)
- Communicate with any server over the internet (e.g. an “import from service X” plugin)

### Figma plugins _cannot_

- Run by themselves
- Get information about the project or team that owns the file
- Access anything when they aren’t running
- Access data from any files other than the file they were run in
- Change Figma’s UI outside of the plugin UI dialog

> **Tip:** Figma account administrators at your company can [configure an allowlist of plugins](https://help.figma.com/hc/en-us/articles/4404228724759-Manage-plugins-and-widgets-in-an-organization) that are allowed inside the organization. This can be used to prevent untrusted Figma plugins from being run in any file in that organization.

---

---
url: "/commentful/faq/troubleshooting.md"
description: "Troubleshooting guide for Commentful with network and plugin loading issues."
---

# Troubleshooting Commentful

> Troubleshooting guide for Commentful with network and plugin loading issues.

### Netskope blocking the Commentful web app from loading

There is a known issue with [Netskope](https://www.netskope.com/) blocking access to Firebase databases; to resolve this, please ensure you allow `firestore.googleapis.com:443` (as per [this thread](https://stackoverflow.com/questions/52441316/firestore-grpc-behind-a-corporate-firewall-proxy)).

  ### VPN may be required in China

Please note, if you're in China, the accounts server _may_ be blocked by "The Great Firewall of China". If you're seeing an activation error, despite using a valid key, you will likely need to use a [VPN](https://protonvpn.com/free-vpn/) to resolve the issue.

  ### 'An error occurred while loading the plugin environment'

This may happen in the Figma desktop app if [the Use Developer VM](https://www.figma.com/plugin-docs/debugging/#developer-vm) debug setting in Figma is enabled by mistake; you can make sure it's turned off by **right-clicking** anywhere on your Figma canvas, hovering over **Plugins**, then hovering over **Development**, and making sure that the **Use Developer VM** is _unchecked_; after it is unchecked (and does _not_ have a tick icon next to it), re-running the Figma plugin should work as expected.

---

---
url: "/commentful/overview/install.md"
description: "Ensure you're logged into your Figma account, then follow the steps below to install and run the [Commentful Figma plugin](https://www.figma.com/community/plugin/1030968261424288884/commentful-feedback-workflow)."
---

# Install and run the Commentful Figma Plugin

> Ensure you're logged into your Figma account, then follow the steps below to install and run the [Commentful Figma plugin](https://www.figma.com/community/plugin/1030968261424288884/commentful-feedback-workflow).

### Video Tutorial: How to install (and remove) Figma plugins

This video tutorial is a complete step-by-step guide showing you the new process of how to install (and remove) Figma plugins after the mid-2024 "UI3" update to the Figma app
[Embedded media](https://www.youtube.com/embed/CzjxF2Jv6PM)

## Installing the Commentful Figma Plugin

1. Open any Figma file.
2. Click on the **Actions** icon in the bottom Figma toolbar.
3. Click the **Plugins & Widgets** tab to filter results to Figma plugins.
4. Search for **Commentful** in the search bar.
5. Click on the **Commentful** search result.
6. Click the **Save** button to install the Commentful plugin.

> **Note:** Figma users in a **Figma Organization** may only be able to install approved plugins. Please contact your Figma Org admin at your company to [approve the Commentful plugin](https://help.figma.com/hc/en-us/articles/4404228724759-Manage-plugins-and-widgets-in-an-organization) if you're unable to install certain Figma plugins.

## Running the Commentful Figma Plugin

Once you've [installed](#installing-the-figma-plugin) the **Commentful** Figma plugin, to run the plugin in your Figma file:

  1. **Right-click** anywhere on your Figma file's page canvas
  2. Hover your mouse over the **Plugins** ▶ menu item
  3. Hover your mouse over the **Saved plugins** ▶ menu item
  4. Click on the **Commentful** plugin menu item

> **Tip:** After you've run the **Commentful** plugin once in a Figma file, you'll be able to quickly re-launch it by clicking the **Commentful** icon in the right-hand side Figma column (under the **Plugin** subheading).

> **Warning:** Only Figma users with **Edit** access to a Figma file can run a Figma plugin in that Figma file; if you only have **View** permissions, you won't be able to run any Figma plugins in that file.

## Uninstalling the Commentful Figma plugin

1. Open any Figma file.
2. Click on the **Actions** icon in the bottom Figma toolbar.
3. Click the **Plugins & Widgets** tab to filter results to Figma plugins.
4. Search for **Commentful** in the search bar.
5. Click on the **Commentful** search result.
6. Click the **Remove** button to uninstall the Commentful plugin.

> **Note:** This will remove the plugin from your **Saved Plugins** list, however, the Figma plugin may still show up under your **Recents** list (if it has been recently run), as Figma saves this list of recent plugins in your browser's/app's local storage. The plugin will vanish from the Recents menu after other plugins are run to take its place.

---

---
url: "/commentful/overview/pro.md"
description: "After trying out all the Pro features of Commentful **10 times**, you can optionally upgrade to continue using all the extra features that are only available in the Pro version; or if you're a casual user, you can continue using the Free version forever."
---

# Activating Commentful Pro

> After trying out all the Pro features of Commentful **10 times**, you can optionally upgrade to continue using all the extra features that are only available in the Pro version; or if you're a casual user, you can continue using the Free version forever.

> **Tip:** Need a Commentful Pro account? You can purchase a Pro account for you or your team by visiting the [Commentful](https://www.hypermatic.com/commentful/#pro) product page on the Hypermatic website.

## Activating the Figma plugin with an Commentful Pro license key

1. **Purchase a Pro license** for you or your team by visiting the [Commentful](https://www.hypermatic.com/commentful/#pro) product page on the Hypermatic website.
2. **Run the Commentful Plugin**, then click on the **Upgrade Now** button at the bottom of the Figma plugin window.
3. **Paste in your Pro key**, then click the **Unlock** button.

This will unlock the Pro version of Commentful and give you unlimited use all of the Figma plugin features.

> **Warning:** Please note, if you're in China, the accounts server _may_ be blocked by "The Great Firewall of China". If you're seeing a activation error, despite using a valid key, you will likely need to use a [VPN](https://protonvpn.com/free-vpn/) to resolve the issue.

> **Info:** If you ever need to use a different license key at any time (eg. you were using your own personal Pro license key, but now your employer is buying you a Pro license to use instead), you can press **CTRL + K** while your plugin window is open in Figma, and this will bring up the license key prompt again, where you can enter a different license key.

---

---
url: "/commentful/overview/quickstart.md"
description: "Supercharge your Figma comments and gather external feedback from stakeholders."
---

# Get Started with Commentful

> Supercharge your Figma comments and gather external feedback from stakeholders.

[![Commentful Figma Plugin](https://www.hypermatic.com/commentful.jpg)](https://www.figma.com/community/plugin/1030968261424288884/commentful-feedback-workflow)

## Install & Activate Commentful

- [Install & Run the Figma plugin](/commentful/overview/install.md): How to run Commentful inside of Figma
- [Activate Commentful Pro](/commentful/overview/pro.md): How to buy and use a Pro license key

## Using Commentful

  - [Commentful Documentation](/commentful/setup/connect-figma-file.md): Detailed docs with short screencaps
  - [Commentful Video Tutorials](/commentful/tutorials.md): Full step-by-step video walkthroughs

## Frequently Asked Questions

- [Troubleshooting Commentful](/commentful/faq/troubleshooting.md): Common issues issues you may run into
- [Commentful Security](/commentful/faq/security.md): Details about how Commentful works
- [Receipts](/faq/receipts.md): Find email receipts and PDF invoices
- [Billing](/faq/billing.md): Manage your Pro subscription
- [License Seat Management](/faq/seats.md): Manage the Figma users on your key
- [Commentful Free vs Pro](/commentful/faq/plans.md): Compare Free vs Pro features

[Video](https://www.hypermatic.com/assets/videos/commentful/COMMENTFUL_DEMO.mp4)

## Commentful Features

- Organize Figma comments by custom statuses on a kanban board
- Supercharge your Figma comments by adding tags, due dates and todos
- See all todos assigned to you (and your own private todos) in one place
- Easily filter your Figma comments by frames, dates, status, users, tags
- Instantly search for Figma comments with autocomplete results
- Add markdown formatting, links and lists to your Figma comments
- Gather external design feedback from anyone outside of your Figma file
- Optional Slack, Zapier and Make integrations to be notified of any review link activity
- Automatically apply external text and image feedback in Figma with one click
- Export your Figma comments, todos and external feedback to CSV and JSON files

---

---
url: "/commentful/reviews/applying-figma-feedback.md"
description: "After you've gathered some text content and/or image content feedback via a review link, you can automatically apply the content updates in Figma with one click."
---

# Automatically applying text and image feedback from a shared review link in your Figma file

> After you've gathered some text content and/or image content feedback via a review link, you can automatically apply the content updates in Figma with one click.

[Video](/assets/videos/commentful/reviews/apply-figma-feedback-updates.mp4)

To automatically apply any text or image feedback left via the review link, with the _Reviews_ tab selected in the plugin and a **Review** card already open, you can click on the **Update In Figma** button next to any text or image feedback item to automatically apply the text content update to that Figma layer, or insert the image file uploaded via the review link to that Figma layer's image fills.

> **Tip:** Clicking on a **Update In Figma** button will apply the content update and automatically check the checkbox for that review feedback item, mark it off as completed; if you click a completed checkbox, this will revert the todo item to being incomplete again, but won't undo the content update, which you can optionally do by pressing `CMD + Z` (on Mac) or `CTRL + Z` (on Windows).

---

---
url: "/commentful/reviews/create-new-version.md"
description: "After you've created your initial review URL, you can optionally upload additional _versions_ of the link for stakeholders to review as the iterations of the design progress."
---

# Upload a new version to your existing shareable review link

> After you've created your initial review URL, you can optionally upload additional _versions_ of the link for stakeholders to review as the iterations of the design progress.

[Video](/assets/videos/commentful/reviews/create-new-version-url.mp4)

To create a new version for an existing review URL, click on the _Reviews_ tab, then click on an existing **Review** card, then click on the **Plus** icon button, select the Figma frames you'd like to upload (and select the order you'd like them to appear in).

Once you've selected your Figma frames, give it a **New Version Label** (which will be shown in your Review's _Versions_ [dropdown selector](/commentful/reviews/switching-review-versions), and also user-facing in the web app's heading text when viewing the versioned review link), then click the **Create New Version Review URL** button to upload your frames and generate an additional version on your review link.

Once the static Figma frame images have finished uploading, you'll be able to **copy the new version Review URL** and password (or the _passwordless_ URL) to share it with any stakeholders, which will let them [leave feedback on your designs via the Commentful web app](/commentful/reviews/leaving-feedback) in the browser.

> **Note:** Please note that once you've uploaded frames to a versioned review link, you won't able to _update_ or _re-upload_ them on the same version link. The versioned review links are designed to be a snapshot in time of the design, so the position/context of any comments that are left on the link could potentially be out of sync or irrelevant if the original link's designs were re-uploaded later. Versioned links allow you to create multiple snapshots and capture feedback for multiple iterations of your designs, and switch back to them at different points in time, to see what feedback was left before and what has changed since.

---

---
url: "/commentful/reviews/create-review-link.md"
description: "You can upload any Figma frames from your page to create a review link, which can be viewed in the browser (without needing a Figma account) to allow anyone to leave feedback on your static designs without being in your Figma file."
---

# Create a shareable review link to gather external feedback on your designs

> You can upload any Figma frames from your page to create a review link, which can be viewed in the browser (without needing a Figma account) to allow anyone to leave feedback on your static designs without being in your Figma file.

[Video](/assets/videos/commentful/reviews/create-and-copy-review-url.mp4)

You can create an external shareable review link that you can send to any clients or stakeholders to review your designs and leave feedback (without needing a Figma account) directly from the Commentful Figma plugin.

To create a brand new review URL to share, click on the _Reviews_ tab, then click the **Create New Review Link** button, select the Figma frames you'd like to upload (and select the order you'd like them to appear in).

Once you've selected your Figma frames, give it a **Review Title** (which will be shown in your plugin's _Reviews_ tab, and also user-facing in the web app's heading text when viewing a review link), then click the **Create New Review URL** button to upload your frames and generate a brand new review URL.

Once the static Figma frame images have finished uploading, you'll be able to **copy the Review URL** and password (or the _passwordless_ URL) to share it with any stakeholders, which will let them [leave feedback on your designs via the Commentful web app](/commentful/reviews/leaving-feedback) in the browser.

> **Note:** Please note that once you've uploaded frames to a review link, you won't able to _update_ or _re-upload_ them on the same link. The review links are designed to be a snapshot in time of the design, so the position/context of any comments that are left on the link could potentially be out of sync or irrelevant if the original link's designs were re-uploaded later. Instead, you can [create new versions](/commentful/reviews/create-review-link) for any existing review link, to create multiple snapshots and capture feedback for multiple iterations of your designs.

## Edit a review link title

[Video](/assets/videos/commentful/reviews/edit-review-title.mp4)

If you've already uploaded a review link but want to change the title (which shows up in your plugin's _Reviews_ tab, and also user-facing in the web app's heading text when viewing a review link), with the _Reviews_ tab selected in the plugin, you can click on a **Review** card to select it, then click on the **Share Link URL** tab, click on the **Pencil** icon button, type your new review link title, then click on the **Update Title** button to save it.

---

---
url: "/commentful/reviews/delete-review-link.md"
description: "You can permanently delete any review link (including any 'versions' created for it) from the Commentful plugin."
---

# Delete a review link URL, along with any feedback left on it

> You can permanently delete any review link (including any 'versions' created for it) from the Commentful plugin.

[Video](/assets/videos/commentful/reviews/delete-share-link.mp4)

To delete any review link URL (along with any _Versions_ of it, and any client feedback already submitted via the link) from the Commentful Figma plugin, with the _Reviews_ tab selected in the plugin and a **Review** card already open, you can click on the **Trash** icon button in the top right of the plugin window.

If you're sure you want to permanently delete the review link, enable the **Yes, I want to delete this entire review** toggle, and then you can click the **Delete this Shared Review** button to confirm; then this will instantly and _permanently_ delete the review URL, along with any _versions_ of the review link that were uploaded, and any feedback that was already submitted via the review link.

> **Warning:** Please be mindful that deleting a Review Link will **permanently delete it**, this includes the URL itself (which will become inactive), along with any feedback already left via the review link.

---

---
url: "/commentful/reviews/export-review-feedback.md"
description: "You can export and copy review link feedback from the Commentful web app as CSV, Markdown, or ready-to-paste AI summary prompts."
---

# Export review link feedback from the Commentful web app

> You can export and copy review link feedback from the Commentful web app as CSV, Markdown, or ready-to-paste AI summary prompts.

## Export review feedback to CSV from the Figma plugin

[Video](/assets/videos/commentful/reviews/export-review-feedback-to-csv.mp4)

To export a list of any review link feedback and change requests from the Commentful Figma plugin, with the _Reviews_ tab selected in the plugin and a **Review** card already open, you can click on the **Export Feedback** button in the bottom right of the plugin window.

This will automatically export and download all of the feedback for the review link version you're currently viewing, which will be saved directly to your computer as a `.csv` file you can open as a spreadsheet in an app of your choice (eg. Microsoft Excel, Google Sheeets or Apple Numbers).

## Export review feedback from the Commentful web app

[Video](/assets/videos/commentful/reviews/export-web-app-feedback-csv.mp4)

To export a list of any review link feedback and change requests from the Commentful web app, click the **Show All Feedback** button in the top right of the browser window, then click the **Export Feedback** dropdown in the top of the feedback panel.

The export menu can be used with the feedback that is currently visible in the panel, so any active search query, author filter, date range, feedback type filter or completed-feedback filter will be respected.

### Download CSV

Choosing **Download CSV** will automatically export and download the currently filtered feedback as a `.csv` file you can open in an app of your choice (eg. Microsoft Excel, Google Sheets or Apple Numbers).

### Copy Markdown or CSV

If you want to paste your feedback into another tool, document or chat, you can also use:

- **Copy as Markdown**
- **Copy as CSV**

These options will copy the currently filtered feedback directly to your clipboard.

### Copy an AI summary prompt

You can also use the export menu to prepare a ready-to-paste summary prompt for:

- **Summarize in ChatGPT**
- **Summarize in Claude**
- **Summarize in Gemini**

Each option copies a pre-written prompt to your clipboard that already includes the currently filtered review feedback, making it easy to paste into the AI tool of your choice and quickly generate a summary, grouped themes, priorities and action items.

> **Tip:** Whenever an export or copy action succeeds in the web app, Commentful will show a confirmation message in the feedback sidebar so you can quickly verify that the action worked.

---

---
url: "/commentful/reviews/leaving-feedback.md"
description: "Review links that you've created with the Commentful plugin can be viewed in the browser via the Commentful web app (without needing a Figma account) to allow anyone to leave feedback on your static designs without being in your Figma file."
---

# Gathering design feedback and approval statuses from clients using the Commentful web app

> Review links that you've created with the Commentful plugin can be viewed in the browser via the Commentful web app (without needing a Figma account) to allow anyone to leave feedback on your static designs without being in your Figma file.

## Leaving general comments, text content and image content feedback

[Video](/assets/videos/commentful/reviews/leave-feedback-types.mp4)

There are 3 different modes of feedback that a reviewer can use to provide general comments or text/image change requests:

### Leave Comments

By clicking on the **Leave Comments** button (which is the default mode), a reviewer will be able to drop a feedback pin anywhere on your Figma frames and leave a general comment on that area of the design.

This feedback will need to be taken into account and actioned manually in Figma. You can also have a threaded conversion on these general types of comments by [replying the original comment](#replying-to-general-comment-threads) via the Commentful Figma plugin or directly in the Commentful web app.

### Request Text Updates

By clicking on the **Request Text Updates** button, you can switch into a mode which reveals clickable areas where any Figma text layers are located in the original Figma frames.

This will allow a reviewer to click on any of these text areas and request text changes to that text layer.

When you view these text update requests in the Commentful Figma plugin, you'll be able to [automatically apply these text content updates](/commentful/reviews/applying-figma-feedback) to the corrosponding Figma layer with one click.

### Request Images Updates

By clicking on the **Request Images Updates** button, you can switch into a mode which reveals clickable areas where any Figma layers that contain _Image fills_ are located in the original Figma frames.

This will allow a reviewer to click on any of these image areas and request an image update to that text layer by uploading an image file from their computer.

When you view these image update requests in the Commentful Figma plugin, you'll be able to [automatically apply the image fill updates](/commentful/reviews/applying-figma-feedback) to the corrosponding Figma layer with one click.

## Replying to general comment threads

[Video](/assets/videos/commentful/reviews/replying-to-threads.mp4)

You can reply to any feedback pins that were created in the [Leave Comments](#leave-comments) feedback mode via the Commentful Figma plugin or directly in the Commentful web app.

## Enabling desktop notifications and mention handles

While viewing a Commentful review link in your browser, you can enable desktop notifications for that review so you can be alerted when new feedback is added.

To do this, open the **Notifications** panel in the Commentful web app, then:

1. Click **Enable Notifications**
2. Allow notifications in your browser
3. Optionally set your **Display Name** and **Mention Handle**
4. Choose whether you'd like to be notified about **All review activity** or **Only when I'm @mentioned**

Once a reviewer has enabled notifications and saved a mention handle, other reviewers can notify them directly by typing `@handle` in a new comment or reply.

> **Tip:** Mention suggestions will appear inline while typing `@` in the comment field, making it easier to notify reviewers who have already enabled notifications on that review link.

> **Note:** Desktop notifications are enabled per browser/device, so if a reviewer wants to receive notifications on another computer or browser, they'll need to enable them there as well.

## Editing Text Change Requests

[Video](/assets/videos/commentful/reviews/edit-text-feedback.mp4)

You can edit any feedback pins that were created in the [Request Text Updates](#request-text-updates) feedback mode via the Commentful Figma plugin or directly in the Commentful web app by clicking on the **Edit** toggle button in the feedback sidebar (after clicking your pin), making any content updates in the text field, then clicking the **Update Requested Text Change** button too apply the update..

## Viewing and searching all of the feedback on your review link

[Video](/assets/videos/commentful/reviews/view-and-search-feedback.mp4)

You can view a list of all the feedback that's been left on your current review link by clicking on the **Show All Feedback** button in the top right of the browser window.

This opens a feedback sidebar that can display the current review in multiple formats:

- **List View** for reading through each feedback item one by one
- **Kanban View** for organizing feedback into workflow columns
- **Table View** for scanning the review feedback in a more compact format

Along with the comment or text/image feedback itself, the sidebar also includes filters for feedback type, author, completed feedback state, date range and free-text search.

> **Tip:** If you prefer to review the feedback outside of the browser, you can use the [Export Feedback](/commentful/reviews/export-review-feedback) dropdown to download a CSV file, copy the filtered feedback as Markdown or CSV, or copy an AI-ready summary prompt.

### Searching your feedback

You can easily perform a _text search_ of all the feedback by typing a word that queries for either the **Comment** content, the **Username** of the reviewer (this is [the reviewer name that they set](#updating-your-reviewer-name) before leaving any feedback), or the **Pin Number** (if you already know the pin number you want to lookup).

### Filtering completed feedback and visual pins

The feedback sidebar also includes a **completed feedback** filter with three options:

- **Include completed feedback**
- **Hide completed feedback**
- **Hide completed feedback (and visual pins)**

If you choose **Hide completed feedback (and visual pins)**, completed feedback will be hidden from both the feedback sidebar and the numbered pin overlays shown on top of the review frames, making it easier to focus only on work that is still active.

## Navigating feedback pins left by reviewers

[Video](/assets/videos/commentful/reviews/view-feedback-pins.mp4)

You can click on any feedback pin that was left on your Figma frames by clicking any the numbered **Pin** icon buttons that are floating over your designs, which will open up the feedback left on that pin as a pop-out panel on the right side of your browser window.

If you're browsing all of the pins in the [feedback panel](#viewing-and-searching-all-of-the-feedback-on-your-review-link) list instead, you can also click on the **Pin** icon buttons next to each feedback item in this list as well, which will automatically scroll that comment into view and briefly animate it to make it easier to see (which can be useful if you have lots of pins on the page at once).

## Organising feedback into Kanban board statuses

[Video](/assets/videos/commentful/reviews/kanban-board-view.mp4)

You can optionally sort any feedback left on your designs into customizeable statuses by clicking on the **Kanban View** tab (while the **Show All Feedback** panel is open); this allows you to drag and drop feedback cards into different columns, re-arrange their stacking order in an existing column, or create, rename, re-arrange and delete the status columns themselves, to more easily track where things are at while working through feedback.

## Setting the approval status of a Figma frame

[Video](/assets/videos/commentful/reviews/set-frame-approval-statuses.mp4)

Along with [leaving feedback](#leaving-general-comments-text-content-and-image-content-feedback) on your designs, a reviewer can also set the approval status of any Figma frame by changing the **Approval** dropdown menu to one of the following options:

- Not Approved Yet
- Approved (With Changes)
- Approved

Changing the approval status will update the color and status label above that Figma frame in your Commentful web app review link; this will allow you to easily see the approval status of your frames at a glance.

## Changing the view mode for the Figma frames

[Video](/assets/videos/commentful/reviews/change-frame-scale-mode.mp4)

By default, all of the static Figma frames you've uploaded will be visible at once, where the reviewer can easily scroll vertically and horizintally to see all of the frames and add feedback where needed.

The way that the frames are displayed can be changed by clicking on a different **View Mode** button in the bottom left corner of the page when viewing a review link.

## Copying a direct Commentful web app link to a Figma frame

[Video](/assets/videos/commentful/reviews/share-frame-link.mp4)

You or your reviewers can copy a direct link to any Figma frame in your review link by clicking on the **Copy Link To This Frame** icon button, which will copy a direct link to the clipboard.

Pasting this link and visiting it in your browser will automatically scroll to that Figma frame on the review link, and also highlight it with a colored outline to easily see which frame is being linked to.

This feature can be useful for sending a link to a specific frame that you would like a reviewer to look at or provide feedback on.

## Updating your reviewer name

[Video](/assets/videos/commentful/reviews/set-reviewer-name.mp4)

Before someone can start leaving feedback on a review link, they'll need to set their name (to identify who has left which pieces of feedback).

The name input will appear automatically if it hasn't already been set, or you can change this manually at any time by clicking on the **Name** button in the bottom right corner of the page when viewing a review link.

> **Tip:** You can pre-populate a reviewer's name when sending them the initial share link by adding their name in the **Review Share URL** panel for the review in the Commentful Figma plugin.

If a reviewer also enables desktop notifications, their reviewer name can be used as the basis for a default mention handle, which they can customize in the **Notifications** panel.

---

---
url: "/commentful/reviews/make-integration.md"
description: "You can optionally have notifications sent to a Make webhook every time a new comment is left on a Commentful review link you've shared with a client."
---

# Setup Make webhook for review link comments

> You can optionally have notifications sent to a Make webhook every time a new comment is left on a Commentful review link you've shared with a client.

## Create a Make Webhook

### 1. Create a new scenario (if you don't have one already)

[Create your Make scenario](https://www.make.com/en/scenarios)

Click **Create a new scenario** to start building your automation.

### 2. Add a Webhooks module

Search for and add the **Webhooks** module as your trigger.

Choose **Custom webhook** and click **Add** to create a new webhook.

### 3. Copy your Make Webhook URL

Make will generate a unique webhook URL for you that looks like this:

`https://hook.make.com/abcdefghijklmnopqrstuvwxyz123456`

Copy this URL - you'll need it to configure Commentful.

> **Tip:** You can leave the Make setup page open while you configure Commentful, as Make will wait for the first webhook to arrive to determine the data structure.

### 4. Configure your scenario actions

After setting up Commentful (see below), you can configure what happens when a comment is received:

- Send to Slack, Discord, or Microsoft Teams
- Create a task in Asana, Monday, or Notion
- Send an email notification via Gmail or SendGrid
- Add to Google Sheets or Airtable
- Or connect to 1,500+ other apps and services

## Add your Make webhook URL via the Commentful plugin

[Video](/assets/videos/commentful/reviews/save-slack-webhook.mp4)

To set up the Commentful Make integration, you can create a Make Webhook URL by [following the steps above](#create-a-make-webhook), and then in the Commentful Figma plugin under the **Settings** icon button (in the top right of the plugin window):

1. Click **Enable webhook notifications for review links**
2. Select **Make** from the **Webhook Platform** dropdown
3. Copy/paste in your Make Webhook URL:

   eg. `https://hook.make.com/abcdefghijklmnopqrstuvwxyz123456`

> **Tip:** You can make sure the Make integration is working by clicking the **Send Test Message** button, which will send a test notification from Commentful to your Make webhook.

## Add your Make webhook URL via the Commentful web app

To set up the Commentful Make integration, you can create a Make Webhook URL by [following the steps above](#create-a-make-webhook), and then in Commentful Web App (when opening any shared review link in your browser):

1. Press the **CTRL + K** keys on your keyboard to open settings
2. Click **Enable webhook notifications for review links**
3. Select **Make** from the **Webhook Platform** dropdown
4. Copy/paste in your Make Webhook URL:

   eg. `https://hook.make.com/abcdefghijklmnopqrstuvwxyz123456`

> **Tip:** You can make sure the Make integration is working by clicking the **Send Test Message** button, which will send a test notification from Commentful to your Make webhook.

## Webhook Payload Examples

Commentful sends structured JSON payloads to Make webhooks with clear, easy-to-use fields. The payload structure varies based on the type of activity.

### Test Message

When you click "Send Test Message", this payload is sent:

```json
{
  "type": "test",
  "author": {
    "name": "johndoe",
    "displayName": "John Doe (Project Name)"
  },
  "project": {
    "name": "Homepage"
  },
  "frame": {
    "name": "Homepage",
    "nodeId": "123:456"
  },
  "urls": {
    "commentful": "https://commentful.hypermatic.com/share/xxx/yyy",
    "figma": "https://www.figma.com/file/xxx?node-id=123"
  },
  "action": "[Test Message] Yay! Your Make Webhook URL is working!",
  "message": "[Test Message] Yay! Your Make Webhook URL is working!",
  "timestamp": 1234567890
}
```

### New Comment

When someone posts a new comment on a frame:

```json
{
  "type": "comment",
  "author": {
    "name": "johndoe",
    "displayName": "John Doe (Project Name)"
  },
  "project": {
    "name": "Homepage"
  },
  "frame": {
    "name": "Homepage",
    "nodeId": "123:456"
  },
  "urls": {
    "commentful": "https://commentful.hypermatic.com/share/xxx/yyy?pin=abc123",
    "figma": "https://www.figma.com/file/xxx?node-id=123"
  },
  "action": "New Feedback Comment",
  "message": "This section needs more contrast for accessibility",
  "timestamp": 1234567890,
  "feedbackId": "abc123"
}
```

### Reply to Comment Thread

When someone replies to an existing comment:

```json
{
  "type": "reply",
  "author": {
    "name": "janesmith",
    "displayName": "Jane Smith (Project Name)"
  },
  "project": {
    "name": "Homepage"
  },
  "frame": {
    "name": "Homepage",
    "nodeId": "123:456"
  },
  "urls": {
    "commentful": "https://commentful.hypermatic.com/share/xxx/yyy?pin=abc123",
    "figma": "https://www.figma.com/file/xxx?node-id=123"
  },
  "action": "New Comment Thread Reply",
  "message": "I'll update the contrast ratio to meet WCAG AA standards",
  "timestamp": 1234567890,
  "feedbackId": "abc123"
}
```

### Text Change Request

When someone requests a text change:

```json
{
  "type": "text",
  "author": {
    "name": "johndoe",
    "displayName": "John Doe (Project Name)"
  },
  "project": {
    "name": "Homepage"
  },
  "frame": {
    "name": "Homepage",
    "nodeId": "123:456"
  },
  "urls": {
    "commentful": "https://commentful.hypermatic.com/share/xxx/yyy?pin=abc123",
    "figma": "https://www.figma.com/file/xxx?node-id=123"
  },
  "action": "New Text Change Request",
  "message": "",
  "timestamp": 1234567890,
  "feedbackId": "abc123",
  "textChange": {
    "original": "Sign Up Now",
    "new": "Get Started Today"
  }
}
```

### Image Change Request

When someone uploads an image as feedback:

```json
{
  "type": "image",
  "author": {
    "name": "johndoe",
    "displayName": "John Doe (Project Name)"
  },
  "project": {
    "name": "Homepage"
  },
  "frame": {
    "name": "Homepage",
    "nodeId": "123:456"
  },
  "urls": {
    "commentful": "https://commentful.hypermatic.com/share/xxx/yyy?pin=abc123",
    "figma": "https://www.figma.com/file/xxx?node-id=123"
  },
  "action": "New Image Change Request",
  "message": "",
  "timestamp": 1234567890,
  "feedbackId": "abc123",
  "image": {
    "url": "https://example.com/path/to/image.png",
    "fileName": "updated-logo.png"
  }
}
```

### Status Update

When someone changes the status of a comment (e.g., "To Do" → "Done"):

```json
{
  "type": "status",
  "author": {
    "name": "johndoe",
    "displayName": "John Doe (Project Name)"
  },
  "project": {
    "name": "Homepage"
  },
  "frame": {
    "name": "Homepage",
    "nodeId": "123:456"
  },
  "urls": {
    "commentful": "https://commentful.hypermatic.com/share/xxx/yyy?pin=abc123",
    "figma": "https://www.figma.com/file/xxx?node-id=123"
  },
  "action": "Updated to Done",
  "message": "",
  "timestamp": 1234567890,
  "feedbackId": "abc123",
  "status": {
    "text": "Done",
    "color": "#1bc47d"
  }
}
```

## Determining the Data Structure

After you send your first test message from Commentful, Make will automatically detect the webhook data structure. Click **OK** in the Make webhook module to confirm the structure, then continue building your scenario with the available data fields.

## Using the Webhook Data in Make

All webhook payloads have consistent, easy-to-access fields that you can map directly in your Make scenario:

### Common Fields (in every payload)

- **type** - The activity type: `test`, `comment`, `reply`, `text`, `image`, or `status`
- **author.name** - The user's handle/username
- **author.displayName** - The formatted display name with project context
- **project.name** - The project or page name
- **frame.name** - The Figma frame name
- **frame.nodeId** - The Figma node ID
- **urls.commentful** - Direct link to view in Commentful
- **urls.figma** - Direct link to open in Figma
- **action** - Human-readable description of the activity
- **message** - The comment or feedback message (may be empty for text/image/status changes)
- **timestamp** - Unix timestamp of when the activity occurred
- **feedbackId** - Unique ID for this feedback item (not present in test messages)

### Activity-Specific Fields

Depending on the `type`, additional fields are available:

- **textChange** (when `type` is `text`):
  - `textChange.original` - The original text
  - `textChange.new` - The requested new text

- **image** (when `type` is `image`):
  - `image.url` - URL to the uploaded image
  - `image.fileName` - Original filename of the image

- **status** (when `type` is `status`):
  - `status.text` - The new status name (e.g., "Done", "In Progress")
  - `status.color` - Hex color code for the status

### Common Make Scenarios

1. **Router Module** - Filter by `type` field to route different activities to different paths
2. **Direct Field Mapping** - Map fields like `author.displayName`, `message`, and `action` directly to output modules
3. **HTTP Module** - Use `image.url` to download and process uploaded images
4. **Slack/Discord/Teams** - Forward formatted notifications using structured fields
5. **Google Sheets/Airtable** - Log all feedback with clean, structured data
6. **Asana/Monday/Notion** - Create tasks with all relevant details pre-mapped
7. **Conditional Logic** - Filter by `status.color` or `type` to trigger specific workflows
8. **Email** - Send formatted notifications using `urls.commentful` and `urls.figma` for clickable links

---

---
url: "/commentful/reviews/slack-integration.md"
description: "You can optionally have notifications sent to a Slack channel every time a new comment is left on a Commentful review link you've shared with a client."
---

# Setup Slack notification for review link comments

> You can optionally have notifications sent to a Slack channel every time a new comment is left on a Commentful review link you've shared with a client.

## Generate a webhook in Slack

### 1. Create a Slack app (if you don't have one already)

[Create your Slack app](https://api.slack.com/apps/new)

Pick a name, choose a workspace to associate your app with (bearing in mind that you'll probably be posting lots of test messages, so you might want to create a channel for sandbox use), and then click **Create App**. If you've already created an app, you can use that one instead.

### 2. Enable Incoming Webhooks for your Slack app

After creating your Slack app, you'll be redirected to the settings page for your new app (if you are using an existing app, just load its settings via your [app's management dashboard](https://api.slack.com/apps)).

From here select the **Incoming Webhooks** feature, and click the **Activate Incoming Webhooks** toggle to switch it on.

### 3. Create an Incoming Webhook to your Slack workspace

Now that Incoming Webhooks are enabled, the settings page should refresh and some extra options will appear. One of those options will be a really helpful button marked **Add New Webhook to Workspace**, and you should click it.

What this button does is trigger a shortcut version of the installation flow for Slack apps, one that is completely self-contained so that you don't have to actually built any code to generate an Incoming Webhook URL. You'll see something like the following screen:

![Permissions screen with incoming webhooks channel selector](/assets/images/commentful/slack-webhook-example.png)

Go ahead and pick a channel that the app will post to, and then click the **Authorize** button. If you need to add the Incoming Webhook to a private channel, you must first be in that channel.

You'll be sent back to your app settings, and you should now see a new entry under the **Webhook URLs for Your Workspace** section, with a Webhook URL that'll look something like this:

`https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX`

That URL is your shiny new Incoming Webhook, one that's specific to a single user, and a single channel.

## Add your Slack webhook URL via the Commentful plugin

[Video](/assets/videos/commentful/reviews/save-slack-webhook.mp4)

To set up the Commentful Slack notifications, you can create a Slack Webhook URL by [following the steps above](#generate-a-webhook-in-slack), and then in the Commentful Figma plugin under the **Settings** icon button (in the top right of the plugin window), then click **Enable Slack notifications for review links**, then copy/paste in your Slack Webhook URL:

eg. `https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX`)

> **Tip:** You can make sure the Slack integration is working by clicking the **Send Test Message to Slack** button, which will send a test notification from Commentful to your Slack channel.

## Add your Slack webhook URL via the Commentful web app

To set up the Commentful Slack notifications, you can create a Slack Webhook URL by [following the steps above](#generate-a-webhook-in-slack), and then in Commentful Web App (when opening any shared review link in your browser), press the **CTRL + K** keys on your keyboard , then copy/paste in your Slack Webhook URL:

eg. `https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX`)

> **Tip:** You can make sure the Slack integration is working by clicking the **Send Test Message to Slack** button, which will send a test notification from Commentful to your Slack channel.

> **Note:** Slack webhook notifications are sent to your chosen Slack channel as channel alerts. If you include text like `@name` in your Commentful comments, Slack may display that text in the message body, but Commentful does not automatically map Commentful reviewers to Slack users for guaranteed native Slack mentions.

---

---
url: "/commentful/reviews/switching-review-versions.md"
description: "If you've uploaded multiple versions for any of your review links, you can switch between them in the Commentful Figma plugin and in the Commentful web app."
---

# Switching between review link versions in the Figma plugin and web app

> If you've uploaded multiple versions for any of your review links, you can switch between them in the Commentful Figma plugin and in the Commentful web app.

## Switch review link versions in the Commentful web app

[Video](/assets/videos/commentful/reviews/switch-figma-versions.mp4)

To instantly switch between the versions of your designs for any review link that has more than one [new version uploaded](/commentful/reviews/create-new-version) to it while viewing it in the Commentful web app, you can click on the **Versions** dropdown selector in the bottom/center of the Commentful web app window. Selecting a different version will automatically navigate to that version's URL and load up the static Figma frame designs that were uploaded for that version, along with any feedback that has been left for that version.

## Switch review link versions in the Commentful Figma plugin

[Video](/assets/videos/commentful/reviews/switch-review-versions.mp4)

To instantly switch between the versions of your designs for any review link that has more than one [new version uploaded](/commentful/reviews/create-new-version) to it while viewing it in the Commentful Figma plugin, with the _Reviews_ tab selected, and a **Review** card already clicked, you can select any version from the _Versions_ dropdown selector, which will show any feedback that has been left for that selected version.

---

---
url: "/commentful/reviews/zapier-integration.md"
description: "You can optionally have notifications sent to a Zapier webhook every time a new comment is left on a Commentful review link you've shared with a client."
---

# Setup Zapier webhook for review link comments

> You can optionally have notifications sent to a Zapier webhook every time a new comment is left on a Commentful review link you've shared with a client.

## Create a Zapier Webhook

### 1. Create a new Zap (if you don't have one already)

[Create your Zap](https://zapier.com/app/zaps)

Click **Create Zap** to start building your automation.

### 2. Set up the Webhooks by Zapier trigger

In the trigger step, search for and select **Webhooks by Zapier**.

Choose **Catch Hook** as the event type, then click **Continue**.

### 3. Copy your Zapier Webhook URL

Zapier will generate a unique webhook URL for you that looks like this:

`https://hooks.zapier.com/hooks/catch/1234567/abcdefg/`

Copy this URL - you'll need it to configure Commentful.

> **Tip:** You can leave the Zapier setup page open while you configure Commentful, as you'll need to come back to test the webhook.

### 4. Configure your Zap action

After setting up Commentful (see below), you can configure what happens when a comment is received:

- Send to Slack, Discord, or Microsoft Teams
- Create a task in Asana, Trello, or ClickUp
- Send an email notification
- Add to a Google Sheet or Airtable
- Or connect to 6,000+ other apps

## Add your Zapier webhook URL via the Commentful plugin

[Video](/assets/videos/commentful/reviews/save-slack-webhook.mp4)

To set up the Commentful Zapier integration, you can create a Zapier Webhook URL by [following the steps above](#create-a-zapier-webhook), and then in the Commentful Figma plugin under the **Settings** icon button (in the top right of the plugin window):

1. Click **Enable webhook notifications for review links**
2. Select **Zapier** from the **Webhook Platform** dropdown
3. Copy/paste in your Zapier Webhook URL:

   eg. `https://hooks.zapier.com/hooks/catch/1234567/abcdefg/`

> **Tip:** You can make sure the Zapier integration is working by clicking the **Send Test Message** button, which will send a test notification from Commentful to your Zapier webhook.

## Add your Zapier webhook URL via the Commentful web app

To set up the Commentful Zapier integration, you can create a Zapier Webhook URL by [following the steps above](#create-a-zapier-webhook), and then in Commentful Web App (when opening any shared review link in your browser):

1. Press the **CTRL + K** keys on your keyboard to open settings
2. Click **Enable webhook notifications for review links**
3. Select **Zapier** from the **Webhook Platform** dropdown
4. Copy/paste in your Zapier Webhook URL: eg. `https://hooks.zapier.com/hooks/catch/1234567/abcdefg/`

> **Tip:** You can make sure the Zapier integration is working by clicking the **Send Test Message** button, which will send a test notification from Commentful to your Zapier webhook.

## Webhook Payload Examples

Commentful sends structured JSON payloads to Zapier webhooks with clear, easy-to-use fields. The payload structure varies based on the type of activity.

### Test Message

When you click "Send Test Message", this payload is sent:

```json
{
  "type": "test",
  "author": {
    "name": "johndoe",
    "displayName": "John Doe (Project Name)"
  },
  "project": {
    "name": "Homepage"
  },
  "frame": {
    "name": "Homepage",
    "nodeId": "123:456"
  },
  "urls": {
    "commentful": "https://commentful.hypermatic.com/share/xxx/yyy",
    "figma": "https://www.figma.com/file/xxx?node-id=123"
  },
  "action": "[Test Message] Yay! Your Zapier Webhook URL is working!",
  "message": "[Test Message] Yay! Your Zapier Webhook URL is working!",
  "timestamp": 1234567890
}
```

### New Comment

When someone posts a new comment on a frame:

```json
{
  "type": "comment",
  "author": {
    "name": "johndoe",
    "displayName": "John Doe (Project Name)"
  },
  "project": {
    "name": "Homepage"
  },
  "frame": {
    "name": "Homepage",
    "nodeId": "123:456"
  },
  "urls": {
    "commentful": "https://commentful.hypermatic.com/share/xxx/yyy?pin=abc123",
    "figma": "https://www.figma.com/file/xxx?node-id=123"
  },
  "action": "New Feedback Comment",
  "message": "This section needs more contrast for accessibility",
  "timestamp": 1234567890,
  "feedbackId": "abc123"
}
```

### Reply to Comment Thread

When someone replies to an existing comment:

```json
{
  "type": "reply",
  "author": {
    "name": "janesmith",
    "displayName": "Jane Smith (Project Name)"
  },
  "project": {
    "name": "Homepage"
  },
  "frame": {
    "name": "Homepage",
    "nodeId": "123:456"
  },
  "urls": {
    "commentful": "https://commentful.hypermatic.com/share/xxx/yyy?pin=abc123",
    "figma": "https://www.figma.com/file/xxx?node-id=123"
  },
  "action": "New Comment Thread Reply",
  "message": "I'll update the contrast ratio to meet WCAG AA standards",
  "timestamp": 1234567890,
  "feedbackId": "abc123"
}
```

### Text Change Request

When someone requests a text change:

```json
{
  "type": "text",
  "author": {
    "name": "johndoe",
    "displayName": "John Doe (Project Name)"
  },
  "project": {
    "name": "Homepage"
  },
  "frame": {
    "name": "Homepage",
    "nodeId": "123:456"
  },
  "urls": {
    "commentful": "https://commentful.hypermatic.com/share/xxx/yyy?pin=abc123",
    "figma": "https://www.figma.com/file/xxx?node-id=123"
  },
  "action": "New Text Change Request",
  "message": "",
  "timestamp": 1234567890,
  "feedbackId": "abc123",
  "textChange": {
    "original": "Sign Up Now",
    "new": "Get Started Today"
  }
}
```

### Image Change Request

When someone uploads an image as feedback:

```json
{
  "type": "image",
  "author": {
    "name": "johndoe",
    "displayName": "John Doe (Project Name)"
  },
  "project": {
    "name": "Homepage"
  },
  "frame": {
    "name": "Homepage",
    "nodeId": "123:456"
  },
  "urls": {
    "commentful": "https://commentful.hypermatic.com/share/xxx/yyy?pin=abc123",
    "figma": "https://www.figma.com/file/xxx?node-id=123"
  },
  "action": "New Image Change Request",
  "message": "",
  "timestamp": 1234567890,
  "feedbackId": "abc123",
  "image": {
    "url": "https://example.com/path/to/image.png",
    "fileName": "updated-logo.png"
  }
}
```

### Status Update

When someone changes the status of a comment (e.g., "To Do" → "Done"):

```json
{
  "type": "status",
  "author": {
    "name": "johndoe",
    "displayName": "John Doe (Project Name)"
  },
  "project": {
    "name": "Homepage"
  },
  "frame": {
    "name": "Homepage",
    "nodeId": "123:456"
  },
  "urls": {
    "commentful": "https://commentful.hypermatic.com/share/xxx/yyy?pin=abc123",
    "figma": "https://www.figma.com/file/xxx?node-id=123"
  },
  "action": "Updated to Done",
  "message": "",
  "timestamp": 1234567890,
  "feedbackId": "abc123",
  "status": {
    "text": "Done",
    "color": "#1bc47d"
  }
}
```

## Using the Webhook Data in Zapier

All webhook payloads have consistent, easy-to-access fields:

### Common Fields (in every payload)

- **type** - The activity type: `test`, `comment`, `reply`, `text`, `image`, or `status`
- **author.name** - The user's handle/username
- **author.displayName** - The formatted display name with project context
- **project.name** - The project or page name
- **frame.name** - The Figma frame name
- **frame.nodeId** - The Figma node ID
- **urls.commentful** - Direct link to view in Commentful
- **urls.figma** - Direct link to open in Figma
- **action** - Human-readable description of the activity
- **message** - The comment or feedback message (may be empty for text/image/status changes)
- **timestamp** - Unix timestamp of when the activity occurred
- **feedbackId** - Unique ID for this feedback item (not present in test messages)

### Activity-Specific Fields

Depending on the `type`, additional fields are available:

- **textChange** (when `type` is `text`):
  - `textChange.original` - The original text
  - `textChange.new` - The requested new text

- **image** (when `type` is `image`):
  - `image.url` - URL to the uploaded image
  - `image.fileName` - Original filename of the image

- **status** (when `type` is `status`):
  - `status.text` - The new status name (e.g., "Done", "In Progress")
  - `status.color` - Hex color code for the status

### Common Zap Workflows

1. **Filter by type** - Use the `type` field to route different activities to different actions
2. **Create tasks** - Map fields directly to task management tools (Asana, Trello, ClickUp)
3. **Send formatted notifications** - Use `author.displayName`, `action`, and `message` in Slack/Teams messages
4. **Log to spreadsheet** - Add rows to Google Sheets with all the structured data
5. **Conditional logic** - Filter by `status.text` or `status.color` to trigger specific workflows
6. **Download images** - Use `image.url` to fetch and process uploaded images
7. **Deep linking** - Use `urls.commentful` and `urls.figma` to create clickable links in any app

---

---
url: "/commentful/setup/connect-figma-file.md"
description: "The first time you run Commentful, you'll need to link it to your Figma file by generating a Figma personal access token and adding your Figma file URL."
---

# Connect your Figma file to the Commentful plugin

> The first time you run Commentful, you'll need to link it to your Figma file by generating a Figma personal access token and adding your Figma file URL.

## 1. Generate your Figma personal access token

[Video](/assets/videos/commentful/setup/create-figma-token.mp4)

To connect your Figma file to the Commentful plugin, you'll need to [generate a personal access token](https://help.figma.com/hc/en-us/articles/8085703771159-Manage-personal-access-tokens) in your Figma account:

1. Go to your **Settings** panel (in the dropdown menu under your Figma account icon).
2. Scroll down the **Account** tab in the settings popup to the **Personal access tokens** section.
3. Click **Generate new token**.
4. Set a **Token name** (eg. _Commentful Figma Plugin_).
5. Set the **Expiration** dropdown option to **90 Days**.
6. Ensure the the **File content** dropdown option is set to **Read-only**.
7. Ensure the the **Comments** dropdown option is set to **Write**.
8. All of the other dropdown options can be left as **No access**.
9. Click the **Generate token** button.
10. Click the **Copy this token** (this is your only chance to do so).

> **Note:** Please note that Figma has removed the _No expiration_ option from the **Expiration** dropdown, so you will need to refresh your Figma personal access token every _90 days_. You will _not_ lose any data, comments or any review data if your Figma personal access token expires; the token just provides the Commentful plugin authentication to view the comments in your Figma file.

> **Warning:** ** Figma API Rate Limits (Effective Nov 17, 2024)** Figma limits API requests to **5 per minute** for Figma users on their Starter (free) tier. Commentful automatically mitigates this limit with caching and request limiting. For heavier usage (eg. posting many comments per minute via the Commentful plugin), consider upgrading to a Full Figma seat.

## 2. Paste your token and Figma file URL into Commentful

[Video](/assets/videos/commentful/setup/connect-figma-file.mp4)

After you've generated your Figma peronal access token and copied it to your clipboard, run the Commentful plugin and then follow the steps below:

1. Click **Connect This Figma File** button in the Commentful plugin.
2. Paste your personal access token into the plugin and click the **Save Token** button.
3. Click on the **Share** button in the top right of your Figma file to open the share popup.
4. Set the Figma file permissions for **Anyone with the link** as **can view**.
5. Click **Copy link** to copy the current Figma file URL to your clipboard.
6. Paste your Figma file URL into the plugin and click the **Save URL** button.

> **Warning:** If you've duplicated a Figma file from another file that was already linked to Commentful, you'll need to [re-link the plugin](/commentful/setup/relink-figma-file) with your new Figma file URL from the duplicated Figma file by clicking the **Re-link your Figma file** button in the Commentful **Settings** panel.

---

---
url: "/commentful/setup/relink-figma-file.md"
description: "If you've duplicated a Figma file from another Figma file that was already linked to the Commentful plugin, you'll need to re-link it to your new Figma file URL to fetch the correct comments."
---

# Re-Linking a Figma File

> If you've duplicated a Figma file from another Figma file that was already linked to the Commentful plugin, you'll need to re-link it to your new Figma file URL to fetch the correct comments.

[Video](/assets/videos/commentful/setup/relink-file.mp4)

If you've duplicated a Figma file from another file that was already linked to Commentful, you'll need to re-link the plugin with your new Figma file URL from the duplicated Figma file by clicking the **Re-link your Figma file** button in the Commentful **Settings** panel, then pasting in your new Figma file URL to save it.

---

---
url: "/commentful/setup/toggle-window-size.md"
description: "You can expand and contract the size of the Commentful Figma plugin window depending on how much Figma canvas or plugin window space you need."
---

# Toggle Plugin Window Size

> You can expand and contract the size of the Commentful Figma plugin window depending on how much Figma canvas or plugin window space you need.

[Video](/assets/videos/commentful/setup/toggle-window-size.mp4)

To toggle the size of the Commentful plugin window, you can click on the **Toggle** icon button in top right of the plugin window. Clicking it will expand the size of the plugin window, allowing you to see more, and clicking it again will toggle the plugin window back to its default narrower size, which allows you to see more of your Figma canvas.

---

---
url: "/commentful/todos/assign-todos.md"
description: "You can assign todo items to yourself (or other Figma users who are also using the Commentful plugin) on any Figma comment to help make them more actionable."
---

# Assign todo items to Figma comments

> You can assign todo items to yourself (or other Figma users who are also using the Commentful plugin) on any Figma comment to help make them more actionable.

[Video](/assets/videos/commentful/todos/assign-todos-from-comment.mp4)

To add todo items (or check-off any existing todo items) on your Figma comments, make sure the _Figma Comments_ tab is selected, then click on any Figma comment card to open up its details panel in the plugin.

Once you've clicked on a Figma comment, under the _Todos_ tab in the comment details popup panel, you can assign todo items to yourself (or other Figma users who are also using the Commentful plugin) by typing in the todo input field, then clicking the **Add Todo** button (or pressing the _Enter_ key) to create the new todo item on your Figma comment.

The todo items will appear under the _Todos_ tab when this comment is viewed by any Figma user who is using the Commentful plugin, and a list of all the todo items just assigned to you will also be easily viewable under the _My Todos_ tab when you select either the **Assigned Todos (This Page)** or **Assigned Todos (All Pages)** dropdown filter option.

The completed number and percentage of any todos created for a Figma comment will be viewable from the kanban board overview cards under the _Figma Comments_ tab, and also whenever the comment card is clicked, under the _Overview_ tab.

> **Tip:** Clicking on a checkbox next to any todo item will mark it off as completed, and if you click a completed checkbox, this will revert the todo item to being incomplete again.

---

---
url: "/commentful/todos/delete-todos.md"
description: "You can delete individual todo items or an entire todo list under your _My Todos_ panel at any time."
---

# Deleting todo items and lists

> You can delete individual todo items or an entire todo list under your _My Todos_ panel at any time.

[Video](/assets/videos/commentful/todos/delete-todos.mp4)

## Delete a single todo item

To delete a **single todo item**, with the _My Todos_ tab selected, hover over any todo item under any todo list, then click on the **Trash** icon button; this will instantly and _permanently_ delete the todo item and remove it from the todo list it belongs to.

> **Warning:** Please be mindful that deleting a todo item or a todo list will **permanently delete it**.

## Delete an entire list of todo items

To delete **an entire list of todos items**, with the _My Todos_ tab selected, hover over any todo list, then click on the **Trash** icon button, which will display a confirmation prompt asking if you really want to delete the todo list (and all of the todo items inside of it).

If you're sure you want to permanently delete the todo list, you can click the **Delete Todo List** button to confirm; then this will instantly and _permanently_ delete the todo list, along with any todo items inside of the list.

> **Warning:** Please be mindful that deleting a todo item or a todo list will **permanently delete it**.

---

---
url: "/commentful/todos/export-todos.md"
description: "You can export and download your Todos to a CSV spreadsheet file at any time from the Commentful plugin."
---

# Export todo lists to a CSV file

> You can export and download your Todos to a CSV spreadsheet file at any time from the Commentful plugin.

[Video](/assets/videos/commentful/todos/export-todos.mp4)

To export a list of your todo items, with the _My Todos_ tab selected in the plugin, you can click on the **Export Todos** button in the bottom right of the plugin window.

This will automatically export and download your todo items, which will be saved directly to your computer as a `.csv` file you can open as a spreadsheet in an app of your choice (eg. Microsoft Excel, Google Sheeets or Apple Numbers).

---

---
url: "/commentful/todos/private-todos.md"
description: "You can have your own private lists of todo items that are only visible to you in the Commentful plugin."
---

# Create private todo lists

> You can have your own private lists of todo items that are only visible to you in the Commentful plugin.

[Video](/assets/videos/commentful/todos/add-private-todos.mp4)

To add private todo items (or check-off any existing private todo items), make sure the _My Todos_ tab is selected, then select either the **Private Todos (This Page)** or **Private Todos (All Pages)** dropdown filter option,

After either private todos filter is selected, you can give your new **Private Todo List** a name, then click on the **Add New List** button (or press the _Enter_ key) to create a brand new private todo list to start adding items to.

Once you've created one or more private todo lists, you can start adding private todo items to them by adding the todo item text in the input field under the todo list of your choice, then click on the **Add Todo** (or press the _Enter_ key) to create a new todo item in that private todo list.

> **Tip:** Clicking on a checkbox next to any todo item will mark it off as completed, and if you click a completed checkbox, this will revert the todo item to being incomplete again.

---

---
url: "/commentful/tutorials.md"
description: "The best free Figma tutorial videos for beginners (or power users) to level up."
---

# Commentful Video Tutorials

> The best free Figma tutorial videos for beginners (or power users) to level up.

### Supercharge and organize your Figma comments

This video tutorial is a complete step-by-step guide showing you how to organize your Figma comments into a Trello-style board and supercharge them with tags, todos, due dates (and much more) using the Commentful plugin.
[Embedded media](https://www.youtube.com/embed/8bi57aDmpc8)

### Get feedback from clients without a Figma account

This video tutorial is a complete step-by-step guide showing you how to get feedback and comments from clients or stakeholders without a Figma account using the Commentful plugin.
[Embedded media](https://www.youtube.com/embed/ta9IvkSXaG4)

---

---
url: "/convertify/export/adobe-after-effects.md"
description: "Export Figma designs to Adobe XD for After Effects workflows and configure export options."
---

# Exporting Figma to Adobe After Effects

> Export Figma designs to Adobe XD for After Effects workflows and configure export options.

### Video Tutorial: Convert Figma to Adobe After Effects

This video tutorial is a complete step-by-step guide showing you how to automatically convert your designs from Figma to After Effects (in one click) directly from Figma using the Convertify plugin.
[Embedded media](https://www.youtube.com/embed/-UBknnWT6D0)

To export your designs from Figma for [Adobe After Effects](https://www.adobe.com/products/aftereffects.html), you can follow the steps to convert, download and open your `.xd` file, which can then be [exported from Adobe XD](https://helpx.adobe.com/after-effects/using/effects-applications.html#WorkingwithAdobeXDandAfterEffects) into Adobe After Effects.

## Selecting a single Figma page to convert for use in Adobe After Effects

[Video](/assets/videos/convertify/export/ae-export-page.mp4)

Once the Convertify plugin is running, ensure the **Export Figma to Adobe After Effects** option is selected, you can select the Figma page you would like to convert for use in Adobe After Effects.

The plugin will automatically export the Figma page that you're currently viewing. You can change the Figma page you would like to export by clicking on any page in your Figma file listed in the left-hand column in Figma, under the **Pages** column heading.

After you've selected your Figma page, you can convert your design to an Adobe XD file (to then export to After Effects) by clicking the **Export to Adobe After Effects** button in the Convertify plugin. This will begin the automated conversion process.

> **Info:** **Time Estimates** The time estimate (eg. **~14 seconds to convert 555 layers**) is based on the number of layers in your Figma page to give you an indicator of how long the conversion will take. Please note that Figma pages that contain _large_ images will likely increase the time needed to finish converting your Figma page to your Adobe XD file.

> **Warning:** **Adobe XD doesn't support multiple pages in a document**. Please note, selecting _multiple pages_ only applies to Sketch exports, as the Adobe XD app only supports [single page](https://adobexd.uservoice.com/forums/353007-adobe-xd-feature-requests/suggestions/13958565-multiple-pages-separate-sets-of-artboards) files right now.

## Exporting selected Figma frames on your page to XD

[Video](/assets/videos/convertify/export/ae-export-frame.mp4)

Alternatively, if you don't want to convert full Figma page to an Adobe XD file (to then export to After Effects), you can convert certain frame layer(s) in your Figma design to Adobe XD by selecting the Figma frame(s) you want to convert, then click the **Export Selected Frames** button in the Convertify plugin. This will begin the automated conversion process.

> **Warning:** **Adobe XD doesn't support multiple pages in a document**. Please note, selecting _multiple pages_ only applies to Sketch exports, as the Adobe XD app only supports [single page](https://adobexd.uservoice.com/forums/353007-adobe-xd-feature-requests/suggestions/13958565-multiple-pages-separate-sets-of-artboards) files right now.

## Downloading your .xd file for exporting into After Effects

[Video](/assets/videos/convertify/export/ae-download.mp4)

After Convertify has finished processing your Figma page, you'll be shown a confirmation message; you can download your `.xd` file by clicking the **Download .xd file** button.

After you've downloaded your `.xd` file from Figma to your computer, you can open your file explorer to the directory where it was saved. **Double clicking** on the exported `.xd` file will open it up in the version of Adobe XD] that you have installed on your computer.

> **Tip:** **Saving file downloads from Figma** If you're using the Figma **desktop app**, you'll see a prompt appear to download your file. However, if you're using Figma in a **web browser**, your file will automatically be downloaded to your computer by default (usually to the **Downloads** directory on your computer).

## Exporting your artboard from Adobe XD into After Effects

[Video](/assets/videos/convertify/export/ae-export-xd.mp4)

> **Note:** **Installing Adobe XD** If you're a Mac or Windows user, and **if you have a paid Adobe CC account**, you can [install Adobe XD in Creative Cloud](https://creativecloud.adobe.com/apps/all/all-platforms/pdp/xd) (or download the `.dmg` installer [directly from here](https://creativecloud.adobe.com/apps/download/xd?promoid=B8NR3RT1&mv=other)), which should allow you to run it on your computer. You can also find the [Windows standalone installer](https://archive.org/details/adobe-xd-54.1.12.1-for-windows) online, too.

After you've opened your `.xd` file in Adobe XD, you can natively [export artboards](https://helpx.adobe.com/after-effects/using/effects-applications.html#WorkingwithAdobeXDandAfterEffects) to After Effects by clicking on any artboard in your page (the one that you would like to use in After Effects), then click File → Export → After Effects.

> **Tip:** If XD isn't exporting your artboard to After Effects, please try checking the Mark for Export checkbox in the right side panel first.

### Viewing your exported layers in After Effects

[Video](/assets/videos/convertify/export/ae-open-ae.mp4)

After you've clicked File → Export → After Effects in for your selected artboard in Adobe XD, the Adobe After Effects app (please ensure it's installed) will automatically open up on your computer, and natively export your selected artboard and all its layers from Adobe XD into your After Effects timeline.

Once the export has finished, you can save your new After Effects file, and close off Adobe XD to continue working on your motion design using the layers originally from your Figma file, which are now all available to animate in After Effects.

## Configuring your Adobe After Effects export options

Before exporting your designs from Figma to Adobe After Effects (via .xd file import), you can configure some optional settings that may be useful.

### Render layers starting with an * as images

Enabling the **Render layers starting with an * as images** toggle will automatically export any Figma layers with layer names that start with "_*_" (eg. "*Frame 1") as image layers instead of their normal layer type.

### Include reference image overlays for artboards

Enabling the **Include reference image overlays for artboards** toggle will automatically include image references of each artboard on top of each one in your exported file, with a layer opacity of 50%; this can be helpful to make any manual edits or layer positioning tweaks.

### Flatten/ungroup all Figma "Group" layers

Enabling the **Flatten/ungroup all Figma "Group" layers** toggle will automatically ungroup any "Group" layers in your Figma file.

### Scale After Effects comps

Selecting a **Scale After Effects Comps** option will automatically scale your existing Figma artboards to a scale from **@0.25x - @4x** (the default is **@1x**, which won't change the scale of your designs at all). This will ensure your comps are scaled up or down when you exported the converted .xd file into After Effects.

### Render more visually accurate text

Adobe XD doesn't support text properties like vertical text alignment, and calculates line-heights differently than Figma.

Enabling the **Render more visually accurate text** toggle will more export your Figma text values more accurately for XD (for any fonts in the design that are installed on your machine).

> **Warning:** **Slower conversion times**. Please note, enabling the **Render more visually accurate text**  option may cause the conversion to be much slower than usual (depending on number of text layers).

## Understanding differences between Figma and After Effects

Convertify does its best to convert all of your layers and atrributes from Figma over to Adobe XD for exporting into After Effects, however, there are some natural limitations based on Adobe XD supporting a smaller number of native features than Figma does.

### Figma features that are missing in Adobe XD (and won't be exported over to After Effects from XD).

These features are available in Figma, but aren't native to Adobe XD, so they won't be carried over to After Effects when you export your file there.

- Hiding parent artboards
- Rotated parent artboards
- Ellipsis with "arc" properties
- Mulitple fills/strokes on a layer
- Vector layers that use corner radius
- Strokes/fills applied to groups
- Vertical alignment for text layers
- Nested layer masks

---

---
url: "/convertify/export/adobe-indesign.md"
description: "Export selected Figma pages and frames to a zipped Adobe InDesign (IDML) package with Convertify."
---

# Exporting Figma to Adobe InDesign

> Export selected Figma pages and frames to a zipped Adobe InDesign (IDML) package with Convertify.

To export your designs from Figma for [Adobe InDesign](https://www.adobe.com/products/indesign.html), select the **Export Figma to Adobe InDesign** option from the Convertify select box in the plugin.

## Exporting the current Figma page to InDesign

To convert an entire page, click **Export This Page** to begin converting the current page to an Adobe InDesign `.idml` package.

## Exporting selected Figma frames to InDesign

If you only want specific areas exported, select the Figma frames you want and then click **Export Selected Frames**.

## Downloading your .idml package from Figma

After Convertify has finished processing, download your `.zip` file from the file browser.

The exported `.zip` package contains:

- Your `.idml` file
- A `Links` folder with image assets

> **Tip:** **Saving file downloads from Figma** If you're using the Figma **desktop app**, you'll see a prompt appear to download your file. However, if you're using Figma in a **web browser**, your file will automatically be downloaded to your computer by default (usually to the **Downloads** directory on your computer).

## Opening .idml file in InDesign

Once downloaded, unzip the package and open the `.idml` file in Adobe InDesign to continue editing.

Keep the `Links` folder in the same directory as your `.idml` file so linked images are resolved correctly in InDesign.

---

---
url: "/convertify/export/adobe-photoshop.md"
description: "Export selected Figma pages and frames to Adobe Photoshop (PSD) files with Convertify."
---

# Exporting Figma to Adobe Photoshop

> Export selected Figma pages and frames to Adobe Photoshop (PSD) files with Convertify.

### Video Title: Export Figma to Adobe Photoshop

This video tutorial is a complete step-by-step guide showing you how to automatically export Figma to Adobe Photoshop (.psd) files with one click using the Convertify plugin.
[Embedded media](https://www.youtube.com/embed/mmrIp3yB62g)

[Video](/assets/videos/convertify/export/psd-export.mp4)

To export your designs from Figma for [Adobe Photoshop](https://www.adobe.com/products/photoshop.html), select the **Export Figma to Adobe Photoshop** option from the Convertify select box in the plugin.

## Exporting the current Figma page to Photoshop

To convert an entire page, click **Export This Page** to begin converting the current page to a `.psd` file.

## Exporting selected Figma frames to Photoshop

If you only want specific areas exported, select the Figma frames you want and then click **Export Selected Frames**.

## Downloading your .psd file from Figma

After Convertify has finished processing, download your `.psd` file from the file browser.

> **Tip:** **Saving file downloads from Figma** If you're using the Figma **desktop app**, you'll see a prompt appear to download your file. However, if you're using Figma in a **web browser**, your file will automatically be downloaded to your computer by default (usually to the **Downloads** directory on your computer).

## Opening .psd file in Photoshop

Once downloaded, open the `.psd` file in Adobe Photoshop to continue editing.

---

---
url: "/convertify/export/adobe-xd.md"
description: "Export Figma pages or frames to Adobe XD files with Convertify, including options and limitations."
---

# Exporting Figma to Adobe XD

> Export Figma pages or frames to Adobe XD files with Convertify, including options and limitations.

### Video Tutorial: Convert Figma to Adobe XD

This video tutorial is a complete step-by-step guide showing you how to automatically convert your designs from Figma to Adobe XD files (in one click) directly from Figma using the Convertify plugin.
[Embedded media](https://www.youtube.com/embed/cGYU2jvnSs8)

To export your designs from Figma for Adobe XD, you can follow the steps to convert, download and open your `.xd` file.

> **Note:** **Installing Adobe XD** If you're a Mac or Windows user, and **if you have a paid Adobe CC account**, you can [install Adobe XD in Creative Cloud](https://creativecloud.adobe.com/apps/all/all-platforms/pdp/xd) (or download the `.dmg` installer [directly from here](https://creativecloud.adobe.com/apps/download/xd?promoid=B8NR3RT1&mv=other)), which should allow you to run it on your computer. You can also find the [Windows standalone installer](https://archive.org/details/adobe-xd-54.1.12.1-for-windows) online, too.

## Selecting a single Figma page to convert to Adobe XD

[Video](/assets/videos/convertify/export/xd-export-page.mp4)

Once the Convertify plugin is running, ensure the **Export Figma to Adobe XD** option is selected, then you can select the Figma page you would like to convert to Adobe XD.

The plugin will automatically export the Figma page that you're currently viewing. You can change the Figma page you would like to export by clicking on any page in your Figma file listed in the left-hand column in Figma, under the **Pages** column heading.

After you've selected your Figma page, you can convert your design to Adobe XD by clicking the **Export This Page** button in the Convertify plugin. This will begin the automated conversion process.

> **Info:** **Time Estimates**. The time estimate (eg. **~14 seconds to convert 555 layers**) is based on the number of layers in your Figma page to give you an indicator of how long the conversion will take. Please note that Figma pages that contain _large_ images will likely increase the time needed to finish converting your Figma page to your Adobe XD file.

> **Warning:** **Adobe XD doesn't support multiple pages in a document**. Please note, selecting _multiple pages_ only applies to Sketch exports, as the Adobe XD app only supports [single page](https://adobexd.uservoice.com/forums/353007-adobe-xd-feature-requests/suggestions/13958565-multiple-pages-separate-sets-of-artboards) files right now.

## Exporting selected Figma frames on your page to XD

[Video](/assets/videos/convertify/export/xd-export-frame.mp4)

Alternatively, if you don't want to convert full Figma page to Adobe XD, you can convert certain frame layer(s) in your Figma design to Adobe XD by selecting the Figma frame(s) you want to convert, then click the **Export Selected Frames** button in the Convertify plugin. This will begin the automated conversion process.

> **Info:** **Time Estimates**. The time estimate (eg. **~14 seconds to convert 555 layers**) is based on the number of layers in your Figma page to give you an indicator of how long the conversion will take. Please note that Figma pages that contain _large_ images will likely increase the time needed to finish converting your Figma page to your Adobe XD file.

## Downloading your .xd file

[Video](/assets/videos/convertify/export/xd-download.mp4)

After Convertify has finished processing your Figma page, you'll be shown a confirmation message; you can download your `.xd` file by clicking the **Download .xd file** button.

> **Tip:** **Saving file downloads from Figma** If you're using the Figma **desktop app**, you'll see a prompt appear to download your file. However, if you're using Figma in a **web browser**, your file will automatically be downloaded to your computer by default (usually to the **Downloads** directory on your computer).

## Opening your .xd file

[Video](/assets/videos/convertify/export/xd-open.mp4)

After you've downloaded your `.xd` file from Figma to your computer, you can open your file explorer to the directory where it was saved. **Double clicking** on the exported `.xd` file will open it up in the version of Adobe XD that you have installed on your computer.

## Configuring your Adobe XD export options

Before exporting your designs from Figma to Adobe XD, you can configure some optional settings that may be useful.

### Render layers starting with an * as images

Enabling the **Render layers starting with an * as images** toggle will automatically export any Figma layers with layer names that start with "_*_" (eg. "*Frame 1") as image layers instead of their normal layer type.

### Include reference image overlays for artboards

Enabling the **Include reference image overlays for artboards** toggle will automatically include image references of each artboard on top of each one in your exported file, with a layer opacity of 50%; this can be helpful to make any manual edits or layer positioning tweaks.

### Flatten/ungroup all Figma "Group" layers

Enabling the **Flatten/ungroup all Figma "Group" layers** toggle will automatically ungroup any "Group" layers in your Figma file.

### Render more visually accurate text

Adobe XD doesn't support text properties like vertical text alignment, and calculates line-heights differently than Figma.

Enabling the **Render more visually accurate text** toggle will more export your Figma text values more accurately for XD (for any fonts in the design that are installed on your machine).

> **Warning:** **Slower conversion times**. Please note, enabling the **Render more visually accurate text**  option may cause the conversion to be much slower than usual (depending on number of text layers).

## Understanding differences between Figma and Adobe XD

Convertify does its best to convert all of your layers and atrributes from Figma over to Adobe XD, however, there are some natural limitations based on Adobe XD supporting a smaller number of native features than Figma does.

### Figma features that are missing in Adobe XD

These features are available in Figma, but aren't native to Adobe XD, so they won't be carried over with the Convertify plugin.

- Hiding parent artboards
- Rotated parent artboards
- Ellipsis with "arc" properties
- Mulitple fills/strokes on a layer
- Vector layers that use corner radius
- Strokes/fills applied to groups
- Vertical alignment for text layers
- Nested layer masks

### Supported prototype links in Adobe XD

Please note that Adobe XD protoypes only supports interactions of **On Click**, **On Drag** and **Key/Gamepad**.

Adobe XD also supports navigation types of **Navigate To**, **Open Overlay**, **Scroll To** and **Back**.

Convertify will only carry over any prototype links in Figma that match these prototype attributes that are supported in Adobe XD.

---

---
url: "/convertify/export/eps.md"
description: "Export Figma artboards to EPS files for print, including page selection and options."
---

# Exporting Figma to EPS (PostScript)

> Export Figma artboards to EPS files for print, including page selection and options.

### Video Tutorial: Convert Figma to EPS (PostScript)

This video tutorial is a complete step-by-step guide showing you how to automatically convert your designs from Figma to EPS PostScript (in one click) directly from Figma using the Convertify plugin.
[Embedded media](https://www.youtube.com/embed/ZEclPO-3sbw)

To export your designs from Figma to EPS ([PostScript](https://en.wikipedia.org/wiki/PostScript) ), you can follow the steps to convert, download and open your `.eps` file.

## Selecting a single Figma page to convert to EPS

[Video](/assets/videos/convertify/export/eps-export-page.mp4)

Once the Convertify plugin is running, ensure the **Export Figma to Unlayered EPS for Print** option is selected, then you can select the Figma page you would like to convert to EPS.

The plugin will automatically export the Figma page that you're currently viewing. You can change the Figma page you would like to export by clicking on any page in your Figma file listed in the left-hand column in Figma, under the **Pages** column heading.

After you've selected your Figma page, you can convert your design to EPS by clicking the **Export This Page** button in the Convertify plugin. This will begin the automated conversion process.

## Exporting selected Figma frames on your page to EPS

[Video](/assets/videos/convertify/export/eps-export-frame.mp4)

Alternatively, if you don't want to convert full Figma page to EPS, you can convert certain frame layer(s) in your Figma design to EPS by selecting the Figma frame(s) you want to convert, then click the **Export Selected Frames** button in the Convertify plugin. This will begin the automated conversion process.

## Configuring your EPS export options

You can decide how your EPS file is created from your Figma artboards, by choosing from any of the following drop-down options:

- Export artboards as multiple pages inside one .eps
- Export artboards as single page inside one .eps
- Export each artboard as an individual .eps files

## Downloading your .eps file

[Video](/assets/videos/convertify/export/eps-download.mp4)

After Convertify has finished processing your Figma page, you'll be shown a confirmation message; you can download your `.eps` file by clicking the **Download .eps file** button, and then you can use your file to print your design.

> **Tip:** **Saving file downloads from Figma** If you're using the Figma **desktop app**, you'll see a prompt appear to download your file. However, if you're using Figma in a **web browser**, your file will automatically be downloaded to your computer by default (usually to the **Downloads** directory on your computer).

---

---
url: "/convertify/export/sketch.md"
description: "Export Figma pages or frames to Sketch files with Convertify, plus symbol and compatibility notes."
---

# Exporting Figma to Sketch

> Export Figma pages or frames to Sketch files with Convertify, plus symbol and compatibility notes.

### Video Tutorial: Convert Figma to Sketch

This video tutorial is a complete step-by-step guide showing you how to automatically convert your designs from Figma to Sketch files (in one click) directly from Figma using the Convertify plugin.
[Embedded media](https://www.youtube.com/embed/1zwE3xSJeas)

To export your designs from Figma for [Sketch](https://www.sketch.com/), you can follow the steps below to convert, download and open your `.sketch` file.

## Exporting full Figma page(s) to Sketch

[Video](/assets/videos/convertify/export/sketch-convert.mp4)

Once the Convertify plugin is running, ensure the **Export Figma to Sketch** option is selected, then you can select the Figma pages in your current file that you would like to convert to Sketch.

By default, all pages in your Figma file are automatically selected to be exported, but if you'd like to specify exactly which pages are included in the export, you can turn off the **Export all Figma pages to Sketch** toggle switch, and then uncheck/check the Figma pages for your current file that you'd like to export in the list of pages below the toggle.

After you've selected your Figma page(s), you can convert your design to Sketch by clicking the **Export Pages** button in the Convertify plugin. This will begin the automated conversion process.

> **Info:** **Time Estimates**. The time estimate (eg. **~14 seconds to convert 555 layers**) is based on the number of layers in your Figma page to give you an indicator of how long the conversion will take. Please note that Figma pages that contain _large_ images will likely increase the time needed to finish converting your Figma page to your Adobe XD file.

## Exporting selected Figma frames on your page to Sketch

[Video](/assets/videos/convertify/export/sketch-frames.mp4)

Alternatively, if you don't want to convert full Figma page(s) to Sketch, you can convert certain frame layer(s) in your Figma design to Sketch by selecting the Figma frame(s) you want to convert, then click the **Export Selected Frames** button in the Convertify plugin. This will begin the automated conversion process.

> **Info:** **Time Estimates**. The time estimate (eg. **~14 seconds to convert 555 layers**) is based on the number of layers in your Figma page to give you an indicator of how long the conversion will take. Please note that Figma pages that contain _large_ images will likely increase the time needed to finish converting your Figma page to your Adobe XD file.

## Downloading your .sketch file

[Video](/assets/videos/convertify/export/sketch-download.mp4)

After Convertify has finished processing your Figma layers, you'll be shown a confirmation message; you can download your `.sketch` file by clicking the **Download .sketch file** button.

> **Tip:** **Saving file downloads from Figma** If you're using the Figma **desktop app**, you'll see a prompt appear to download your file. However, if you're using Figma in a **web browser**, your file will automatically be downloaded to your computer by default (usually to the **Downloads** directory on your computer).

## Opening your .sketch file

[Video](/assets/videos/convertify/export/sketch-open.mp4)

After you've downloaded your `.sketch` file from Figma to your computer, you can open your file explorer to the directory where it was saved. **Double clicking** on the exported `.sketch` file will open it up in the version of [Sketch](https://www.sketch.com/) that you have installed on your computer.

## Enabling Figma Components to Sketch Symbols

### Video Tutorial: Export Figma Components to Sketch Symbols

This video tutorial is a complete step-by-step guide showing you how to automatically convert your components from Figma to Sketch symbols using the Convertify plugin.
[Embedded media](https://www.youtube.com/embed/iOkr2w5KYMI)

[Video](/assets/videos/convertify/export/sketch-components.mp4)

By default, Figma components and instances are converted as regular Sketch groups and layers from Figma to Sketch. However, you can opt-in to the support for this feature by opening the Sketch settings in the Convertify plugin and enabling the **Export Figma Components to Sketch Symbols** toggle, which will convert your Figma components into Sketch symbols.

## Understanding differences between Figma and Sketch

Convertify does its best to convert all of your layers and atrributes from Figma over to Sketch, however, there are some natural limitations based on Sketch supporting a smaller number of native features than Figma does.

### Figma features that are missing in Sketch

These features are available in Figma, but aren't native to Sketch, so they won't be carried over with the Convertify plugin.

- Hiding parent artboards
- Rotated parent artboards
- Ellipsis with "arc" properties

### Supported prototype links in Sketch

Please note that Sketch protoypes only supports the interaction of **On Click**.

Sketch also supports navigation types of **Navigate To** and **Back**.

Convertify will only carry over any prototype links in Figma that match these prototype attributes that are supported in Sketch.

---

---
url: "/convertify/faq/plans.md"
description: "To get unlimited usage of all of the Convertify Pro features, you will need to purchase a license from the [Hypermatic website](https://hypermatic.com/convertify#pro)."
---

# Convertify Free vs Convertify Pro

> To get unlimited usage of all of the Convertify Pro features, you will need to purchase a license from the [Hypermatic website](https://hypermatic.com/convertify#pro).

Convertify includes 10 free trials of the _Pro_ version. Once these trials have been used up, the Figma plugin will revert to their _Free_ version, which will have limited functionality.

  - **Convertify Free**: ### EPS File Exports Unlimited Usage       ### Adobe File Exports Try during 10 Pro Trials       ### Sketch File Exports Try during 10 Pro Trials       ### Adobe File Imports Try during 10 Pro Trials       ### Google & Word Doc Imports Try during 10 Pro Trials       ### Image to Vector Imports Try during 10 Pro Trials
  - **Convertify Pro**: ### EPS File Exports Unlimited Usage       ### Adobe File Exports Unlimited Usage       ### Sketch File Exports Unlimited Usage       ### Adobe File Imports Unlimited Usage       ### Google & Word Doc Imports Unlimited Usage       ### Image to Vector Imports Unlimited Usage

---

---
url: "/convertify/faq/security.md"
description: "Convertify runs as an official plugin inside of Figma's own app, which are reviewed and approved by the Figma team."
---

# Convertify Security

> Convertify runs as an official plugin inside of Figma's own app, which are reviewed and approved by the Figma team.

The Figma plugin is run directly from Figma's own servers, and runs inside of a your Figma file, which means that it inherits all of the [security](https://www.figma.com/security/) and infrastructure of the Figma platform, which exceed industry standards for data protection and security:

- SOC 2 Type 2
- SOC 3
- Cloud Security Alliance (CSA) STAR: Level 1
- ISO/IEC 27001:2013
- ISO/IEC 27018:2019
- EU Cloud Code of Conduct (COC): Level 2

There's **no additional software** that needs to be installed to use the Figma plugin, as Figma plugins run as a built-in part of Figma's own native functionality, and all Figma plugins easily accessibile and can be instantly run from inside any Figma file, or via the official [Figma Community](https://www.figma.com/community) ecosystem inside of the Figma app.

If your organization is already approved to use Figma, then you _already have access_ to Figma plugins.

## How Convertify works

The [Convertify Figma plugin](https://www.figma.com/community/plugin/849159306117999028) helps users easily convert Figma files into other design formats (eg `.sketch` or `.xd` files), and can also import other formats into Figma (eg `.xd`, `.pdf`, `.pptx`, or `.docx` files).

Convertify is designed to be privacy and security focused, so nothing _ever_ leaves your Figma file.

All functionality and file imports/exports are handled client-side directly in the Figma plugin using the [Figma Plugins API](https://www.figma.com/plugin-docs/), and are _never_ uploaded, processed or stored anywhere in the cloud or outside of Figma.

## What Convertify does and doesn't do

Convertify uses the [Figma Plugins API](https://www.figma.com/plugin-docs/) to convert designs directly inside of your Figma file, and doesn't rely on _any_ external servers, which means that nothing in your Figma file ever leaves the Figma plugin or Figma itself; any files that are imported/exported via the plugin are done so entirely locally to/from the user's own computer.

### Convertify does

- Allow users to export their Figma designs to other design file formats from Figma.
- Allow users to drag/drop other design format files from the user's computer to be imported to Figma.
- Download any converted files _directly_ to the user's computer.

### Convertify does _not_

- Upload _any_ data from your Figma file design or any imported designs.
- Store _any_ data from your Figma file design or any imported designs.
- Use _any_ servers or cloud storage to process or store your Figma files or imported designs.
- Collect or store _any_ personal information (Figma plugins *cannot* access any private information about Figma projects, Figma teams or Figma users).

## How Figma plugins work

Figma plugins are written in HTML/CSS/Javascript, and are run in a tightly controlled [sandbox environment](https://www.figma.com/plugin-docs/how-plugins-run/) inside of the main Figma application.

Figma plugins can only do whatever Figma allows them to do inside the permissions of the [Figma Plugins API](https://www.figma.com/plugin-docs/), and importantly, **plugins don't have any access to personal information** about the Figma user running the plugin.

## What Figma plugins can and can't do

As per the article on [Figma plugin security](https://www.figma.com/blog/how-we-built-the-figma-plugin-system/), there are a limited number of things that Figma plugins can do, and many more things that they can't do:

### Figma plugins can

- Only be run by an explicit user action
- Show UI in a single plugin-specific dialog
- Read any data in your Figma document (e.g. a “find layer by name” plugin)
- Modify any data in your Figma document (e.g. a “rename selected layers” plugin)
- Communicate with any server over the internet (e.g. an “import from service X” plugin)

### Figma plugins _cannot_

- Run by themselves
- Get information about the project or team that owns the file
- Access anything when they aren’t running
- Access data from any files other than the file they were run in
- Change Figma’s UI outside of the plugin UI dialog

> **Tip:** Figma account administrators at your company can [configure an allowlist of plugins](https://help.figma.com/hc/en-us/articles/4404228724759-Manage-plugins-and-widgets-in-an-organization) that are allowed inside the organization. This can be used to prevent untrusted Figma plugins from being run in any file in that organization.

---

---
url: "/convertify/faq/troubleshooting.md"
description: "Troubleshooting Convertify imports and exports across Figma, Adobe XD, and Sketch with common fixes."
---

# Troubleshooting Convertify

> Troubleshooting Convertify imports and exports across Figma, Adobe XD, and Sketch with common fixes.

## Figma

  ### Converting massive Figma files

If you're happy to wait for the process to finish, Convertify can handle really large Figma files (tens of thousands of layers). If possible, try not to switch out of your Figma tab and let it run to completion. If you're converting files with 50,000+ layers (especially with lots of images), you'll likely experience some slower speeds when it comes to bundling up the final file.

    **Avoid grouping parent level artboards**. One thing that can slow down conversions is if your designs have your top-level artboards inside of a Figma "Group" (or across multiple "Group") layers. Leaving your artboards to be the parent level children will help speed up the conversion process.

    **File Splitting**. If the file is _really_ big and simply won't finish or takes too long to do in one go; a good approach is "splitting" your Figma page across multiple pages, and converting each smaller page one by one. This should help lighten the load on Convertify for bigger files.

  ### Adobe Illustrator (.ai) file isn't importing

If you're dragging your .ai file into Convertify using the "Import Adobe Illustrator to Figma" option, you may need to open your .ai file in Illustrator again and re-save it to .ai with the **Create PDF Compatible File** checkbox selected; then if you drag that newly saved .ai file into Convertify, it should import.

  ### Thin white line around image exports

Occasionally some images will contain a faint, thin white line around the edges. Figma [does this](https://twitter.com/Skcrub/status/1255544876701270017) if a layer isn't positioned on a rounded pixel value (e.g., Y: 156.76 or X: 56.3) will automatically result in this sub-pixel line getting included in the export. To resolve the issue, please ensure that your layer positions are all rounded pixel values.

  ### Blank file extensions using Figma desktop app on Windows

There's a known issue with the Figma desktop app (only on Windows), which also happens for normal file exports from Figma. When you go to save your file, you may see an "all files" label. If you ignore this and continue by clicking "Save", it should still save the file with the correct extension and allow you to open it as expected after it has downloaded to your computer. If it still saves the file with a blank extension, you should be able to rename the file to manually append the correct extension to the file name.

  ### Pixelated image exports

If you're converting your file while the image assets in Figma are still progressively loading, they may be exported looking pixelated, as the image wasn't fully loaded in the Figma file before it was exported. To resolve this, please ensure that all of the images have loaded 100% and are looking sharp inside the Figma file before converting your Figma file with the Convertify plugin. To help further with solving this issue, you can use the ["Downsizer" feature](https://docs.hypermatic.com/tinyimage/usage.html#downsizing-your-figma-layer-fills) to shrink down your image fills to match their layer size, which will shrink their file size and ensure they load much faster in your Figma file.

  ### VPN may be required in China

Please note, if you're in China, the accounts server _may_ be blocked by "The Great Firewall of China". If you're seeing an activation error, despite using a valid key, you will likely need to use a [VPN](https://protonvpn.com/free-vpn/) to resolve the issue.

  ### 'An error occurred while loading the plugin environment'

This may happen in the Figma desktop app if [the Use Developer VM](https://www.figma.com/plugin-docs/debugging/#developer-vm) debug setting in Figma is enabled by mistake; you can make sure it's turned off by **right-clicking** anywhere on your Figma canvas, hovering over **Plugins**, then hovering over **Development**, and making sure that the **Use Developer VM** is _unchecked_; after it is unchecked (and does _not_ have a tick icon next to it), re-running the Figma plugin should work as expected.

## Adobe XD

  ### Figma features missing in Adobe XD

These features are available in Figma, but aren't native to Adobe XD, so they won't be carried over with the Convertify plugin.
    - Hiding parent artboards
    - Rotated parent artboards
    - Ellipsis with "arc" properties
    - Multiple fills/strokes on a layer
    - Vector layers that use corner radius
    - Strokes/fills applied to groups
    - Vertical alignment for text layers
    - Nested layer masks

  ### Installing Adobe XD

If you're a Mac or Windows user, you can [install Adobe XD in Creative Cloud](https://creativecloud.adobe.com/apps/all/all-platforms/pdp/xd) (or download the `.dmg` installer [directly from here](https://creativecloud.adobe.com/apps/download/xd?promoid=B8NR3RT1&mv=other)), which should allow you to run it on your computer. You can also find the [Windows standalone installer](https://archive.org/details/adobe-xd-54.1.12.1-for-windows) online, too.

  ### Vertical Text Alignment in Adobe XD

Vertically aligned text isn't supported in Adobe XD, so Convertify will attempt to emulate vertically aligned text (where possible) by offsetting the top position.

## Sketch

  ### Figma features missing in Sketch

These features are available in Figma, but aren't native to Sketch, so they won't be carried over with the Convertify plugin.
    - Hiding parent artboards
    - Rotated parent artboards
    - Ellipsis with "arc" properties

  ### The Sketch file won't open

If you're running an older version of Sketch, please ensure you select the version of Sketch you're using in Convertify before exporting the Figma file. Alternatively, if possible, updating your version of Sketch should help you get the best results with opening files exported from Convertify. If neither of these options work, it may be being caused by a bug in the plugin, in which case; please do [get in touch](https://hypermatic.com/contact/) and we'll try to publish a fix as soon as possible!

  ### Missing Fonts in Sketch

There are some cases where you may need to click the "Missing Fonts" notification in Sketch and manually re-assign them if they're not currently installed on your computer.

  ### Text Clipping in Sketch

If your text layer bounds (width/height) in Figma are smaller than the text size itself, Sketch will visually vertically clip if the height is shorter than the text itself, or it will put your text onto multiple lines if the width is shorter than the text itself. To resolve this when it occurs, you can adjust the width/height of your text layer(s) in Figma and re-export it for Sketch.

  ### Groups in Sketch

Groups in Sketch can't have backgrounds, so Convertify will add a background "rectangle" layer to visually emulate group backgrounds from your Figma design.

  ### Image Crops in Sketch

Non-destructive image cropping isn't supported in Sketch, so Convertify will transform your cropped images from Figma to a "masked" Sketch group, retaining your full original image and emulating its visual crop.

  ### Clip Content in Sketch

"Clip content" doesn't exist on group layers in Sketch, so Convertify will create a "mask" layer at the bottom of the group to visually emulate clipping for Figma frames with clipped content enabled.

---

---
url: "/convertify/import/adobe-illustrator.md"
description: "How to import Illustrator .ai files into Figma with Convertify, including vector import tips."
---

# Importing Adobe Illustrator to Figma

> How to import Illustrator .ai files into Figma with Convertify, including vector import tips.

### Video Tutorial: Import Adobe Illustrator to Figma

This video tutorial is a complete step-by-step guide showing you how to automatically import your Adobe Illustrator (.ai) files to Figma using the Convertify plugin.
[Embedded media](https://www.youtube.com/embed/Xb4hBxewwEE)

[Video](/assets/videos/convertify/import/import-ai.mp4)

To import your designs from an Adobe Illustrator (.ai) file to Figma, select the **Import Adobe Illustrator to Figma** option from the Convertify select box in the plugin, and then drag and drop your .ai file from anywhere on your computer into the dropzone area inside of the Convertify plugin to begin importing your design into Figma and wait for it to finish.

> **Tip:** By default, the Illustrator file will be imported as static JPG image frames. If you need vector layer data, you can try enabling the **Import Artboards as Vector Layers** toggle in the plugin before importing your Illustrator file.

> **Note:** If your Illustrator file isn't importing at all, you may need to re-save it by opening the `.ai` file in Adobe Illustrator, re-saving it as a new Illustrator file and ensuring the **PDF compatible** checkbox is **enabled**.

---

---
url: "/convertify/import/adobe-indesign.md"
description: "Import Adobe InDesign .idml files into Figma with Convertify."
---

# Importing Adobe InDesign to Figma

> Import Adobe InDesign .idml files into Figma with Convertify.

To import your designs from an Adobe InDesign (.idml) file to Figma, select the **Import Adobe InDesign to Figma** option from the Convertify select box in the plugin, and then drag and drop your `.idml` file from anywhere on your computer into the dropzone area inside of the Convertify plugin to begin importing your design into Figma and wait for it to finish.

The `.idml` file is imported directly into your current Figma file. If your document contains multiple pages, each top-level page is imported for review and editing.

---

---
url: "/convertify/import/adobe-photoshop.md"
description: "Import Adobe Photoshop .psd files into Figma with Convertify."
---

# Importing Adobe Photoshop to Figma

> Import Adobe Photoshop .psd files into Figma with Convertify.

### Video Title: Import Adobe Photoshop to Figma

This video tutorial is a complete step-by-step guide showing you how to automatically import your Adobe Photoshop (.psd) files to Figma using the Convertify plugin.
[Embedded media](https://www.youtube.com/embed/r5ITJXDOHiI)

[Video](/assets/videos/convertify/import/import-psd.mp4)

To import your designs from an Adobe Photoshop (.psd) file to Figma, select the **Import Adobe Photoshop to Figma** option from the Convertify select box in the plugin, and then drag and drop your `.psd` file from anywhere on your computer into the dropzone area inside of the Convertify plugin to begin importing your design into Figma and wait for it to finish.

The `.psd` file is imported directly into your current Figma file. If your document contains multiple artboards, each top-level artboard is imported for review and editing.

---

---
url: "/convertify/import/adobe-xd.md"
description: "Steps to import Adobe XD files into Figma with Convertify and required XD installation notes."
---

# Importing Adobe XD to Figma

> Steps to import Adobe XD files into Figma with Convertify and required XD installation notes.

### Video Tutorial: Import Adobe XD to Figma

This video tutorial is a complete step-by-step guide showing you how to automatically convert and import your designs from Adobe XD to Figma using the Convertify plugin.
[Embedded media](https://www.youtube.com/embed/9SrTAJnl68g)

[Video](/assets/videos/convertify/import/import-xd.mp4)

To import your designs from an Adobe XD (.xd) file to Figma, select the **Import Adobe XD to Figma** option from the Convertify select box in the plugin, and then drag and drop your .xd file from anywhere on your computer into the dropzone area inside of the Convertify plugin to begin importing your design into Figma and wait for it to finish.

> **Note:** **Installing Adobe XD** If you're a Mac or Windows user, you can [install Adobe XD in Creative Cloud](https://creativecloud.adobe.com/apps/all/all-platforms/pdp/xd) (or download the `.dmg` installer [directly from here](https://creativecloud.adobe.com/apps/download/xd?promoid=B8NR3RT1&mv=other)), which should allow you to run it on your computer. You can also find the [Windows standalone installer](https://archive.org/details/adobe-xd-54.1.12.1-for-windows) online, too.

---

---
url: "/convertify/import/google-docs.md"
description: "Import Google Docs into Figma by publishing to web and pasting the public URL."
---

# Importing Google Docs to Figma

> Import Google Docs into Figma by publishing to web and pasting the public URL.

### Video Tutorial: Import Google Docs to Figma

This video tutorial is a complete step-by-step guide showing you how to automatically convert and import pages from Google Docs to Figma using the Convertify plugin.
[Embedded media](https://www.youtube.com/embed/DuXOipNO3Nk)

[Video](/assets/videos/convertify/import/import-google-doc.mp4)

To import a document from a Google Docs into your file Figma, select the **Import Google Doc to Figma** option from the Convertify select box in the plugin, then paste in your _public_ Google Doc URL and click the **Import Google Doc** button in the plugin to import your Google Doc table to Figma.

> **Tip:** In order to import your Google Doc content to Figma, you'll first need to ensure that the Google Doc share URL is made public, otherwise the plugin won't have permissions to read it. You can do this by opening up the document in Google Docs, clicking the **Share** button and changing the document's permissions from **Restricted** and update it to **Anyone with the link**.

---

---
url: "/convertify/import/google-sheets.md"
description: "Import Google Sheets tables into Figma via public share URL using Convertify."
---

# Importing Google Sheets to Figma

> Import Google Sheets tables into Figma via public share URL using Convertify.

### Video Tutorial: Import Google Sheets to Figma

This video tutorial is a complete step-by-step guide showing you how to automatically convert and import tables from Google Sheets to Figma using the Convertify plugin.
[Embedded media](https://www.youtube.com/embed/cfzEPRPRfCg)

[Video](/assets/videos/convertify/import/import-google-sheet.mp4)

To import a table from a Google Sheet into your file Figma, select the **Import Google Sheet to Figma** option from the Convertify select box in the plugin, then paste in your _public_ Google Sheet URL and click the **Import Google Sheet** button in the plugin to import your Google Sheet table to Figma.

> **Tip:** In order to import your Google Sheet's content to Figma, you'll first need to ensure that the Google Sheet share URL is made public, otherwise the plugin won't have permissions to read it. You can do this by opening up the spreadsheet in Google Sheets, clicking the **Share** button and changing the sheet's permissions from **Restricted** and update it to **Anyone with the link**.

---

---
url: "/convertify/import/pdf.md"
description: "How to import PDF files into Figma with Convertify, including drag-and-drop and vector import options."
---

# Importing PDF to Figma

> How to import PDF files into Figma with Convertify, including drag-and-drop and vector import options.

### Video Tutorial: Import PDF to Figma

This video tutorial is a complete step-by-step guide showing you how to automatically import your PDF files to Figma using the Convertify plugin.
[Embedded media](https://www.youtube.com/embed/7BEJzVi8yeE)

[Video](/assets/videos/convertify/import/import-pdf.mp4)

To import your designs from a PDF (.pdf) file to Figma, select the **Import PDF to Figma** option from the Convertify select box in the plugin, and then drag and drop your .pdf file from anywhere on your computer into the dropzone area inside of the Convertify plugin to begin importing your design into Figma and wait for it to finish.

> **Tip:** By default, the PDF will be imported as static JPG image frames. If you need vector layer data, you can try enabling the **Import Pages as Vector Layers** toggle in the plugin before importing your PDF.

---

---
url: "/convertify/import/powerpoint.md"
description: "Import Microsoft PowerPoint .pptx files into Figma with Convertify."
---

# Importing PowerPoint to Figma

> Import Microsoft PowerPoint .pptx files into Figma with Convertify.

To import your slides from a Microsoft PowerPoint (`.pptx`) file to Figma, select the **Import PowerPoint to Figma** option from the Convertify select box in the plugin, and then drag and drop your `.pptx` file from anywhere on your computer into the dropzone area inside of the Convertify plugin to begin importing your slides into Figma and wait for it to finish.

The `.pptx` file is imported directly into your current Figma file. If your presentation contains multiple slides, each top-level slide is imported for review and editing.

---

---
url: "/convertify/import/svg.md"
description: "Import optimized SVG files into Figma by dragging them into Convertify."
---

# Importing Optimized SVG to Figma

> Import optimized SVG files into Figma by dragging them into Convertify.

### Video Tutorial: Import optimized SVG to Figma

This video tutorial is a complete step-by-step guide showing you how to automatically import optimized SVG to Figma using the Convertify plugin.
[Embedded media](https://www.youtube.com/embed/b-ENDkyz4ro)

[Video](/assets/videos/convertify/import/import-svg.mp4)

To import optimized and simplified SVG (.svg) vector files to Figma, select the **Import Optimized SVG to Figma** option from the Convertify select box in the plugin, and then drag and drop your .svg file from anywhere on your computer into the dropzone area inside of the Convertify plugin to import your optimized SVG vector into Figma.

---

---
url: "/convertify/import/vector.md"
description: "Convert bitmap images to traced SVG vectors in Figma using Convertify."
---

# Convert and import a JPG, PNG or WebP image to Vector SVG in Figma

> Convert bitmap images to traced SVG vectors in Figma using Convertify.

### Convert an image to vector SVG in Figma with one click

This video tutorial is a complete step-by-step guide showing you how to automatically convert and import a JPG/PNG image to vector SVG in Figma using the Convertify plugin.
[Embedded media](https://www.youtube.com/embed/mSAk3iGpaXQ)

[Video](/assets/videos/convertify/import/traced-vector.mp4)

To convert a bitmap image into a vector SVG file and import it into Figma, select the **Import Image as Traced SVG to Figma** option from the Convertify select box in the plugin, and then drag and drop your .png, .jpg or .webp file from anywhere on your computer into the dropzone area inside of the Convertify plugin to import your vectorized SVG layer into Figma.

> **Tip:** **Using higher quality and resolution input images will result in a better vector**. To get a better conversion result, you can try [upscaling your image](https://www.google.com/search?q=image+upscale) first, before importing it into the plugin.

> **Info:** If you'd prefer to download the converted vector, you can click the **Download SVG File** button to download the converted .svg file directly to your computer (instead of inserting it into Figma).

---

---
url: "/convertify/import/video-to-gif.md"
description: "Convert MP4 videos to animated GIF layers in Figma with Convertify and size limits."
---

# Importing MP4 video files as animated GIF layers to Figma

> Convert MP4 videos to animated GIF layers in Figma with Convertify and size limits.

### Video Tutorial: Import an MP4 video to animated GIF in Figma with one click

This video tutorial is a complete step-by-step guide showing you how to automatically convert and import a MP4 video to an animated GIF layer in Figma using the Convertify plugin.
[Embedded media](https://www.youtube.com/embed/e_PLQv2RY8Y)

[Video](/assets/videos/convertify/import/import-video-to-gif.mp4)

To import MP4 (.mp4) video files to Figma, select the **Import Video as GIF to Figma** option from the Convertify select box in the plugin, and then drag and drop your .mp4 file from anywhere on your computer into the dropzone area inside of the Convertify plugin to import your converted animated GIF image layer into Figma.

> **Warning:** Please note, due to the large size of animated GIFs, **this feature only supports .mp4 files up to 60 seconds in length**.

---

---
url: "/convertify/import/word-docs.md"
description: "Import Microsoft Word .docx files into Figma with Convertify."
---

# Importing Word Docs to Figma

> Import Microsoft Word .docx files into Figma with Convertify.

To import your content from a Microsoft Word (`.docx`) file to Figma, select the **Import Word Doc to Figma** option from the Convertify select box in the plugin, and then drag and drop your `.docx` file from anywhere on your computer into the dropzone area inside of the Convertify plugin to begin importing your document into Figma and wait for it to finish.

The `.docx` file is imported directly into your current Figma file. If your document contains multiple pages, each top-level page is imported for review and editing.

---

---
url: "/convertify/overview/install.md"
description: "Ensure you're logged into your Figma account, then follow the steps below to install and run the [Convertify Figma Plugin](https://www.figma.com/community/plugin/849159306117999028/convertify-sketch-adobe-google)."
---

# Install and run the Convertify Figma Plugin

> Ensure you're logged into your Figma account, then follow the steps below to install and run the [Convertify Figma Plugin](https://www.figma.com/community/plugin/849159306117999028/convertify-sketch-adobe-google).

### Video Tutorial: How to install (and remove) Figma plugins

This video tutorial is a complete step-by-step guide showing you the new process of how to install (and remove) Figma plugins after the mid-2024 "UI3" update to the Figma app
[Embedded media](https://www.youtube.com/embed/CzjxF2Jv6PM)

## Installing the Convertify Figma Plugin

1. Open any Figma file.
2. Click on the **Actions** icon in the bottom Figma toolbar.
3. Click the **Plugins & Widgets** tab to filter results to Figma plugins.
4. Search for **Convertify** in the search bar.
5. Click on the **Convertify** search result.
6. Click the **Save** button to install the Convertify plugin.

> **Note:** Figma users in a **Figma Organization** may only be able to install approved plugins. Please contact your Figma Org admin at your company to [approve the Convertify plugin](https://help.figma.com/hc/en-us/articles/4404228724759-Manage-plugins-and-widgets-in-an-organization) if you're unable to install certain Figma plugins.

## Running the Convertify Figma Plugin

Once you've [installed](#installing-the-figma-plugin) the **Convertify** Figma plugin, to run the plugin in your Figma file:

  1. **Right-click** anywhere on your Figma file's page canvas
  2. Hover your mouse over the **Plugins** ▶ menu item
  3. Hover your mouse over the **Saved plugins** ▶ menu item
  4. Click on the **Convertify** plugin menu item

> **Tip:** After you've run the **Convertify** plugin once in a Figma file, you'll be able to quickly re-launch it by clicking the **Convertify** icon in the right-hand side Figma column (under the **Plugin** subheading).

> **Warning:** Only Figma users with **Edit** access to a Figma file can run a Figma plugin in that Figma file; if you only have **View** permissions, you won't be able to run any Figma plugins in that file.

## Uninstalling the Convertify Figma plugin

import UnInstallSnippet from "/snippets/uninstalling-figma-plugins.mdx";

1. Open any Figma file.
2. Click on the **Actions** icon in the bottom Figma toolbar.
3. Click the **Plugins & Widgets** tab to filter results to Figma plugins.
4. Search for **Convertify** in the search bar.
5. Click on the **Convertify** search result.
6. Click the **Remove** button to uninstall the Convertify plugin.

> **Note:** This will remove the plugin from your **Saved Plugins** list, however, the Figma plugin may still show up under your **Recents** list (if it has been recently run), as Figma saves this list of recent plugins in your browser's/app's local storage. The plugin will vanish from the Recents menu after other plugins are run to take its place.

---

---
url: "/convertify/overview/pro.md"
description: "After trying out all the Pro features of Convertify **10 times**, you can optionally upgrade to continue using all the extra features that are only available in the Pro version; or if you're a casual user, you can continue using the Free version forever."
---

# Activating Convertify Pro

> After trying out all the Pro features of Convertify **10 times**, you can optionally upgrade to continue using all the extra features that are only available in the Pro version; or if you're a casual user, you can continue using the Free version forever.

> **Tip:** Need a Convertify Pro account? You can purchase a Pro account for you or your team by visiting the [Convertify](https://www.hypermatic.com/convertify/#pro) product page on the Hypermatic website.

## Activating the Figma plugin with an Convertify Pro license key

1. **Purchase a Pro license** for you or your team by visiting the [Convertify](https://www.hypermatic.com/convertify/#pro) product page on the Hypermatic website.
2. **Run the Convertify Plugin**, then click on the **Upgrade Now** button at the bottom of the Figma plugin window.
3. **Paste in your Pro key**, then click the **Unlock** button.

This will unlock the Pro version of Convertify and give you unlimited use all of the Figma plugin features.

> **Warning:** Please note, if you're in China, the accounts server _may_ be blocked by "The Great Firewall of China". If you're seeing a activation error, despite using a valid key, you will likely need to use a [VPN](https://protonvpn.com/free-vpn/) to resolve the issue.

> **Info:** If you ever need to use a different license key at any time (eg. you were using your own personal Pro license key, but now your employer is buying you a Pro license to use instead), you can press **CTRL + K** while your plugin window is open in Figma, and this will bring up the license key prompt again, where you can enter a different license key.

---

---
url: "/convertify/overview/quickstart.md"
description: "Export Figma to Sketch, XD, After Effects or import XD, Illustrator, PowerPoint, Word Docs, Google Docs, and PDF to Figma — with one click."
---

# Get Started with Convertify

> Export Figma to Sketch, XD, After Effects or import XD, Illustrator, PowerPoint, Word Docs, Google Docs, and PDF to Figma — with one click.

[![Convertify Figma Plugin](https://www.hypermatic.com/convertify.jpg)](https://www.figma.com/community/plugin/849159306117999028/convertify-sketch-adobe-google)

## Install & Activate Convertify

- [Install & Run the Figma plugin](/convertify/overview/install.md): How to run Convertify inside of Figma
- [Activate Convertify Pro](/convertify/overview/pro.md): How to buy and use a Pro license key

## Using Convertify

  - [Convertify Documentation](/convertify/export/adobe-xd.md): Detailed docs with short screencaps
  - [Convertify Video Tutorials](/convertify/tutorials.md): Full step-by-step video walkthroughs

## Frequently Asked Questions

- [Troubleshooting Convertify](/convertify/faq/troubleshooting.md): Common issues issues you may run into
- [Convertify Security](/convertify/faq/security.md): Details about how Convertify works
- [Receipts](/faq/receipts.md): Find email receipts and PDF invoices
- [Billing](/faq/billing.md): Manage your Pro subscription
- [License Seat Management](/faq/seats.md): Manage the Figma users on your key
- [Convertify Free vs Pro](/convertify/faq/plans.md): Compare Free vs Pro features

[Video](https://www.hypermatic.com/assets/videos/convertify/CONVERTIFY_DEMO.mp4)

## Convertify Features

- One-click, automatic conversion from Figma to Sketch, Adobe XD, After Effects, Adobe Photoshop, Adobe Illustrator, Adobe InDesign or EPS.
- Import your Adobe XD files (`.xd`), Adobe Photoshop files (`.psd`), PDF files (`.pdf`), Adobe Illustrator files (`.ai`), Adobe InDesign files (`.idml`), Microsoft PowerPoint files (`.pptx`), Microsoft Word files (`.docx`), optimized SVG files (`.svg`), or Google Docs/Sheets into Figma with one click.
- Import PNG/JPG bitmap images as vectorized SVG layers with the image tracer feature.
- Import MP4 video files as animated GIF layers with the video converter feature.
- Converts each artboard (layer-by-layer) to a real .sketch or .xd file.
- Simple pages converted in seconds; larger pages in minutes.
- Converts almost all layer styles and properties (see below for details).
- Includes color and text style libraries from Figma.
- Convert your Figma Components to Sketch/XD Symbols.
- Natively export artboards to After Effects from Adobe XD with converted .xd file.
- Includes all supported prototype links from Figma.
- Download the exported .sketch, .xd, psd, .idml, or .eps file to your computer from Figma.

---

---
url: "/convertify/tutorials.md"
description: "The best free Figma tutorial videos for beginners (or power users) to level up."
---

# Convertify Video Tutorials

> The best free Figma tutorial videos for beginners (or power users) to level up.

## Adobe

### Convert Figma to Adobe XD

This video tutorial is a complete step-by-step guide showing you how to automatically convert your designs from Figma to Adobe XD files (in one click) directly from Figma using the Convertify plugin.
[Embedded media](https://www.youtube.com/embed/cGYU2jvnSs8)

### Convert Figma to Adobe After Effects

This video tutorial is a complete step-by-step guide showing you how to automatically convert your designs from Figma to After Effects (in one click) directly from Figma using the Convertify plugin.
[Embedded media](https://www.youtube.com/embed/-UBknnWT6D0)

### Import Adobe XD to Figma

This video tutorial is a complete step-by-step guide showing you how to automatically convert and import your designs from Adobe XD to Figma using the Convertify plugin.
[Embedded media](https://www.youtube.com/embed/9SrTAJnl68g)

### Export Figma to Adobe Photoshop

This video tutorial is a complete step-by-step guide showing you how to automatically export Figma to Adobe Photoshop (.psd) files with one click using the Convertify plugin.
[Embedded media](https://www.youtube.com/embed/mmrIp3yB62g)

### Import Adobe Photoshop to Figma

This video tutorial is a complete step-by-step guide showing you how to automatically import your Adobe Photoshop (.psd) files to Figma using the Convertify plugin.
[Embedded media](https://www.youtube.com/embed/r5ITJXDOHiI)

### Import Adobe Illustrator to Figma

This video tutorial is a complete step-by-step guide showing you how to automatically import your Adobe Illustrator (.ai) files to Figma using the Convertify plugin.
[Embedded media](https://www.youtube.com/embed/Xb4hBxewwEE)

## Sketch

### Convert Figma to Sketch

This video tutorial is a complete step-by-step guide showing you how to automatically convert your designs from Figma to Sketch files (in one click) directly from Figma using the Convertify plugin.
[Embedded media](https://www.youtube.com/embed/1zwE3xSJeas)

### Convert Figma Components to Sketch Symbols

This video tutorial is a complete step-by-step guide showing you how to automatically convert your components from Figma to Sketch symbols using the Convertify plugin.
[Embedded media](https://www.youtube.com/embed/iOkr2w5KYMI)

## Google

### Import Google Docs to Figma

This video tutorial is a complete step-by-step guide showing you how to automatically convert and import pages from Google Docs to Figma using the Convertify plugin.
[Embedded media](https://www.youtube.com/embed/DuXOipNO3Nk)

### Import Google Sheets to Figma

This video tutorial is a complete step-by-step guide showing you how to automatically convert and import tables from Google Sheets to Figma using the Convertify plugin.
[Embedded media](https://www.youtube.com/embed/cfzEPRPRfCg)

## Other

### Convert an image to vector SVG in Figma with one click

This video tutorial is a complete step-by-step guide showing you how to automatically convert and import a JPG/PNG image to vector SVG in Figma using the Convertify plugin.
[Embedded media](https://www.youtube.com/embed/mSAk3iGpaXQ)

### Import PDF to Figma

This video tutorial is a complete step-by-step guide showing you how to automatically import your PDF files to Figma using the Convertify plugin.
[Embedded media](https://www.youtube.com/embed/7BEJzVi8yeE)

### Import an MP4 video to animated GIF in Figma with one click

This video tutorial is a complete step-by-step guide showing you how to automatically convert and import a MP4 video to an animated GIF layer in Figma using the Convertify plugin.
[Embedded media](https://www.youtube.com/embed/e_PLQv2RY8Y)

### Import optimized SVG to Figma

This video tutorial is a complete step-by-step guide showing you how to automatically import optimized SVG to Figma using the Convertify plugin.
[Embedded media](https://www.youtube.com/embed/b-ENDkyz4ro)

### Convert Figma to EPS (PostScript)

This video tutorial is a complete step-by-step guide showing you how to automatically convert your designs from Figma to EPS PostScript (in one click) directly from Figma using the Convertify plugin.
[Embedded media](https://www.youtube.com/embed/ZEclPO-3sbw)

---

---
url: "/copydoc/export/comic.md"
description: "The **Export Figma Frames** feature in CopyDoc works by letting you export frames on your current Figma page to other popular document formats."
---

# Export Comic/Manga

> The **Export Figma Frames** feature in CopyDoc works by letting you export frames on your current Figma page to other popular document formats.

[Video](/assets/videos/copydoc/export/export-frames-pdf.mp4)

### Selecting your Figma frames to include

To get started with this feature, click on the **Export Frames** button in the main CopyDoc plugin screen.

You'll now be able to select the frames from your current Figma page that you would like to export to another format.

CopyDoc will load all of your **parent frames** from your current Figma page into the plugin as a list of frames that you can use to choose the frames you would like to include; you can click on any frame's checkbox or image thumbnail to select it (clicking it again will deselect it).

> **Tip:** **Parent frames required**. To export frames from CopyDoc, your Figma page must contain at least one **Parent Frame**; this means, any "frames" that are located _directly_ underneath your page.

### Selecting your document export format

After you've selected the Figma frames you would like to export, you can select the **export format** using the dropdown box options.

## Export Comic/Manga

Selecting the **Comic/Manga** option allows you to export your Figma frames to a CBR file that can be viewed with any Comic Book or Manga reading apps. You can configure the following settings for Comic/Manga exports:

### Include Design References

Enabling the **Include Design References** option will include `.png` images for each FIgma frame that you've selected to export. These can be used as a visual design reference alongside your text exported to `.cbr` files.

### Exporting and downloading your document

When you're happy with your selected frames and the options for your chosen export format, you can click on the **Export** button to generate your file.

After clicking the **Export** button, you'll see a confirmation screen letting you know that your file is ready to download. To download the file from Figma to your computer, you can click the **Download** button in the CopyDoc plugin.

> **Tip:** **Saving file downloads from Figma** If you're using the Figma **desktop app**, you'll see a prompt appear to download your file. However, if you're using Figma in a **web browser**, your file will automatically be downloaded to your computer by default (usually to the **Downloads** directory on your computer).

---

---
url: "/copydoc/export/docx.md"
description: "The **Export Figma Frames** feature in CopyDoc works by letting you export frames on your current Figma page to other popular document formats."
---

# Export Microsoft Word

> The **Export Figma Frames** feature in CopyDoc works by letting you export frames on your current Figma page to other popular document formats.

[Video](/assets/videos/copydoc/export/export-frames-pdf.mp4)

### Selecting your Figma frames to include

To get started with this feature, click on the **Export Frames** button in the main CopyDoc plugin screen.

You'll now be able to select the frames from your current Figma page that you would like to export to another format.

CopyDoc will load all of your **parent frames** from your current Figma page into the plugin as a list of frames that you can use to choose the frames you would like to include; you can click on any frame's checkbox or image thumbnail to select it (clicking it again will deselect it).

> **Tip:** **Parent frames required**. To export frames from CopyDoc, your Figma page must contain at least one **Parent Frame**; this means, any "frames" that are located _directly_ underneath your page.

### Selecting your document export format

After you've selected the Figma frames you would like to export, you can select the **export format** using the dropdown box options.

## Export Microsoft Word

Selecting the **Microsoft Word** option allows you to export your Figma frames (which are treated as "pages") to a DOCX file that can be opened and edited in the Microsoft Word desktop app. You can configure the following settings for Microsoft Word exports:

### Export DOCX File Per Frame

Enabling the **Export DOCX File Per Frame** toggle will ensure each Figma frame you've selected will be exported as an individual `.docx` files, rather than exporting all of the selected frames being merged together into a single `.docx` file.

> **Warning:** DOCX Exports aren't optimised for Google Docs or Office 365 Web**. If you're exporting your Figma designs to `.docx`, please open them in Microsoft Word, as some features won't be supported in Google Docs.

### Exporting and downloading your document

When you're happy with your selected frames and the options for your chosen export format, you can click on the **Export** button to generate your file.

After clicking the **Export** button, you'll see a confirmation screen letting you know that your file is ready to download. To download the file from Figma to your computer, you can click the **Download** button in the CopyDoc plugin.

> **Tip:** **Saving file downloads from Figma** If you're using the Figma **desktop app**, you'll see a prompt appear to download your file. However, if you're using Figma in a **web browser**, your file will automatically be downloaded to your computer by default (usually to the **Downloads** directory on your computer).

---

---
url: "/copydoc/export/ebook.md"
description: "The **Export Figma Frames** feature in CopyDoc works by letting you export frames on your current Figma page to other popular document formats."
---

# Export E-Book

> The **Export Figma Frames** feature in CopyDoc works by letting you export frames on your current Figma page to other popular document formats.

[Video](/assets/videos/copydoc/export/export-frames-pdf.mp4)

### Selecting your Figma frames to include

To get started with this feature, click on the **Export Frames** button in the main CopyDoc plugin screen.

You'll now be able to select the frames from your current Figma page that you would like to export to another format.

CopyDoc will load all of your **parent frames** from your current Figma page into the plugin as a list of frames that you can use to choose the frames you would like to include; you can click on any frame's checkbox or image thumbnail to select it (clicking it again will deselect it).

> **Tip:** **Parent frames required**. To export frames from CopyDoc, your Figma page must contain at least one **Parent Frame**; this means, any "frames" that are located _directly_ underneath your page.

### Selecting your document export format

After you've selected the Figma frames you would like to export, you can select the **export format** using the dropdown box options.

## Export E-Book

Selecting the **E-Book** option allows you to export your Figma frames to a EPUB file that can be viewed with any e-book reader software or app. You can configure the following settings for E-Book exports:

### Include Design References

Enabling the **Include Design References** option will include `.png` images for each FIgma frame that you've selected to export. These can be used as a visual design reference alongside your text exported to `.epub` files.

### Exporting and downloading your document

When you're happy with your selected frames and the options for your chosen export format, you can click on the **Export** button to generate your file.

After clicking the **Export** button, you'll see a confirmation screen letting you know that your file is ready to download. To download the file from Figma to your computer, you can click the **Download** button in the CopyDoc plugin.

> **Tip:** **Saving file downloads from Figma** If you're using the Figma **desktop app**, you'll see a prompt appear to download your file. However, if you're using Figma in a **web browser**, your file will automatically be downloaded to your computer by default (usually to the **Downloads** directory on your computer).

---

---
url: "/copydoc/export/excel.md"
description: "The **Export Figma Frames** feature in CopyDoc works by letting you export frames on your current Figma page to other popular document formats."
---

# Export Excel

> The **Export Figma Frames** feature in CopyDoc works by letting you export frames on your current Figma page to other popular document formats.

[Video](/assets/videos/copydoc/export/export-frames-pdf.mp4)

### Selecting your Figma frames to include

To get started with this feature, click on the **Export Frames** button in the main CopyDoc plugin screen.

You'll now be able to select the frames from your current Figma page that you would like to export to another format.

CopyDoc will load all of your **parent frames** from your current Figma page into the plugin as a list of frames that you can use to choose the frames you would like to include; you can click on any frame's checkbox or image thumbnail to select it (clicking it again will deselect it).

> **Tip:** **Parent frames required**. To export frames from CopyDoc, your Figma page must contain at least one **Parent Frame**; this means, any "frames" that are located _directly_ underneath your page.

### Selecting your document export format

After you've selected the Figma frames you would like to export, you can select the **export format** using the dropdown box options.

## Export Microsoft Excel

Selecting the **Microsoft Excel** option allows you to export the text content of your Figma frames to a XLSX file that can be opened and edited in Microsoft Excel (or another spreadsheet app that supports `.xlsx` files). You can configure the following settings for Microsoft Excel exports:

### Export XLSX File Per Frame

Enabling the **Export XLSX File Per Frame** toggle will ensure each Figma frame you've selected will be exported as an individual `.xlsx` files, rather than exporting all of the selected frames being merged together into a single `.xlsx` file (with each Figma frame as a different "tab" in the Excel file).

### Include Design References

Enabling the **Include Design References** option will include `.png` images for each FIgma frame that you've selected to export. These can be used as a visual design reference alongside your text exported to `.xlsx` files.

### Exporting and downloading your document

When you're happy with your selected frames and the options for your chosen export format, you can click on the **Export** button to generate your file.

After clicking the **Export** button, you'll see a confirmation screen letting you know that your file is ready to download. To download the file from Figma to your computer, you can click the **Download** button in the CopyDoc plugin.

> **Tip:** **Saving file downloads from Figma** If you're using the Figma **desktop app**, you'll see a prompt appear to download your file. However, if you're using Figma in a **web browser**, your file will automatically be downloaded to your computer by default (usually to the **Downloads** directory on your computer).

---

---
url: "/copydoc/export/figma-comments.md"
description: "The **Export Figma Comments** feature in CopyDoc lets you export all of the comments from the current Figma file to a `.csv` and `.json` file (with optional images for design references) that you can download to your computer."
---

# Exporting Figma comments

> The **Export Figma Comments** feature in CopyDoc lets you export all of the comments from the current Figma file to a `.csv` and `.json` file (with optional images for design references) that you can download to your computer.

### Video Tutorial: Export comments from Figma files

This video tutorial is a complete step-by-step guide showing you how to export your comments from your Figma files to CSV/JSON files (with image references) using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/GXg0q8GO_Ik)

## Generating your Figma personal access token

[Video](/assets/videos/copydoc/export/create-figma-token.mp4)

To be able to export comments from the CopyDoc plugin, you'll need to [generate a personal access token](https://help.figma.com/hc/en-us/articles/8085703771159-Manage-personal-access-tokens) in your Figma account:

1. Go to your **Settings** panel (in the dropdown menu under your Figma account icon).
2. Scroll down the **Account** tab in the settings popup to the **Personal access tokens** section.
3. Click **Generate new token**.
4. Set a **Token name** (eg. _CopyDoc Figma Plugin_).
5. Set the **Expiration** dropdown option to **90 Days**.
6. Ensure the the **File content** dropdown option is set to **Read-only**.
7. Ensure the the **Comments** dropdown option is set to **Write**.
8. All of the other dropdown options can be left as **No access**.
9. Click the **Generate token** button.
10. Click the **Copy this token** (this is your only chance to do so).

## Exporting your Figma comments from the CopyDoc plugin

[Video](/assets/videos/copydoc/export/download-figma-comments.mp4)

To get started with this feature, click on the **Export Figma Comments** button in the main CopyDoc plugin screen, then follow the steps below:

### Adding your Figma personal token

To authenticate the request for reading comments in your Figma file, you will need to manually add a personal Figma access token by following the steps in the [Generating your Figma personal access token](#generating-your-figma-personal-access-token) section above.

> **Note:** **Your token will automatically be saved after successful export**. After you've successfully exported comments via CopyDoc, your Figma personal access token will automatically be saved (and pre-populated in the input field) for future use in the plugin, across other Figma projects.

### Adding your Figma file URL

You will need to manually add your Figma page URL by clicking on the **Share** button in the Figma header, then clicking **Copy link** in the pop-up window, and finally pasting the copied URL into the **Figma Page URL (Required)** input field in the CopyDoc plugin settings.

### Toggling design references option

Enabling the **Include Design References** option will include `.png` images (containing numbered/positioned pins per comment thread) for each frame that contains at least one comment. These can be used as a visual reference alongside the text comments exported to `.csv` and `.json` files.

### Fetching and exporting comments

Once you've added your valid **Figma Page URL** and **Figma Personal Access Token**, you can click the **Export Comments to CSV/JSON** button, which will scan your Figma file for any comments and generate a CSV and JSON file (along with image references, if the **Include Design References** option was enabled).

After CopyDoc has finished exporting your comments, you'll be shown a confirmation message; you can download your `.zip` file containing your exported comments by clicking the **Download Comments** button.

> **Tip:** **Saving file downloads from Figma** If you're using the Figma **desktop app**, you'll see a prompt appear to download your file. However, if you're using Figma in a **web browser**, your file will automatically be downloaded to your computer by default (usually to the **Downloads** directory on your computer).

### Opening .zip file

After you've downloaded your `.zip` file from Figma to your computer, you can open your file explorer to the directory where it was saved. **Double clicking** on the exported `.zip` file will unzip the contents and let you use your comments however you like.

---

---
url: "/copydoc/export/pdf.md"
description: "The **Export Figma Frames** feature in CopyDoc works by letting you export frames on your current Figma page to other popular document formats."
---

# Export PDF

> The **Export Figma Frames** feature in CopyDoc works by letting you export frames on your current Figma page to other popular document formats.

[Video](/assets/videos/copydoc/export/export-frames-pdf.mp4)

### Selecting your Figma frames to include

To get started with this feature, click on the **Export Frames** button in the main CopyDoc plugin screen.

You'll now be able to select the frames from your current Figma page that you would like to export to another format.

CopyDoc will load all of your **parent frames** from your current Figma page into the plugin as a list of frames that you can use to choose the frames you would like to include; you can click on any frame's checkbox or image thumbnail to select it (clicking it again will deselect it).

> **Tip:** **Parent frames required**. To export frames from CopyDoc, your Figma page must contain at least one **Parent Frame**; this means, any "frames" that are located _directly_ underneath your page.

### Selecting your document export format

After you've selected the Figma frames you would like to export, you can select the **export format** using the dropdown box options.

## Export PDF

Selecting the **PDF** option allows you to export your Figma frames (which are treated as "pages") to a PDF document. You can configure the following settings for PDF exports:

### Export PDF File Per Frame

Enabling the **Export PDF File Per Frame** toggle will ensure each Figma frame you've selected will be exported as an individual `.pdf` files, rather than exporting all of the selected frames being merged together into a single `.pdf` file.

### Vector Gradient Fix

If you're exporting Figma frames to `.pdf` that contain gradient fills inside any vector paths, you can enable the **Vector Gradient Fix** setting to ensure the gradient is rendered as expected. If you don't need this option, there's no need to enable it.

### DPI

You can select the DPI (dots per inch) setting for your PDF exports, which will influence the file size and quality of your exported `.pdf` files. The higher the DPI, the better the quality (with higher file sizes) - the lower the DPI, the less quality (with lower file sizes).

The available DPI options are:

- **72dpi** Low Quality
- **150dpi** Good Quality
- **300dpi** Best Quality

> **Note:** **PDF Export Browser Support**. Due to browser compatibility issues, exporting **PDF** files from CopyDoc _isn't_ supported in **Safari**. Please run the plugin in another browser (like [Chrome](https://www.google.com/intl/en_us/chrome/)) or the [Figma Desktop App](https://www.figma.com/downloads/) instead.

### Exporting and downloading your document

When you're happy with your selected frames and the options for your chosen export format, you can click on the **Export** button to generate your file.

After clicking the **Export** button, you'll see a confirmation screen letting you know that your file is ready to download. To download the file from Figma to your computer, you can click the **Download** button in the CopyDoc plugin.

> **Tip:** **Saving file downloads from Figma** If you're using the Figma **desktop app**, you'll see a prompt appear to download your file. However, if you're using Figma in a **web browser**, your file will automatically be downloaded to your computer by default (usually to the **Downloads** directory on your computer).

---

---
url: "/copydoc/export/plain-text.md"
description: "The **Export Figma Frames** feature in CopyDoc works by letting you export frames on your current Figma page to other popular document formats."
---

# Export Plain Text

> The **Export Figma Frames** feature in CopyDoc works by letting you export frames on your current Figma page to other popular document formats.

[Video](/assets/videos/copydoc/export/export-frames-pdf.mp4)

### Selecting your Figma frames to include

To get started with this feature, click on the **Export Frames** button in the main CopyDoc plugin screen.

You'll now be able to select the frames from your current Figma page that you would like to export to another format.

CopyDoc will load all of your **parent frames** from your current Figma page into the plugin as a list of frames that you can use to choose the frames you would like to include; you can click on any frame's checkbox or image thumbnail to select it (clicking it again will deselect it).

> **Tip:** **Parent frames required**. To export frames from CopyDoc, your Figma page must contain at least one **Parent Frame**; this means, any "frames" that are located _directly_ underneath your page.

### Selecting your document export format

After you've selected the Figma frames you would like to export, you can select the **export format** using the dropdown box options.

## Export Plain Text

Selecting the **Plain Text** option allows you to export the text content of your Figma frames to a TXT file that can be opened and edited in any text editing software. You can configure the following settings for Plain Text exports:

### Include Design References

Enabling the **Include Design References** option will include `.png` images for each FIgma frame that you've selected to export. These can be used as a visual design reference alongside your text exported to `.txt` files.

### Exporting and downloading your document

When you're happy with your selected frames and the options for your chosen export format, you can click on the **Export** button to generate your file.

After clicking the **Export** button, you'll see a confirmation screen letting you know that your file is ready to download. To download the file from Figma to your computer, you can click the **Download** button in the CopyDoc plugin.

> **Tip:** **Saving file downloads from Figma** If you're using the Figma **desktop app**, you'll see a prompt appear to download your file. However, if you're using Figma in a **web browser**, your file will automatically be downloaded to your computer by default (usually to the **Downloads** directory on your computer).

---

---
url: "/copydoc/export/table.md"
description: "The **Export Figma Frames** feature in CopyDoc works by letting you export frames on your current Figma page to other popular document formats."
---

# Export HTML Table

> The **Export Figma Frames** feature in CopyDoc works by letting you export frames on your current Figma page to other popular document formats.

[Video](/assets/videos/copydoc/export/export-frames-pdf.mp4)

### Selecting your Figma frames to include

To get started with this feature, click on the **Export Frames** button in the main CopyDoc plugin screen.

You'll now be able to select the frames from your current Figma page that you would like to export to another format.

CopyDoc will load all of your **parent frames** from your current Figma page into the plugin as a list of frames that you can use to choose the frames you would like to include; you can click on any frame's checkbox or image thumbnail to select it (clicking it again will deselect it).

> **Tip:** **Parent frames required**. To export frames from CopyDoc, your Figma page must contain at least one **Parent Frame**; this means, any "frames" that are located _directly_ underneath your page.

### Selecting your document export format

After you've selected the Figma frames you would like to export, you can select the **export format** using the dropdown box options.

## Export HTML Table

Selecting the **HTML Table** option allows you to export the text content of your Figma frames to a HTML file that can be opened in a web browser, or edited in any text/code editing software. You can configure the following settings for HTML Table exports:

### Include Design References

Enabling the **Include Design References** option will include `.png` images for each FIgma frame that you've selected to export. These can be used as a visual design reference alongside your text exported to `.html` files.

### Exporting and downloading your document

When you're happy with your selected frames and the options for your chosen export format, you can click on the **Export** button to generate your file.

After clicking the **Export** button, you'll see a confirmation screen letting you know that your file is ready to download. To download the file from Figma to your computer, you can click the **Download** button in the CopyDoc plugin.

> **Tip:** **Saving file downloads from Figma** If you're using the Figma **desktop app**, you'll see a prompt appear to download your file. However, if you're using Figma in a **web browser**, your file will automatically be downloaded to your computer by default (usually to the **Downloads** directory on your computer).

---

---
url: "/copydoc/faq/plans.md"
description: "To get unlimited usage of all of the CopyDoc Pro features, you will need to purchase a license from the [Hypermatic website](https://hypermatic.com/copydoc#pro)."
---

# CopyDoc Free vs CopyDoc Pro

> To get unlimited usage of all of the CopyDoc Pro features, you will need to purchase a license from the [Hypermatic website](https://hypermatic.com/copydoc#pro).

CopyDoc includes 10 free trials of the _Pro_ version. Once these trials have been used up, the Figma plugin will revert to their _Free_ version, which will have limited functionality.

  - **CopyDoc Free**: ### Find & Replace Unlimited Usage       ### Text Exports Try during 10 Pro Trials       ### Text Imports Try during 10 Pro Trials       ### Content Library Try during 10 Pro Trials       ### Spreadsheet Sync Try during 10 Pro Trials       ### Text Localization Try during 10 Pro Trials       ### Spell Checking Try during 10 Pro Trials
  - **CopyDoc Pro**: ### Find & Replace Unlimited Usage       ### Text Exports Unlimited Usage       ### Text Imports Unlimited Usage       ### Content Library Unlimited Usage       ### Spreadsheet Sync Unlimited Usage       ### Text Localization Unlimited Usage       ### Spell Checking Unlimited Usage

---

---
url: "/copydoc/faq/security.md"
description: "CopyDoc runs as an official plugin inside of Figma's own app, which are reviewed and approved by the Figma team."
---

# CopyDoc Security

> CopyDoc runs as an official plugin inside of Figma's own app, which are reviewed and approved by the Figma team.

The Figma plugin is run directly from Figma's own servers, and runs inside of a your Figma file, which means that it inherits all of the [security](https://www.figma.com/security/) and infrastructure of the Figma platform, which exceed industry standards for data protection and security:

- SOC 2 Type 2
- SOC 3
- Cloud Security Alliance (CSA) STAR: Level 1
- ISO/IEC 27001:2013
- ISO/IEC 27018:2019
- EU Cloud Code of Conduct (COC): Level 2

There's **no additional software** that needs to be installed to use the Figma plugin, as Figma plugins run as a built-in part of Figma's own native functionality, and all Figma plugins easily accessibile and can be instantly run from inside any Figma file, or via the official [Figma Community](https://www.figma.com/community) ecosystem inside of the Figma app.

If your organization is already approved to use Figma, then you _already have access_ to Figma plugins.

## How CopyDoc works

The [CopyDoc Figma plugin](https://www.figma.com/community/plugin/900893606648879767) helps users easily export, import, localize and update text in Figma.

CopyDoc is designed to be privacy and security focused, with core import/export workflows handled locally inside the Figma plugin.

All standard file imports/exports are handled client-side directly in the plugin using the [Figma Plugins API](https://www.figma.com/plugin-docs/), and are _never_ uploaded, processed or stored on Hypermatic servers or any CopyDoc cloud backend.

## What CopyDoc does and doesn't do

CopyDoc uses the [Figma Plugins API](https://www.figma.com/plugin-docs/) to help you export/import, localize, sync, spellcheck and find/replace text content inside of your Figma file.

For normal local file import/export workflows, it doesn't rely on any CopyDoc backend to process your design content.

### CopyDoc does

- Allow users to optionally export text content from their Figma file to an XLSX, JSON, CSV or XLIFF file, which is then saved _directly_ to their computer.
- Allow users to optionally drag/drop XLSX, CSV, JSON or XLIFF files from the user's computer to re-import updated content to Figma.
- Allow users to optionally export Figma frames from their Figma file to a PDF, DOCX, CSV or XLSX file, which is then saved _directly_ to their computer.
- Allow users to spell check their text content inside of the Figma file.
- Allow users to optionally sync content from a Google Sheets URL, which imports content _directly_ via the official Google Sheets API.
- Allow users to optionally localize selected text with ChatGPT, Claude or Gemini by explicitly enabling those features and providing their own API key.
- Allow users to find and replace text inside of the Figma file.
- Allow users to optionally export Figma comments from their Figma file to an XLSX file via the [Figma REST API](https://www.figma.com/developers/api), which is then saved _directly_ to their computer.
- Allow users to optionally use manual AI prompt workflows, where CopyDoc generates a prompt locally and the user manually pastes the CSV result back into the plugin.

### CopyDoc does not

- Upload _any_ design data or content from your Figma file to Hypermatic servers for normal import/export processing.
- Store _any_ design data or content from your Figma file on Hypermatic servers.
- Use _any_ CopyDoc cloud backend to process your design data or content for standard local import/export workflows.
- Collect or store _any_ personal information (Figma plugins *cannot* access any private information about Figma projects, Figma teams or Figma users).

## How Figma plugins work

Figma plugins are written in HTML/CSS/Javascript, and are run in a tightly controlled [sandbox environment](https://www.figma.com/plugin-docs/how-plugins-run/) inside of the main Figma application.

Figma plugins can only do whatever Figma allows them to do inside the permissions of the [Figma Plugins API](https://www.figma.com/plugin-docs/), and importantly, **plugins don't have any access to personal information** about the Figma user running the plugin.

## What Figma plugins can and can't do

As per the article on [Figma plugin security](https://www.figma.com/blog/how-we-built-the-figma-plugin-system/), there are a limited number of things that Figma plugins can do, and many more things that they can't do:

### Figma plugins can

- Only be run by an explicit user action
- Show UI in a single plugin-specific dialog
- Read any data in your Figma document (e.g. a “find layer by name” plugin)
- Modify any data in your Figma document (e.g. a “rename selected layers” plugin)
- Communicate with any server over the internet (e.g. an “import from service X” plugin)

### Figma plugins _cannot_

- Run by themselves
- Get information about the project or team that owns the file
- Access anything when they aren’t running
- Access data from any files other than the file they were run in
- Change Figma’s UI outside of the plugin UI dialog

> **Tip:** Figma account administrators at your company can [configure an allowlist of plugins](https://help.figma.com/hc/en-us/articles/4404228724759-Manage-plugins-and-widgets-in-an-organization) that are allowed inside the organization. This can be used to prevent untrusted Figma plugins from being run in any file in that organization.

## Optional external connections

Some CopyDoc features are optional and only connect to third-party services when you explicitly choose to use them.

- **AI localization APIs**: if you choose ChatGPT, Claude or Gemini localization, CopyDoc sends only the selected text and localization prompt directly to that provider using your own API key. Those requests are not stored in your Figma file, and your API key is stored per Figma user on your device rather than in the file itself.
- **Manual AI prompt workflows**: if you choose a manual ChatGPT, Claude or Gemini prompt workflow, CopyDoc generates the prompt locally, and you decide what to paste into the external AI app yourself.
- **Google Sheets**: if you choose to sync from a public Google Sheet, CopyDoc reads that sheet directly so it can import the content into Figma.
- **Airtable**: if you choose Airtable integration, CopyDoc reads or writes the content needed for that Airtable workflow.
- **Figma comments export**: if you choose to export comments, CopyDoc uses your Figma Personal Access Token to read comments from the [Figma REST API](https://www.figma.com/developers/api).

These optional integrations are user-initiated and are not required for the plugin's standard local export/import workflows.

---

---
url: "/copydoc/faq/troubleshooting.md"
description: "Troubleshooting guide for CopyDoc exports, imports, and font or spreadsheet issues."
---

# Troubleshooting CopyDoc

> Troubleshooting guide for CopyDoc exports, imports, and font or spreadsheet issues.

### Microsoft Word line height exceeding the height of a text layer

If your text layer has a large line height (that exceeds the height of the text layer itself), your text will be pushed down in the Microsoft Word (.docx) export.

  ### Google Sheets converting 'ID' column to numbers

When importing a CSV file into Google Sheets, please ensure you _uncheck_ the **Convert text to numbers, dates and formulas** checkbox, otherwise your Figma IDs will be modified and messed up, which means they won't be able to be imported properly back into Figma.

  ### Any Figma layers with a missing font can't be replaced, updated or spell checked

If your Figma text layer contains a [missing font](https://help.figma.com/hc/en-us/articles/360039956994-Manage-missing-fonts), the plugin won't be able to update it. Please ensure any text layers you would like to update in any way using the CopyDoc plugin have their missing fonts resolved.

  ### Error when trying to export Figma comments

If you're using a valid Figma API token in a Figma file that has comments, but you're seeing an error message saying that the token is invalid, your ISP is likely blocking the API request to fetch Figma comments; so you will likely need to use a [VPN](https://protonvpn.com/free-vpn/) to resolve the issue.

  ### DOCX file exports aren't optimized for Google Docs

If you're exporting your Figma designs to .docx, please open them in Microsoft Word, as some features won't be supported in Google Docs.

  ### Google Sheet URL not loading

When connecting a spreadsheet to CopyDoc, you must use a native Google Sheets document, not an Excel (.xlsx) file uploaded to Google Drive.

    The Difference:

    - Native Google Sheets - Created directly in Google Sheets
    - Google Drive XLSX - Excel files uploaded to or created in Google Drive

    While both look nearly identical in the Google interface, only native Google Sheets work with CopyDoc's integration.

    If you have an XLSX file in Google Drive that you want to use with CopyDoc:

    1. Open the XLSX file in Google Drive
    2. Click **File** → **Save as Google Sheet**
    3. In the new Google Sheets document, click **Share**
    4. Set permissions to **Anyone with the link can view**
    5. Copy the new URL and paste it into CopyDoc

    **Tip**: You can identify an XLSX file by the small "XLSX" badge indicator in the Google Drive interface.

  ### Some elements are missing and turning into purple rectangles when exporting PDF from Figma

This is a known, [long-standing Figma bug](https://forum.figma.com/t/pdf-export-consistently-missing-elements/3547) where purple boxes are shown instead of the image, and becuase CopyDoc is using the native PDF export function from Figma behind the scenes, the plugin will inherit these bugs when exporting PDFs if they occur in Figma as well.

    One suggestion that can help is to ensure the problematic layer is actually nested _inside_ of the main Figma frame, as sometimes a Figma layer is "visually" positioned on top of your frame on the canvas, but the layer itself is still sitting outside of the frame; this seems to be related to why the problem occurs sometimes.

  ### Slow PDF exports

If your PDF exports are going really slow, it's likely due to having high-res/large image fills in some of the content, which causes Figma to take a much longer time generating PDFs. To help with this issue, you can use the ["Downsizer" feature](https://docs.hypermatic.com/tinyimage/usage.html#downsizing-your-figma-layer-fills) in [TinyImage](https://www.figma.com/community/plugin/789009980664807964/TinyImage-Compressor) to shrink down your image fills to match their layer size, which will shrink their file size and ensure they load much faster in your Figma file. Once you've finished downsizing the image fills in your Figma page, re-running CopyDoc and exporting your PDF again via the plugin should be much faster.

  ### Editing PDFs in Adobe Acrobat shows dotted lines

This can be resolved by un-checking the "Show bounding boxes" toggle in the Acrobat Acrobat app sidebar while editing your PDF. Showing the dotted bounding box lines is something that [Adobe enables by default](https://archive.md/Uhdbk) while enter "Edit" mode when you have a PDF open in the app, but turning off the "Show bounding boxes" toggle will turn hide those from being displayed with one click.

  ### Opening CSV files with unicode characters in Microsoft Excel

Microsoft Excel requires you to use the built-in [Import Wizard](https://community.jaspersoft.com/wiki/how-import-csv-document-cyrillic-symbols-excel-and-correctly-render-them-program) to import the CSV if your text contains unicode characters (for example, if your content is in Polish or Russian or has certain accented characters). Please note that other spreadsheet software like Apple Keynote and Google Sheets doesn't require you to do this, and you can open the CSV file normally in those apps. To do this in Microsoft Excel, you can create a brand new Excel file, click on the **Data** tab in the Excel header, select the **From Text** button, browse for the exported `.csv` that CopyDoc exported, then select **UTF-8** as the **file origin**; then confirm to import the file into Excel as expected. To save the edited file, selecting the **CSV UTF-8 (Comma-delimited) (*.csv)** option should preserve the unicode characters (instead of swapping them out as question marks with a normal CSV file).

  ### Blank file extensions using Figma desktop app on Windows

There's a known issue with the Figma desktop app (only on Windows), which also happens for normal file exports from Figma. When you go to save your file, you may see an "all files" label. If you ignore this and continue by clicking "Save", it should still save the file with the correct extension and allow you to open it as expected after it has downloaded to your computer. If it still saves the file with a blank extension, you should be able to rename the file to manually append the correct extension to the file name.

  ### Pixelated image exports

If you're exporting design references or exporting a PDF/DOCX while the image assets in Figma are still progressively loading, they may be exported looking pixelated, as the image wasn't fully loaded in the Figma file before it was exported. To resolve this, please ensure that all of the images have loaded 100% and are looking sharp inside the Figma file before re-exporting with the CopyDoc plugin. To help further with solving this issue, you can use the ["Downsizer" feature](https://docs.hypermatic.com/tinyimage/usage.html#downsizing-your-figma-layer-fills) to shrink down your image fills to match their layer size, which will shrink their file size and ensure they load much faster in your Figma file.

  ### VPN may be required in China

Please note, if you're in China, the accounts server _may_ be blocked by "The Great Firewall of China". If you're seeing an activation error, despite using a valid key, you will likely need to use a [VPN](https://protonvpn.com/free-vpn/) to resolve the issue.

  ### 'An error occurred while loading the plugin environment'

This may happen in the Figma desktop app if [the Use Developer VM](https://www.figma.com/plugin-docs/debugging/#developer-vm) debug setting in Figma is enabled by mistake; you can make sure it's turned off by **right-clicking** anywhere on your Figma canvas, hovering over **Plugins**, then hovering over **Development**, and making sure that the **Use Developer VM** is _unchecked_; after it is unchecked (and does _not_ have a tick icon next to it), re-running the Figma plugin should work as expected.

---

---
url: "/copydoc/library/airtable.md"
description: "The Content Library feature in CopyDoc allows you to use content snippets from an Airtable to populate your Figma text layers, which ensures that you can get up to date content directly from your Airtable URL whenever the **Airtable** option is loaded via the **Integrations** tab in CopyDoc."
---

# Integrating with content from Airtable

> The Content Library feature in CopyDoc allows you to use content snippets from an Airtable to populate your Figma text layers, which ensures that you can get up to date content directly from your Airtable URL whenever the **Airtable** option is loaded via the **Integrations** tab in CopyDoc.

### Video Tutorial: Use Airtable as a Figma text content library

This video tutorial is a complete step-by-step guide showing you how to use Airtable as a Figma text content library using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/Aw9wleHHvOs)

[Video](/assets/videos/copydoc/library/airtable-snippets-integration.mp4)

## Structuring your Airtable with text snippets

To create a sheet, login to [Airtable](https://airtable.com/) and click **Create a base**, select the **Workspace** you'd like to add it under, and then click **Create**.

The format of the Airtable needs to follow the structure of: each column of your first/header row contains the _trigger_ names (eg. `//expandme`), with each text variant per snippet populating the rows underneath each trigger's column.

|//firstname|//cities   |
|-----------|-----------|
|Kate       |Seattle    |
|Elbert     |Los Angeles|
|Michael    |New York   |
|Amy        |Austin     |
|           |Portland   |
|           |Boston     |

## Adding your Airtable to CopyDoc

To add your Airtable content snippets in CopyDoc, click on the **Integrations** tab in the Content Library panel, then select the **Airtable** option from the platforms dropdown selector; then you'll need to add 3 fields:

### Your Airtable Sheet URL

To create a sheet, login to [Airtable](https://airtable.com/) and click **Create a base**, select the **Workspace** you'd like to add it under, and then click **Create**.

The Airtable sheet URL should look like this: `https://airtable.com/appzkSCDvQhxjfrl3/tbl9Ug0eTNoZFX5ne/viwULclwtTCrQq4dR?blocks=hide`

### Your Airtable Personal Access Token

You can [create a token](https://airtable.com/create/tokens) from the Airtable [Personal Access Token](https://airtable.com/developers/web/guides/personal-access-tokens) page.

Your Airtable personal access token should look like this: `patCDDXkwmgP4CyJK.19aa66430076753f90aaf1b27ae0a4ddf14f445dce8add9bd539bcbefcbe35df`

You'll also need to set the **Scope** to `data.records:read`, and making sure to include your **Workspace** that contains the sheet(s) you'd like to use, otherwise there won't be any permissions for the API to read the content from your Airtable.

### Custom Airtable Label

You'll need to set a custom label (eg. `My Airtable Snippets`) to help you identify your Airtable URL when you use it.

Once you've added those fields, click the **Add** button to load up the content snippets that you can use in your Figma text layers.

---

---
url: "/copydoc/library/figma.md"
description: "The Content Library feature in CopyDoc allows you to use content snippets from the native [Figma Variables](https://help.figma.com/hc/en-us/articles/15339657135383-Guide-to-variables-in-Figma) to populate your Figma text layers, which ensures that you can get up to date content directly from your Figma text variables URL whenever the **Figma Variables** option is loaded via the **Integrations** tab in CopyDoc."
---

# Integrating with content from Figma Variables

> The Content Library feature in CopyDoc allows you to use content snippets from the native [Figma Variables](https://help.figma.com/hc/en-us/articles/15339657135383-Guide-to-variables-in-Figma) to populate your Figma text layers, which ensures that you can get up to date content directly from your Figma text variables URL whenever the **Figma Variables** option is loaded via the **Integrations** tab in CopyDoc.

### Video Tutorial: Use Figma Variables as a re-useable text content library

This video tutorial is a complete step-by-step guide showing you how to use Figma Variables as a re-useable text content library using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/X6TDkfp0W8A)

[Video](/assets/videos/copydoc/library/figma-snippets-integration.mp4)

## Creating your Figma Variable text snippets

To create a Figma Variable text snippet, click on the **Local Variables** item in the right-hand side column in the Figma app, then click the **+ Create Variable** button in the pop-up panel, select the **Text** option from the drop down menu; then you can add your variable label under the **Name** column (eg. `Heading`), then add your text snippet content under the **Value** column (eg. `This is my text snippet for a heading`).

Your text content snippet (under the **Value** column) contains the string(s) that will be applied to your Figma text layers when the snippet is clicked on in your content library.

To create multiple variants for one text snippet, you can use double pipe symbols between your strings (eg. `Hey || Hello || Hi`).

After you've added your Figma variables, you'll be able to browse and apply the text values from them to your Figma text layers by selecting the **Figma Variables** option under the **Integrations** tab of the **Content Library** CopyDoc feature.

---

---
url: "/copydoc/library/google-sheets.md"
description: "The Content Library feature in CopyDoc allows you to use content snippets from a Google Sheet to populate your Figma text layers, which ensures that you can get up to date content directly from your Google Sheet URL whenever it's loaded via the **Integrations** tab in CopyDoc."
---

# Integrating with content from Google Sheets

> The Content Library feature in CopyDoc allows you to use content snippets from a Google Sheet to populate your Figma text layers, which ensures that you can get up to date content directly from your Google Sheet URL whenever it's loaded via the **Integrations** tab in CopyDoc.

### Video Tutorial: Use Google Sheets as a Figma text content library

This video tutorial is a complete step-by-step guide showing you how to use Google Sheets as a Figma text content library using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/dBMsBeyncSk)

[Video](/assets/videos/copydoc/library/google-snippets-integration.mp4)

## Structuring your Google Sheet with text snippets

The format of the Google Sheet needs to follow the structure of: each column of your first/header row contains the _trigger_ names (eg. `//expandme`), with each text variant per snippet populating the rows underneath each trigger's column.

|//firstname|//cities   |
|-----------|-----------|
|Kate       |Seattle    |
|Elbert     |Los Angeles|
|Michael    |New York   |
|Amy        |Austin     |
|           |Portland   |
|           |Boston     |

## Adding your Google Sheet to CopyDoc

In order to use your Google Sheet's content snippets with Figma, you'll first need to ensure that the Google Sheet share URL is made public, otherwise the plugin won't have permissions to read it. You can do this by opening up the spreadsheet in Google Sheets, clicking the **Share** button and changing the sheet's permissions from **Restricted** and update it to **Anyone with the link**.

Once you've done that, to add your Google Sheets content snippets in CopyDoc, click on the **Integrations** tab in the Content Library panel, then select the **Google Sheets** option from the platforms dropdown selector; then you'll need to paste your public Google Sheet URL (eg. `https://docs.google.com/spreadsheets/d/2ds7EcUm9ZXQ2H0IXdGgOTtOfkhfpBKOsl5PSwANKuHE/edit?usp=sharing`) to automatically load the content.

---

---
url: "/copydoc/library/placeholders.md"
description: "The CopyDoc content library provides a bunch of placeholder text that you can use as-is (and apply them to your Figma text layers) from the **Placeholders** tab in your content library panel, or alternatively, you can also mix dynamic placeholder text into your own custom text snippets."
---

# Using Placeholder Content

> The CopyDoc content library provides a bunch of placeholder text that you can use as-is (and apply them to your Figma text layers) from the **Placeholders** tab in your content library panel, or alternatively, you can also mix dynamic placeholder text into your own custom text snippets.

### Video Tutorial: Add realistic placeholder text content in Figma

This video tutorial is a complete step-by-step guide showing you how to add realistic placeholder text content in Figma using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/NghMg69P2hA)

## Adding placeholder content directly

[Video](/assets/videos/copydoc/library/apply-placeholders.mp4)

You can browse different placeholder categories for "fake" content snippets under the **Placeholders** tab, and also select your language to localize some of the content (eg. names, places etc).

You can either click on the placeholder name (eg. "First Name") button to apply it to your selected Figma text layer(s), or alternatively, you can copy/paste (or manually type) a trigger shortcut for a placeholder into your Figma text layer directly by prefixing the shortcut name with double backslashes (eg. //fake.person.firstName)

> **Tip:** **You can use your placeholder triggers in other CopyDoc features**. The text expander snippet works by automatically detecting the snippet when a Figma text layer's content is updated, which means that you can use your placeholder trigger shortcuts when using CopyDoc's other text layer update methods (eg. find and replace, bulk CSV/XLSX imports, and Google Sheet sync). Just use the trigger name as part of your updated content `eg. Hello //fake.person.firstName, how it's going?`

## Mixing dynamic placeholders inside your text snippets

[Video](/assets/videos/copydoc/library/mixing-placeholders.mp4)

To use a placeholder inside of a saved snippet, you can add curly brackets around either side of the shortcut name into your snippet text.

To make this easier, you can use the built-in placeholder shortcuts selector by enabling the **Show Placeholder Shortcuts** toggle, which will let you browse and automatically add placeholder shortcuts to your text snippets.

After you've saved your snippet, you can use it normally, in the same ways any other custom text snippet is applied; via [applying it to text layers](/copydoc/library/snippets#apply-snippets-with-text-layer-selection), or [using it as a text expander](/copydoc/library/snippets#apply-snippets-with-text-expander-triggers).

### Creating Custom Mixed Content Examples

Here are some practical examples of mixing placeholders with custom text in your snippets:

**Greeting Templates:**
```
Hello {{fake.person.firstName}}, welcome to our service!
```

**Product Descriptions:**
```
This {{fake.commerce.productAdjective}} {{fake.commerce.product}} is made from {{fake.commerce.productMaterial}} and costs {{fake.commerce.price}}.
```

**User Interface Copy:**
```
{{fake.person.fullName}} joined {{fake.company.name}} as a {{fake.person.jobTitle}} in the {{fake.company.department}} department.
```

**Location-based Content:**
```
Visit our store at {{fake.location.streetAddress}}, {{fake.location.city}}, {{fake.location.state}} {{fake.location.zipCode}}.
```

> **Note:** Each time you apply a snippet with placeholders, the content will be randomly generated, giving you fresh, realistic content for every use. This is particularly useful for populating multiple similar components with varied data.

## Placeholder Shortcut References

Below is a complete list of all placeholder shortcuts that you can either [use as part of your custom text snippets](#mixing-dynamic-placeholders-inside-your-text-snippets) by adding the shortcut between double curly brackets, or, directly into a text layer while editing it by [prefixing the shortcut with double slashes](/copydoc/library/snippets#apply-snippets-with-text-expander-triggers) (eg. //fake.person.firstName)

### Airlines

- `fake.airline.aircraftType` (eg. "Airbus A320")
- `fake.airline.airline` (eg. "Delta Airlines")
- `fake.airline.airplane` (eg. "Boeing 747")
- `fake.airline.airport` (eg. "John F. Kennedy International Airport")
- `fake.airline.flightNumber` (eg. "DL123")
- `fake.airline.recordLocator` (eg. "ABC123")
- `fake.airline.seat` (eg. "21A")

### Animals

- `fake.animal.bear` (eg. "Grizzly Bear")
- `fake.animal.bird` (eg. "Blue Jay")
- `fake.animal.cat` (eg. "Siamese Cat")
- `fake.animal.cetacean` (eg. "Bottlenose Dolphin")
- `fake.animal.cow` (eg. "Holstein Cow")
- `fake.animal.crocodilia` (eg. "American Alligator")
- `fake.animal.dog` (eg. "Golden Retriever")
- `fake.animal.fish` (eg. "Rainbow Trout")
- `fake.animal.horse` (eg. "Thoroughbred Horse")
- `fake.animal.insect` (eg. "Butterfly")
- `fake.animal.lion` (eg. "African Lion")
- `fake.animal.rabbit` (eg. "Holland Lop")
- `fake.animal.rodent` (eg. "Squirrel")
- `fake.animal.snake` (eg. "Python")
- `fake.animal.type` (eg. "Mammal")

### Colors

- `fake.color.cmyk` (eg. "cmyk(24, 56, 100, 3)")
- `fake.color.hsl` (eg. "hsl(187, 72%, 34%)")
- `fake.color.human` (eg. "DarkGreen")
- `fake.color.hwb` (eg. "hwb(333, 14%, 0%)")
- `fake.color.lab` (eg. "lab(57.54, -70.17, 56.39)")
- `fake.color.lch` (eg. "lch(57.54, 92.94, 146.21)")
- `fake.color.rgb` (eg. "rgb(32, 178, 170)")
- `fake.color.space` (eg. "rgb(255, 99, 71)")

### Commerce

- `fake.commerce.department` (eg. "Electronics")
- `fake.commerce.price` (eg. "$349.99")
- `fake.commerce.product` (eg. "Smartphone")
- `fake.commerce.productAdjective` (eg. "Sleek")
- `fake.commerce.productDescription` (eg. "This smartphone features a high-resolution display and a powerful processor.")
- `fake.commerce.productMaterial` (eg. "Leather")
- `fake.commerce.productName` (eg. "Wireless Headphones")

### Company

- `fake.company.name` (eg. "Acme Corporation")
- `fake.company.buzzAdjective` (eg. "Dynamic")
- `fake.company.buzzNoun` (eg. "Solutions")
- `fake.company.buzzPhrase` (eg. "Empowering Success")
- `fake.company.buzzVerb` (eg. "Transform")
- `fake.company.catchPhrase` (eg. "Innovate Your Tomorrow")
- `fake.company.catchPhraseAdjective` (eg. "Revolutionary")
- `fake.company.catchPhraseDescriptor` (eg. "Cutting-edge")
- `fake.company.catchPhraseNoun` (eg. "Solutions")

### Database

- `fake.database.collation` (eg. "utf8_general_ci")
- `fake.database.column` (eg. "email")
- `fake.database.engine` (eg. "InnoDB")
- `fake.database.mongodbObjectId` (eg. "5f16bf99ae900e001f8b9bb5")
- `fake.database.type` (eg. "NoSQL")

### Date
- `fake.date.anytime` (eg. "Sat Apr 29 2023 01:25:14 GMT+0000 (Coordinated Universal Time)")
- `fake.date.birthdate` (eg. "1995-09-15")
- `fake.date.future` (eg. "2025-06-28")
- `fake.date.month` (eg. "June")
- `fake.date.past` (eg. "2002-03-10")
- `fake.date.recent` (eg. "Sun Jul 09 2023 08:18:43 GMT+0000 (Coordinated Universal Time)")
- `fake.date.soon` (eg. "2023-07-26")
- `fake.date.weekday` (eg. "Tuesday")

### Finance
- `fake.finance.accountName` (eg. "John Doe")
- `fake.finance.accountNumber` (eg. "98765432")
- `fake.finance.amount` (eg. "$1234.56")
- `fake.finance.bic` (eg. "GENODEF1M04")
- `fake.finance.bitcoinAddress` (eg. "1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2")
- `fake.finance.creditCardCVV` (eg. "123")
- `fake.finance.creditCardIssuer` (eg. "Visa")
- `fake.finance.creditCardNumber` (eg. "4929272040382633")
- `fake.finance.currencyCode` (eg. "USD")
- `fake.finance.currencyName` (eg. "Euro")
- `fake.finance.currencySymbol` (eg. "$")
- `fake.finance.ethereumAddress` (eg. "0x742d35Cc6634C0532925a3b844Bc454e4438f44e")
- `fake.finance.iban` (eg. "DE89370400440532013000")
- `fake.finance.litecoinAddress` (eg. "LhWZkm3ZR1vuztrbNnFo4VLrqfUEKGZWEd")
- `fake.finance.maskedNumber` (eg. "************1234")
- `fake.finance.pin` (eg. "1234")
- `fake.finance.routingNumber` (eg. "021000021")
- `fake.finance.transactionDescription` (eg. "Payment for services")
- `fake.finance.transactionType` (eg. "Credit")

### Git
- `fake.git.branch` (eg. "feature/add-new-feature")
- `fake.git.commitDate` (eg. "2023-07-24T10:15:37")
- `fake.git.commitEntry` (eg. "Merge pull request #42")
- `fake.git.commitMessage` (eg. "Fix issue with authentication")
- `fake.git.commitSha` (eg. "d86fe8f1e64870ecf89b961631f8c63eade26ca0")

### Hacker
- `fake.hacker.abbreviation` (eg. "SQL")
- `fake.hacker.adjective` (eg. "cyber")
- `fake.hacker.ingverb` (eg. "hacking")
- `fake.hacker.noun` (eg. "firewall")
- `fake.hacker.phrase` (eg. "Encrypt everything!")
- `fake.hacker.verb` (eg. "hack")

### Internet
- `fake.internet.color` (eg. "#ff5733")
- `fake.internet.displayName` (eg. "JohnDoe87")
- `fake.internet.domainName` (eg. "example.com")
- `fake.internet.domainSuffix` (eg. ".net")
- `fake.internet.domainWord` (eg. "web")
- `fake.internet.email` (eg. "john.doe@example.com")
- `fake.internet.emoji` (eg. "😄")
- `fake.internet.exampleEmail` (eg. "jane.doe@example.com")
- `fake.internet.httpMethod` (eg. "GET")
- `fake.internet.httpStatusCode` (eg. "200")
- `fake.internet.ip` (eg. "192.168.0.1")
- `fake.internet.ipv4` (eg. "192.0.2.1")
- `fake.internet.ipv6` (eg. "2001:0db8:85a3:0000:0000:8a2e:0370:7334")
- `fake.internet.mac` (eg. "00:1a:2b:3c:4d:5e")
- `fake.internet.password` (eg. "P@ssw0rd123")
- `fake.internet.port` (eg. "8080")
- `fake.internet.protocol` (eg. "https")
- `fake.internet.url` (eg. "https://www.example.com")
- `fake.internet.userAgent` (eg. "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3")
- `fake.internet.userName` (eg. "johndoe123")

### Location
- `fake.location.buildingNumber` (eg. "123")
- `fake.location.cardinalDirection` (eg. "North")
- `fake.location.city` (eg. "New York")
- `fake.location.country` (eg. "United States")
- `fake.location.countryCode` (eg. "US")
- `fake.location.county` (eg. "Los Angeles County")
- `fake.location.direction` (eg. "Southwest")
- `fake.location.latitude` (eg. "40.7128")
- `fake.location.longitude` (eg. "-74.0060")
- `fake.location.nearbyGPSCoordinate` (eg. "40.7128, -74.0060")
- `fake.location.ordinalDirection` (eg. "Northeast")
- `fake.location.secondaryAddress` (eg. "Apt. 2B")
- `fake.location.state` (eg. "California")
- `fake.location.street` (eg. "Main Street")
- `fake.location.streetAddress` (eg. "123 Main Street")
- `fake.location.timeZone` (eg. "America/New_York")
- `fake.location.zipCode` (eg. "10001")

### Lorem
- `fake.lorem.lines` (eg. "Lorem ipsum dolor sit amet, consectetur adipiscing elit.")
- `fake.lorem.paragraph` (eg. "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed euismod ligula a dui tincidunt, sit amet euismod metus tristique.")
- `fake.lorem.paragraphs` (eg. "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed euismod ligula a dui tincidunt, sit amet euismod metus tristique.\n\nPhasellus posuere massa vitae dui iaculis, sit amet tincidunt mauris eleifend. Vivamus vel dolor vel justo posuere egestas nec id nunc.")
- `fake.lorem.sentence` (eg. "Lorem ipsum dolor sit amet.")
- `fake.lorem.sentences` (eg. "Lorem ipsum dolor sit amet. Consectetur adipiscing elit. Sed euismod ligula a dui tincidunt.")
- `fake.lorem.slug` (eg. "lorem-ipsum-dolor")
- `fake.lorem.text` (eg. "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed euismod ligula a dui tincidunt, sit amet euismod metus tristique. Phasellus posuere massa vitae dui iaculis, sit amet tincidunt mauris eleifend. Vivamus vel dolor vel justo posuere egestas nec id nunc.")
- `fake.lorem.word` (eg. "Lorem")
- `fake.lorem.words` (eg. "Lorem ipsum dolor sit amet")

### Music
- `fake.music.genre` (eg. "Rock")
- `fake.music.songName` (eg. "Bohemian Rhapsody")

### Number
- `fake.number.bigInt` (eg. "12345678901234567890")
- `fake.number.binary` (eg. "10101010")
- `fake.number.float` (eg. "3.14")
- `fake.number.hex` (eg. "1a4")
- `fake.number.int` (eg. "42")
- `fake.number.octal` (eg. "52")

### Person
- `fake.person.bio` (eg. "software engineer with a passion for technology and coding.")
- `fake.person.firstName` (eg. "John")
- `fake.person.fullName` (eg. "John Doe")
- `fake.person.gender` (eg. "Male")
- `fake.person.jobArea` (eg. "Information Technology")
- `fake.person.jobDescriptor` (eg. "Senior")
- `fake.person.jobTitle` (eg. "Software Engineer")
- `fake.person.jobType` (eg. "Full-Time")
- `fake.person.lastName` (eg. "Doe")
- `fake.person.middleName` (eg. "Michael")
- `fake.person.prefix` (eg. "Mr.")
- `fake.person.sex` (eg. "Male")
- `fake.person.sexType` (eg. "M")
- `fake.person.suffix` (eg. "Jr.")
- `fake.person.zodiacSign` (eg. "Virgo")

### Phone
- `fake.phone.number` (eg. "+1 (555) 123-4567")
- `fake.phone.imei` (eg. "351756052471134")

### String
- `fake.string.binary` (eg. "10101100")
- `fake.string.hexadecimal` (eg. "1a4f")
- `fake.string.alpha` (eg. "abcXYZ")
- `fake.string.alphanumeric` (eg. "abcXYZ123")
- `fake.string.nanoid` (eg. "a1B2c3D4")
- `fake.string.numeric` (eg. "123456")
- `fake.string.octal` (eg. "147")
- `fake.string.sample` (eg. "Lorem ipsum dolor sit amet, consectetur adipiscing elit.")
- `fake.string.symbol` (eg. "!@#$%^&*")
- `fake.string.uuid` (eg. "6ba7b810-9dad-11d1-80b4-00c04fd430c8")

### System
- `fake.system.commonFileExt` (eg. "txt")
- `fake.system.commonFileName` (eg. "data")
- `fake.system.commonFileType` (eg. "text")
- `fake.system.cron` (eg. "0 * * * *")
- `fake.system.directoryPath` (eg. "/home/user/Documents")
- `fake.system.fileExt` (eg. "js")
- `fake.system.fileName` (eg. "script")
- `fake.system.filePath` (eg. "/home/user/Documents/script.js")
- `fake.system.fileType` (eg. "application/javascript")
- `fake.system.mimeType` (eg. "text/plain")
- `fake.system.networkInterface` (eg. "eth0")
- `fake.system.semver` (eg. "2.1.0")

### Vehicle
- `fake.vehicle.bicycle` (eg. "Mountain Bike")
- `fake.vehicle.color` (eg. "Red")
- `fake.vehicle.fuel` (eg. "Gasoline")
- `fake.vehicle.manufacturer` (eg. "Toyota")
- `fake.vehicle.model` (eg. "Camry")
- `fake.vehicle.type` (eg. "Sedan")
- `fake.vehicle.vehicle` (eg. "Toyota Camry")
- `fake.vehicle.vin` (eg. "1HGCM82633A123456")
- `fake.vehicle.vrm` (eg. "ABC123")

### Word
- `fake.word.adjective` (eg. "beautiful")
- `fake.word.adverb` (eg. "quickly")
- `fake.word.conjunction` (eg. "and")
- `fake.word.interjection` (eg. "wow")
- `fake.word.noun` (eg. "house")
- `fake.word.preposition` (eg. "under")
- `fake.word.words` (eg. "Lorem ipsum")
- `fake.word.sample` (eg. "Lorem ipsum dolor sit amet")
- `fake.word.verb` (eg. "run")

---

---
url: "/copydoc/library/snippets.md"
description: "CopyDoc includes a built-in component library to help you create re-useable text content snippets in your Figma designs, you can access this feature by clicking the **Content Library** button in the main CopyDoc menu."
---

# Using the Content Library

> CopyDoc includes a built-in component library to help you create re-useable text content snippets in your Figma designs, you can access this feature by clicking the **Content Library** button in the main CopyDoc menu.

### Video Tutorial: Create a re-useable text content library in Figma

This video tutorial is a complete step-by-step guide showing you how to create a re-useable text content library in Figma using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/x-gNQqwIOLw)
### Video Tutorial: Add text expander content snippet shortcuts in Figma

This video tutorial is a complete step-by-step guide showing you how to add text expander content snippet shortcuts in Figma using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/OZCbuLVsDmI)

## Creating text expander snippets

[Video](/assets/videos/copydoc/library/create-snippet.mp4)

After opening the **Content Library** panel, to create your first text snippet under the **Collections** tab, click on the **Add New Snippet +** button, and then complete the required fields:

### Trigger Shortcut Name

Trigger shortcuts are special keywords that will have their content expanded when typed (or copy/pasted) into a Figma text layer (eg. `//expandme`).

### Add To Collection (Optional)

By default, any new text snippets added are "Uncategorized", but you can create a custom collection name (or select a previously created collection) to keep your snippets organized by category.

### Text Content Snippet

Your text content snippet contains the string(s) that will be applied to your Figma text layers, when the snippet is clicked on in your content library.

To create multiple variants for one text snippet, you can use double pipe symbols between your strings (eg. `Hey || Hello || Hi`).

### Supported Markdown formatting for text snippets

You can optionally add some basic markdown formatting (bold, italics) and links to your snippets, which will automatically be applied when the snippet is applied to your Figma text layer.

- You can specify **Bold** text by using double asterisks `**Snipet text to bold**` or double underscores `eg.__Snipet text to bold__`
- You can specify *Italic* text by using single asterisks `*Italic Snippet Text*` or single underscores `eg._Italic Snippet Text_`
- You can specify ***Bold Italic*** text by using triple asterisks `***Bold Italic Snippet Text***` or triple underscores `eg.___Bold Italic Snippet Text___`
- You can specify hyperlinks by using the markdown syntax of `This is [my link here](https://example.com) in a text snippet` (you can also format the link text by adding the bold/italic syntax inside of the link's `[]` text area).

## Apply snippets with text layer selection

[Video](/assets/videos/copydoc/library/apply-snippet.mp4)

The first way to apply your saved text snippet(s) is to select the Figma text layer(s) you want to apply your snippet(s) to, and then click on the **Apply** button to apply a random snippet variant to that text layer.

You can also apply your snippets in a certain order or selecting a specific variant, by first expanding the text snippet, then clicking on a certain variant or choosing a bulk apply option ("Original Order", "Random Order", "A-Z" or "Z-A").

## Apply snippets with text expander triggers

[Video](/assets/videos/copydoc/library/expand-snippet.mp4)

The other way to use and apply your saved text snippets is by copy/pasting (or manually typing) your text snippet "trigger" (eg. `//expandme`) directly into your Figma text layer while editing the layer's content; this will automatically expand your trigger shortcut into the full text snippet that you added.

> **Tip:** **You can use your triggers in other CopyDoc features**. The text expander snippet works by automatically detecting the snippet when a Figma text layer's content is updated, which means that you can use your trigger shortcuts when using CopyDoc's other text layer update methods (eg. find and replace, bulk CSV/XLSX imports, and Google Sheet sync). Just use the trigger name as part of your updated content `eg. Hello //firstname, how it's going?`

## Editing or deleting your text snippets

[Video](/assets/videos/copydoc/library/edit-snippet.mp4)

To delete or edit a custom text snippet that you've previously added to your content library, expand the text snippet by clicking on it in your snippets list under the **Collections** tab, then either click on the **Trash** icon button to delete it instantly, or click on the **Pencil** icon button bring up the edit panel, which will let you update the trigger name, collection or text content for the selected snippet.

## Bulk moving or deleting your text snippets

[Video](/assets/videos/copydoc/library/move-delete-snippets.mp4)

You can quickly move a bunch of text snippets to another collection by selecting the snippets you'd like to export by selecting their checkbox(es), then selecting an existing collection name from the **Select Snippet Collection** dropdown, or by adding a new collection name, then clicking the **Move** button.

Alternatively, instead of moving the snippets to a different collection, you can click the **Delete** button to instantly bulk delete all of the selected snippets instead.

## Exporting your text snippets to CSV

[Video](/assets/videos/copydoc/library/export-csv-snippets.mp4)

You can export a `.csv` file of your custom text snippets by selecting the snippets you'd like to export by selecting their checkbox(es), and then clicking the **Export CSV** button to automatically download your selected snippets to a `.csv` file that you can save to your computer.

You can then edit these `.csv` files and [re-import them](#importing-text-snippets-from-csv) back into your content library snippets.

## Importing text snippets from CSV

[Video](/assets/videos/copydoc/library/import-csv-snippets.mp4)

You can import a `.csv` file containing custom text triggers and snippets by clicking the **Import CSV** button under the **Collections** tab of the CopyDoc content library feature.

The `.csv` file that you drag into the dropzone can either be an updated spreadsheet that you exported via the [Export CSV](#exporting-your-text-snippets-to-csv) feature, or a brand new spreadsheet that you've formatted in the same way.

The format of the CSV needs to follow the structure of: each column of your first/header row contains the _trigger_ names (eg. `//expandme`), with each text variant per snippet populating the rows underneath each trigger's column.

|//firstname|//cities   |
|-----------|-----------|
|Kate       |Seattle    |
|Elbert     |Los Angeles|
|Michael    |New York   |
|Amy        |Austin     |
|           |Portland   |
|           |Boston     |

---

---
url: "/copydoc/localization/chatgpt.md"
description: "Use ChatGPT inside CopyDoc with either direct API translation or manual CSV prompts to localize your selected Figma frames in Figma."
---

# Translating your Figma frames with ChatGPT

> Use ChatGPT inside CopyDoc with either direct API translation or manual CSV prompts to localize your selected Figma frames in Figma.

CopyDoc supports ChatGPT in two ways:

- **ChatGPT API** for automated translation and import inside the plugin.
- **ChatGPT Prompt** for a manual copy and paste workflow using the ChatGPT app.

## Use ChatGPT API

The API workflow is the fastest option if you want CopyDoc to handle the full translation and import flow for you.

1. Click the **Localize Text** button in CopyDoc.
2. Choose **ChatGPT API**.
3. Paste your OpenAI [API key](https://platform.openai.com/api-keys).
4. Pick the model you want CopyDoc to use.
5. Select the Figma frames and target locales you want to translate.
6. Enable **Use Markdown** if you need to preserve inline bold, italic, and linked text during translation.
7. Click **Translate & Import**.

CopyDoc will send the selected frame text to ChatGPT for each locale, then automatically import the translated results back into Figma as cloned localized frames.

> **Tip:** Your ChatGPT API key is stored per Figma user on your device and is not saved into the Figma file itself.

## Use ChatGPT Prompt

The manual prompt workflow is useful if you prefer to run translation requests yourself inside ChatGPT instead of connecting an API key.

1. Choose **ChatGPT Prompt** in the localization options.
2. Select the Figma frames and locales you want to translate.
3. Click **Generate Prompt**.
4. Click **Copy Prompt to Clipboard**.
5. Run the prompt in ChatGPT and make sure it returns **raw CSV only**.
6. Paste the CSV response back into CopyDoc.
7. Click **Translate Figma Frames** to import the translated content into Figma.

In the manual prompt workflow, you choose the ChatGPT model inside the ChatGPT app yourself. CopyDoc validates the pasted CSV before importing it.

The generated prompt also tells ChatGPT to preserve supported inline markdown formatting and keep markdown markers, URLs, and placeholders unchanged so the translated content can be imported back into Figma correctly.

> **Tip:** Do not remove or rename the `id`, `frame_id`, `layer_name`, or `figma_text` columns in the CSV response. CopyDoc uses those columns to match translated rows back to the correct Figma layers.

---

---
url: "/copydoc/localization/claude.md"
description: "Use Claude inside CopyDoc with either direct API translation or manual CSV prompts to localize your selected Figma frames in Figma."
---

# Translating your Figma frames with Claude

> Use Claude inside CopyDoc with either direct API translation or manual CSV prompts to localize your selected Figma frames in Figma.

CopyDoc supports Claude in two ways:

- **Claude API** for automated translation and import inside the plugin.
- **Claude Prompt** for a manual copy and paste workflow using the Claude app.

## Use Claude API

1. Click the **Localize Text** button in CopyDoc.
2. Choose **Claude API**.
3. Paste your Anthropic [API key](https://console.anthropic.com/settings/keys).
4. Pick the Claude model you want CopyDoc to use.
5. Select the Figma frames and target locales you want to translate.
6. Enable **Use Markdown** if you need to preserve inline bold, italic, and linked text during translation.
7. Click **Translate & Import**.

CopyDoc will translate the selected frames with Claude and automatically import the translated results back into Figma as cloned localized frames.

> **Tip:** Your Claude API key is stored per Figma user on your device and is not saved into the Figma file itself.

## Use Claude Prompt

1. Choose **Claude Prompt** in the localization options.
2. Select the Figma frames and locales you want to translate.
3. Click **Generate Prompt**.
4. Click **Copy Prompt to Clipboard**.
5. Run the prompt in Claude and make sure the response contains **raw CSV only**.
6. Paste the CSV response back into CopyDoc.
7. Click **Translate Figma Frames** to import the translated content into Figma.

In the manual prompt workflow, you choose the Claude model inside Claude yourself. CopyDoc validates the CSV structure before importing the translated frames.

The generated prompt also tells Claude to preserve supported inline markdown formatting and keep markdown markers, URLs, and placeholders unchanged so the translated content can be imported back into Figma correctly.

> **Tip:** Do not remove or rename the `id`, `frame_id`, `layer_name`, or `figma_text` columns in the CSV response. CopyDoc uses those columns to match translated rows back to the correct Figma layers.

---

---
url: "/copydoc/localization/export.md"
description: "CopyDoc has a built-in localization feature to help you translate any frames on your Figma page into multiple languages or content variations."
---

# Localize your Figma design text layers

> CopyDoc has a built-in localization feature to help you translate any frames on your Figma page into multiple languages or content variations.

### Video Tutorial: The simplest way to localize any Figma designs

This video tutorial is a complete step-by-step guide showing you the simplest way to localize any Figma designs using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/BJ03GUCHTjg)

### Video Tutorial: Translate Figma text layers with XLIFF files

This video tutorial is a complete step-by-step guide showing you how to translate Figma text layers with XLIFF files using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/LHIOqns7QU8)

## Export Figma text layers to a localization spreadsheet

By clicking the **Localize Frames** button in CopyDoc, you can export your frame(s) and select the target languages you'd like to translate the designs to (eg. French, German etc). Clicking the **Export XLSX** button will automatically export the text content from your frame(s) to an `.xlsx` spreadsheet file.

[Video](/assets/videos/copydoc/localization/export-locales.mp4)

### Grouping duplicate text layers

Enabling the **Group Duplicate Text Layers** option will ensure that any text layers with exactly the same content with automatically be grouped into a single entry in your XLSX export. This option can make editing and re-importing your content back into Figma a bit easier, as you only need to edit the text in one place.

### Maintaining the visual text case from Figma

Enabling the **Use Figma Visual Text Case** option will automatically force your exported text layers to match the "visual" text case (eg. "Uppercase", "Title Case", "Lowercase") option set on your text layer in Figma. You can use this option to visually mirror the text content in your design, instead of exporting the underlying text layer content (eg. as it appears with the default "As typed" case setting selected).

## Add localized content for each locale column in your spreadsheet

[Video](/assets/videos/copydoc/localization/edit-locales.mp4)

After you've exported your `.xlsx` file, you can then edit the Excel file and populate the placeholder locale columns as needed.

> **Tip:** If you need to add extra columns to your localization spreadsheet that you _don't_ want to be imported back into Figma (eg. metadata content like "approved", "status", "reviewer" etc), you can do this by prepending a triple underscore prefix before any column header name (eg. `___approved` or `__status`) and this will ensure the column is ignored by CopyDoc when the `.xlsx` file is re-imported back into Figma.

## Re-import your localized spreadsheet into Figma

[Video](/assets/videos/copydoc/localization/import-locales.mp4)

After you've populated the locales and saved your spreadsheets, you can then re-import your `.xlsx` file back into the CopyDoc plugin by dragging and dropping it in, then clicking the **Localize Frames** button to re-import your new content locales. Upon re-importing the file, CopyDoc will automatically create a brand new page with a new email frame per locale with all of the text updates you made (per text layer/"row") in the spreadsheet.

> **Note:** Enabling the **Keep Frame Positions** toggle will ensure that the arrangement/positioning of any new imported/translated frames are kept to match the arrangement of the original frames that were exported from Figma. Turning this toggle off will let the plugin arrange them in a tidy/ordered grid of frames instead.

> **Tip:** Enabling the **Add a “Worst Case” Frame (Longest Text)** toggle will create an extra frame that takes the longest bits of text from all the new locales/translations in the spreadsheet per text layer, and generates a frame that shows what the worst case scenario is for text being really long; this can be useful to test the robustness of the design, and make sure it can handle any length of text without breaking or looking weird.

## Using Markdown Formatting

You can optionally export the text in your Localization spreadsheets as markdown by enabling the **Add Markdown** toggle, which will automatically render any bold, italic or hyperlinked text in their markdown format (below). This will allow you to edit/add formatting to different parts of your CopyDoc design's text content before re-importing any translated text.

After editing the exported spreadsheet, and adding/removing markdown formatting, enabling the **Import Markdown Formatting** toggle with ensure your XLSX import will automatically parse basic supported markdown formatting (below) and apply this to your Figma text layers.

CopyDoc currently supports inline markdown formatting for bold, italic, bold italic, hyperlinks, and line breaks. Avoid adding headings, lists, code blocks, tables, HTML, or other markdown syntax that is outside of those supported inline text features.

### Supported markdown formatting:

- You can specify **Bold** text by using double asterisks around the text, eg. `**Text to bold**`
- You can specify *Italic* text by using single underscores around the text, eg. `_Italic Text_`
- You can specify ***Bold Italic*** text by using double asterisks and one underscore around the text, eg. `**_Italic Text_**`
- You can specify hyperlinks by using the markdown syntax of `This is [my link here](https://example.com) in a text paragraph` (you can also format the link text by adding the bold/italic syntax inside of the link's `[]` text area).

## Other localization workflows

CopyDoc also supports AI-assisted localization workflows:

- [ChatGPT](/copydoc/localization/chatgpt)
- [Claude](/copydoc/localization/claude)
- [Gemini](/copydoc/localization/gemini)

> **Tip:** The AI localization providers each support two workflows in CopyDoc: a direct API translation option and a manual prompt option that generates a CSV translation prompt for you to run in the provider's own app.

---

---
url: "/copydoc/localization/gemini.md"
description: "Use Gemini inside CopyDoc with either direct API translation or manual CSV prompts to localize your selected Figma frames in Figma."
---

# Translating your Figma frames with Gemini

> Use Gemini inside CopyDoc with either direct API translation or manual CSV prompts to localize your selected Figma frames in Figma.

CopyDoc supports Gemini in two ways:

- **Gemini API** for automated translation and import inside the plugin.
- **Gemini Prompt** for a manual copy and paste workflow using the Gemini app.

## Use Gemini API

1. Click the **Localize Text** button in CopyDoc.
2. Choose **Gemini API**.
3. Paste your Google AI Studio [API key](https://aistudio.google.com/app/apikey).
4. Pick the Gemini model you want CopyDoc to use.
5. Select the Figma frames and target locales you want to translate.
6. Enable **Use Markdown** if you need to preserve inline bold, italic, and linked text during translation.
7. Click **Translate & Import**.

CopyDoc will send the selected frame text to Gemini for translation and then automatically import the translated results back into Figma as cloned localized frames.

> **Tip:** Your Gemini API key is stored per Figma user on your device and is not saved into the Figma file itself.

## Use Gemini Prompt

1. Choose **Gemini Prompt** in the localization options.
2. Select the Figma frames and locales you want to translate.
3. Click **Generate Prompt**.
4. Click **Copy Prompt to Clipboard**.
5. Run the prompt in Gemini and make sure the response contains **raw CSV only**.
6. Paste the CSV response back into CopyDoc.
7. Click **Translate Figma Frames** to import the translated content into Figma.

In the manual prompt workflow, you choose the Gemini model inside Gemini yourself. CopyDoc validates the CSV structure before importing the translated frames into Figma.

The generated prompt also tells Gemini to preserve supported inline markdown formatting and keep markdown markers, URLs, and placeholders unchanged so the translated content can be imported back into Figma correctly.

> **Tip:** Do not remove or rename the `id`, `frame_id`, `layer_name`, or `figma_text` columns in the CSV response. CopyDoc uses those columns to match translated rows back to the correct Figma layers.

---

---
url: "/copydoc/overview/install.md"
description: "Ensure you're logged into your Figma account, then follow the steps below to install and run the [CopyDoc Figma Plugin](https://www.figma.com/community/plugin/900893606648879767/copydoc-text-kit)."
---

# Install and run the CopyDoc Figma Plugin

> Ensure you're logged into your Figma account, then follow the steps below to install and run the [CopyDoc Figma Plugin](https://www.figma.com/community/plugin/900893606648879767/copydoc-text-kit).

### Video Tutorial: How to install (and remove) Figma plugins

This video tutorial is a complete step-by-step guide showing you the new process of how to install (and remove) Figma plugins after the mid-2024 "UI3" update to the Figma app
[Embedded media](https://www.youtube.com/embed/CzjxF2Jv6PM)

## Installing the CopyDoc Figma Plugin

1. Open any Figma file.
2. Click on the **Actions** icon in the bottom Figma toolbar.
3. Click the **Plugins & Widgets** tab to filter results to Figma plugins.
4. Search for **CopyDoc** in the search bar.
5. Click on the **CopyDoc** search result.
6. Click the **Save** button to install the CopyDoc plugin.

> **Note:** Figma users in a **Figma Organization** may only be able to install approved plugins. Please contact your Figma Org admin at your company to [approve the CopyDoc plugin](https://help.figma.com/hc/en-us/articles/4404228724759-Manage-plugins-and-widgets-in-an-organization) if you're unable to install certain Figma plugins.

## Running the CopyDoc Figma Plugin

Once you've [installed](#installing-the-figma-plugin) the **CopyDoc** Figma plugin, to run the plugin in your Figma file:

  1. **Right-click** anywhere on your Figma file's page canvas
  2. Hover your mouse over the **Plugins** ▶ menu item
  3. Hover your mouse over the **Saved plugins** ▶ menu item
  4. Click on the **CopyDoc** plugin menu item

> **Tip:** After you've run the **CopyDoc** plugin once in a Figma file, you'll be able to quickly re-launch it by clicking the **CopyDoc** icon in the right-hand side Figma column (under the **Plugin** subheading).

> **Warning:** Only Figma users with **Edit** access to a Figma file can run a Figma plugin in that Figma file; if you only have **View** permissions, you won't be able to run any Figma plugins in that file.

## Uninstalling the CopyDoc Figma plugin

1. Open any Figma file.
2. Click on the **Actions** icon in the bottom Figma toolbar.
3. Click the **Plugins & Widgets** tab to filter results to Figma plugins.
4. Search for **CopyDoc** in the search bar.
5. Click on the **CopyDoc** search result.
6. Click the **Remove** button to uninstall the CopyDoc plugin.

> **Note:** This will remove the plugin from your **Saved Plugins** list, however, the Figma plugin may still show up under your **Recents** list (if it has been recently run), as Figma saves this list of recent plugins in your browser's/app's local storage. The plugin will vanish from the Recents menu after other plugins are run to take its place.

---

---
url: "/copydoc/overview/pro.md"
description: "After trying out all the Pro features of CopyDoc **10 times**, you can optionally upgrade to continue using all the extra features that are only available in the Pro version; or if you're a casual user, you can continue using the Free version forever."
---

# Activating CopyDoc Pro

> After trying out all the Pro features of CopyDoc **10 times**, you can optionally upgrade to continue using all the extra features that are only available in the Pro version; or if you're a casual user, you can continue using the Free version forever.

> **Tip:** Need a CopyDoc Pro account? You can purchase a Pro account for you or your team by visiting the [CopyDoc](https://www.hypermatic.com/copydoc/#pro) product page on the Hypermatic website.

## Activating the Figma plugin with an CopyDoc Pro license key

1. **Purchase a Pro license** for you or your team by visiting the [CopyDoc](https://www.hypermatic.com/copydoc/#pro) product page on the Hypermatic website.
2. **Run the CopyDoc Plugin**, then click on the **Upgrade Now** button at the bottom of the Figma plugin window.
3. **Paste in your Pro key**, then click the **Unlock** button.

This will unlock the Pro version of CopyDoc and give you unlimited use all of the Figma plugin features.

> **Warning:** Please note, if you're in China, the accounts server _may_ be blocked by "The Great Firewall of China". If you're seeing a activation error, despite using a valid key, you will likely need to use a [VPN](https://protonvpn.com/free-vpn/) to resolve the issue.

> **Info:** If you ever need to use a different license key at any time (eg. you were using your own personal Pro license key, but now your employer is buying you a Pro license to use instead), you can press **CTRL + K** while your plugin window is open in Figma, and this will bring up the license key prompt again, where you can enter a different license key.

---

---
url: "/copydoc/overview/quickstart.md"
description: "Everything you need to easily export, import, localize and update text in your Figma designs."
---

# Get Started with CopyDoc

> Everything you need to easily export, import, localize and update text in your Figma designs.

[![CopyDoc Figma Plugin](https://www.hypermatic.com/copydoc.jpg)](https://www.figma.com/community/plugin/900893606648879767/copydoc-text-kit)

## Install & Activate CopyDoc

- [Install & Run the Figma plugin](/copydoc/overview/install.md): How to run CopyDoc inside of Figma
- [Activate CopyDoc Pro](/copydoc/overview/pro.md): How to buy and use a Pro license key

## Using CopyDoc

  - [CopyDoc Documentation](/copydoc/update/export.md): Detailed docs with short screencaps
  - [CopyDoc Video Tutorials](/copydoc/tutorials.md): Full step-by-step video walkthroughs

## Frequently Asked Questions

- [Troubleshooting CopyDoc](/copydoc/faq/troubleshooting.md): Common issues issues you may run into
- [CopyDoc Security](/copydoc/faq/security.md): Details about how CopyDoc works
- [Receipts](/faq/receipts.md): Find email receipts and PDF invoices
- [Billing](/faq/billing.md): Manage your Pro subscription
- [License Seat Management](/faq/seats.md): Manage the Figma users on your key
- [CopyDoc Free vs Pro](/copydoc/faq/plans.md): Compare Free vs Pro features

[Video](https://www.hypermatic.com/assets/videos/copydoc/COPYDOC_DEMO.mp4)

## CopyDoc Features

- Privacy focused — no data or content ever leaves your Figma file.
- Export Figma text layers to XLSX, DOCX, CSV, Markdown and JSON files directly to your computer (or to Airtable).
- Bulk update Figma text layers via XLSX, DOCX, CSV, Markdown or JSON import directly from your computer (or from Airtable)..
- Create a custom content library inside your Figma file (with Text Expander shortcuts), with optional Google Sheets and Airtable integration.
- Sync repeating text/image content or CSS styles from a Google Sheet, Airtable or XLSX/CSV file.
- Automatically generate Figma data tables from a Google Sheet or XLSX/CSV.
- Seamless design Localizations for your Figma designs via OpenAI, Claude, Gemini, or Excel (XLSX) file export/import.
- Find & Replace feature to quickly update any matching text.
- Automatically generate Charts by adding your own spreadsheet data.
- Export frames to DOCX, XLSX, TXT, EPUB, HTML or PDF.
- Quickly export selected text layers to XLSX, DOCX, CSV, Markdown, JSON or XLIFF files.
- Spell check your Figma text in dozens of languages.
- Download all Figma comments to CSV and JSON files.
- Include design references for text and comment exports.

---

---
url: "/copydoc/sync/airtable.md"
description: "If you've created your spreadsheet as an Airtable, you can sync it with your Figma design."
---

# Syncing content to Figma from a Airtable

> If you've created your spreadsheet as an Airtable, you can sync it with your Figma design.

### Video Tutorial: Sync Airtable spreadsheet content to Figma

This video tutorial is a complete step-by-step guide showing you how to sync Airtable spreadsheet content to Figma using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/SFAjIzF6P9o)

### Video Tutorial: Auto repeat and sync Figma layers from a spreadsheet

This video tutorial is a complete step-by-step guide showing you how to automatically repeat and sync Figma layers from a spreadsheet using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/_1MHyfYNHFQ)

## Syncing your Airtable content to Figma layers

[Video](/assets/videos/copydoc/sync/airtable-sync.mp4)

To add your Airtable content for the **Sync Content** feature in CopyDoc, select the **Sync from Airtable URL** option from the platforms dropdown selector; then you'll need to add 3 fields:

### Your Airtable Sheet URL

To create a sheet, login to [Airtable](https://airtable.com/) and click **Create a base**, select the **Workspace** you'd like to add it under, and then click **Create**.

The Airtable sheet URL should look like this: `https://airtable.com/appzkSCDvQhxjfrl3/tbl9Ug0eTNoZFX5ne/viwULclwtTCrQq4dR?blocks=hide`

### Your Airtable Personal Access Token

You can [create a token](https://airtable.com/create/tokens) from the Airtable [Personal Access Token](https://airtable.com/developers/web/guides/personal-access-tokens) page.

Your Airtable personal access token should look like this: `patCDDXkwmgP4CyJK.19aa66430076753f90aaf1b27ae0a4ddf14f445dce8add9bd539bcbefcbe35df`

You'll also need to set the **Scope** to `data.records:read`, and making sure to include your **Workspace** that contains the sheet(s) you'd like to use, otherwise there won't be any permissions for the API to read the content from your Airtable.

### Custom Airtable Label

You'll need to set a custom label (eg. `My Airtable Snippets`) to help you identify your Airtable URL when you use it.

Once you've added those fields, click the **Use Selected Airtable** button to load up the table content that you can use to sync content with Figma.

> **Warning:** **Figma text layers with missing fonts can't be updated**. If your Figma text layer contains a [missing font](https://help.figma.com/hc/en-us/articles/360039956994-Manage-missing-fonts), the plugin won't be able to update it. Please ensure any text layers you would like to update in any way using the CopyDoc plugin have their missing fonts resolved.

## Auto repeat a single Figma layer with your spreadsheet rows

[Video](/assets/videos/copydoc/sync/auto-repeat-sync.mp4)

When using the **Content** or **Styles** sync tab options, you can automatically repeat a single Figma layer by enabling the **Auto Repeat** toggle, which will automatically copy the original selected Figma layer and duplicate it as many times as the number of rows that your spreadsheet data contains.

If your selected Figma layer is already directly inside of another Figma layer with Auto Layout enabled, the selected layer will automatically be duplicated inside of that parent layer, otherwise, CopyDoc will create a brand new Auto Layout frame and duplicate your new Figma layers there instead.

### Dynamic auto-repeating parent layer names

[Video](/assets/videos/copydoc/sync/auto-renaming-frames.mp4)

If you'd like to dynamically name the new auto-repeating Figma layer from your spreadsheet data, too, you can do this by ensuring the Figma layer name that you're repeating (eg. `#Title`) matches a column in the spreadsheet that you're syncing; this will automatically use the value from each row under the `#Title` column in your spreadsheet as the layer name for each duplicated Figma layer.

If there's no matching layer name in your spreadsheet, the CopyDoc plugin will take the original Figma layer name and append a row number to it (eg. `My Frame Layer (Row 3)`) instead.

---

---
url: "/copydoc/sync/charts.md"
description: "If you'd like to automatically generate visual Figma charts using data from spreadsheets, you can click the **Charts** tab in the CopyDoc Sync feature, then follow the steps below."
---

# Importing charts from spreadsheet data

> If you'd like to automatically generate visual Figma charts using data from spreadsheets, you can click the **Charts** tab in the CopyDoc Sync feature, then follow the steps below.

### Sync chart data to Figma from a spreadsheet

This video tutorial is a complete step-by-step guide showing you how to sync chart data to Figma from a spreadsheet using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/SwgrrN9gY1Q)

[Video](/assets/videos/copydoc/sync/chart-import.mp4)

> **Tip:** **Download sample CSV files for each chart type**. You can download a `.csv` file containing sample data for any chart type by clicking on your chart type, then clicking on the **chart-sample-data.csv** link, which will download the example CSV file to your computer to update with your own data.

You can select one of the chart options below:

- Bar Chart
- Column Chart
- Line Chart
- Area Chart
- Combo Chart
- Donut Chart
- Pie Chart
- Scatter Chart
- Stepped Area Chart

Once you've chosen your chart type and added your spreadsheet data, click the **Insert Chart to Figma** button to instantly add your chart to Figma as a new editable frame on your current page.

You can then optionally customize the colors, text content or any other elements of the chart design by editing the vector/text layers that are automatically added to your page when the chart is inserted from the plugin.

---

---
url: "/copydoc/sync/google-sheets.md"
description: "If you've created your spreadsheet as an Google Sheet, you can sync it with your Figma design."
---

# Syncing content to Figma from a Google Sheet

> If you've created your spreadsheet as an Google Sheet, you can sync it with your Figma design.

### Video Tutorial: Sync Google Sheets spreadsheet content to Figma

This video tutorial is a complete step-by-step guide showing you how to sync content from a Google Sheets spreadsheet to your Figma designs using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/J67CDH5XkWk)

### Video Tutorial: Auto repeat and sync Figma layers from a spreadsheet

This video tutorial is a complete step-by-step guide showing you how to automatically repeat and sync Figma layers from a spreadsheet using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/_1MHyfYNHFQ)

## Syncing your Google Sheet content to Figma layers

[Video](/assets/videos/copydoc/sync/google-sheets-sync.mp4)

If you've created your spreadsheet as a Google Sheet, you can sync it with your Figma design by clicking on the **Sync Content** button in the main CopyDoc plugin screen, which will open up the settings panel for this feature.

### Making your Google Sheet link public and copying the URL

In order to use your Google Sheet's content to sync with Figma, you'll first need to ensure that the Google Sheet share URL is made public, otherwise the plugin won't have permissions to read it. You can do this by opening up the spreadsheet in Google Sheets, clicking the **Share** button and changing the sheet's permissions from **Restricted** and update it to **Anyone with the link**.

> **Info:** If you're unable to set the permissions to **Anyone with the link can view** (due to company policies), you can still edit your sheet in Google Sheets, then download it to a local Excel (.xlsx) file on your computer, which you can [drag and drop the Excel file](/copydoc/sync/spreadsheet-file) directly into the Figma plugin and that will give you the exactly same result as if it was loaded remotely from the Google Sheet URL instead.

### Pasting your Google Sheet URL and syncing with Figma

You can preview your spreadsheet contents by pasting your public Google Sheets URL into the **Sync Public Google Sheet** input field; if it's a valid, and public URL that's correctly structured, it will automatically load a preview of the headers that it contains after pasting it.

Ensure that you select at least one layer in Figma that contains renamed layers to match your spreadsheet headers, and then click on the **Sync Spreadsheet Rows with Figma Layers** button. This will sync the content from your spreadsheet with your selected renamed Figma layers.

> **Warning:** **Figma text layers with missing fonts can't be updated**. If your Figma text layer contains a [missing font](https://help.figma.com/hc/en-us/articles/360039956994-Manage-missing-fonts), the plugin won't be able to update it. Please ensure any text layers you would like to update in any way using the CopyDoc plugin have their missing fonts resolved.

## Auto repeat a single Figma layer with your spreadsheet rows

[Video](/assets/videos/copydoc/sync/auto-repeat-sync.mp4)

When using the **Content** or **Styles** sync tab options, you can automatically repeat a single Figma layer by enabling the **Auto Repeat** toggle, which will automatically copy the original selected Figma layer and duplicate it as many times as the number of rows that your spreadsheet data contains.

If your selected Figma layer is already directly inside of another Figma layer with Auto Layout enabled, the selected layer will automatically be duplicated inside of that parent layer, otherwise, CopyDoc will create a brand new Auto Layout frame and duplicate your new Figma layers there instead.

### Dynamic auto-repeating parent layer names

[Video](/assets/videos/copydoc/sync/auto-renaming-frames.mp4)

If you'd like to dynamically name the new auto-repeating Figma layer from your spreadsheet data, too, you can do this by ensuring the Figma layer name that you're repeating (eg. `#Title`) matches a column in the spreadsheet that you're syncing; this will automatically use the value from each row under the `#Title` column in your spreadsheet as the layer name for each duplicated Figma layer.

If there's no matching layer name in your spreadsheet, the CopyDoc plugin will take the original Figma layer name and append a row number to it (eg. `My Frame Layer (Row 3)`) instead.

---

---
url: "/copydoc/sync/hiding.md"
description: "Along with updating text content in your Figma layers, the **Sync Spreadsheet Content** feature also supports automatically hiding and showing Figma layers in the same way."
---

# Hiding and showing Figma layers from the spreadsheet

> Along with updating text content in your Figma layers, the **Sync Spreadsheet Content** feature also supports automatically hiding and showing Figma layers in the same way.

[Video](/assets/videos/copydoc/sync/hidden-sync-figma-layers.mp4)

## Hiding Layers

If you would like to hide any of the Figma layers that you're syncing from a spreadsheet, you can put the special keyword `_hide` as the value of your cell; when you sync the spreadsheet with Figma, any matching Figma layers will automatically be hidden.

## Showing Layers

If you would like to show any of the Figma layers that you're syncing from a spreadsheet, you can put the special keyword `_show` as the value of your cell; when you sync the spreadsheet with Figma, any matching Figma layers will automatically be set to visible.

---

---
url: "/copydoc/sync/images.md"
description: "You can sync images from external URLs (or from a local `.zip` file) to image fills for your Figma layers using the same naming method as syncing text from a spreadsheet."
---

# Including image URLs in your spreadsheet

> You can sync images from external URLs (or from a local `.zip` file) to image fills for your Figma layers using the same naming method as syncing text from a spreadsheet.

[Video](/assets/videos/copydoc/sync/spreadsheet-image.mp4)

If you'd like to use images in your spreadsheet that will get added to your non-text Figma layers, you can paste any image URLs that begin with `http://` or `https://` (or you can also use an inline `` HTML tag), and the CopyDoc plugin will automatically assume that they're being used as images. Please also ensure you name your image column header to be the same as your Figma image layers (eg. **#Poster**).

|#Poster |
|-------|
|https://i.redd.it/3fl2s0q1ug661.jpg|
|https://i.redd.it/3fl2s0q1ug661.jpg|
|https://i.redd.it/3fl2s0q1ug661.jpg|

> **Tip:** **Video files are also supported for paid Figma plans**. As per [Figma's documentation](https://help.figma.com/hc/en-us/articles/8878274530455-Add-video-to-prototypes) for native video support, if you're running CopyDoc in a Figma file that's on a paid Figma plan (Education, Professional, Organization, or Enterprise team), you'll also be able to sync videos in the same way as the example of syncing images above. Videos files can be up to 100mb in size and in .mp4, .mov or .webm format.

## Sync local image files from your computer via XLSX import

### Video Tutorial: Sync a folder of images to Figma layers via a spreadsheet

This video tutorial is a complete step-by-step guide showing you how to sync an images folder with Figma layers using a spreadsheet with the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/4JV01bi8nOw)

### Video Tutorial: Sync SVG icons from a spreadsheet to your Figma layers

This video tutorial is a complete step-by-step guide showing you how to sync SVG icons from a spreadsheet to your Figma layers with the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/eybeymh7IdQ)

If you prefer to use images already saved to your computer, instead of image URLs online, you can do this by zipping your images along with your XLSX file.

If you need a hand with this, please follow our step-by-step video tutorials (above) on how to sync a folder of images to your Figma layers via an XLSX spreadsheet.

> **Warning:** **Zip encoding for image files with special characters**. If you're zipping local image files with characters like "æøå" (eg. `Læge.png`), please ensure that the zip file has the correct encoding, as otherwise these characters will be removed or replaced automatically and won't match up with the same filenames in your spreadsheet. If you're on Mac, just using right-click -> "Compress" should be fine, and if you're using Windows, the [WinRAR](https://www.win-rar.com/download.html?&L=0) app should do this correctly.

> **Note:** **2gb maximum size limit for local zip files**. Please note that due to the browser's 2gb (gigabyte) memory limit per tab (which the Figma app and browser version are both limited to), any `.zip` files containing local images that you're dropping into CopyDoc for syncing content must be _below_ 2gb (gigabytes), otherwise the content won't be loaded due to exceeding the memory limit for unzipping the file in the plugin.

## Auto repeat a single Figma layer with your spreadsheet rows

[Video](/assets/videos/copydoc/sync/auto-repeat-sync.mp4)

When using the **Content** or **Styles** sync tab options, you can automatically repeat a single Figma layer by enabling the **Auto Repeat** toggle, which will automatically copy the original selected Figma layer and duplicate it as many times as the number of rows that your spreadsheet data contains.

If your selected Figma layer is already directly inside of another Figma layer with Auto Layout enabled, the selected layer will automatically be duplicated inside of that parent layer, otherwise, CopyDoc will create a brand new Auto Layout frame and duplicate your new Figma layers there instead.

### Dynamic auto-repeating parent layer names

[Video](/assets/videos/copydoc/sync/auto-renaming-frames.mp4)

If you'd like to dynamically name the new auto-repeating Figma layer from your spreadsheet data, too, you can do this by ensuring the Figma layer name that you're repeating (eg. `#Title`) matches a column in the spreadsheet that you're syncing; this will automatically use the value from each row under the `#Title` column in your spreadsheet as the layer name for each duplicated Figma layer.

If there's no matching layer name in your spreadsheet, the CopyDoc plugin will take the original Figma layer name and append a row number to it (eg. `My Frame Layer (Row 3)`) instead.

---

---
url: "/copydoc/sync/merge-tags.md"
description: "CopyDoc supports powerful merge tag syntax that lets you dynamically replace content within your text layers, while preserving formatting and allowing multiple replacements in a single layer."
---

# Using merge tags in Figma to replace merge tag text with spreadsheet data

> CopyDoc supports powerful merge tag syntax that lets you dynamically replace content within your text layers, while preserving formatting and allowing multiple replacements in a single layer.

### Video Tutorial: Sync merge tags in Figma text layers from a spreadsheet

This video tutorial is a complete step-by-step guide showing you how to sync merge tags in Figma text layers from a spreadsheet using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/odONMaXerQQ)
### Video Tutorial: Sync content with advanced merge tags in spreadsheet cells

This video tutorial is a complete step-by-step guide showing you how to sync Figma text content and rename Figma layers with advanced merge tags in spreadsheet cells using the CopyDoc plugin
[Embedded media](https://www.youtube.com/embed/M3TCf3VWOlg)

[Video](/assets/videos/copydoc/sync/placeholder-sync.mp4)

## Merge tag Syntax

CopyDoc uses a simple merge tag syntax: `#{columnName}`. You can insert these merge tags anywhere in your text layers, and they'll be replaced with values from your spreadsheet.

### Example Usage

**Figma text layer:**
```
Hello #{firstName} #{lastName},
Your order #{orderId} is ready for pickup!
```

**Spreadsheet columns:**
| firstName | lastName | orderId |
|-----------|----------|---------|
| John      | Smith    | 12345   |
| Sarah     | Johnson  | 67890   |

**Result after sync:**
- "Hello John Smith, Your order 12345 is ready for pickup!"
- "Hello Sarah Johnson, Your order 67890 is ready for pickup!"

## Key Benefits

- **Preserve formatting**: Text styles, fonts, and colors remain intact
- **Multiple merge tags**: Use as many merge tags as needed in one layer
- **Flexible column naming**: Works with various column header formats
- **Smart fallback**: If no matching column is found, the merge tag text is preserved
- **Cross-row references**: Pull data from specific rows using `.N` syntax
- **Dynamic layer naming**: Use merge tags to rename frames and layers

### Column Header Flexibility

CopyDoc is smart about matching column headers. All of these formats work:
- Standard: `firstName` matches `#{firstName}`
- With # prefix: `#firstName` matches `#{firstName}`
- Full merge tag: `#{firstName}` matches `#{firstName}`

## Advanced Features

[Video](/assets/videos/copydoc/sync/advanced-spreadsheet-merge-tags.mp4)

### Row Index Override (`.N` Syntax)

Pull data from specific rows using the `.N` syntax, where `N` is the row number (starting from 2, as row 1 is headers).

**Example:**

**Spreadsheet:**
| firstName | lastName |
|-----------|----------|
| John      | Smith    |
| Sarah     | Johnson  |
| Mike      | Williams |

**Figma text layer in row 1:**

Current: `#{firstName} #{lastName}`
Next up: `#{firstName.3} #{lastName.3}`

**Result:**

Current: John Smith
Next up: Sarah Johnson

This is useful for:
- Creating "up next" or "previous" references
- Showing related data from other rows
- Building comparative displays
- Creating reference lists

### Renaming Layers with Merge Tags

Merge tags work for renaming frames and layers, too. Use them in your spreadsheet's column values to dynamically generate layer names.

**Example:**

**Spreadsheet:**
| frameName | firstName | lastName |
|------------------------|-----------|----------|
| `#{firstName} #{lastName}` | John      | Smith    |
| `#{firstName} #{lastName}` | Sarah     | Johnson  |

**Result:** Your frames will be renamed to:
- "John Smith"
- "Sarah Johnson"

You can also use row index override in layer names:
- `#{firstName.2}` vs `#{firstName.3}` creates comparative frame names
- Perfect for "before/after" or "option A vs option B" scenarios

### Bulk Layer Renaming

For simpler renaming, if you have 6 Figma frames all named **#My Frame**, you can use this as a column name in your spreadsheet and rename them in bulk with static values or merge tag combinations.

## Spreadsheet Cell Content Interpolation

Spreadsheet cells can reference other columns using merge tag syntax; this happens **before** the value is applied to Figma layers, allowing you to create computed values.

**Example:**

**Spreadsheet:**
| firstName | lastName | fullName | greeting |
|-----------|----------|----------|----------|
| John      | Smith    | `#{firstName} #{lastName}` | `Hello, #{fullName}!` |
| Sarah     | Johnson  | `#{firstName} #{lastName}` | `Hello, #{fullName}!` |

**How it works:**
1. The `fullName` column resolves to "John Smith" or "Sarah Johnson"
2. The `greeting` column then uses that resolved value to become "Hello, John Smith!" or "Hello, Sarah Johnson!"
3. This final value is applied to your Figma text layers

**Benefits:**
- Create reusable formulas in your spreadsheet
- Combine multiple columns into formatted strings
- Build complex content from simple data pieces
- Maintain consistency across similar content patterns

**Advanced Example with Row References:**

| product  | price | competitor | comparison |
|----------|-------|------------|------------|
| Widget A | $99   | Widget B   | `#{product} (#{price})` vs `#{product.3} (#{price.3})` |
| Widget B | $149  | Widget C   | `#{product} (#{price})` vs `#{product.4} (#{price.4})` |
| Widget C | $199  | Widget A   | `#{product} (#{price})` vs `#{product.2} (#{price.2})` |

This creates dynamic comparison text like "Widget A ($99) vs Widget B ($149)"

### Common Use Cases

- **Email templates**: Personalize recipient names and details
- **Business cards**: Generate multiple variations with different contact info
- **Marketing materials**: Create localized versions with different content
- **Data visualizations**: Update labels and titles dynamically
- **Product catalogs**: Batch update product names, prices, and descriptions
- **Comparative layouts**: Show data from multiple rows side-by-side
- **Dynamic layer organization**: Automatically name frames based on their content

### Tips

- Add quotes around values with commas in your CSV: `"42,580"`
- Test with a few layers first before applying to your entire design
- Use meaningful column names to make your spreadsheet easy to understand
- Row numbers start at 2 (row 1 is headers), so `.2` references the first data row
- Spreadsheet cell interpolation resolves first, then Figma layer interpolation
- Combine merge tags creatively to build complex dynamic content

---

---
url: "/copydoc/sync/renaming.md"
description: "Along with updating text content in your Figma layers, the **Sync Spreadsheet Content** feature also supports automatically renaming non-text layers in the same way."
---

# Renaming Figma layers from the spreadsheet

> Along with updating text content in your Figma layers, the **Sync Spreadsheet Content** feature also supports automatically renaming non-text layers in the same way.

### Video Tutorial: Rename Figma layers in bulk from a spreadsheet

This video tutorial is a complete step-by-step guide showing you how to rename Figma layers in bulk from a spreadsheet using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/6lXxRQH98mE)

[Video](/assets/videos/copydoc/sync/spreadsheet-sync-layer-names.mp4)

For example, if you have 6 Figma frames all named **#My Frame**, you can use this as a column name in the first row of your spreadsheet, and then add 6 more rows under that column in your spreadsheet containing the names you'd like rename each of the selected frames to in Figma (eg. "My New Frame Name", "My Other New Frame Name" etc).

When you sync the spreadsheet with Figma, any matching (non-text) Figma layers will automatically be renamed.

---

---
url: "/copydoc/sync/spreadsheet-file.md"
description: "If you've created your spreadsheet as either a `.csv` or `.xlsx` file, you can sync it with your Figma design by clicking on the **Sync Content** button in the main CopyDoc plugin screen, which will open up the settings panel for this feature."
---

# Syncing content to Figma from a CSV/XLSX file

> If you've created your spreadsheet as either a `.csv` or `.xlsx` file, you can sync it with your Figma design by clicking on the **Sync Content** button in the main CopyDoc plugin screen, which will open up the settings panel for this feature.

### Video Tutorial: Sync XLSX Excel spreadsheet content to Figma

This video tutorial is a complete step-by-step guide showing you how to sync content from an Excel spreadsheet to your Figma designs using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/7YmbMj8LGXI)

### Video Tutorial: Sync CSV spreadsheet content to Figma

This video tutorial is a complete step-by-step guide showing you how to sync content from a CSV spreadsheet to your Figma designs using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/5qdxq629A48)

### Video Tutorial: Auto repeat and sync Figma layers from a spreadsheet

This video tutorial is a complete step-by-step guide showing you how to automatically repeat and sync Figma layers from a spreadsheet using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/_1MHyfYNHFQ)

### Video Tutorial: Sync a folder of images to Figma layers via a spreadsheet

This video tutorial is a complete step-by-step guide showing you how to sync an images folder with Figma layers using a spreadsheet with the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/4JV01bi8nOw)

### Video Tutorial: Sync SVG icons from a spreadsheet to your Figma layers

This video tutorial is a complete step-by-step guide showing you how to sync SVG icons from a spreadsheet to your Figma layers with the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/eybeymh7IdQ)

## Syncing your CSV or XLSX file content to Figma layers

[Video](/assets/videos/copydoc/sync/xlsx-sync.mp4)

You can preview your spreadsheet contents by either dragging and dropping your correctly structured `.csv` or `.xlsx` file into the **Sync XLSX/CSV File** dropzone area, or by clicking on it and selecting the file manually by browsing for it on your computer.

Ensure that you select at least one layer in Figma that contains renamed layers to match your spreadsheet headers, and then click on the **Sync Spreadsheet Rows with Figma Layers** button. This will sync the content from your spreadsheet with your selected renamed Figma layers.

> **Warning:** **Figma text layers with missing fonts can't be updated**. If your Figma text layer contains a [missing font](https://help.figma.com/hc/en-us/articles/360039956994-Manage-missing-fonts), the plugin won't be able to update it. Please ensure any text layers you would like to update in any way using the CopyDoc plugin have their missing fonts resolved.

## Auto repeat a single Figma layer with your spreadsheet rows

[Video](/assets/videos/copydoc/sync/auto-repeat-sync.mp4)

When using the **Content** or **Styles** sync tab options, you can automatically repeat a single Figma layer by enabling the **Auto Repeat** toggle, which will automatically copy the original selected Figma layer and duplicate it as many times as the number of rows that your spreadsheet data contains.

If your selected Figma layer is already directly inside of another Figma layer with Auto Layout enabled, the selected layer will automatically be duplicated inside of that parent layer, otherwise, CopyDoc will create a brand new Auto Layout frame and duplicate your new Figma layers there instead.

### Dynamic auto-repeating parent layer names

[Video](/assets/videos/copydoc/sync/auto-renaming-frames.mp4)

If you'd like to dynamically name the new auto-repeating Figma layer from your spreadsheet data, too, you can do this by ensuring the Figma layer name that you're repeating (eg. `#Title`) matches a column in the spreadsheet that you're syncing; this will automatically use the value from each row under the `#Title` column in your spreadsheet as the layer name for each duplicated Figma layer.

If there's no matching layer name in your spreadsheet, the CopyDoc plugin will take the original Figma layer name and append a row number to it (eg. `My Frame Layer (Row 3)`) instead.

---

---
url: "/copydoc/sync/structure-figma.md"
description: "In Figma, you'll rename your text layers to be the same as the header names that you already setup in your spreadsheet."
---

# Naming your layers in Figma to match the spreadsheet

> In Figma, you'll rename your text layers to be the same as the header names that you already setup in your spreadsheet.

[Video](/assets/videos/copydoc/sync/naming-figma-layers.mp4)

As an example, if you named your spreadsheet headers **#Title** or **#Description**, then you would then name your text layers **#Title** or **#Description** as well; this will ensure that they are mapped together when the spreadsheet is synced up in the plugin later.

## Assigning specific rows to Figma layers

To sync a specific spreadsheet row with a parent Frame layer, append a period (.) followed by the target row number to the layer name. For example; renaming a parent frame layer from `#My Frame` to `#My Frame.3` instructs the sync process to use data from the 3rd row of your spreadsheet when you select that frame layer and provide the spreadsheet. By default, syncing a single frame or layer uses the first row.

You can also override the row used for _individual_ child text layers within the parent frame by applying the same naming convention. For example; changing a nested text layer from `#Heading` to `#Heading.5` ensures that this layer pulls data from the 5th row of the spreadsheet, _even if_ the parent frame is set to `#My Frame.3` (which uses the 3rd row for other synced data).

This optional naming convention allows precise control over which spreadsheet row populates each layer during the sync process.

> **Tip:** **Assigning random rows to Figma layers**. If you would like a Figma layer to sync with a _random_ row's value, you can add an `.x`  to the end of your Figma layer name, directly after the header name. For example, `#Title.x` will always fetch a random row from the **#Title** column of your spreadsheet.

## Figma image layers

If you're using the spreadsheet to update image content, you can also rename your Figma image layers with the same spreadsheet header name (eg. **#Poster**) that contains image URLs in its column's content rows; your Figma layers will automatically be replaced with image content when the spreadsheet is synced.

## Updating (non-text) Figma layer names

If you'd like to rename any non-text Figma layers, you can use the layer name (eg. **My Frame**) as your column header name, and then add any new names in the rows below it, and any matching Figma layer names will automatically be renamed when the spreadsheet is synced.

## Auto repeat a single Figma layer with your spreadsheet rows

[Video](/assets/videos/copydoc/sync/auto-repeat-sync.mp4)

When using the **Content** or **Styles** sync tab options, you can automatically repeat a single Figma layer by enabling the **Auto Repeat** toggle, which will automatically copy the original selected Figma layer and duplicate it as many times as the number of rows that your spreadsheet data contains.

If your selected Figma layer is already directly inside of another Figma layer with Auto Layout enabled, the selected layer will automatically be duplicated inside of that parent layer, otherwise, CopyDoc will create a brand new Auto Layout frame and duplicate your new Figma layers there instead.

### Dynamic auto-repeating parent layer names

[Video](/assets/videos/copydoc/sync/auto-renaming-frames.mp4)

If you'd like to dynamically name the new auto-repeating Figma layer from your spreadsheet data, too, you can do this by ensuring the Figma layer name that you're repeating (eg. `#Title`) matches a column in the spreadsheet that you're syncing; this will automatically use the value from each row under the `#Title` column in your spreadsheet as the layer name for each duplicated Figma layer.

If there's no matching layer name in your spreadsheet, the CopyDoc plugin will take the original Figma layer name and append a row number to it (eg. `My Frame Layer (Row 3)`) instead.

---

---
url: "/copydoc/sync/structure-spreadsheet.md"
description: "The **Sync Spreadsheet Content** feature in CopyDoc allows you to sync repeatable text and image content from multiple rows from any spreadsheet (which can be an `.xlsx`/`.csv` file or a public Google Sheet URL) to your selected Figma layers."
---

# Structuring your spreadsheet to match your Figma layers

> The **Sync Spreadsheet Content** feature in CopyDoc allows you to sync repeatable text and image content from multiple rows from any spreadsheet (which can be an `.xlsx`/`.csv` file or a public Google Sheet URL) to your selected Figma layers.

### Auto repeat and sync Figma layers from a spreadsheet

This video tutorial is a complete step-by-step guide showing you how to automatically repeat and sync Figma layers from a spreadsheet using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/_1MHyfYNHFQ)

[Video](/assets/videos/copydoc/sync/structuring-spreadsheet.mp4)

This can be really helpful for designs that contain repeating grids or lists where you need to populate it with real content automatically.

You can also use this feature to rename layers or apply CSS styles from your spreadsheet, too.

## Example spreadsheet structure for content sync with Figma layers

Regardless of if you're using an XLSX, CSV or Google Sheet for your spreadsheet, the structure is always the same; the very first row (or the "header") of your spreadsheet has to contain the names of the Figma layers that you would like to sync the rest of the rows underneath it with.

You can name these whatever you like, but it's easiest to use a short yet descriptive hashtag format like: **#Title** or **#Description**. In Figma, you would then name your text layers **#Title** or **#Description** as well; this will ensure that they are mapped together when the spreadsheet is synced up in the plugin later.

|#Title  |#Genre      |#Age Rating   |#Total Reviews|
|-------|-----------|-------------|-------------|
|No Time To Die|Action     |13           |123 Reviews  |
|Dune   |Sci-Fi Action|14           |124 Reviews  |
|Black Widow|Action     |18           |125 Reviews  |
|Suicide Squad|Action     |18           |125 Reviews  |

## Auto repeat a single Figma layer with your spreadsheet rows

[Video](/assets/videos/copydoc/sync/auto-repeat-sync.mp4)

When using the **Content** or **Styles** sync tab options, you can automatically repeat a single Figma layer by enabling the **Auto Repeat** toggle, which will automatically copy the original selected Figma layer and duplicate it as many times as the number of rows that your spreadsheet data contains.

If your selected Figma layer is already directly inside of another Figma layer with Auto Layout enabled, the selected layer will automatically be duplicated inside of that parent layer, otherwise, CopyDoc will create a brand new Auto Layout frame and duplicate your new Figma layers there instead.

### Dynamic auto-repeating parent layer names

[Video](/assets/videos/copydoc/sync/auto-renaming-frames.mp4)

If you'd like to dynamically name the new auto-repeating Figma layer from your spreadsheet data, too, you can do this by ensuring the Figma layer name that you're repeating (eg. `#Title`) matches a column in the spreadsheet that you're syncing; this will automatically use the value from each row under the `#Title` column in your spreadsheet as the layer name for each duplicated Figma layer.

If there's no matching layer name in your spreadsheet, the CopyDoc plugin will take the original Figma layer name and append a row number to it (eg. `My Frame Layer (Row 3)`) instead.

## Supported Markdown formatting for text content

You can optionally add some basic markdown formatting (bold, italics) and links to your spreadsheet content, which will automatically be applied when the snippet is synced to your Figma text layer.

- You can specify **Bold** text by using double asterisks `**Snipet text to bold**` or double underscores `eg.__Snipet text to bold__`
- You can specify *Italic* text by using single asterisks `*Italic Snippet Text*` or single underscores `eg._Italic Snippet Text_`
- You can specify ***Bold Italic*** text by using triple asterisks `***Bold Italic Snippet Text***` or triple underscores `eg.___Bold Italic Snippet Text___`
- You can specify hyperlinks by using the markdown syntax of `This is [my link here](https://example.com) in a text snippet` (you can also format the link text by adding the bold/italic syntax inside of the link's `[]` text area).

---

---
url: "/copydoc/sync/styles.md"
description: "Along with updating text content in your Figma layers, the **Sync Spreadsheet Content** feature also supports automatically applying CSS styles to your layers in the same way."
---

# Using CSS in your spreadsheet to update Figma layer styles

> Along with updating text content in your Figma layers, the **Sync Spreadsheet Content** feature also supports automatically applying CSS styles to your layers in the same way.

### Video Tutorial: Style Figma layers from a spreadsheet with CSS style sync

This video tutorial is a complete step-by-step guide showing you how to style Figma layers from a spreadsheet with CSS style sync using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/l0Bhqx6X3Ic)

[Video](/assets/videos/copydoc/sync/spreadsheet-styles-sync.mp4)

For example, if you have text layers in Figma named **#SectionHeading**, you can change the font size and color of those layers in Figma by adding `font-size: 40px; color: #999999;` to your row(s) underneath the **#SectionHeading** column in your spreadsheet.

When you sync the spreadsheet with Figma, any matching Figma layers will automatically have their styles updated, provided that the CSS value is supported and applies to that layer type.

## Supported CSS properties that you can use to style your Figma layers

Certain CSS properties are available for different layer types, and you can apply multiple properties to a layer by putting them in the same spreadsheet cell:

eg. `color: #000000; font-size: 24px; font-weight: bold;`

|#HeroBlock|#Menu                                   |#CardFrame      |#StaffName                                         |
|----------|----------------------------------------|----------------|---------------------------------------------------|
|background-color: #818AF9; color: #FFF; font-size: 16px; border-radius: 20px;|opacity: 0.3; background-color: #CCD4FF;|font-size: 10px;|font-size: 22px; color: #818AF9; font-weight: bold;|
|background-color: #818AF9; color: #FFF; font-size: 16px; border-radius: 20px;|opacity: 0.3; background-color: #CCD4FF;|font-size: 10px;|font-size: 22px; color: #818AF9; font-weight: bold;|

Below are the CSS properties that are currently supported in the spreadsheet sync feature:

### Text Layers

These CSS properties can be applied to any Figma text layers.

- color (eg. `color: #CCCCCC;`)
- font-size (eg. `font-size: 40px;`)
- line-height (eg. `line-height: 48px;`)
- font-family (eg. `font-family: Arial;`)
- font-weight (eg. `font-weight: bold;`)
- font-style (eg. `font-style: italic;`)
- text-align (eg. `text-align: center;`)
- text-transform (eg. `text-transform: uppercase;`)
- vertical-align (eg. `vertical-align: middle;`)

> **Tip:** **Applying text styles to all child layers**. If you apply any Text Layer CSS styles (eg. `font-size: 30px`) to a layer that contains child layers (eg. Frame, Group, Component, Instance), this will automatically apply the style to _every_ text layer inside of that matching layer.

### Other Layers

These CSS properties can be applied to other Figma layers (images, rectangles, frames etc):

- width (eg. `width: 100px;`)
- height (eg. `height: 100px;`)
- opacity (eg. `opacity: 0.5;`)
- background-color (eg. `background-color: #CCCCCC;`)
- border (eg. `border: 1px solid #CCCCCC;`)
- border-radius (eg. `border-radius: 20px;`)

### Positioning Properties

These CSS properties can be applied to any Figma layers (including text, images, rectangles, frames etc).

### Transform

The `transform` property in CSS allows you to visually manipulate an element’s position, rotation, and scale without affecting its actual layout space. This is often used in Figma and similar design tools to reproduce movements, rotations, and resizes that happen *within* a frame, not relative to the document flow.

Common transform functions include:

- **translate**
  Moves an element along both the X and Y axes.
  _Example:_ `transform: translate(10px, 20px)`
  → moves the element **10px right** and **20px down**.

- **translateX**
  Moves an element horizontally along the X-axis.
  _Example:_ `transform: translateX(10px)`
  → moves the element **10px to the right**.

- **translateY**
  Moves an element vertically along the Y-axis.
  _Example:_ `transform: translateY(20px)`
  → moves the element **20px down**.

- **rotate**
  Rotates an element around its origin point.
  _Example:_ `transform: rotate(45deg)`
  → rotates the element **45 degrees clockwise**.

- **scale**
  Resizes an element by a scaling factor on the X and Y axes.
  _Example:_ `transform: scale(1.5)` or `transform: scale(2, 1.5)`
  → increases the element’s size **1.5× overall** or **2× horizontally / 1.5× vertically**.

> **Note:** Multiple transform functions can be combined in sequence.
> Example:
> ```css
> transform: translateX(10px) rotate(45deg) scale(1.2);
> ```
> The order matters — each function applies relative to the result of the previous one.

### X/Y Position

In contrast to transforms, the **X** and **Y** values in Figma correspond to the element’s *absolute position* within its parent frame or coordinate system. In CSS, this positioning is represented by properties such as:

- **top**
  Specifies the vertical offset from the top edge of the containing element.
  _Example:_ `top: 100px;`
  → positions the element **100px below the top** of its container.

- **left**
  Specifies the horizontal offset from the left edge of the containing element.
  _Example:_ `left: 100px;`
  → positions the element **100px from the left** of its container.

> **Note:** **Difference from transform:**
> - `top` and `left` define the element’s **layout position**.
> - `transform: translate()` shifts the element **visually** without affecting surrounding elements or layout flow.

## Auto repeat a single Figma layer with your spreadsheet rows

[Video](/assets/videos/copydoc/sync/auto-repeat-sync.mp4)

When using the **Content** or **Styles** sync tab options, you can automatically repeat a single Figma layer by enabling the **Auto Repeat** toggle, which will automatically copy the original selected Figma layer and duplicate it as many times as the number of rows that your spreadsheet data contains.

If your selected Figma layer is already directly inside of another Figma layer with Auto Layout enabled, the selected layer will automatically be duplicated inside of that parent layer, otherwise, CopyDoc will create a brand new Auto Layout frame and duplicate your new Figma layers there instead.

### Dynamic auto-repeating parent layer names

[Video](/assets/videos/copydoc/sync/auto-renaming-frames.mp4)

If you'd like to dynamically name the new auto-repeating Figma layer from your spreadsheet data, too, you can do this by ensuring the Figma layer name that you're repeating (eg. `#Title`) matches a column in the spreadsheet that you're syncing; this will automatically use the value from each row under the `#Title` column in your spreadsheet as the layer name for each duplicated Figma layer.

If there's no matching layer name in your spreadsheet, the CopyDoc plugin will take the original Figma layer name and append a row number to it (eg. `My Frame Layer (Row 3)`) instead.

---

---
url: "/copydoc/sync/table.md"
description: "As well as syncing spreadsheet rows with Figma layers from a spreadsheet, the **Sync Spreadsheet Content** feature in CopyDoc allows you to sync repeatable text and image content from multiple rows from any spreadsheet (which can be an `.xlsx`/`.csv` file or a public Google Sheet URL) to your selected Figma layers."
---

# Generating an auto-layout table in Figma from your spreadsheet

> As well as syncing spreadsheet rows with Figma layers from a spreadsheet, the **Sync Spreadsheet Content** feature in CopyDoc allows you to sync repeatable text and image content from multiple rows from any spreadsheet (which can be an `.xlsx`/`.csv` file or a public Google Sheet URL) to your selected Figma layers.

[Video](/assets/videos/copydoc/sync/table-import.mp4)

Regardless of if you're using an XLSX, CSV or Google Sheet for your spreadsheet, the structure is always the same; the very first row (or the "header") of your spreadsheet is used as the first header row of the table (as the "component" row), and any rows underneath will become instances of that first header.

You can preview your spreadsheet contents by pasting your [public Google Sheets URL](/copydoc/sync/google-sheets#making-your-google-sheet-link-public-and-copying-the-url) into the **Sync Public Google Sheet** input field; if it's a valid, and public URL that's correctly structured, it will automatically load a preview of the headers that it contains after pasting it.

Once the preview has loaded, and then click on the **Generate a table in Figma from this spreadsheet** button. This will import the content from your spreadsheet into a table on your current Figma page.

## Example spreadsheet structure for table imports

Regardless of if you're using an XLSX, CSV or Google Sheet for your spreadsheet, the structure is always the same; the very first row (or the "header") of your spreadsheet has to contain the names of the Figma layers that you would like to sync the rest of the rows underneath it with.

You can name these whatever you like, but it's easiest to use a short yet descriptive hashtag format like: **#Title** or **#Description**. In Figma, you would then name your text layers **#Title** or **#Description** as well; this will ensure that they are mapped together when the spreadsheet is synced up in the plugin later.

|#Title  |#Genre      |#Age Rating   |#Total Reviews|
|-------|-----------|-------------|-------------|
|No Time To Die|Action     |13           |123 Reviews  |
|Dune   |Sci-Fi Action|14           |124 Reviews  |
|Black Widow|Action     |18           |125 Reviews  |
|Suicide Squad|Action     |18           |125 Reviews  |

## Supported Markdown formatting for table text content

You can optionally add some basic markdown formatting (bold, italics) and links to your spreadsheet content, which will automatically be applied when the snippet is synced to your Figma text layer.

- You can specify **Bold** text by using double asterisks `**Snipet text to bold**` or double underscores `eg.__Snipet text to bold__`
- You can specify *Italic* text by using single asterisks `*Italic Snippet Text*` or single underscores `eg._Italic Snippet Text_`
- You can specify ***Bold Italic*** text by using triple asterisks `***Bold Italic Snippet Text***` or triple underscores `eg.___Bold Italic Snippet Text___`
- You can specify hyperlinks by using the markdown syntax of `This is [my link here](https://example.com) in a text snippet` (you can also format the link text by adding the bold/italic syntax inside of the link's `[]` text area).

---

---
url: "/copydoc/sync/variants.md"
description: "You can use the Sync Content feature in CopyDoc to automatically swap out Figma variants for named component layers when syncing your spreadsheet data."
---

# Syncing Figma component variants from the spreadsheet

> You can use the Sync Content feature in CopyDoc to automatically swap out Figma variants for named component layers when syncing your spreadsheet data.

### Video Tutorial: Sync component variants in Figma using a spreadsheet

This video tutorial is a complete step-by-step guide showing you how to sync component variants in Figma using a spreadsheet with the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/pytew54ZZ_g)

## Step 1: Setting up your component layer variants in Figma

[Video](/assets/videos/copydoc/sync/create-variants.mp4)

Before you sync your spreadsheet to swap out component variants, you'll first need to set up your Figma component set with variants as a Figma layer by following a few steps below (as shown visually in the video above).

1. Create a new Figma component layer and name it to match your spreadsheet header (eg. **#Tag**)
2. Right-click the Figma component layer, hover over **Main component** and click **Add variant** to [create a new Figma component set](https://help.figma.com/hc/en-us/articles/360056440594-Create-and-use-variants).
3. Add as many new variants as needed by **clicking the + icon button** at the bottom of the Figma component set layer (when it's selected), and update the style for each of the new variants (eg. changing backgrounds or colors, etc).
4. Once you've created your component variants, you can **customize the names of the property and variant names**, renaming the Figma defaults to make them easier to identify and use in your spreasheet (eg. renaming "Property 1" to "Genre", and "Variant 1" to "Synthwave").
5. Go to your **Assets** panel in Figma, and drag and drop your new Figma component (eg. #Tag) onto your Figma file and move it into any Figma frame(s) you'd like to sync from a spreadsheet.
6. Follow the **Step 2 instructions below** to automatically swap your component _variant_ option by syncing rows from a spreadsheet with your Figma frames.

## Step 2: Swapping out variants by syncing your spreadsheet

[Video](/assets/videos/copydoc/sync/sync-variants.mp4)

Similar to syncing normal text content, to swap out variants from a spreadsheet, you'll first need to add your Component layer name (eg. **Tag**) as a new _header column_ value in the first row of your spreadsheet.

Then, you can copy/paste the property and variant name that's visible when double-clicking on your Figma variant layer in the sidebar, which will have an **=** equals sign (eg. **Genre=Synthwave**) to show the property name and variant name values, in the following spreadsheet rows inside the same column, like the example below (and as shown visually in the video above).

|**#Tag** |
|-------|
|Genre=Synthwave|
|Genre=Outrun|
|Genre=Vaporwave|
|Genre=Darksynth|

When you sync the spreadsheet with Figma, any matching named component Figma layers (eg. **#Tag**) will automatically have their _variant_ value swapped out, based on the variant value you specified in your spreadsheet rows.

> **Tip:** You can still sync additional text or image content normally for other layers in the same spreadsheet by creating extra columns for those, too.

---

---
url: "/copydoc/tutorials.md"
description: "The best free Figma tutorial videos for beginners (or power users) to level up."
---

# CopyDoc Video Tutorials

> The best free Figma tutorial videos for beginners (or power users) to level up.

## Export/Re-Import Text

### Import/export Figma text layers with CSV files

This video tutorial is a complete step-by-step guide showing you how to import/export Figma text layers with CSV files using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/16QHfpJ8M7E)

### Export & Re-Import Figma text content via Airtable sync

This video tutorial is a complete step-by-step guide showing you how to export & re-import Figma text content via Airtable sync using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/ZoyLiC8riPc)

### Import/export Figma text layers with JSON files

This video tutorial is a complete step-by-step guide showing you how to import/export Figma text layers with JSON files using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/Nn01U9o_D9o)

### Export and re-import selected text layers in Figma

This video tutorial is a complete step-by-step guide showing you how to export and re-import selected text layers from Figma using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/gCQZiVV7HOM)

### Update Figma text layer content with Markdown files

This video tutorial is a complete step-by-step guide showing you how to update Figma text layer content with Markdown files using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/LIeoBRnuchM)

### Update Figma text from Microsoft Word with DOCX files

This video tutorial is a complete step-by-step guide showing you how to update Figma text from Microsoft Word with DOCX files using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/eULh-xz99NU)

### Update Figma text from Google Docs with DOCX files

This video tutorial is a complete step-by-step guide showing you how to update Figma text from Google Docs with DOCX files using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/QA1mmImf7EI)

### Update Figma text from Office 365 with DOCX files

This video tutorial is a complete step-by-step guide showing you how to update Figma text from Office 365 with DOCX files using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/Wj9_H2yhibg)

## Sync Spreadsheets

### Auto repeat and sync Figma layers from a spreadsheet

This video tutorial is a complete step-by-step guide showing you how to automatically repeat and sync Figma layers from a spreadsheet using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/_1MHyfYNHFQ)

### Sync XLSX Excel spreadsheet content to Figma

This video tutorial is a complete step-by-step guide showing you how to sync content from an Excel spreadsheet to your Figma designs using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/7YmbMj8LGXI)

### Sync CSV spreadsheet content to Figma

This video tutorial is a complete step-by-step guide showing you how to sync content from a CSV spreadsheet to your Figma designs using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/5qdxq629A48)

### Sync Google Sheets spreadsheet content to Figma

This video tutorial is a complete step-by-step guide showing you how to sync content from a Google Sheets spreadsheet to your Figma designs using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/J67CDH5XkWk)

### Sync Airtable spreadsheet content to Figma

This video tutorial is a complete step-by-step guide showing you how to sync Airtable spreadsheet content to Figma using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/SFAjIzF6P9o)

### Sync a folder of images to Figma layers via a spreadsheet

This video tutorial is a complete step-by-step guide showing you how to sync an images folder with Figma layers using a spreadsheet with the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/4JV01bi8nOw)

### Sync component variants in Figma using a spreadsheet

This video tutorial is a complete step-by-step guide showing you how to sync component variants in Figma using a spreadsheet with the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/pytew54ZZ_g)

### Sync merge tags in Figma text layers from a spreadsheet

This video tutorial is a complete step-by-step guide showing you how to sync merge tags in Figma text layers from a spreadsheet using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/odONMaXerQQ)

### Sync content with advanced merge tags in spreadsheet cells

This video tutorial is a complete step-by-step guide showing you how to sync Figma text content and rename Figma layers with advanced merge tags in spreadsheet cells using the CopyDoc plugin
[Embedded media](https://www.youtube.com/embed/M3TCf3VWOlg)

### Sync chart data to Figma from a spreadsheet

This video tutorial is a complete step-by-step guide showing you how to sync chart data to Figma from a spreadsheet using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/SwgrrN9gY1Q)

### Sync SVG icons from a spreadsheet to your Figma layers

This video tutorial is a complete step-by-step guide showing you how to sync SVG icons from a spreadsheet to your Figma layers with the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/eybeymh7IdQ)

### Style Figma layers from a spreadsheet with CSS style sync

This video tutorial is a complete step-by-step guide showing you how to style Figma layers from a spreadsheet with CSS style sync using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/l0Bhqx6X3Ic)

### Rename Figma layers in bulk from a spreadsheet

This video tutorial is a complete step-by-step guide showing you how to rename Figma layers in bulk from a spreadsheet using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/6lXxRQH98mE)

## Localize Text

### Translate Figma text layers with XLIFF files

This video tutorial is a complete step-by-step guide showing you how to translate Figma text layers with XLIFF files using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/LHIOqns7QU8)

### The simplest way to localize any Figma designs

This video tutorial is a complete step-by-step guide showing you the simplest way to localize any Figma designs using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/BJ03GUCHTjg)

## Content Library

### Create a re-useable text content library in Figma

This video tutorial is a complete step-by-step guide showing you how to create a re-useable text content library in Figma using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/x-gNQqwIOLw)

### Use Google Sheets as a Figma text content library

This video tutorial is a complete step-by-step guide showing you how to use Google Sheets as a Figma text content library using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/dBMsBeyncSk)

### Use Airtable as a Figma text content library

This video tutorial is a complete step-by-step guide showing you how to use Airtable as a Figma text content library using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/Aw9wleHHvOs)

### Use Figma Variables as a re-useable text content library

This video tutorial is a complete step-by-step guide showing you how to use Figma Variables as a re-useable text content library using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/X6TDkfp0W8A)

### Add realistic placeholder text content in Figma

This video tutorial is a complete step-by-step guide showing you how to add realistic placeholder text content in Figma using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/NghMg69P2hA)

### Add text expander content snippet shortcuts in Figma

This video tutorial is a complete step-by-step guide showing you how to add text expander content snippet shortcuts in Figma using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/OZCbuLVsDmI)

## Export Frames

### Export Figma to Microsoft Word .docx files

This video tutorial is a complete step-by-step guide showing you how to export your Figma designs to Microsoft Word .docx files using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/7KdJUmhB8rM)

### Export Figma to Microsoft Excel .xlsx files

This video tutorial is a complete step-by-step guide showing you how to export your Figma designs to Microsoft Excel .xlsx files using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/xz1hXZDLJTU)

## Find & Replace

### Find and replace Figma text content

This video tutorial is a complete step-by-step guide showing you how to find and replace Figma text content in your design's layers using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/E_GDAQdXEGQ)

## Spell Check

### Spell check Figma text layers in your designs

This video tutorial is a complete step-by-step guide showing you how to spell check text in your Figma designs using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/zIlzh6_kicw)

## Figma Comments

### Export comments from Figma files

This video tutorial is a complete step-by-step guide showing you how to export your comments from your Figma files to CSV/JSON files (with image references) using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/GXg0q8GO_Ik)

---

---
url: "/copydoc/update/edit.md"
description: "After opening your exported `.zip` file, you can start editing text content in your `.csv`, `.xlsx`, `.md`, `.docx`, `.xliff`, or `.json` file in your software application of choice."
---

# Making text updates to exported files

> After opening your exported `.zip` file, you can start editing text content in your `.csv`, `.xlsx`, `.md`, `.docx`, `.xliff`, or `.json` file in your software application of choice.

[Video](/assets/videos/copydoc/export/editing-text-layers.mp4)

## Editing text in XLSX or CSV files

To edit your exported `.xlsx` or `.csv` file, you can open the file in a spreadsheet application like [Apple Numbers](https://www.apple.com/numbers/), [Microsoft Excel](https://www.microsoft.com/microsoft-365/excel) or [Google Sheets](https://www.google.com/sheets/about/), or simply just a text/code editor application like [Visual Studio Code](https://code.visualstudio.com/) or [Sublime Text](https://www.sublimetext.com/).

> **Tip:** **Opening CSV files with unicode characters in Microsoft Excel**. Microsoft Excel requires you to use the built-in [Import Wizard](https://community.jaspersoft.com/wiki/how-import-csv-document-cyrillic-symbols-excel-and-correctly-render-them-program) to import the CSV if your text contains unicode characters (for example, if your content is in Polish or Russian). Please note that other spreadsheet software like Apple Keynote and Google Sheets doesn't require you to do this, and you can open the CSV file normally in those apps.

> **Tip:** **Opening CSV files Google Sheets**. When importing a CSV file into Google Sheets, please ensure you _uncheck_ the **Convert text to numbers, dates and formulas** checkbox, otherwise your Figma IDs will be modified and messed up, which means they won't be able to be imported properly back into Figma.

Each row in the `.csv` file represents a string of text from your Figma file, you can verify the parent frame for each text layer by checking the "**frame**" column value as an easy reference, and you can edit the content for each row by updating the "**figma_text**" column value.

### Understanding the columns included in your XLSX or CSV file

#### id

The **id** column contains unique references to the text layers in your original Figma file, this is what allows any text updates to be re-imported back into the CopyDoc plugin later.

> **Warning:** **Don't edit anything in the "id" column**. If you intend to re-import your text updates back into your Figma file, please don't edit anything in the "**id**" column, otherwise the links back to your Figma text won't be possible (or could possibly update other layers incorrectly).

#### frame

The **frame** column contains the name of the parent frame that the current row's text layer is included in, this is helpful for referencing where the text layer appears in your design.

#### layer_name

The **layer_name** column is in reference the name of your text layer in the original Figma file; this is almost always the same as the text content itself, but will be different if you've manually renamed your Figma text layers.

Please note: editing or updating the **layer_name** will automatically update your Figma text layer name if the XLSX or CSV file is re-imported back into Figma. This won't have any impact on the text layer's content itself, so please ensure you're making any text _content_ edits to the **figma_text** column, or in any other custom text variants you may have added.

#### figma_text

The **figma_text_** column contains the text content from the text layers in your original Figma file, editing this content will make it available to re-import the updated content back into Figma again.

### Custom Text Variants in your XLSX or CSV

If you've exported your XLSX or CSV file with additional custom columns, these will automatically be included after all of the other default columns in your `.xlsx` or `.csv` file export. You can populate these empty placeholder columns with different versions or different languages, which can be selected if you re-import your CSV back into Figma.

> **Tip:** **Ensure you re-save the XLSX/CSV file as a .xlsx/.csv**. If you're using a spreadsheet app to edit your `.csv` file, please sure you re-save the file as a `.csv` after editing it; sometimes these apps will try to save the file in a different format, which won't be compatible when re-importing your file again via the CopyDoc plugin.

## Editing text in JSON files

To edit your exported `.json` file, you can open the file in a text/code editor application like [Visual Studio Code](https://code.visualstudio.com/) or [Sublime Text](https://www.sublimetext.com/).

Each object in the `.json` file array represents a string of text from your Figma file, you can verify the parent frame for each text layer by checking the "**frame**" property value as an easy reference, and you can edit the content for each object by updating the "**figma_text**" property value.

### Understanding the columns included in your JSON file

#### id

The **id** property contains unique references to the text layers in your original Figma file, this is what allows any text updates to be re-imported back into the CopyDoc plugin later.

> **Warning:** **Don't edit anything in the "id" property**. If you intend to re-import your text updates back into your Figma file, please don't edit anything in the "**id**" property, otherwise the links back to your Figma text won't be possible (or could possibly update other layers incorrectly).

#### frame

The **frame** property contains the name of the parent frame that the current object's text layer is included in, this is helpful for referencing where the text layer appears in your design.

#### layer_name

The **layer_name** property is in reference the name of your text layer in the original Figma file; this is almost always the same as the text content itself, but will be different if you've manually renamed your Figma text layers.

Please note: Editing or updating the **layer_name** will automatically update your Figma text layer name if the JSON is re-imported back into Figma. This won't have any impact on the text layer's content itself, so please ensure you're making any text _content_ edits to the **figma_text** property, or in any other custom text variants you may have added.

#### figma_text

The **figma_text_** property contains the text content from the text layers in your original Figma file, editing this content will make it available to re-import the updated content back into Figma again.

### Custom Text Variants in your JSON

If you've exported your JSON file with additional custom properties, these will automatically be included after all of the other default properties in your `.json` file export. You can populate these empty placeholder properties with different versions or different languages, which can be selected if you re-import your JSON back into Figma.

> **Tip:** **Ask your developer friends/team to help you use JSON**. If you don't know much about the JSON format, check with someone you know who understands web development, as they'll be able to use this format to do some really neat things, like integrating the data into a third party API/app, or write their own Node.js script to manipulate the text data in other cool ways.

## Editing text in Markdown files

To edit your exported `.md` file, you can open the file in a text/code editor application like [Visual Studio Code](https://code.visualstudio.com/) or use a dedicated Markdown editor like [Markably](https://markably.io/).

Each block of text in the `.md` file array represents a string of text from your Figma file, which are each preceeded by a line that includes the corrosponding `figma_text_id` for the content.

> **Warning:** **Don't edit or remove anything in the "figma_text_id" property lines**. If you intend to re-import your text updates back into your Figma file, please don't edit anything in the "**figma_text_id**" lines, otherwise the links back to your Figma text won't be possible (or could possibly update other layers incorrectly).

### Supported Markdown formatting

You can make updates to any Figma content in your Markdown file, and also modify or add some basic markdown formatting (bold, italics) and links, which can be re-imported back into your Figma file.

- You can specify **Bold** text by using double asterisks around the text, eg. `**Text to bold**`
- You can specify *Italic* text by using single underscores around the text, eg. `_Italic Text_`
- You can specify ***Bold Italic*** text by using double asterisks and one underscore around the text, eg. `**_Italic Text_**`
- You can specify hyperlinks by using the markdown syntax of `This is [my link here](https://example.com) in a text paragraph` (you can also format the link text by adding the bold/italic syntax inside of the link's `[]` text area).

## Editing text in DOCX files

To edit your exported `.docx` file, you can open the file in an application like [Microsoft Word](https://www.microsoft.com/en-au/microsoft-365/word) or [Google Docs](https://docs.google.com/).

Each block of text in the `.docx` file array represents a string of text from your Figma file, which are each preceeded by a line that includes the corrosponding `figma_text_id` for the content.

> **Warning:** **Don't edit or remove anything in the "figma_text_id" property lines**. If you intend to re-import your text updates back into your Figma file, please don't edit anything in the "**figma_text_id**" lines, otherwise the links back to your Figma text won't be possible (or could possibly update other layers incorrectly).

### Supported DOCX formatting

You can make updates to any Figma content in your DOCX file, and also modify or add some basic formatting (bold, italics) and links, which can be re-imported back into your Figma file.

## Editing XLIFF files

To edit your exported `.xliff` file, you can open the file in a text/code editor application like [Visual Studio Code](https://code.visualstudio.com/) or [Sublime Text](https://www.sublimetext.com/).

Each `` in the `.xliff` file represents a string of text from your Figma file, you can verify the parent frame for each text layer by checking the "**frame**" property value as an easy reference, and you can edit the target translation locale for each `` by updating the `` value.

> **Tip:** **Use XLIFF editing software to make this easier** If you don't want to use a normal text editor for making updates to your `.xliff` file, you can use specific software made for editing `.xliff` files, such as [Counterparts](https://michelf.ca/software/counterparts-lite/) or [XLIFFTool](https://apps.apple.com/us/app/xlifftool/id1074282695?mt=12) for OSX or [Virtaal](https://virtaal.translatehouse.org/) for Windows.

> **Warning:** **Don't edit anything in the "id" property**. If you intend to re-import your text updates back into your Figma file, please don't edit anything in each "id" property, otherwise the links back to your Figma text won't be possible (or could possibly update other layers incorrectly).

## Viewing design references

If you're editing text in your export, you may want to visually reference where the text is displayed in the original Figma design. If you enabled the  **Design References** option, your exported `.zip` file will include a folder called `_frames`, which includes `.png` images for each frame that you've selected to export. These can be used as a design reference alongside the exported text files.

> **Note:** **Exported text layers are ordered by visual position**. The text layers in the exported files are sorted by their visual position in the design (from the top/left to the bottom/right), this should help make it easier to scan a design image and find where the text is being used.

## Video Tutorials

### Video Tutorial: Import/export Figma text layers with CSV files

This video tutorial is a complete step-by-step guide showing you how to import/export Figma text layers with CSV files using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/16QHfpJ8M7E)

### Video Tutorial: Export & Re-Import Figma text content via Airtable sync

This video tutorial is a complete step-by-step guide showing you how to export & re-import Figma text content via Airtable sync using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/ZoyLiC8riPc)

### Video Tutorial: Import/export Figma text layers with JSON files

This video tutorial is a complete step-by-step guide showing you how to import/export Figma text layers with JSON files using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/Nn01U9o_D9o)

### Video Tutorial: Export and re-import selected text layers in Figma

This video tutorial is a complete step-by-step guide showing you how to export and re-import selected text layers from Figma using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/gCQZiVV7HOM)

### Video Tutorial: Update Figma text layer content with Markdown files

This video tutorial is a complete step-by-step guide showing you how to update Figma text layer content with Markdown files using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/LIeoBRnuchM)

### Video Tutorial: Update Figma text from Microsoft Word with DOCX files

This video tutorial is a complete step-by-step guide showing you how to update Figma text from Microsoft Word with DOCX files using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/eULh-xz99NU)

### Video Tutorial: Update Figma text from Google Docs with DOCX files

This video tutorial is a complete step-by-step guide showing you how to update Figma text from Google Docs with DOCX files using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/QA1mmImf7EI)

### Video Tutorial: Update Figma text from Office 365 with DOCX files

This video tutorial is a complete step-by-step guide showing you how to update Figma text from Office 365 with DOCX files using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/Wj9_H2yhibg)

---

---
url: "/copydoc/update/export.md"
description: "After exporting text layers from your Figma frame(s), you can then update their content outside of Figma using any text/spreadsheet editing software, then instantly re-import the updated text back into your Figma designs again later."
---

# Exporting Figma text layer content

> After exporting text layers from your Figma frame(s), you can then update their content outside of Figma using any text/spreadsheet editing software, then instantly re-import the updated text back into your Figma designs again later.

[Video](/assets/videos/copydoc/export/exporting-text-layers.mp4)

The **Export Text Layers** feature in CopyDoc works by letting you export all of the text layers for your top level parent frames from the current Figma page to a `.csv`, `.json`, `.md` or `.xliff` file (with optional images for design references) that you can download to your computer.

## Getting started and selecting your Figma frames to include text layers from

To get started with this feature, click on the **Export Text Layers** button in the main CopyDoc plugin screen.

You'll now be able to select the frames from your current Figma page that you would like to use as the pages in your CSV, JSON, Markdown or XLIFF export.

CopyDoc will load all of your "parent frames" from your current Figma page into the plugin as a list of frames that you can use to choose the frames you should like to add text layers to your export from; you can click on any frame's checkbox or image thumbnail to select it (clicking it again will deselect it).

> **Note:** **Parent level Figma frames required** To export text layers to CSV, JSON, Markdown, or XLIFF, your Figma page must contain at least one "Parent Frame". This means, any "frames" that are located _directly_ underneath your page.

## Selecting your export format and CSV/JSON/Markdown/XLIFF options

### Excluding locked Figma layers from export

Enabling the **Exclude Locked Figma Layers** option will automatically skip over any locked text layers layers or text layers that are contained inside of a locked parent layer (frame, group, component etc) on your Figma page. You can use this to easily exclude any text layers that you don't want to be included in your export.

### Maintaining the visual text case from Figma

Enabling the **Use Figma Visual Text Case** option will automatically force your exported text layers to match the "visual" text case (eg. "Uppercase", "Title Case", "Lowercase") option set on your text layer in Figma. You can use this option to visually mirror the text content in your design, instead of exporting the underlying text layer content (eg. as it appears with the default "As typed" case setting selected).

### Including design references

Enabling the **Include Design References** option will include `.png` images for each frame that you've selected to export. These can be used as a design reference alongside the text exported to `.csv`, `.json`, `.md` or `.xliff` files.

### Grouping duplicate text layers

Enabling the **Group Duplicate Text Layers** option will ensure that any text layers with exactly the same content with automatically be grouped into a single entry in your CSV, JSON, Markdown or XLIFF export. This option can make editing and re-importing your content back into Figma a bit easier, as you only need to edit the text in one place and it will be re-imported back to all of the layers with the same text after being changed.

### Splitting Figma frames into separate files

By default, CopyDoc will export all of your selected Figma frames into a single document file (eg. `.csv`, `.xslx`, etc), but if you would prefer each Figma frame to be exported as a different document file, you can enable the **Export File Per Frame** option in the export settings to do that.

> **Note:** Please note, this option won't be available if the **Group Duplicate Text Layers** option is also enabled, as the grouped option requires all text layers to be exported as a single file.

## Adding custom text variant placeholders to CSV or JSON exports

One common use case for exporting and re-imported text that has been modified externally in a CSV or JSON file is to quickly swap out your text in Figma to an alternate version of the content. Often, this is localised content, where you're translating content into a different language, or trying out a different set of content for A/B testing etc.

If you need to do this for more than a single language or text variant, you can select the **CSV (Custom)** or **JSON (Custom)** options in the export formats select box. Selecting either of these options will reveal a new text input field where you'll be able to add your own custom text variant placeholders that will be included in your CSV or JSON exports.

For example, if you know you need to translate the text layers in your current Figma design to multiple languages, you might add custom variants called _Japanese_, _Dutch_ and _French_. This will ensure that these are all added as additional CSV columns or JSON properties, and you'll be able to populate them with the translated text after exporting your content from Figma.

If you decided to re-import these text updates back into Figma via the CopyDoc plugin again later, you'll be able to instantly select any variant in your single CSV or JSON file to swap out, making it much easier than maintaining multiple files.

## Exporting and downloading your text content

Once you're happy with all of your export settings, you can click the **Export** button at the top of the export panel to begin exporting text layers from Figma to CSV, JSON, Markdown or XLIFF.

After CopyDoc has finished processing your text layers, you'll be shown a confirmation message; you can download your `.zip` file containing your exported text (and optional image) files by clicking the **Download Text** button.

After you've downloaded your `.zip` file from Figma to your computer, you can open your file explorer to the directory where it was saved. **Double clicking** on the exported `.zip` file will unzip the contents and let you use your text exports however you like.

> **Tip:** **Saving file downloads from Figma** If you're using the Figma **desktop app**, you'll see a prompt appear to download your file. However, if you're using Figma in a **web browser**, your file will automatically be downloaded to your computer by default (usually to the **Downloads** directory on your computer).

## Quick export text layers from any layer selection

[Video](/assets/videos/copydoc/export/quick-export-text-layers.mp4)

If you'd like to quickly export text layers from any Figma layer selection (instead of only top level Figma frames), you can click the **Quick Export** button in the CopyDoc plugin to do this, and download the file to your computer. Editing this file will allow you to use the **Re-Import** feature to update your text layers, too.

## Video Tutorials

### Video Tutorial: Import/export Figma text layers with CSV files

This video tutorial is a complete step-by-step guide showing you how to import/export Figma text layers with CSV files using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/16QHfpJ8M7E)

### Video Tutorial: Export & Re-Import Figma text content via Airtable sync

This video tutorial is a complete step-by-step guide showing you how to export & re-import Figma text content via Airtable sync using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/ZoyLiC8riPc)

### Video Tutorial: Import/export Figma text layers with JSON files

This video tutorial is a complete step-by-step guide showing you how to import/export Figma text layers with JSON files using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/Nn01U9o_D9o)

### Video Tutorial: Export and re-import selected text layers in Figma

This video tutorial is a complete step-by-step guide showing you how to export and re-import selected text layers from Figma using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/gCQZiVV7HOM)

### Video Tutorial: Update Figma text layer content with Markdown files

This video tutorial is a complete step-by-step guide showing you how to update Figma text layer content with Markdown files using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/LIeoBRnuchM)

### Video Tutorial: Update Figma text from Microsoft Word with DOCX files

This video tutorial is a complete step-by-step guide showing you how to update Figma text from Microsoft Word with DOCX files using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/eULh-xz99NU)

### Video Tutorial: Update Figma text from Google Docs with DOCX files

This video tutorial is a complete step-by-step guide showing you how to update Figma text from Google Docs with DOCX files using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/QA1mmImf7EI)

### Video Tutorial: Update Figma text from Office 365 with DOCX files

This video tutorial is a complete step-by-step guide showing you how to update Figma text from Office 365 with DOCX files using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/Wj9_H2yhibg)

---

---
url: "/copydoc/update/find-and-replace.md"
description: "The **Find & Replace** feature in CopyDoc works by letting you search all of the text layers on your current Figma page , and replacing any matching with different text. This is useful for a quick find and replace, instead of using a full CSV or JSON export/import."
---

# Finding and replacing text content

> The **Find & Replace** feature in CopyDoc works by letting you search all of the text layers on your current Figma page , and replacing any matching with different text. This is useful for a quick find and replace, instead of using a full CSV or JSON export/import.

### Video Tutorial: Find and replace Figma text content

This video tutorial is a complete step-by-step guide showing you how to find and replace Figma text content in your design's layers using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/E_GDAQdXEGQ)

[Video](/assets/videos/copydoc/update/find-and-replace.mp4)

To get started with this feature, click on the **Find & Replace** button in the main CopyDoc plugin screen.

You'll now be able to search your current Figma page for text using the **Text to Find in Figma Page** input field, and then specify the text you'd like to replace any matches with by using the **Text to Replace Matches With** input field.

Clicking the **Find Matches & Preview Updates** will conduct the search and show a list of any matching text layers where the text you searched for was found. You'll also be able to preview what the text will look like with your replacement text.

You can select/deselect any text layers you would like to perform the replacement on; if you don't know which layer is related to which part of the design, you can click on the **Text** icon button to instantly zoom and scroll to that text layer on your Figma page.

When you're happy with the previewed changes and the text layer selections to replace, you can click on the **Update Figma Text Layers** button to automatically replace any matching text with your new specified text.

> **Warning:** **Figma text layers with missing fonts can't be updated**. If your Figma text layer contains a [missing font](https://help.figma.com/hc/en-us/articles/360039956994-Manage-missing-fonts), the plugin won't be able to update it. Please ensure any text layers you would like to update in any way using the CopyDoc plugin have their missing fonts resolved.

---

---
url: "/copydoc/update/import.md"
description: "The **Import Text Layers** feature in CopyDoc works by letting you add your updated `.csv`, `.json`, `.md`, `.docx` or `.xliff` file that was originally exported from the CopyDoc plugin, and manually approving any text differences compared to the text layers in your Figma file, then applying any selected updates with one click."
---

# Re-importing text updates to Figma

> The **Import Text Layers** feature in CopyDoc works by letting you add your updated `.csv`, `.json`, `.md`, `.docx` or `.xliff` file that was originally exported from the CopyDoc plugin, and manually approving any text differences compared to the text layers in your Figma file, then applying any selected updates with one click.

[Video](/assets/videos/copydoc/export/importing-text-layers.mp4)

To get started, click on the **Import Text Layers** button in the main CopyDoc plugin menu, then drag and drop your updated `.csv`, `.json`, `.md`, `.docx` or `.xliff` file from your computer into the drop zone of the import settings panel. This will read your file and check for any updated text layers compared to your Figma text layers.

After your text update previews have loaded, you can see a list of all the differences of the text layers that contain updates in your file.

If you originally exported a `.csv` or `.json` file with multiple custom text variants, you'll be able to switch between these by clicking on the **Select (CSV Column/JSON Property) To Import** drop down menu.

You can approve the changes that will be applied by scrolling through the list and **checking** or **unchecking** the text updates you would like to import, then once you're happy with the selected text layers, click the **Update Figma Text Layers** button to instantly apply all of the selected text updates at once.

> **Warning:** **Figma text layers with missing fonts can't be updated**. If your Figma text layer contains a [missing font](https://help.figma.com/hc/en-us/articles/360039956994-Manage-missing-fonts), the plugin won't be able to update it. Please ensure any text layers you would like to update in any way using the CopyDoc plugin have their missing fonts resolved.

> **Tip:** **Use the normal "undo" command in Figma to undo updates**. If you would like to undo your text updates, you can use the standard CMD + Z (on Mac) or CTRL + Z (on Windows) shortcut to undo the changes in your Figma file.

> **Note:** **Zooming in on text layers that contain updates**. To instantly see where each text layer is in your Figma file, you can click on the **Text** icon button next to any of the updated layers to instantly move the focus of your Figma page to show where the text layer is located. You can click on this icon before _or_ after making your text updates.

## Video Tutorials

### Video Tutorial: Import/export Figma text layers with CSV files

This video tutorial is a complete step-by-step guide showing you how to import/export Figma text layers with CSV files using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/16QHfpJ8M7E)

### Video Tutorial: Export & Re-Import Figma text content via Airtable sync

This video tutorial is a complete step-by-step guide showing you how to export & re-import Figma text content via Airtable sync using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/ZoyLiC8riPc)

### Video Tutorial: Import/export Figma text layers with JSON files

This video tutorial is a complete step-by-step guide showing you how to import/export Figma text layers with JSON files using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/Nn01U9o_D9o)

### Video Tutorial: Export and re-import selected text layers in Figma

This video tutorial is a complete step-by-step guide showing you how to export and re-import selected text layers from Figma using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/gCQZiVV7HOM)

### Video Tutorial: Update Figma text layer content with Markdown files

This video tutorial is a complete step-by-step guide showing you how to update Figma text layer content with Markdown files using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/LIeoBRnuchM)

### Video Tutorial: Update Figma text from Microsoft Word with DOCX files

This video tutorial is a complete step-by-step guide showing you how to update Figma text from Microsoft Word with DOCX files using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/eULh-xz99NU)

### Video Tutorial: Update Figma text from Google Docs with DOCX files

This video tutorial is a complete step-by-step guide showing you how to update Figma text from Google Docs with DOCX files using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/QA1mmImf7EI)

### Video Tutorial: Update Figma text from Office 365 with DOCX files

This video tutorial is a complete step-by-step guide showing you how to update Figma text from Office 365 with DOCX files using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/Wj9_H2yhibg)

---

---
url: "/copydoc/update/spellcheck.md"
description: "The **Spell Check Layers** feature in CopyDoc works by checking every text layer on your page for spelling errors, and provides suggestions to correct any misspelled words."
---

# Spell checking Figma text layers

> The **Spell Check Layers** feature in CopyDoc works by checking every text layer on your page for spelling errors, and provides suggestions to correct any misspelled words.

### Video Tutorial: Spell check Figma text layers in your designs

This video tutorial is a complete step-by-step guide showing you how to spell check text in your Figma designs using the CopyDoc plugin.
[Embedded media](https://www.youtube.com/embed/zIlzh6_kicw)

[Video](/assets/videos/copydoc/update/spellcheck.mp4)

## Selecting the spell checking language

To get started with this feature, click on the **Spell Check Layers** button in the main CopyDoc plugin screen. When the settings panel opens, you can select the language of the text you would like to spell check by clicking on the **Language** select box and changing the language that matches your Figma text content.

## Finding spelling mistakes in your text layers

Once you've selected your language, you can click the **Find Spelling Mistakes** button to begin searching _every_ text layer on the current Figma page for spelling mistakes.

> **Info:** **More Figma text layers will take longer**.  The more text layers in your Figma file, the longer it will take to find spelling mistakes.

## Zooming in on text layers that contain spelling mistakes

Once the search is complete, you will see a list of words that contain spelling mistakes.

To instantly see where each text layer is in your Figma file, you can click on any word in the results list to expand it and show the frame(s) where the text is located in your page; clicking on the **Search** icon next to any of these frames will instantly move the focus of your Figma page to show where the text layer is located.

## Applying spelling corrections to text layers

To apply a correction to a word that contains a spelling mistake, you can click on any of the **suggestion** buttons underneath each word; clicking on any of the buttons will instantly change the word to the new suggested word in each of the locations where it exists.

> **Warning:** **Figma text layers with missing fonts can't be updated**. If your Figma text layer contains a [missing font](https://help.figma.com/hc/en-us/articles/360039956994-Manage-missing-fonts), the plugin won't be able to update it. Please ensure any text layers you would like to update in any way using the CopyDoc plugin have their missing fonts resolved.

## Undoing spelling corrections to text layers

To undo a correction you made to a word, you can click the **Undo** button besides the "corrected to" notification after a suggestion was applied; clicking on the **Undo** button will instantly change the corrected word back to the original word in each of the locations where it exists.

---

---
url: "/crypto/designs.md"
description: "Upload static Figma frames to password-protected Crypto URLs and manage versions."
---

# Uploading password protected static Figma Designs

> Upload static Figma frames to password-protected Crypto URLs and manage versions.

### Video Tutorial: Password protect static Figma designs

This video tutorial is a complete step-by-step guide showing you how to add password protection to your Figma designs using the Crypto plugin.
[Embedded media](https://www.youtube.com/embed/RXqpOgT0a04)

The "Static Frames" feature in Crypto works by uploading images of your top level parent frames from the current Figma page via the Crypto Figma plugin, and generating a secure URL and password that you can share with others, where they can view your designs via the Crypto web app (without them requiring a Figma account).

To get started with this feature, please ensure you've selected **Figma Designs (Static Frames)** from the Crypto plugin toolbar.

### Selecting and deselecting frames to upload

[Video](/assets/videos/crypto/design/select-deselect-layers.mp4)

To get started, please ensure you've selected **Figma Designs (Static Frames)** from the Crypto plugin toolbar.

You'll now be able to select the frames from your current Figma page that you would like to use as the designs to share in your password protected link.

Crypto will load all of your "parent frames" from your current Figma page into the plugin as a list of frames that you can use to choose the designs you should like to share; you can click on any frame's checkbox or image thumbnail to select it (clicking it again will deselect it).

> **Note:** **Parent level Figma frames required**. To upload your static designs, your Figma page must contain at least one "Parent Frame". This means, any "frames" that are located _directly_ underneath your page.

### Highlighting Figma parent frames to select them

[Video](/assets/videos/crypto/design/filter-selected-layers.mp4)

To make it easier to select the Figma parent frames that you want to compare, clicking or highlighting any frame(s) on your Figma page will automatically filter them down in the available frames list in the Crypto plugin.

### Refreshing Figma parent frames

[Video](/assets/videos/crypto/design/refreshing-deleted-layers.mp4)

If the Crypto plugin is already running and you need to add or remove any parent frames on your current Figma page, you can make those updates as needed and then click on the **Refresh** icon button in the Crypto plugin toolbar.

### Using quick sort to order your frames

[Video](/assets/videos/crypto/design/sort-layers-dropdown.mp4)

There are a number of different ways to sort the order of your frames for your uploaded designs:

#### Sort frames by Figma Layer Order

Selecting the **Sort frames by Figma Layer Order** option will automatically sort your the order of your frames to match their order in your Figma layers.

#### Sort frames visually by Columns

Selecting the **Sort frames visually by Columns** option will automatically sort your the order of your frames to match their visual positioning order by columns in your Figma design.

#### Sort frames visually by Rows

Selecting the **Sort frames visually by Rows** option will automatically sort your the order of your frames to match their visual positioning order by rows in your Figma design.

#### Sort frames visually by Figma Layer Name

Selecting the **Sort frames by Figma Layer Name** option will automatically sort your the order of your frames to match their alphabetical order according to their Figma layer names.

### Manually ordering frames with drag and drop

[Video](/assets/videos/crypto/design/drag-drop-ordering.mp4)

You can manually sort the order of your frames using drag and drop, by **clicking/holding** your mouse on any thumbnail image, and **dragging it up or down** to shift its order in your uploaded frames, then **dropping** it to confirm that order. This custom ordering will be saved if you want to switch between ordering options, so you can get it back by clicking the **Sort frames by Custom Order** option in the sorting select box.

### Uploading your designs

[Video](/assets/videos/crypto/design/upload-first-version.mp4)

Once you're happy with your frame selection and ordering, you can click the **Share Design URL** button in the Crypto plugin toolbar. This will open the share overlay, where you can click the **Securely Upload Designs** button to begin uploading the images.

You will see a confirmation message with your secure URL and a generated password when the upload is complete.

> **Warning:** **Duplicating a Figma file will carry over the URL and password**. If you duplicate your Figma file, the URL and password plugin data will also be carried across to the new file. If you need to duplicate your file and need a different URL/password for it than the original Figma file, you can do this by typing the Komami code (**Up**, **Up**, **Down**, **Down**, **Left**, **Right**, **Left**, **Right**, **B**, **A**) while the plugin window is open. This will generate a brand new Crypto URL/password for your new duplicated Figma file. Please note, this will **not** delete the previous URL.

### Opening your generated URL

[Video](/assets/videos/crypto/design/confirmation-screen.mp4)

Once the upload has completed, you'll be able to copy the secure URL and password to view your selected frames from Figma in the browser, using the Crypto web app.

> **Tip:** **URL and password details can be accessed in the plugin later**. If you need to copy these URL and password details again later, you can do this by clicking the **Share Design URL** button in the Crypto plugin toolbar, then selecting a previously uploaded version using the **version select box**; this will reveal the URL and password details for the URL that you can copy under the **Secure URL Details** section.

### Uploading a new version URL

[Video](/assets/videos/crypto/design/upload-new-version.mp4)

After you've uploaded your designs for the first time, you'll have the option to continue uploading new URLs, which create **versions** of your designs. This can be a good way to keep track of different stages in a design, or simply to create different URLs that show a different set of frames.

You can create a new version URL using the Crypto plugin by clicking the **Share Design URL** button in the Crypto plugin toolbar, then clicking the **Upload New Version URL** button.

You will see a confirmation message with your new secure URL version and the password when the upload is complete.

> **Tip:** **URL and password details can be accessed in the plugin later**. If you need to copy these URL and password details again later, you can do this by clicking the **Share Design URL** button in the Crypto plugin toolbar, then selecting a previously uploaded version using the **version select box**; this will reveal the URL and password details for the URL that you can copy under the **Secure URL Details** section.

### Updating a previously uploaded Crypto version URL

[Video](/assets/videos/crypto/design/update-previous-version.mp4)

There are times when you will want to update a previous version Crypto URL that you've uploaded and sent to someone; you can update any previously uploaded URL using the Crypto plugin by clicking the **Share Design URL** button in the Crypto plugin toolbar, then selecting a previously uploaded version using the **version select box** and clicking the **Update Version xxxxxxxx URL** button.

This will replace the designs on that previously uploaded URL with the new frames that you've selected in the Crypto plugin. It will not update the URL or password details, so anyone with those details previously will still be able to use them.

You will see a confirmation message with your new secure URL version and the password when the upload is complete.

> **Tip:** **URL and password details can be accessed in the plugin later**. If you need to copy these URL and password details again later, you can do this by clicking the **Share Design URL** button in the Crypto plugin toolbar, then selecting a previously uploaded version using the **version select box**; this will reveal the URL and password details for the URL that you can copy under the **Secure URL Details** section.

> **Warning:** **Updating a URL will replace the previously uploaded designs**. Clicking the **Update Version xxxxxxxx URL** button will replace all the uploaded designs for that selected version. Anyone with the previous URL and password will see the updated designs when they re-visit the URL that was previously sent to them.

### Changing your Crypto URL password

[Video](/assets/videos/crypto/design/change-password.mp4)

By default, the Crypto plugin generates a secure random password for you, but if you would like to change this to a custom password of your own, you can do this by enabling the **Change Password** toggle under the **Set Password for Crypto URLs** section of the upload settings panel, then entering your new password in the input field (a minimum 6 characters is required) and clicking the **Set Password** button, which will update the password for your Crypto URL for this Figma page.

> **Note:** **Static designs and prototype URLs share the same password per Figma page**. If you're uploading static designs and a prototype on the same Figma page, please be mindful that each Figma page only has a single password for both URLs. Changing the password for one will also update the other.

> **Warning:** **Updating the password will lock out anyone who had the previous password**. Updating the password will prevent anyone who may have had the previous password from looking at your URL; if you need them to still have access, please re-share the new password with them.

### Deleting a Crypto version URL

[Video](/assets/videos/crypto/design/delete-previous-version.mp4)

You can delete any version of the secure URLs you've generated using the Crypto plugin by clicking the **Share Design URL** button in the Crypto plugin toolbar, then selecting a previously uploaded version using the **version select box** and enabling the toggle: **I would like to delete the xxxxxxxx version URL**; enabling this toggle will allow you to click the **Delete Version xxxxxxxx URL** button.

You will see a confirmation message letting you know that the selected version was deleted.

> **Warning:** **Deleting a version URL cannot be undone** Clicking the **Delete Version xxxxxxxx URL** button will delete all the uploaded designs for that selected version. Anyone with that URL won't be able to view those designs anymore. However, you can always upload a new version and share the new URL with them after deleting the previous URL they were sent.

## Viewing Static Figma Designs

### Logging in to your designs

[Video](/assets/videos/crypto/design/confirmation-screen.mp4)

After opening your URL (from the Crypto Figma plugin) in your web browser, you'll be able to paste in the generated password (from the Crypto Figma plugin). After pasting your password for the URL, clicking the **Login** button will authenticate you to view the uploaded designs.

### Navigating the frames in your design

[Video](/assets/videos/crypto/design/design-arrow-drag.mp4)

You can navigate between your frames in the Crypto web app by **clicking on the arrow** icon buttons, **clicking/holding and dragging** the frames left or right, or by pressing the **left arrow** or **right arrow** keys on your keyboard. Pressing the **space** key on your keyboard will also move to the next frame.

### Jumping between frames in your design

[Video](/assets/videos/crypto/design/design-nav-bar.mp4)

If you need to jump directly to a certain frame in your uploaded designs, you can use the navigation bar at the bottom of the page in the Crypto web app. Hovering over the navigation bar will reveal the thumbnails for each frame, and clicking on any of the thumbnails will instantly jump to viewing that specific frame.

### Switching between your uploaded design versions

[Video](/assets/videos/crypto/design/design-swap-versions.mp4)

If you have uploaded multiple versions of your designs using the Crypto Figma plugin, you can instantly switch between those versions in the Crypto web app by clicking on the **select box heading** in the top left of the page. Selecting a different version will load up the designs for that specific version. You'll also be able to see when each version was **last updated** by looking at the label underneath the selector.

### Toggling dark mode

[Video](/assets/videos/crypto/design/design-dark-mode.mp4)

If your designs work better against a dark background, you can toggle **dark mode** by clicking on the **sun** or **moon** icon in the Crypto web app toolbar. Clicking the icon will toggle between dark mode and the default (lighter) mode.

### Toggling the outer contents visibility

[Video](/assets/videos/crypto/design/design-visibility.mp4)

If you don't want the heading, arrow icons, navigation bar or icon toolbar to be visible while looking at your designs, you can click on the **visibility** icon button in the Crypto web app toolbar. Clicking on this icon button will toggle the visibility of everything besides the designs themselves.

---

---
url: "/crypto/faq/plans.md"
description: "To get unlimited usage of all of the Crypto Pro features, you will need to purchase a license from the [Hypermatic website](https://hypermatic.com/crypto#pro)."
---

# Crypto Free vs Crypto Pro

> To get unlimited usage of all of the Crypto Pro features, you will need to purchase a license from the [Hypermatic website](https://hypermatic.com/crypto#pro).

Crypto includes 10 free trials of the _Pro_ version. Once these trials have been used up, the Figma plugin will revert to their _Free_ version, which will have limited functionality.

  - **Crypto Free**: ### Protected PDFs Unlimited Usage       ### Protected Designs Try during 10 Pro Trials       ### Protected Prototypes Try during 10 Pro Trials
  - **Crypto Pro**: ### Protected PDFs Unlimited Usage       ### Protected Designs Unlimited Usage       ### Protected Prototypes Unlimited Usage

---

---
url: "/crypto/faq/security.md"
description: "Crypto runs as an official plugin inside of Figma's own app, which are reviewed and approved by the Figma team."
---

# Crypto Security

> Crypto runs as an official plugin inside of Figma's own app, which are reviewed and approved by the Figma team.

The Figma plugin is run directly from Figma's own servers, and runs inside of a your Figma file, which means that it inherits all of the [security](https://www.figma.com/security/) and infrastructure of the Figma platform, which exceed industry standards for data protection and security:

- SOC 2 Type 2
- SOC 3
- Cloud Security Alliance (CSA) STAR: Level 1
- ISO/IEC 27001:2013
- ISO/IEC 27018:2019
- EU Cloud Code of Conduct (COC): Level 2

There's **no additional software** that needs to be installed to use the Figma plugin, as Figma plugins run as a built-in part of Figma's own native functionality, and all Figma plugins easily accessibile and can be instantly run from inside any Figma file, or via the official [Figma Community](https://www.figma.com/community) ecosystem inside of the Figma app.

If your organization is already approved to use Figma, then you _already have access_ to Figma plugins.

## How Crypto works

The [Crypto Figma plugin](https://www.figma.com/community/plugin/819688895973707151) helps users password protect their Figma designs and Figma prototypes.

Crypto is designed to be privacy and security focused, so any "Share" URLs that are generated are password protected by default, and encrypt image uploads with AES-256.

Any uploads and cloud storage services used by the Crypto Plugin and Crypto Web App are hosted on [Google Cloud](https://cloud.google.com/) (the same infrastructure that Google hosts all of its own products with), via [Google Firebase](https://firebase.google.com/).

As per the [Privacy and Security in Firebase](https://firebase.google.com/support/privacy), all Firebase services (aside from App Indexing) have successfully completed the **ISO 27001** and **SOC 1**, **SOC 2**, and **SOC 3** evaluation process, and some have also completed the **ISO 27017** and **ISO 27018** certification process.

## What Crypto does and doesn't do

Crypto uses the [Figma Plugins API](https://www.figma.com/plugin-docs/) to export Figma designs and create a password-protected URL that you can share with any stakeholders for reviewing outside of the Figma app.

### Crypto does

- Allow users to generate password protected URLs to share with their stakeholders.
- Create fast, beautiful and easy to use preview pages in the browser.
- Encrypt image uploads with AES-256.
- Allow users to put their Figma prototype embeds on a password protected URL.
- Automatically deletes URL/uploads if not accessed for 180 days.
- Download any exported PDF files _directly_ to the user's computer.

### Crypto does _not_

- Make _any_ password-protected "Uploaded" URLs created via the plugin publicly accessible or indexed by any search engines.
- Collect or store _any_ personal information (Figma plugins *cannot* access any private information about Figma projects, Figma teams or Figma users).

## How Figma plugins work

Figma plugins are written in HTML/CSS/Javascript, and are run in a tightly controlled [sandbox environment](https://www.figma.com/plugin-docs/how-plugins-run/) inside of the main Figma application.

Figma plugins can only do whatever Figma allows them to do inside the permissions of the [Figma Plugins API](https://www.figma.com/plugin-docs/), and importantly, **plugins don't have any access to personal information** about the Figma user running the plugin.

## What Figma plugins can and can't do

As per the article on [Figma plugin security](https://www.figma.com/blog/how-we-built-the-figma-plugin-system/), there are a limited number of things that Figma plugins can do, and many more things that they can't do:

### Figma plugins can

- Only be run by an explicit user action
- Show UI in a single plugin-specific dialog
- Read any data in your Figma document (e.g. a “find layer by name” plugin)
- Modify any data in your Figma document (e.g. a “rename selected layers” plugin)
- Communicate with any server over the internet (e.g. an “import from service X” plugin)

### Figma plugins _cannot_

- Run by themselves
- Get information about the project or team that owns the file
- Access anything when they aren’t running
- Access data from any files other than the file they were run in
- Change Figma’s UI outside of the plugin UI dialog

> **Tip:** Figma account administrators at your company can [configure an allowlist of plugins](https://help.figma.com/hc/en-us/articles/4404228724759-Manage-plugins-and-widgets-in-an-organization) that are allowed inside the organization. This can be used to prevent untrusted Figma plugins from being run in any file in that organization.

---

---
url: "/crypto/faq/troubleshooting.md"
description: "Troubleshooting guide for Crypto links, exports, and common issues."
---

# Troubleshooting Crypto

> Troubleshooting guide for Crypto links, exports, and common issues.

### URL expiration

Your secure links and images will automatically be removed after a 180 day period of inactivity (180 days after the link was last accessed and viewed) to ensure they are not accidentally laying around after they've served their purpose.

  ### Google Cloud

Your static design images are securely stored as images in Google Cloud, with the same encryption used by many of Google’s production services, including Gmail and Google’s own corporate data. Please note, this _doesn't_ apply to the "Figma Prototype" option, which is an embed hosted by Figma.

  ### Create a brand new URL/password for your Figma file

Due to it being a fairly sensitive feature, instead of adding a button/icon to click, we've made this feature activate only by entering the "Konami Code" on your keyboard while the plugin is running:

    `Up, Up, Down, Down, Left, Right, Left, Right, B, A`

    Typing that sequence of keys on your keyboard will trigger the Crypto plugin to create a brand new URL/password for your Figma file, so you could enter it in a duplicated Figma file to give it a different brand new URL/password than the original one.

  ### Blank file extensions using Figma desktop app on Windows

There's a known issue with the Figma desktop app (only on Windows), which also happens for normal file exports from Figma. When you go to save your file, you may see an "all files" label. If you ignore this and continue by clicking "Save", it should still save the file with the correct extension and allow you to open it as expected after it has downloaded to your computer. If it still saves the file with a blank extension, you should be able to rename the file to manually append the correct extension to the file name.

  ### Pixelated image exports

If you're uploading your images or exporting a PDF while the image assets in Figma are still progressively loading, they may be exported looking pixelated, as the image wasn't fully loaded in the Figma file before it was exported. To resolve this, please ensure that all of the images have loaded 100% and are looking sharp inside the Figma file before uploading your images or exporting PDFs with the Crypto plugin. To help further with solving this issue, you can use the ["Downsizer" feature](https://docs.hypermatic.com/tinyimage/usage.html#downsizing-your-figma-layer-fills) to shrink down your image fills to match their layer size, which will shrink their file size and ensure they load much faster in your Figma file.

  ### Thin white line around image exports

Occassionally some images will contain a faint, thin white line around the edges. Figma [does this](https://twitter.com/Skcrub/status/1255544876701270017) if a layer isn't positioned on a rounded pixel value (eg. Y: 156.76 or X: 56.3) will automatically result in this sub-pixel line getting included in the export. To resolve the issue, please ensure that your layer positions are all rounded pixel values.

  ### Designs not uploading from the plugin, or images not loading in the web app

One reason this might be happening is if your ISP (internet service provider) is blocking the QUIC protocol. You can confirm this by opening up your developer console in the browser or in Figma and see the error message `ERR_QUIC_PROTOCOL_ERROR`. There are a couple of workarounds for this issue:

    1. Switching to your mobile phone's Wi-Fi hotspot/tether for your computer's internet connection
    2. [Disabling QUIC](https://kinsta.com/knowledgebase/err_quic_protocol_error/) in your browser

  ### Slow PDF exports

If your PDF exports are going really slow, it's likely due to having high-res/large image fills in some of the content, which causes Figma to take a much longer time generating PDFs. To help with this issue, you can use the ["Downsizer" feature](https://docs.hypermatic.com/tinyimage/usage.html#downsizing-your-figma-layer-fills) in [TinyImage](https://www.figma.com/community/plugin/789009980664807964/TinyImage-Compressor) to shrink down your image fills to match their layer size, which will shrink their file size and ensure they load much faster in your Figma file. Once you've finished downsizing the image fills in your Figma page, re-running Crypto and exporting your PDF again via the plugin should be much faster.

  ### Editing PDFs in Adobe Acrobat shows dotted lines

This can be resolved by un-checking the "Show bounding boxes" toggle in the Acrobat Acrobat app sidebar while editing your PDF. Showing the dotted bounding box lines is something that [Adobe enables by default](https://archive.md/Uhdbk) while enter "Edit" mode when you have a PDF open in the app, but turning off the "Show bounding boxes" toggle will turn hide those from being displayed with one click.

  ### Netskope blocking the Crypto web app from loading

There is a known issue with [Netskope](https://www.netskope.com/) blocking access to Firebase databases; to resolve this, please ensure you allow `firestore.googleapis.com:443` (as per [this thread](https://stackoverflow.com/questions/52441316/firestore-grpc-behind-a-corporate-firewall-proxy)).

  ### Some elements are missing and turning into purple rectangles when exporting PDF from Figma

This is a known, [long-standing Figma bug](https://forum.figma.com/t/pdf-export-consistently-missing-elements/3547) where purple boxes are shown instead of the image, and becuase Crypto is using the native PDF export function from Figma behind the scenes, the plugin will inherit these bugs when exporting PDFs if they occur in Figma as well.

    One suggestion that can help is to ensure the problematic layer is actually nested _inside_ of the main Figma frame, as sometimes a Figma layer is "visually" positioned on top of your frame on the canvas, but the layer itself is still sitting outside of the frame; this seems to be related to why the problem occurs sometimes.

  ### 'An error occurred while loading the plugin environment'

This may happen in the Figma desktop app if [the Use Developer VM](https://www.figma.com/plugin-docs/debugging/#developer-vm) debug setting in Figma is enabled by mistake; you can make sure it's turned off by **right-clicking** anywhere on your Figma canvas, hovering over **Plugins**, then hovering over **Development**, and making sure that the **Use Developer VM** is _unchecked_; after it is unchecked (and does _not_ have a tick icon next to it), re-running the Figma plugin should work as expected.

  ### 'An error occurred while loading the plugin environment'

This may happen in the Figma desktop app if the "Use Developer VM" setting is enabled by mistake; you can make sure it's turned off by **right-clicking** anywhere on your Figma canvas, hovering over **Plugins**, then hovering over **Development**, and making sure that the **Use Developer VM** is _unchecked_; after it is unchecked (and does _not_ have a tick icon next to it), re-running the Figma plugin should work as expected.

---

---
url: "/crypto/overview/install.md"
description: "Ensure you're logged into your Figma account, then follow the steps below to install and run the [Crypto Figma Plugin](https://www.figma.com/community/plugin/819688895973707151/crypto-password-protection)."
---

# Install and run the Crypto Figma Plugin

> Ensure you're logged into your Figma account, then follow the steps below to install and run the [Crypto Figma Plugin](https://www.figma.com/community/plugin/819688895973707151/crypto-password-protection).

### Video Tutorial: How to install (and remove) Figma plugins

This video tutorial is a complete step-by-step guide showing you the new process of how to install (and remove) Figma plugins after the mid-2024 "UI3" update to the Figma app
[Embedded media](https://www.youtube.com/embed/CzjxF2Jv6PM)

## Installing the Crypto Figma Plugin

1. Open any Figma file.
2. Click on the **Actions** icon in the bottom Figma toolbar.
3. Click the **Plugins & Widgets** tab to filter results to Figma plugins.
4. Search for **Crypto** in the search bar.
5. Click on the **Crypto** search result.
6. Click the **Save** button to install the Crypto plugin.

> **Note:** Figma users in a **Figma Organization** may only be able to install approved plugins. Please contact your Figma Org admin at your company to [approve the Crypto plugin](https://help.figma.com/hc/en-us/articles/4404228724759-Manage-plugins-and-widgets-in-an-organization) if you're unable to install certain Figma plugins.

## Running the Crypto Figma Plugin

Once you've [installed](#installing-the-figma-plugin) the **Crypto** Figma plugin, to run the plugin in your Figma file:

  1. **Right-click** anywhere on your Figma file's page canvas
  2. Hover your mouse over the **Plugins** ▶ menu item
  3. Hover your mouse over the **Saved plugins** ▶ menu item
  4. Click on the **Crypto** plugin menu item

> **Tip:** After you've run the **Crypto** plugin once in a Figma file, you'll be able to quickly re-launch it by clicking the **Crypto** icon in the right-hand side Figma column (under the **Plugin** subheading).

> **Warning:** Only Figma users with **Edit** access to a Figma file can run a Figma plugin in that Figma file; if you only have **View** permissions, you won't be able to run any Figma plugins in that file.

## Uninstalling the Crypto Figma plugin

1. Open any Figma file.
2. Click on the **Actions** icon in the bottom Figma toolbar.
3. Click the **Plugins & Widgets** tab to filter results to Figma plugins.
4. Search for **Crypto** in the search bar.
5. Click on the **Crypto** search result.
6. Click the **Remove** button to uninstall the Crypto plugin.

> **Note:** This will remove the plugin from your **Saved Plugins** list, however, the Figma plugin may still show up under your **Recents** list (if it has been recently run), as Figma saves this list of recent plugins in your browser's/app's local storage. The plugin will vanish from the Recents menu after other plugins are run to take its place.

---

---
url: "/crypto/overview/pro.md"
description: "After trying out all the Pro features of Crypto **10 times**, you can optionally upgrade to continue using all the extra features that are only available in the Pro version; or if you're a casual user, you can continue using the Free version forever."
---

# Activating Crypto Pro

> After trying out all the Pro features of Crypto **10 times**, you can optionally upgrade to continue using all the extra features that are only available in the Pro version; or if you're a casual user, you can continue using the Free version forever.

> **Tip:** Need a Crypto Pro account? You can purchase a Pro account for you or your team by visiting the [Crypto](https://www.hypermatic.com/crypto/#pro) product page on the Hypermatic website.

## Activating the Figma plugin with an Crypto Pro license key

1. **Purchase a Pro license** for you or your team by visiting the [Crypto](https://www.hypermatic.com/crypto/#pro) product page on the Hypermatic website.
2. **Run the Crypto Plugin**, then click on the **Upgrade Now** button at the bottom of the Figma plugin window.
3. **Paste in your Pro key**, then click the **Unlock** button.

This will unlock the Pro version of Crypto and give you unlimited use all of the Figma plugin features.

> **Warning:** Please note, if you're in China, the accounts server _may_ be blocked by "The Great Firewall of China". If you're seeing a activation error, despite using a valid key, you will likely need to use a [VPN](https://protonvpn.com/free-vpn/) to resolve the issue.

> **Info:** If you ever need to use a different license key at any time (eg. you were using your own personal Pro license key, but now your employer is buying you a Pro license to use instead), you can press **CTRL + K** while your plugin window is open in Figma, and this will bring up the license key prompt again, where you can enter a different license key.

---

---
url: "/crypto/overview/quickstart.md"
description: "Securely share your Figma designs and prototypes as password protected URLs or PDF files."
---

# Get Started with Crypto

> Securely share your Figma designs and prototypes as password protected URLs or PDF files.

[![Crypto Figma Plugin](https://www.hypermatic.com/crypto.jpg)](https://www.figma.com/community/plugin/819688895973707151/crypto-password-protection)

## Install & Activate Crypto

- [Install & Run the Figma plugin](/crypto/overview/install.md): How to run Crypto inside of Figma
- [Activate Crypto Pro](/crypto/overview/pro.md): How to buy and use a Pro license key

## Using Crypto

  - [Crypto Documentation](/crypto/designs.md): Detailed docs with short screencaps
  - [Crypto Video Tutorials](/crypto/tutorials.md): Full step-by-step video walkthroughs

## Frequently Asked Questions

- [Troubleshooting Crypto](/crypto/faq/troubleshooting.md): Common issues issues you may run into
- [Crypto Security](/crypto/faq/security.md): Details about how Crypto works
- [Receipts](/faq/receipts.md): Find email receipts and PDF invoices
- [Billing](/faq/billing.md): Manage your Pro subscription
- [License Seat Management](/faq/seats.md): Manage the Figma users on your key
- [Crypto Free vs Pro](/crypto/faq/plans.md): Compare Free vs Pro features

[Video](https://www.hypermatic.com/assets/videos/crypto/CRYPTO_DEMO.mp4)

## Crypto Features

- Generates password protected URLs to share with your stakeholders.
- Automatically generates strong, random/mixed character passwords.
- Image uploads encrypted with AES-256.
- Fast, beautiful and easy to use preview pages in the browser.
- Record your designs and prototypes to a WebM video in the browser.
- Supports multiple versions of your designs on the same preview URL.
- Authenticated sessions automatically end after the tab is closed.
- Put your Figma prototype embeds on a password protected URL.
- Easily drag frames around to re-order how they're displayed.
- Remembers your frame selections and order between plugin uses.
- Automatically deletes URL/uploads if not accessed for 30 days.

---

---
url: "/crypto/pdf.md"
description: "Export password-protected PDFs from Figma frames with quality and security options."
---

# Exporting password protected PDFs from Figma frames

> Export password-protected PDFs from Figma frames with quality and security options.

Along with uploading your static designs or prototype to a password protected URL, you can also export your Figma frames to a compressed, password protected (optional) PDF file that you can download to your computer. This option doesn't upload anything online, and allows you to send the exported file securely via email or any other method.

To get started with this feature, please ensure you've selected **Password Protected PDF File** from the Crypto plugin toolbar.

> **Note:** **PDF Export Browser Support** Due to browser compatibility issues, the **Password Protected PDF File** feature in Crypto _isn't_ supported in **Safari**. Please run the plugin in another browser (like [Chrome](https://www.google.com/intl/en_us/chrome/)) or the [Figma Desktop App](https://www.figma.com/downloads/) instead.

## Setting PDF export options

[Video](/assets/videos/crypto/pdf/pdf-settings.mp4)

Once you're happy with your frame selection and ordering, you can click the **Export PDF File** button in the Crypto plugin toolbar. This will open the PDF export options overlay where you can specify your password and other settings.

There are a few options you can specify when exporting merged PDF files. These are related to the **compression/quality level**, **password protection** and the **color profile** of your exported PDF.

### Choosing PDF quality

You can set the quality level for your PDF export as **72dpi**, **150dpi** or **300dpi** by using the select input to specify your desired quality level. The higher the dpi, the better the quality, but also higher the file size.

### Setting a password for your merged PDF

If you would like your exported merged PDF file to require a password before it can be opened, you can enable the **Password Protect PDF** setting, then set your own password in the **password input** field. Ensure that you give this password to anyone you're sending the exported merged PDF file to, or they won't be able to open the file to view its contents.

### Gradient fills in PDF exports

If you're exporting layers to PDF that contain gradient fills inside any vector paths, you can enable the **Vector Path Gradients** setting to ensure the gradient is rendered as expected. If you don't need this option, there's no need to enable it.

## Exporting and saving the merged PDF

[Video](/assets/videos/crypto/pdf/pdf-export.mp4)

Once you're happy with your PDF settings and frame selection/order, you can click the **Export PDF** button; this will begin the process of merging and compressing your PDF pages one by one. You'll see a progress indicator showing you that the PDF is being merged and compressed.

After all of the frames in your PDF have been merged and compressed, you'll see a confirmation notification letting you know that your PDF has been merged, and your `.pdf` file is ready. You can download it to your computer by clicking the **Download PDF** button.

If you've specified a password, you'll also be able to copy it to your clipboard by clicking on the **Copy** icon button next to the password field.

> **Tip:** **Saving file downloads from Figma** If you're using the Figma **desktop app**, you'll see a prompt appear to download your file. However, if you're using Figma in a **web browser**, your file will automatically be downloaded to your computer by default (usually to the **Downloads** directory on your computer).

## Opening your password protected PDF file

[Video](/assets/videos/crypto/pdf/pdf-open.mp4)

If your you enabled the **Password Protect PDF** setting for your PDF export, you can open your saved PDF file by double clicking on the exported `.pdf` file on your computer, and pasting the password from the Crypto plugin (which you specified in the settings); this will allow you to view the PDF document in your PDF viewer application.

---

---
url: "/crypto/prototypes.md"
description: "Create password-protected Figma prototype embeds with Crypto and manage settings."
---

# Uploading password protected Figma Prototypes

> Create password-protected Figma prototype embeds with Crypto and manage settings.

### Video Tutorial: Password protect Figma prototype embeds

This video tutorial is a complete step-by-step guide showing you how to add password protection to your Figma prototype embeds using the Crypto plugin.
[Embedded media](https://www.youtube.com/embed/xJ1IpxQgotU)

The "Live Embed" feature in Crypto works by putting your public Figma prototype embed behind a secure URL and password that you can share with others, where they can view your designs via the Crypto web app (without them requiring a Figma account).

> **Warning:** **The underlying Figma URL will still be public**. Due to [the way sharing links works in Figma](https://help.figma.com/hc/en-us/articles/360040531773-Share-links-to-public-and-private-files), Crypto can only _wrap_ a public Figma URL Embed inside a password protected URL, this means that **anyone with the underlying Figma URL** can still view it. You can delete the password protected URL via the Crypto plugin and/or change the permissions of the Figma file to **only people invited to this file** to revoke access, if needed.

## Switching to prototype mode

[Video](/assets/videos/crypto/proto/proto-switch-mode.mp4)

To get started with this feature, please ensure you've selected **Figma Prototype (Live Embed)** from the Crypto plugin toolbar.

> **Note:** **Parent level Figma frames required**. To upload a Figma prototype, your Figma page must contain at least one "Parent Frame". This means, any "frames" that are located _directly_ underneath your page.

## Copying your Figma URL to use

[Video](/assets/videos/crypto/proto/proto-copying-url.mp4)

## Setting your prototype options

[Video](/assets/videos/crypto/proto/proto-options.mp4)

You can select a few different configuration options when creating password protected links for your Figma Prototypes:

### Scale Options

This dropdown selector will allow you to choose how your prototype is scaled in the browser, based on the following options:

- 100% - Display at full size
- Fit - Scale down to fit
- Fill - Scale up or down to fill
- Scale down to fit width *(Default)*

### Hotspots

Enabling the **Hotspots** toggle will ensure that the prototype reveals clickable hotspots in your designs when a user clicks around the screen; keeping this turned off will ensure that not clickable hotspot hints are shown.

### Sidebar

Enabling the **Side** toggle will ensure that the sidebar navigation panel for your Figma prototype is shown in the browser; keeping this turned off will ensure this isn't shown to the user.

## Creating your password protected prototype URL

[Video](/assets/videos/crypto/proto/proto-create-url.mp4)

> **Warning:** **The underlying Figma URL will still be public**. Due to [the way sharing links works in Figma](https://help.figma.com/hc/en-us/articles/360040531773-Share-links-to-public-and-private-files), Crypto can only _wrap_ a public Figma URL Embed inside a password protected URL, this means that **anyone with the underlying Figma URL** can still view it. You can delete the password protected URL via the Crypto plugin and/or change the permissions of the Figma file to **only people invited to this file** to revoke access, if needed.

To create your password protected Prototype link, click the **Share Prototype URL**, then click the **Create Prototype URL** button.

Once the upload has completed, you'll be able to copy the secure URL and password to view your Figma prototype embed in the browser, using the Crypto web app.

> **Tip:** **URL and password details can be accessed in the plugin later**. If you need to copy these URL and password details again later, you can do this by clicking the **Share Design URL** button in the Crypto plugin toolbar, then selecting a previously uploaded version using the **version select box**; this will reveal the URL and password details for the URL that you can copy under the **Secure URL Details** section.

> **Warning:** **The underlying Figma URL will still be public**. Due to [the way sharing links works in Figma](https://help.figma.com/hc/en-us/articles/360040531773-Share-links-to-public-and-private-files), Crypto can only _wrap_ a public Figma URL Embed inside a password protected URL, this means that **anyone with the underlying Figma URL** can still view it. You can delete the password protected URL via the Crypto plugin and/or change the permissions of the Figma file to **only people invited to this file** to revoke access, if needed.

## Updating the prototype URL settings

[Video](/assets/videos/crypto/proto/proto-updating-url.mp4)

There are times when you will want to update a previous version Crypto URL that you've uploaded and sent to someone; you can update any previously uploaded URL using the Crypto plugin by clicking the **Share Design URL** button in the Crypto plugin toolbar, then selecting a previously uploaded version using the **version select box** and clicking the **Update Version xxxxxxxx URL** button.

## Changing your Crypto URL password

[Video](/assets/videos/crypto/proto/change-password.mp4)

By default, the Crypto plugin generates a secure random password for you, but if you would like to change this to a custom password of your own, you can do this by enabling the **Change Password** toggle under the **Set Password for Crypto URLs** section of the upload settings panel, then entering your new password in the input field and clicking the **Set Password** button, which will update the password for your Crypto URL for this Figma page.

> **Note:** **Static designs and prototype URLs share the same password per Figma page**. If you're uploading static designs and a prototype on the same Figma page, please be mindful that each Figma page only has a single password for both URLs. Changing the password for one will also update the other.

> **Warning:** **Updating the password will lock out anyone who had the previous password**. Updating the password will prevent anyone who may have had the previous password from looking at your URL; if you need them to still have access, please re-share the new password with them.

## Deleting the prototype URL

[Video](/assets/videos/crypto/proto/proto-delete-url.mp4)

You can delete the password protected URL via the Crypto plugin and/or change the permissions of the Figma file to **only people invited to this file** to revoke access, if needed.

## Viewing Figma Prototypes

### Logging in and interacting with your password protected Figma prototype

[Video](/assets/videos/crypto/proto/proto-login.mp4)

After opening your URL (from the Crypto Figma plugin) in your web browser, you'll be able to paste in the generated password (from the Crypto Figma plugin). After pasting your password for the URL, clicking the **Login** button will authenticate you to view the uploaded designs.

Due to the Crypto web app embedding the native Figma prototype embed, interacting with your prototype works exactly the same way as it normally would by viewing it in Figma. For a more in-depth overview of this, please visit the official Figma help article to [Preview designs and prototypes in Presentation View](https://help.figma.com/hc/en-us/articles/360040318013-Preview-designs-and-prototypes-in-Presentation-View).

### Using Figma prototype keyboard shortcuts

[Video](/assets/videos/crypto/proto/proto-shortcuts.mp4)

Due to the Crypto web app embedding the native Figma prototype embed, the shortcuts for the Figma prototype are exactly the same as they are when viewing the prototype in Figma. To see these keyboard shortcuts while using the Crypto web app, you can hover your mouse over the **Keyboard** icon in the toolbar.

#### Available keyboard shortcuts while viewing the prototype

- Change View Size (**Z**)
- Toggle Fullscreen (**F**)
- Restart Prototype (**R**)
- Previous Screen (**←**)
- Next Screen (**→**)
- Advance Prototype (**Enter**)

### Toggling the toolbar icons visibility

[Video](/assets/videos/crypto/proto/proto-visibility.mp4)

If you don't want the Crypto web app icon toolbar to be visible while looking at your prototype, you can click on the **Visibility** icon button in the Crypto web app toolbar. Clicking on this icon button will toggle the visibility of the icons. You can hover back over the **Visibility** icon button to reveal and and click it again to toggle the toolbar back to being visible.

> **Tip:** **Re-focusing the Figma embed**. If you toggle the icon visibility or click on any of the other icons in the Crypto prototype toolbar, you'll need to click on the main Figma Prototype embed area again to re-focus the prototype, in order to continue using keyboard shortcuts, etc.

---

---
url: "/crypto/record.md"
description: "Record Crypto web app sessions for designs or prototypes into downloadable videos."
---

# Recording Figma designs or prototypes to videos

> Record Crypto web app sessions for designs or prototypes into downloadable videos.

### Video Tutorial: Record your Figma prototype to a video file

This video tutorial is a complete step-by-step guide showing you how to record your Figma prototype interactions to a video file using the Crypto plugin.
[Embedded media](https://www.youtube.com/embed/9XmuVFkxe28)

## Recording your interactive Figma prototype to a video file

[Video](/assets/videos/crypto/record/proto-record.mp4)

You can record yourself interacting with the prototype in the Crypto web app by clicking on the **Record** icon button in the Crypto web app toolbar. This will prompt you to allow the page to access screen sharing and audio. Once you've done this, you'll be able to select the browser tab as the source that you would like to share and record.

To stop the video recording, you can click on the **Stop** button in your browser.

Stopping the recording will automatically download your `.webm` video to your computer's default download folder.

> **Note:** **Video will be auto downloaded if the tab is closed**. Just in case you accidentally close the tab while the screen is being recorded, the Crypto web app will automatically stop the recording and download the video file, recorded up until the time that the tab was closed.

> **Tip:** **Toggling fullscreen mode for your prototype**. If you would prefer to view your prototype in full screen mode (instead of the windowed browser), you can press on the **F** button on your keyboard. You can exit fullscreen mode at any time by pressing the **esc** button on your keyboard.

### Opening and viewing your recorded video file

After the `.webm` file save been downloaded, you'll be able to upload it to your own website, send it to someone via Slack (or another method) or edit/convert it to another video. The easiest way to open the downloaded video file is to drag the downloaded file into your web browser, and using that to play it back.

## Recording your static Figma designs to a video file

[Video](/assets/videos/crypto/record/design-recording.mp4)

You can record yourself viewing the designs in the Crypto web app by clicking on the **record** icon button in the Crypto web app toolbar. This will prompt you to allow the page to access screen sharing and audio. Once you've done this, you'll be able to select the browser tab as the source that you would like to share and record.

To stop the video recording, you can click on the **stop** button in your browser or click the **record** icon button again.

Stopping the recording will automatically download your `.webm` video to your computer's default download folder.

> **Note:** **Video will be auto downloaded if the tab is closed**. Just in case you accidentally close the tab while the screen is being recorded, the Crypto web app will automatically stop the recording and download the video file, recorded up until the time that the tab was closed.

> **Tip:** **Toggling fullscreen mode for your designs**. If you would prefer to view your designs in full screen mode (instead of the windowed browser), you can click on the **fullscreen** icon button in the Crypto web app toolbar. You can exit fullscreen mode at any time by pressing the **esc** button on your keyboard, or clicking on the **fullscreen** icon button again.

### Opening and viewing your recorded video file

After the `.webm` file save been downloaded, you'll be able to upload it to your own website, send it to someone via Slack (or another method) or edit/convert it to another video. The easiest way to open the downloaded video file is to drag the downloaded file into your web browser, and using that to play it back.

---

---
url: "/crypto/tutorials.md"
description: "The best free Figma tutorial videos for beginners (or power users) to level up."
---

# Crypto Video Tutorials

> The best free Figma tutorial videos for beginners (or power users) to level up.

### Password protect static designs

This video tutorial is a complete step-by-step guide showing you how to add password protection to your Figma designs using the Crypto plugin.
[Embedded media](https://www.youtube.com/embed/RXqpOgT0a04)

### Password protect Figma prototype embeds

This video tutorial is a complete step-by-step guide showing you how to add password protection to your Figma prototype embeds using the Crypto plugin.
[Embedded media](https://www.youtube.com/embed/xJ1IpxQgotU)

### Record your Figma prototype to a video file

This video tutorial is a complete step-by-step guide showing you how to record your Figma prototype interactions to a video file using the Crypto plugin.
[Embedded media](https://www.youtube.com/embed/9XmuVFkxe28)

---

---
url: "/emailify/content/alt-text.md"
description: "You can add `alt` text to any content image or social icon layer by using the Settings panel in the plugin."
---

# Adding alt text to your email content images and social icon layers

> You can add `alt` text to any content image or social icon layer by using the Settings panel in the plugin.

[Video](/assets/videos/emailify/content/image-alt-text.mp4)

To add alt text to any image in your design, click on the Image layer you'd like to add a link to, then click the **Settings** button in the plugin header, and type your alt text into the **Alt Text** input field.

This will set the `alt` attribute of your `` tag in the HTML when it's exported from Emailify.

> **Tip:** You can [apply settings in bulk](/emailify/design/settings#apply-settings-in-bulk) by opening **Settings**, then selecting multiple Emailify layers of the same type in Figma. Any setting you change will be applied to all selected layers.

---

---
url: "/emailify/content/anchor-links.md"
description: "You can add clickable rich text buttons and navbar links into your email designs that can be linked to scroll to another row in your email."
---

# Adding scrollable anchor links to buttons and navbar in your emails

> You can add clickable rich text buttons and navbar links into your email designs that can be linked to scroll to another row in your email.

> **Warning:** **Scrollable anchor links aren't supported everywhere**. Currently, [support for local anchor links in email clients](https://www.caniemail.com/features/html-anchor-links/) is still quite mixed (with _some email clients_ that **won't do anything** when a scrollable link is clicked), so please be aware of this and try to design your emails with the "progressive enhancement" of these scrollable links in mind.

[Video](/assets/videos/emailify/content/scrollable-anchor-link.mp4)

To create a scrollable anchor link for any [Button](/emailify/content/link-buttons) or [Navbar Link](/emailify/content/link-nav-menu) layer in your email design, you can create a "Scroll To" Figma Prototype link that points to a **Row** layer in the same Emailify frame, and the plugin will automatically add an `id` and `name` attribute to the target Row element, and add a `href` to your Button or Navbar Link `` tag that points to it (eg. `#a123`).

---

---
url: "/emailify/content/code.md"
description: "Add custom code layers between Emailify layout elements for platform-specific tags."
---

# Adding custom code to your designs

> Add custom code layers between Emailify layout elements for platform-specific tags.

[Video](/assets/videos/emailify/content/custom-code-elements.mp4)

If you need to add any custom code _in between_ any elements in your ✉️ **Email** frame, such as platform specific template/conditional tags, you can insert a **🧑‍💻 Custom Code** layer to do this. It will be added as a Figma text layer, which you can paste your custom code into, and have that rendered out as plain code when the email gets exported to HTML.

> **Warning:** **🧑‍💻 Custom Code** layers can only be added directly to an ✉️ **Email** frame as a way to inject custom code blocks _between_ 🚣 Content Row, 🦸 Hero and 🎁 Row Wrapper layers in your email design.

---

---
url: "/emailify/content/countdown-timers.md"
description: "Add dynamic countdown timer GIFs by overriding image URLs in Emailify designs."
---

# Adding countdown timer GIF embeds to your email designs

> Add dynamic countdown timer GIFs by overriding image URLs in Emailify designs.

### Add a countdown timer to HTML emails in Figma

This video tutorial is a complete step-by-step guide showing you how to add a
  countdown timer to HTML emails in Figma using the Emailify plugin.
  [Embedded media](https://www.youtube.com/embed/1IOfvsZTTXM)

You can add a dynamic countdown timer GIF by [overriding the image URL](/emailify/content/custom-image-urls) to any image layer in your email designs by adding the dyanmic image URL (eg. generated by a service like [Sentric](https://www.sendtric.com/)) to the **Override Image Src** input field, which will be automatically added to the `src` attribute of the `` tag when the HTML is exported.

> **Note:** To follow along with step by step walkthrough, you can [watch this video tutorial](https://www.youtube.com/watch?v=1IOfvsZTTXM), which will show you how you can add a countdown timer to HTML emails in Figma using the Emailify plugin.

---

---
url: "/emailify/content/custom-image-urls.md"
description: "If you need to override the `src` attribute for any `<img>` tag in your exported HTML (either to mix in your own dynamic image tag syntax, or just point to an image URL online), you can set a URL override for any image in your designs."
---

# Override image source with an external image URLs

> If you need to override the `src` attribute for any `<img>` tag in your exported HTML (either to mix in your own dynamic image tag syntax, or just point to an image URL online), you can set a URL override for any image in your designs.

[Video](/assets/videos/emailify/content/custom-image-url-override.mp4)

You can override the image URL for a certain image layer in your email designs by adding a value to the **Override Image Src** input field. You can either use a URL for an image that's already uploaded somewhere (eg. `https://mycdn/img.jpg`) or a dynamic variable for your email platform's templating language (eg. `{ variable.my_image }`) which will be automatically added to the `src` attribute of the `` tag when the HTML is exported.

---

---
url: "/emailify/content/data-tables.md"
description: "The custom Data Table element layer allows you to render simple text/image content into an HTML table with multiple rows and columns."
---

# Adding custom data tables to your emails

> The custom Data Table element layer allows you to render simple text/image content into an HTML table with multiple rows and columns.

## Manually adding Data Table layers to your design

[Video](/assets/videos/emailify/content/data-table.mp4)

To add a Data Table layer, click on any **Column** layer in your design, then select the **Data Table** option from the quick add menu at the bottom of the plugin, then click **Add** to insert the layers to your design.

> **Tip:** **Adding additional data table rows or data table columns**. You can quickly add additional rows or columns by copy/pasting the table row and/or table data cell Figma layers that are initially created.

> **Note:** Please note that the Data Table will render the same way on desktop and mobile, so please be mindful about the width of your table if you’re adding more than a couple of table columns.

## Importing a Data Table from Google Sheet URL or CSV/Excel file data

[Video](/assets/videos/emailify/content/import-spreadsheet-table.mp4)

If you already have some data in a Google Sheet or a CSV/Excel file, you can automatically create a new Data Table with the spreadsheet data included by clicking on any **Column** layer in your design, then selecting the **Spreadsheet** option from the quick add menu at the bottom of the plugin.

Once you've selected the **Spreadsheet** option, you can either paste in a _public_ Google Sheet URL or drag and drop a CSV/Excel file into the plugin, then clicking the **Add** to insert the layers to your design.

> **Tip:** In order to import your Google Sheet data to Figma, you'll first need to ensure that the Google Sheet share URL is made public, otherwise the plugin won't have permissions to read it. You can do this by opening up the spreadsheet in Google Sheets, clicking the **Share** button and changing the document's permissions from **Restricted** and update it to **Anyone with the link**.

## Looping a Data Table Row with dynamic data

[Video](/assets/videos/emailify/content/looping-data-table-row.mp4)

If you're using a Data Table and need to iterate over some data in your email marketing platform, you can apply a **for loop** by clicking on a **Data Table Row** inside of your Data Table, then clicking the **Settings** button in the plugin header and adding your templating syntax for a loop into the **Opening Code Wrapper** (eg. `{% for product in collection.products %}`) and **Closing Code Wrapper** (eg. `{% endfor %}`), which will autamatically inject these opening and closing tags around the `` HTML table row element in your exported code.

Once you've added your wrapper tags to the **Data Table Row** layer, you can [populate the dynamic content](/emailify/content/dynamic#adding-platform-specific-personalization-content) inside the layers of your row as needed.

> **Tip:** You can [apply settings in bulk](/emailify/design/settings#apply-settings-in-bulk) by opening **Settings**, then selecting multiple Emailify layers of the same type in Figma. Any setting you change will be applied to all selected layers.

---

---
url: "/emailify/content/dynamic.md"
description: "You can add dynamic content to your emails using a combination of merge tags (provided by your email marketing platform) and custom code blocks (in the syntax that your email marketing platform uses)."
---

# Adding dynamic and personalized content using Emailify

> You can add dynamic content to your emails using a combination of merge tags (provided by your email marketing platform) and custom code blocks (in the syntax that your email marketing platform uses).

### Video Tutorial: Add dynamic content to HTML emails in Figma

This video tutorial is a complete step-by-step guide showing you how to add dynamic content to HTML emails in Figma using the Emailify plugin.
[Embedded media](https://www.youtube.com/embed/0512urzUNTk)

### Video Tutorial: Adding a dynamic product feed to your Klaviyo emails in Figma

This video tutorial is a complete step-by-step guide showing you how to add custom Klaviyo product feeds into custom HTML templates with the Emailify Figma Plugin.
[Embedded media](https://www.youtube.com/embed/PaRSIxVLYlo)
### Video Tutorial: Create Klaviyo abandoned cart flow email template in Figma

This video tutorial is a complete step-by-step guide showing you how to add custom Klaviyo abandoned cart flows into custom HTML templates with the Emailify Figma Plugin.
[Embedded media](https://www.youtube.com/embed/MHPCkb1n8XM)

## Adding platform specific personalization content

[Video](/assets/videos/emailify/content/text-merge-tags.mp4)

You can add personalised text for things like people's names by adding the merge tags from your email service provider (eg. MailChimp, Klaviyo etc). You can do this by adding your merge tag into your Emailify text content layers.

As an example, adding `Hello, %FIRSTNAME%` or `Hello, *|FNAME|*` (depending on your platform's syntax and values) to your Figma text layer's content will make merge tag will automatically be swapped out with the real data when the email gets sent out.

> **Note:** As these tags will be different based on the platform you're using to send your emails, please reference your own email service provider's template documentation to find out which tags are available to use.

### Some platform specific template variable documentation

Links to some (but not all) popular platforms are listed below:

- [MailChimp Merge Tags](https://mailchimp.com/en-au/help/all-the-merge-tags-cheat-sheet/)
- [Klaviyo Template Tags](https://help.klaviyo.com/hc/en-us/articles/4408802648731)
- [Campaign Monitor Template Syntax](https://help.campaignmonitor.com/personalize-emails-with-subscriber-custom-fields)
- [Postmark Template Syntax](https://postmarkapp.com/support/article/1077-template-syntax)
- [SendGrid Substitution Tags](https://docs.sendgrid.com/for-developers/sending-email/substitution-tags)
- [HubSpot Personalization Tokens](https://knowledge.hubspot.com/website-pages/personalize-your-content#add-personalization-to-a-coded-template)
- [ActiveCampaign Personalization Tags](https://help.activecampaign.com/hc/en-us/articles/220709307-Personalization-Tags#list-of-standard-personalization-tags-0-5)
- [Mailjet Email Personalization](https://documentation.mailjet.com/hc/en-us/articles/360043225773-Can-we-personalize-emails-)
- [SendPulse Email Personalization](https://sendpulse.com/knowledge-base/email-service/additional/clever-personalization)
- [Braze Personalization Tags](https://www.braze.com/docs/user_guide/personalization_and_dynamic_content/liquid/supported_personalization_tags/)
- [Iterable Template Personalization](https://support.iterable.com/hc/en-us/articles/205480365-Personalizing-Templates-with-Handlebars-)
- [DotDigital Personlization Tags](https://support.dotdigital.com/hc/en-gb/articles/212212798-Add-data-field-personalisation-to-your-email-campaign-or-landing-page)
- [Intercom Personlization Tags](https://www.intercom.com/help/en/articles/247-create-custom-email-templates#2-when-adding-user-or-company-variables-to-your-template)

## Add if/else logic between your Row, Wrapper or Hero Layers

[Video](/assets/videos/emailify/content/custom-code-elements.mp4)

You can use the [🧑‍💻 Custom Code](/emailify/content/code) layer type to insert custom templating logic between the rows in your designs; you'll need to make sure the syntax is correct for the email marketing platform that you're using; but it would look something like:

`{% if customer_type == 'premium' %}`

_Emailify Row Here_

`{% else %}`

_Another Emailify Row Here_

`{% endif %} `

## Add personalized/dynamic images

[Video](/assets/videos/emailify/content/custom-image-url-override.mp4)

You can override the image URL for a certain image layer in your email designs by adding a value to the **Override Image Src** input field. You can either use a URL for an image that's already uploaded somewhere (eg. `https://mycdn/img.jpg`) or a dynamic variable for your email platform's templating language (eg. `{ variable.my_image }`) which will be automatically added to the `src` attribute of the `` tag when the HTML is exported.

### Optionally setting the height (with an "auto" width) for a dynamic image

For dynamic images where you want to control the height while letting the width adjust naturally (as the dimensions of the dynamic image file URL may not be known ahead of time), you need to do the following in Figma:

1. Enable **Lock aspect ratio** on the image layer in the Figma UI.
2. Set a *"Max height** value for the image layer in the Figma UI.

Once these are set, the image will render with a fixed height (matching your max-height in Figma) and an auto-adjusted width, instead of the default behavior (fixed width, auto height). This ensures that your dynamic images maintain the correct vertical space while preserving their natural aspect ratio.

> **Info:** This behavior only applies to images using dynamic URLs; static Emailify-exported images or images in MJML platforms are not affected.

## Truncate long custom text content

[Video](/assets/videos/emailify/content/truncate-lines.mp4)

Adding long dynamic text content tags to your email designs can sometimes affect the design by artificially increasing the height of certain elements or background images, etc, where the _final content_ (eventually replacing the dynamic placeholder content tags) in your email send may be shorter than the length of the dynamic content tag itself.

To mitigate this effect, you can set your Figma text layer to be truncated onto any maximum number of lines that you specify, which you can do by following the steps below:

1. **Click on your Text layer** in the Figma Emailfiy frame design
2. Set the Text layer's [text sizing setting](https://help.figma.com/hc/en-us/articles/27378154668951-Adjust-text-dimensions-and-resizing) value to **Auto width**
3. Open the **Type settings** panel (by clicking the **...** icon)
4. Set the **Truncate text** option to **Truncate enabled**
5. Set the **Max lines** property (underneath) to the maximum number of lines your text should overflow onto
6. Set the Text layer's **Auto layout** **Horizontal resizing** property value to **Fill container**

> **Note:** This will only apply the truncation in your Figma canvas, to avoid the full dynamic text value taking up more height than it should; the final HTML export won't include any kind of truncation, as the dynamic text will automatically be swapped out for real content when the final email is sent to your audience via the email marketing platform you're using the dynamic content tags for.

## Adding dynamic color and font family variables

[Video](/assets/videos/emailify/content/dynamic-color-name-variables.mp4)

### Dynamic color variables

If you'd like to make any background color, text color or stroke color in your email designs render as a dynamic code snippet (eg. **&lcub;&lcub; primary_color &rcub;&rcub;**) instead of its normal hex value from the Figma color (eg. `#000000`); you can do this by creating a [Figma color style](https://www.youtube.com/watch?v=d01Ql9ZtVnk) and ensuring the color style **Name** contains double curly brackets (eg. **&lcub;&lcub; my_color_var_name &rcub;&rcub;**), and that **Name** value from your color style will automatically be used as the `color`, `background-color` or `border-color` CSS value when the HTML is generated from the Emailify plugin.

### Dynamic font family variables

Similarly, if you'd like to make any `font-family` CSS value color render as a dynamic code snippet (eg. **&lcub;&lcub; customer.font_family &rcub;&rcub;**) instead of its normal font value from the Figma color (eg. `Arial, sans-serif`); you can do this by creating a [Figma text style](https://www.youtube.com/watch?v=M0OuDhxaroU) and ensuring the text style **Name** contains double curly brackets (eg. **&lcub;&lcub; my_font_var_name &rcub;&rcub;**), and that **Name** value from your color style will automatically be used as the `font-family`, CSS value when the HTML is generated from the Emailify plugin.

## Looping a Data Table Row with dynamic data

[Video](/assets/videos/emailify/content/looping-data-table-row.mp4)

If you're using a Data Table and need to iterate over some data in your email marketing platform, you can apply a **for loop** by clicking on a **Data Table Row** inside of your Data Table, then clicking the **Settings** button in the plugin header and adding your templating syntax for a loop into the **Opening Code Wrapper** (eg. `{% for product in collection.products %}`) and **Closing Code Wrapper** (eg. `{% endfor %}`), which will autamatically inject these opening and closing tags around the `` HTML table row element in your exported code.

Once you've added your wrapper tags to the **Data Table Row** layer, you can [populate the dynamic content](#adding-platform-specific-personalization-content) inside the layers of your row as needed.

> **Tip:** You can [apply settings in bulk](/emailify/design/settings#apply-settings-in-bulk) by opening **Settings**, then selecting multiple Emailify layers of the same type in Figma. Any setting you change will be applied to all selected layers.

---

---
url: "/emailify/content/gifs.md"
description: "You can add animated .gif files from your computer to your email designs as inline images (inside a Column) or background images (on a Row, Hero or Wrapper)."
---

# Adding animated GIFs to your email designs

> You can add animated .gif files from your computer to your email designs as inline images (inside a Column) or background images (on a Row, Hero or Wrapper).

### Video Tutorial: Add animated GIFs from Figma to HTML email exports

This video tutorial is a complete step-by-step guide showing you how to add animated GIFs to your email designs and export production-ready, responsive HTML emails from Figma using the Emailify plugin.
[Embedded media](https://www.youtube.com/embed/Jmy2Tuzzwjg)

> **Warning:** Uploading animated GIF images requires an Emailify Pro license.

> **Note:** If you're using the free trial version of the plugin, GIFs will be uploaded as static images instead; or you can use the **Export HTML** option with the **Upload** toggle set to **off** to save export and download the animated `.gif` files with your HTML emails locally.

## Add an animated GIF as a content image inside your Column layers

[Video](/assets/videos/emailify/content/inline-animated-gif.mp4)

You can drag and drop a `.gif` file from your computer into any **Column** layer, which will add it as a Figma image content layer.

To keep your GIF quality high, please ensure you resize the layer proportionally (by holding the **Shift** key while resizing your Figma layer) to maintain the original aspect ratio, which will make sure that Emailify can use the original GIF file data in your exports.

If you change the aspect ratio of your Figma layer to be different to the original GIF, Emailify will need to re-create your GIF frames into a brand new `.gif` file to account for the cropped image area (as HTML email clients don't support CSS cropping), which will lead to larger GIF file sizes and a slower export times.

> **Tip:** You can set the [alt text](/emailify/content/alt-text) attribute or add a [clickable URL link](/emailify/content/link-images) to your images by using the Settings button in the plugin header.

> **Note:** Emailify will try to automatically detect if your GIF contains a transparent background; if your GIF does require transparency, and the plugin isn't detecting that by itself, please add the word **Transparent** anywhere in your Figma layer's name (eg. `My Layer Name - Transparent`) to force it to be exported with a transparent background enabled.

The GIF file format supports either 0% opacity or 100% opacity, but nothing in between. This means that you can have an animated GIF with a completely transparent background behind elements that are completely opaque and visible. This means that layers either need to be completely transparent or not; any layers with lower than 50% opacity will be transparent, while any layers with opacity greater than 50% will be opaque.

## Add an animated GIF as a background image on a Row, Hero or Wrapper layer

[Video](/assets/videos/emailify/content/gif-background-image.mp4)

If you need to use an animated GIF as a background image behind _real_ rich text content, you can drag a `.gif` file from your computer onto any Row, Hero or Wrapper frame's Figma fill, which will set it as an image fill on the background of the frame. Any additional Figma fills (eg color/gradient overlays) on this frame will also be included in the final `.gif` export.

The advantage of this is that the content layers inside of the frame will still be rendered as individual rich content layers in your HTML email export, on top of the animated GIF background.

> **Note:** Emailify will try to automatically detect if your GIF contains a transparent background; if your GIF does require transparency, and the plugin isn't detecting that by itself, please add the word **Transparent** anywhere in your Figma layer's name (eg. `My Layer Name - Transparent`) to force it to be exported with a transparent background enabled.

The GIF file format supports either 0% opacity or 100% opacity, but nothing in between. This means that you can have an animated GIF with a completely transparent background behind elements that are completely opaque and visible. This means that layers either need to be completely transparent or not; any layers with lower than 50% opacity will be transparent, while any layers with opacity greater than 50% will be opaque.

> **Warning:** **Animated GIFs in Outlook:** While most email clients [support animated GIFs](https://www.caniemail.com/features/image-gif/), Outlook _2019 and earlier_ only display the **first frame** of a GIF instead of playing the animation. Ensure that frame includes key imagery or text so it still works as a static fallback. In **Outlook with Office 365**, GIFs play automatically _three times_ before pausing with a _play button_ to replay.

---

---
url: "/emailify/content/images.md"
description: "You can add inline content images inside of any Column layer in your email designs."
---

# Adding images to your email designs

> You can add inline content images inside of any Column layer in your email designs.

> **Tip:** You can also [add background images to your layout](/emailify/design/background-images) by setting the Figma image fill on a Row, Column, Hero or Wrapper layer in your email design.

## Drag and drop an image from your computer into a Column

[Video](/assets/videos/emailify/content/drag-image-layer.mp4)

The quickest way to add an inline content image to your Column layers is to drag and drop an image file from your computer into Figma, and then drag the image layer inside your Column (and resize it as needed).

If you already have an image in your Figma file that you would like to use as a content image inside of your email design, you can drag and drop that layer into your Column layer, too.

> **Tip:** You can set the [alt text](/emailify/content/alt-text) attribute or add a [clickable URL link](/emailify/content/link-images) to your images by using the Settings button in the plugin header.

## Add an image frame to your Column with other static layers inside of it

[Video](/assets/videos/emailify/content/add-image-element.mp4)

You can also add an image frame to your email design by clicking on a Column layer, then selecting the **Image** dropdown option in the Quick Add elements menu, then clicking the **Add +** button to add a new image frame inside your Column layer in Figma.

After you've added the image frame, you can set the image fill by clicking on the new layer in Figma, then adding an image fill from the right-hand column in Figma under the **Fills** panel.

You can also add any other layers inside of your image frame, and these will automatically be included in the single static image layer that will be rendered in your final HTML exports.

> **Tip:** You can set the [alt text](/emailify/content/alt-text) attribute or add a [clickable URL link](/emailify/content/link-images) to your images by using the Settings button in the plugin header.

---

---
url: "/emailify/content/link-buttons.md"
description: "You can add clickable rich text buttons into your email designs that can be linked to any URL."
---

# Adding links to buttons in your emails

> You can add clickable rich text buttons into your email designs that can be linked to any URL.

[Video](/assets/videos/emailify/content/linking-buttons.mp4)

To add a new button layer to your email design, you can click on any Column or Hero layer, then select the **Button** option from the Quick Add dropdown menu, then click the **Add +** button to insert the new button layer into your layout.

After styling the button to your liking, you can specify the clickable URL by clicking on your Button layer in Figma, then clicking the **Settings** button, and pasting your URL into the **Clickable URL Link** input field; this will ensure that your button opens up that URL in the browser when it's clicked

> **Tip:** You can [apply settings in bulk](/emailify/design/settings#apply-settings-in-bulk) by opening **Settings**, then selecting multiple Emailify layers of the same type in Figma. Any setting you change will be applied to all selected layers.

---

---
url: "/emailify/content/link-icon-buttons.md"
description: "You can add clickable rich text buttons that also include a customizable icon into your email designs that can be linked to any URL."
---

# Adding links to icon buttons in your emails

> You can add clickable rich text buttons that also include a customizable icon into your email designs that can be linked to any URL.

[Video](/assets/videos/emailify/content/add-icon-buttons.mp4)

> **Warning:** Please note that **icon buttons _are not_ supported on Outlook**; any icons in your buttons will automatically be hidden just for Outlook clients on Windows, but will still render as expected in all other email clients.

To add a new icon button layer to your email design, you can click on any Column or Hero layer, then select the **Icon Button** option from the Quick Add dropdown menu, then click the **Add +** button to insert the new button layer into your layout.

Alternatively, you can select one of the preset components under the **CTA** tab in the plugin, clicking the **Icon Buttons** sub-category tab, then clicking any of the icon button component preset options to add them as new "Row" layers to your design.

After styling the button to your liking, you can specify the clickable URL by clicking on your Button layer in Figma, then clicking the **Settings** button, and pasting your URL into the **Clickable URL Link** input field; this will ensure that your button opens up that URL in the browser when it's clicked.

> **Tip:** To have **full width split text/icon buttons**, you can either add one of the full width presets from the plugin, or you can set one of your existing icon button's **Horizontal** Auto-Layout setting in Figma to **Fill**, and then also set the  **Item Spacing** Figma Auto-layout setting to **Auto**, and this will automatically turn it into a justified/split button.

> **Note:** To **customize the icon layer** in your icon button, you can drag any single Figma icon frame or vector layer into your Icon Button layer, then delete the original icon layer to ensure there's only one icon inside your Button layer (along with the only other text layer inside the button).

> **Tip:** You can [apply settings in bulk](/emailify/design/settings#apply-settings-in-bulk) by opening **Settings**, then selecting multiple Emailify layers of the same type in Figma. Any setting you change will be applied to all selected layers.

---

---
url: "/emailify/content/link-images.md"
description: "You can add a clickable URL link to any content images inside of your emails."
---

# Adding links to images in your emails

> You can add a clickable URL link to any content images inside of your emails.

[Video](/assets/videos/emailify/content/linking-image.mp4)

To add a clickable URL to any image in your design, click on the Image layer you'd like to add a link to, then click the **Settings** button in the plugin header, and paste your URL into the **Clickable URL Link** input field.

This will add a link around your `` and set the `href` attribute of your `` tag (surrounding the image) in the HTML when it's exported from Emailify.

> **Tip:** You can [apply settings in bulk](/emailify/design/settings#apply-settings-in-bulk) by opening **Settings**, then selecting multiple Emailify layers of the same type in Figma. Any setting you change will be applied to all selected layers.

---

---
url: "/emailify/content/link-nav-menu.md"
description: "You can add a clickable URL link to navigation menu bar links inside of your emails."
---

# Adding links to navbar menu items in your emails

> You can add a clickable URL link to navigation menu bar links inside of your emails.

[Video](/assets/videos/emailify/content/linking-nav-menu.mp4)

To add a new navigation menu bar layer to your email design, you can click on any Column or Hero layer, then select the **Navigation Links** option from the Quick Add dropdown menu, then click the **Add +** button to insert the new nav bar layer into your layout, which includes a few placeholder navigation item links, too.

After styling the links to your liking, you can specify the clickable URL by clicking on any **Link** layer in Figma (nested inside of your Navigation Links layer), then clicking the **Settings** button, and pasting your URL into the **Clickable URL Link** input field; this will ensure that your nav link opens up that URL in the browser when it's clicked.

You can also add more Link layers to by clicking on your new **Navigation Links** Figma layer that the plugin created, then selecting the **Link** option from the Quick Add drop down menu, and then clicking the **Add +** button to automatically add the layer into your Navigation Links element as a new link.

> **Tip:** As a progressive enhancement for Apple Mail on iOS, you can optionally [enable a hamburger menu](/emailify/design/mobile-hamburger-menu) toggle for your Navigation layer links.

> **Tip:** You can [apply settings in bulk](/emailify/design/settings#apply-settings-in-bulk) by opening **Settings**, then selecting multiple Emailify layers of the same type in Figma. Any setting you change will be applied to all selected layers.

---

---
url: "/emailify/content/link-paragraphs.md"
description: "Link inline paragraph text with Figma links and note limitations for dynamic URLs."
---

# Adding inline links to paragraph text content in your emails

> Link inline paragraph text with Figma links and note limitations for dynamic URLs.

[Video](/assets/videos/emailify/content/linking-paragraph-text.mp4)

If you highlight the text you'd like to link in the Figma text layer, and then click on the [native Figma "Link" icon button](https://help.figma.com/hc/en-us/articles/360045942953-Add-links-to-text) in the Figma header toolbar area, that will let you paste a URL in. Emailify will automatically include this as a styled `` tag in your HTML export.

Please note that Figma only supports standard link formats (like `https://`, `mailto:`, or `tel:`) for text hyperlinks, and will block or rewrite anything else. This means dynamic values like `{{unsubscribe_url}}` or `{{profile_link}}`, as well as deep links using protocols such as `spotify://`, `slack://`, or `instagram://`, won’t work; Figma will automatically prefix them with https://. In Emailify, links on [buttons](/emailify/content/link-buttons), [images](/emailify/content/images), and [social icons](/emailify/content/social-icons), etc, are managed through the **Settings** panel instead, but paragraph text links rely on Figma’s native system. For dynamic or deep links, we recommend using an Emailify [nav menu link](/emailify/content/link-nav-menu) or [button](/emailify/content/link-buttons) (where possible) to work around this limitation.

> **Warning:** **Only use this native Figma text selection hyperlink method for linking paragraph content text layers (not buttons or nav links)**. Please note that this only works for normal content text layers; if you need to set a link on a button, social icon or navigation link layer that Emailify generates, you'll need to click on that Figma layer, then click the **Settings** button in the Emailify plugin header, then paste your URL into the link field.

> **Tip:** You can [apply settings in bulk](/emailify/design/settings#apply-settings-in-bulk) by opening **Settings**, then selecting multiple Emailify layers of the same type in Figma. Any setting you change will be applied to all selected layers.

---

---
url: "/emailify/content/link-social-icons.md"
description: "You can add a clickable URL link to any social icon layer inside of your emails."
---

# Adding links to social icons in your emails

> You can add a clickable URL link to any social icon layer inside of your emails.

[Video](/assets/videos/emailify/content/linking-social-icons.mp4)

> **Note:** See the page on [adding social icons](/emailify/content/social-icons) to your emails if you haven't yet created any social icons yet.

To add a clickable URL to any social icon layer in your design, click on the Social Icon Link layer you'd like to add a link to, then click the **Settings** button in the plugin header, and pasting your URL into the **Clickable URL Link** input field; this will ensure that your social icon opens up that URL in the browser when it's clicked.

> **Tip:** You can also set the `alt` text attribute by populating the **Image Alt Text** input field in the Settings panel, too.

> **Tip:** You can [apply settings in bulk](/emailify/design/settings#apply-settings-in-bulk) by opening **Settings**, then selecting multiple Emailify layers of the same type in Figma. Any setting you change will be applied to all selected layers.

---

---
url: "/emailify/content/link-unsubscribe.md"
description: "Add required unsubscribe links using Emailify footer components and navigation links."
---

# Adding unsubscribe links to your emails

> Add required unsubscribe links using Emailify footer components and navigation links.

[Video](/assets/videos/emailify/content/unsubscribe-link-footer.mp4)

Email marketing platforms require you to include a special unsubscribe link at the bottom footer section of your emails. If the unsubscribe tag required for their platform isn't detected, this will usually mean the email marketing platform will add their own footer to your email instead.

To make this easier for you to add to your designs, the Emailify plugin includes a number of starter components for different email marketing platforms underneath the **Footers** tab in the plugin.

If you click on the footer thumbnail for your email marketing platform (eg. MailChimp or Klaviyo), this will automatically add a footer component to your email design with Navigation Links pre-populated with the correct unsubscribe tag for that platform.

> **Note:** Please note, that you will always need to use the [Navigation Links](/emailify/content/link-nav-menu) element provided by Emailify for adding any unsubscribe tags, as using Figma's native hyperlink feature will always prepend `https://` to anything you use for your link, which will break the unsubscribe tag.

> **Tip:** If your email marketing platform isn't in the **Footer** tab, please [get in touch](https://hypermatic.com/contact), and we can get this added as a new component preset to the plugin for you.

---

---
url: "/emailify/content/localization.md"
description: "Emailify comes with built-in localization features to help you translate any email design created with Emailify into multiple languages."
---

# Localizing your email designs with text translations

> Emailify comes with built-in localization features to help you translate any email design created with Emailify into multiple languages.

## Translating with Excel spreadsheets (.xlsx)

### Video Tutorial: Translate HTML email designs with localization in Figma

This video tutorial is a complete step-by-step guide showing you how to translate HTML email designs with localization in Figma using the Emailify plugin.
[Embedded media](https://www.youtube.com/embed/pZUOi6C7C5E)

Click the **Localize** button in the Emailify header toolbar and choose the **Excel** option to export your design text into an `.xlsx` spreadsheet. You can select one or more target locales first, then click **Export XLSX** to generate the translation file from your selected email frames.

[Video](/assets/videos/emailify/design/localization-import.mp4)

You can then fill in the locale columns in Excel, Google Sheets, Numbers, or any spreadsheet app that preserves the original headers. When you are ready, drag the updated `.xlsx` file back into Emailify and import it. Emailify will create translated cloned frames on a new page for each locale you included in the spreadsheet.

## Using Markdown Formatting

### Video Tutorial: Localize HTML email designs (with text formatting) in Figma

This video tutorial is a complete step-by-step guide showing you how to localize HTML email designs with markdown text formatting in Figma using the Emailify plugin.
[Embedded media](https://www.youtube.com/embed/OngJvgE6Aeg)

If your email copy includes rich text formatting, enable the **Use Markdown** toggle before exporting or importing. This lets Emailify preserve bold, italic, and linked text in a format that can safely move through spreadsheet or AI translation workflows.

For AI localization methods in Emailify, the **Use Markdown** option is enabled by default so inline links and formatting are exported with the context needed to round-trip back into Figma correctly. You can still disable it if you intentionally want plain text only.

After editing the exported spreadsheet, keep the **Use Markdown** toggle enabled on import and Emailify will parse supported markdown formatting and re-apply it to the translated Figma text layers.

Emailify currently supports inline markdown formatting for bold, italic, bold italic, hyperlinks, and line breaks. Avoid adding headings, lists, code blocks, tables, or other markdown syntax that is outside of those supported inline text features.

### Supported markdown formatting

- You can specify **Bold** text by using double asterisks around the text, eg. `**Text to bold**`
- You can specify *Italic* text by using single underscores around the text, eg. `_Italic Text_`
- You can specify ***Bold Italic*** text by using double asterisks and one underscore around the text, eg. `**_Italic Text_**`
- You can specify hyperlinks by using the markdown syntax of `This is [my link here](https://example.com) in a text paragraph` (you can also format the link text by adding the bold/italic syntax inside of the link's `[]` text area).

## Other localization workflows

Emailify also supports localization with dedicated translation platforms and AI translation providers:

- [Crowdin API](/emailify/localization/crowdin)
- [Lokalise API](/emailify/localization/lokalise)
- [ChatGPT](/emailify/localization/chatgpt)
- [Claude](/emailify/localization/claude)
- [Gemini](/emailify/localization/gemini)

> **Tip:** The AI translation providers each support two workflows in Emailify: a direct API translation option and a manual prompt option that generates a CSV translation prompt for you to run in the provider's own app.

---

---
url: "/emailify/content/social-icons.md"
description: "You can add social icons to display a row of customizable icon links inside of any Column layer in your email designs."
---

# Adding social icons to your email designs

> You can add social icons to display a row of customizable icon links inside of any Column layer in your email designs.

## Adding social icons to your Columns layers

[Video](/assets/videos/emailify/content/adding-social-element.mp4)

You can add a social icons component to any Column layer in your emails by clicking on your Column layer in Figma, then selecting the **Social** option in the Quick Add drop down menu, then clicking the **Add +** button will automatically create a new social layer in your Column, along with a few social icons.

### Adding additional social icons to your Social layer

You can also add more social icons by clicking on your new **Social** Figma layer that the plugin created, then selecting a social icon option from the Quick Add drop down menu, and then clicking the **Add +** button to automatically add that social icon into your social element as a new social icon link.

> **Tip:** You can set the `alt` text attribute or add a clickable `href` URL link to your social icons by [using the Settings button](/emailify/content/link-social-icons) in the plugin header.

## Using custom vector icon layers for your social icons

[Video](/assets/videos/emailify/content/custom-social-vector-icons.mp4)

If the social platform icon isn't available in the presets included with the plugin (using the Quick Add instructions above), you can drag and drop your own SVG vector layer _inside of_ an existing social icon layer created by the plugin, and then delete or hide the original vector icon that was inside of the social icon link layer previously.

> **Tip:** You can set the `alt` text attribute or add a clickable `href` URL link to your social icons by [using the Settings button](/emailify/content/link-social-icons) in the plugin header.

---

---
url: "/emailify/content/text.md"
description: "You can add rich text content layers to your designs and style them using the Figma properties."
---

# Adding rich text content to your email designs

> You can add rich text content layers to your designs and style them using the Figma properties.

[Video](/assets/videos/emailify/content/adding-text-layer.mp4)

The easiest way to add a new text layer to your design is to click on a Column or Hero layer, and then select the **Text** option from from the Quick Add dropdown menu, and then click the **Add +** button to insert a new text layer to your design.

You can also drag and drop (or copy and paste) any existing text Figma text layers on your page into any Column or Hero layer as well, and these will be rendered as rich text in your emails, too.

> **Tip:** If you need to, you can swap the default paragraph tag (`p`) for any heading tag (eg., `h1`, `h2`). You can [wrap your Figma text layer content with a heading tag](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Heading_Elements) you're after, and that will automatically handle changing the tag when the HTML is exported via the Emailify plugin.

---

---
url: "/emailify/content/utm.md"
description: "Append global or per-link UTM query strings to Emailify URLs."
---

# Adding query string or UTM parameters to links

> Append global or per-link UTM query strings to Emailify URLs.

### Video Tutorial: Add UTM tracking code to HTML email links from Figma

This video tutorial is a complete step-by-step guide showing you how to add UTM tracking code to HTML email links from Figma using the Emailify Figma plugin.
[Embedded media](https://www.youtube.com/embed/LrNKatzJo6g)

## Setting one global UTM query string for every link

[Video](/assets/videos/emailify/content/add-global-query-string.mp4)

You can set a global [UTM tag](https://www.campaignmonitor.com/blog/email-marketing/utm-codes-in-email/) query string to automatically be appended to every `` tag's `href` attribute (per email) in the Emailify plugin by selecting your main "Email" container frame, then clicking the **Settings** button, and pasting in the query string that you'd like to be applied to every link in that email into the **Append Global URL Query String** input field.

An example of a _global query string_ (that gets applied to every link in your email) would be: `?utm_campaign=sale&utm_medium=email&utm_source=newsletter1&utm_content=top`

### Setting a specific UTM query string link on individual layers

If needed, you can also manually set a query string to your links by manually adding them to any clickable link URL inputs via the **Settings** panel as URLs with a query string included, too.

An example of a URL with its _own_ query string (that can be applied to a single layer) would be: `https://www.example.com/?utm_campaign=sale&utm_medium=email&utm_source=newsletter1&utm_content=top`

> **Tip:** If you're applying a global query string to all of the links in your email, _and_ also applying some query strings to individual links throughout the email, Emailify will automatically include both sets of query string parameters in the final URLs.

> **Tip:** You can [apply settings in bulk](/emailify/design/settings#apply-settings-in-bulk) by opening **Settings**, then selecting multiple Emailify layers of the same type in Figma. Any setting you change will be applied to all selected layers.

---

---
url: "/emailify/design/alignment.md"
description: "You can vertically and horizontally align items in your email designs using Figma's auto-layout alignment properties."
---

# How to align content in your email layouts

> You can vertically and horizontally align items in your email designs using Figma's auto-layout alignment properties.

## Vertically aligning columns inside of a row

[Video](/assets/videos/emailify/design/vertically-align-columns.mp4)

If you have multiple Column layers inside a Row, you can vertically align them by clicking on your Row layer(s), then changing the Figma auto-layout **Vertical Align** property to either Top, Center or Bottom.

## Horizontally aligning content elements inside of a column

[Video](/assets/videos/emailify/design/align-content-layers.mp4)

You can horizintally align all of the content layers inside of a Column by clicking on your Column layer(s), then changing the Figma auto-layout **Horizontal Align** property to either Top, Center or Bottom.

## Horizontally aligning text layers

[Video](/assets/videos/emailify/design/align-text-layers.mp4)

You can align any text layers in your design by clicking on your text layer(s), then changing the Figma **Text Align** property to either Left, Center or Right.

---

---
url: "/emailify/design/background-colors.md"
description: "You can customize the backgrounds of your Emailify layout layers by applying Figma fills on them."
---

# Adding background colors to your layout layers

> You can customize the backgrounds of your Emailify layout layers by applying Figma fills on them.

> **Tip:** If you're looking for [how to customise the outer email background color](/emailify/design/background) that appears around the outside of your email body, you can set this by changing your Figma page background, which will be used as your email body background color in any HTML exports from Emailify.

## Setting a solid background color on any of your layout layers

[Video](/assets/videos/emailify/design/layout-background-color.mp4)

To set a solid background color on any layout elements in your email design, you can click on the layer in Figma and then add (by clicking the **+** icon next to the **Fill** panel in the layer's Figma properties) and set the **Solid** fill for that layer, which will be applied as a CSS background color when your email is exported to HTML from the plugin.

## Setting a gradient background on a Row, Column, Hero or Wrapper layer

[Video](/assets/videos/emailify/design/layout-background-gradient.mp4)

To set a gradient background on any Row, Column, Hero or Wrapper layout elements in your email design, you can click on the layer in Figma and then add (by clicking the **+** icon next to the **Fill** panel in the layer's Figma properties) and set the **Gradient** fill for that layer, which will be applied as a background image (not a CSS gradient, which has [limited support](https://www.caniemail.com/features/css-linear-gradient/) across email clients) when your email is exported to HTML from the plugin.

> **Warning:** Please note, gradient backgrounds are rendered as [background images](/emailify/design/background-images). These work on Row, Column, Hero and Wrapper layers in Emailify preview and HTML exports, but raw `mjml` and `loops` exports still omit Column background image attributes.

## Setting a solid background color on text layers

[Video](/assets/videos/emailify/design/text-background.mp4)

To set a solid background color on text layers in your email design by selecting a Figma text layer in your email while the **Settings** panel is open, pasting in your hex color value (eg. `#FFFBA8`) into the **Text Background Color** input field. This will automatically add a solid background color behind that text content in your HTML email.

> **Tip:** You can also optionally combine setting a background color on your text layer with [adding inner padding to your text layer](/emailify/design/text-padding), which will provide some additional padding around the text content and give the background area some padding.

---

---
url: "/emailify/design/background-images.md"
description: "You can add background images behind your content layers that work on all email clients (including Outlook) to Row, Column, Wrapper and Hero layers in your email by applying an image fill in Figma."
---

# Adding background images to your email layouts

> You can add background images behind your content layers that work on all email clients (including Outlook) to Row, Column, Wrapper and Hero layers in your email by applying an image fill in Figma.

[Video](/assets/videos/emailify/design/row-background-image.mp4)

You can add a background image to any Row, Column, Wrapper or Hero layer in your email design by clicking on the layer in Figma, then clicking the **+** icon next to the **Fill** panel in the layer's Figma properties and setting the fill type to **Image**. The example above shows this on a Column layer, but the same workflow also applies to Row, Wrapper and Hero layers. That image fill will be applied as a background image when your email is exported to HTML from the plugin.

> **Tip:** To increase the contrast between your background image and the content layers, you can add an extra semi-transparent color on top of your layer's background image fill (by clicking the **+** icon next to the **Fill** panel in the layer's Figma properties) and set the new **Gradient** or **Solid** fill to the color of your choice, and then adjust the fill opacity percentage value (eg. `35`).

> **Note:** Background images and gradients are supported on Row, Column, Wrapper and Hero layers in Emailify preview and HTML-rendered exports. If you're exporting raw `mjml` or `loops` output, Column background image attributes are still omitted there.

## Setting a solid fallback color behind your background image

[Video](/assets/videos/emailify/design/add-bg-fallback-color.mp4)

If you'd like to add a custom fallback color to show up behind your background image (which will be visible either when the image is loading for the user in their email client later, or if their email client initially blocks image content from rendering), you can do this by adding an extra solid color to your background image Row, Column, Wrapper or Hero layer's **Fills** by clicking the **+** icon button, setting the fill color you've chosen to be `100%` opacity, and then dragging it to the bottom of the Fills list (underneath your background image fill).

---

---
url: "/emailify/design/background.md"
description: "Emailify will automatically use your current Figma page background colour as the body background colour for all of your HTML email exports from Emailify."
---

# Setting the body background color for your emails

> Emailify will automatically use your current Figma page background colour as the body background colour for all of your HTML email exports from Emailify.

[Video](/assets/videos/emailify/design/change-outer-background.mp4)

To update the background from Figma's default page background color, you can modify the background colour of your Figma page to any solid color you would like to use as the background color for your emails.

This background color will be used for your email background color in any HTML exports from the Emailify plugin, so the Figma page background color that surrounds all of your Emailify frames on the page will be reflected as the same outer background color around your HTML email content when they're exported.

---

---
url: "/emailify/design/borders.md"
description: "You can apply borders to your layout elements and also insert divider lines between your content layers."
---

# Adding borders and content dividers to your email layouts

> You can apply borders to your layout elements and also insert divider lines between your content layers.

## Adding border strokes to your layout elements

[Video](/assets/videos/emailify/design/adding-borders.mp4)

You can add a solid border to layers (eg. Row, Column, Button etc) in your email designs by clicking on the layer, then applying a Figma stroke to it, and this will automatically be included as a CSS border in the final HTML exported from Emailify.

To add some buffer between the border and inner contents of your layer, you may consider [applying padding](/emailify/design/padding) to those layers after applying your border.

> **Warning:** Please note that **email clients do not support gradient borders**, so if you use a gradient fill on your Figma stroke, it will fallback to the first solid color of your gradient in the final HTML export.

## Adding divider lines between your content layers

[Video](/assets/videos/emailify/design/add-divider-lines.mp4)

If you need to add a divider line in between any content layers inside of a Column in your email layouts, you can add a special Emailify divider element by clicking on your "Column" layer, then selecting the "Divider" item from the Quick Add dropdown menu at the bottom of the plugin, and then clicking the **Add +** button to insert the divider line layer into your Column.

After the divider layer has been added to your Column, you can drag and drop the layer in your layers panel to re-order which layers it sits between, and then you can adjust the size of it by adjusting the **Height** of the layer in its Figma layer properties panel or adjust the background color of it by changing the **Fill** of your layer in Figma to any solid color.

> **Warning:** Please note that **email clients do not support gradient borders**, so if you use a gradient fill on your divider, it will fallback to the first solid color of your gradient in the final HTML export.

### Adding inner padding to your divider line layers

[Video](/assets/videos/emailify/design/divider-padding.mp4)

You can optionally add inner padding to your dividers by selecting an Emailify divider layer in your email while the **Settings** panel is open, enabling the **Inner Padding** toggle, then adding any padding values you'd like to apply to the selected divider layer.

This will add extra "inner" padding inside of your divider layer when it's rendered to HTML, allowing you to specify padding values for certain text layers in your Column without affecting other layers.

> **Tip:** You can also optionally override any Emailify divider layer padding on mobile by enabling the **Mobile Padding** toggle, then adding any padding values you'd like to apply to the selected divider layer, which will only be visible when viewing your HTML email on mobile.

## Adding border radius for backgrounds to your layout elements

[Video](/assets/videos/emailify/design/column-border-radius.mp4)

If you have a background fill set on your Row or Column layout element (without a stroke), you can add a rounded corner effect for your background by clicking on your layer, then setting a rounded corner value on your layer using the **Corner Radius** property in Figma.

> **Note:** Heads up for image based content. If you apply a mobile border radius that is smaller than the desktop radius, the image is exported as a square JPG to preserve the full image area. This allows the smaller radius to be applied on mobile, but means the radius is not baked into the PNG. As a result, Outlook will render the image with square corners, since it does not support CSS border radius.

> **Warning:** Please note that **email clients do not support border radius for border strokes**, so if you use a border radius on a layout element that contains a Figma stroke, it will fallback to non-rounded square borders in the final HTML export.

### Important notes on using border radius with strokes

Border radius will work reliably on any **Column** layers that also have a stroke applied. However, it will not work on **Row** layers, as these are HTML tables (which sadly don't support border radius for strokes).

Unfortunately, [border radius is not supported](https://www.caniemail.com/features/css-border-radius/) in any versions of Outlook, so those clients will always fall back to square corners regardless of the setup.

For best results, please apply the corner radius directly to the Emailify **Column** layer that has the stroke, rather than a Row or Wrapper, just still being mindful that they will _not_ render the rounded corners when viewed in any version of Outlook.

---

---
url: "/emailify/design/builder.md"
description: "Create, edit, and manage custom Emailify components with the component builder."
---

# Creating your own custom components

> Create, edit, and manage custom Emailify components with the component builder.

### Video Tutorial: Create custom components for HTML email exports

This video tutorial is a complete step-by-step guide showing you how to add custom components to your email designs and export production-ready, responsive HTML emails from Figma using the Emailify plugin.
[Embedded media](https://www.youtube.com/embed/vczegDic1Do)

[Video](/assets/videos/emailify/custom-component.mp4)

If the base components that come included with Emailify aren't what you're looking for, you can create your own custom components using the built-in component builder feature.

Clicking on the **Custom** tab in the component categories header, then clicking the **Create New Component** button will open up the component builder, which will allow you to customise your own component layout and content elements.

When you're happy with the structure, you can click the **Create & Insert New Component** button, which will add the component to your email design in Figma, and also save it in your **Custom** category for future use.

## Editing and forking your saved custom components

[Video](/assets/videos/emailify/edit-custom-component.mp4)

You can edit your saved custom components by clicking on the **Settings** icon button next to any component listed under the **Custom** tab in your component categories.

You can either save the updated component back to the original, by clicking the **Update Saved Component** button, which will update your saved component, but will not affect or modify the component anywhere that it has already been used in your design.

Alternatively, you can _fork_ your original component and "save as" a brand new custom component by clicking the **Create & Insert New Component** button, which will save it as a brand new custom component in your list, without overriding the original saved component.

## Removing a saved custom component

You can also remove a saved custom component by clicking on the **Trash** icon button. This will remove the saved component from the **Custom** and **Favourites** categories, but will not delete or modify the component anywhere that it has already been used in your design.

---

---
url: "/emailify/design/button-drop-shadow.md"
description: "CSS box shadows for Emailify Buttons are [only supported in some email clients](https://www.caniemail.com/features/css-box-shadow/), and won't be visible for any email clients (eg. Outlook or Yahoo Mail) that don't support CSS box shadows."
---

# Adding a drop shadow to your buttons

> CSS box shadows for Emailify Buttons are [only supported in some email clients](https://www.caniemail.com/features/css-box-shadow/), and won't be visible for any email clients (eg. Outlook or Yahoo Mail) that don't support CSS box shadows.

[Video](/assets/videos/emailify/design/button-box-shadow.mp4)

You can add a CSS box shadow to your Button layers in Emailify by adding an **Effects** property on your layer in Figma as a **Drop Shadow**. This will automatically add a CSS box shadow to your Button when it's exported to HTML.

> **Tip:** Please treat button box shadows as a **progressive enhancement**. CSS box shadows are [only supported in some email clients](https://www.caniemail.com/features/css-box-shadow/); any email clients that don't support box shadows won't render any shadow effect at all.

---

---
url: "/emailify/design/button-gradient-background.md"
description: "Gradient button backgrounds exported from Emailify work in most email clients (including Outlook), but will fallback to to the first solid color in your Figma gradient for any email clients that don't support gradient backgrounds (eg. Yahoo! Mail)."
---

# Adding a gradient background to your buttons

> Gradient button backgrounds exported from Emailify work in most email clients (including Outlook), but will fallback to to the first solid color in your Figma gradient for any email clients that don't support gradient backgrounds (eg. Yahoo! Mail).

### Video Tutorial: Add Outlook-compatible gradient buttons to HTML emails with Figma

This video tutorial is a complete step-by-step guide showing you how to add Outlook-compatible rounded gradient buttons to HTML emails using the Figma Emailify plugin.
  [Embedded media](https://www.youtube.com/embed/P-faEnzef20)

[Video](/assets/videos/emailify/design/button-gradient-background.mp4)

You can add a gradient background to your Button layers in Emailify by setting the "Fill" property on your layer in Figma to a linear or radial gradient. This will automatically add a gradient background to your Button when it's exported to HTML.

> **Tip:** Gradient button backgrounds exported from Emailify are supported in most email clients (including Outlook), but any email clients that don't support gradient backgrounds will fallback to the first solid color that you've used in your Figma gradient fill, so please ensure it's a suitable solid fallback color (with enough contrast against your button text color) for cases where it's not supported (eg. Yahoo! Mail).

> **Warning:** Please note that the gradient button code will not be included in any **MJML** exports, and the additional Outlook code for them won't be included in any **SendGrid** exports; this is due to each not supporting the additional code required for these enhancements.

---

---
url: "/emailify/design/columns.md"
description: "Any **🚣 Row** layer must always contain one or more **🏛️ Column** layers, which provides a way to create layouts for your content layers to sit inside of."
---

# Adding columns to your email designs

> Any **🚣 Row** layer must always contain one or more **🏛️ Column** layers, which provides a way to create layouts for your content layers to sit inside of.

[Video](/assets/videos/emailify/design/adding-new-columns.mp4)

You can add extra columns to any Row layer in your email by clicking on the Row layer in Figma, and then adding a new empty Column layer to it via the **Quick Add Element** dropdown selector at the bottom of the plugin window.

This will add a brand new empty Column which you can then start populating with content layers (eg. text, images, buttons, etc) and customizing the layer's styles (eg. changing the background color, adjusting [padding and spacing](/emailify/design/item-spacing), etc) in Figma as needed.

> **Note:** Please note that each Row can only have a single row of Columns, so you'll need to create a brand new Row whenever you decide to have a different number of columns as a underneath your existing row of columns.

> **Warning:** **🏛️ Column** elements can only be added directly inside of 🚣 **Row** layers. If you need multiple rows of columns, you'll need to create brand new 🚣 **Row** for each row of columns you need.

---

---
url: "/emailify/design/dark-mode.md"
description: "Dark mode overrides are only supported on iOS/MacOS Apple Mail apps (Gmail, Outlook, etc _do not support_ dark mode overrides)."
---

# Adding dark mode design overrides (only supported in Apple Mail on iOS/MacOS)

> Dark mode overrides are only supported on iOS/MacOS Apple Mail apps (Gmail, Outlook, etc _do not support_ dark mode overrides).

> **Warning:** The [support for dark mode override styles](https://www.caniemail.com/features/css-at-media-prefers-color-scheme/) in email clients is limited to Apple Mail on iOS/MacOS; which means dark mode overrides _will not work_ on any other clients like Gmail, Outlook etc. Please be aware of this and try to design your emails with the [progressive enhancement](https://www.litmus.com/blog/the-ultimate-guide-to-dark-mode-for-email-marketers/) in mind.

### Video Tutorial: Add dark mode styles to HTML email designs

This video tutorial is a complete step-by-step guide showing you how to add custom dark mode style overrides to your email designs for exporting production-ready, responsive HTML emails from Figma using the Emailify plugin.
[Embedded media](https://www.youtube.com/embed/uAxQ5Psi1m4)

## Important design considerations for dark mode

![Image](/assets/images/emailify/caniemail-dark-mode.jpg)

> **Warning:** The [support for dark mode override styles](https://www.caniemail.com/features/css-at-media-prefers-color-scheme/) in email clients is limited to Apple Mail on iOS/MacOS; which means dark mode overrides _will not work_ on any other clients like Gmail, Outlook etc. Please be aware of this and try to design your emails with the [progressive enhancement](https://www.litmus.com/blog/the-ultimate-guide-to-dark-mode-for-email-marketers/) in mind.

Due to each email client having their own implementation, dark mode is very tricky to design for, but it's worth trying to work _with_ the (often terrible) changes that each email client automatically applies in dark mode.

It's a good idea to check out some resources (like these articles from [CampaignMonitor](https://www.campaignmonitor.com/blog/email-marketing/designing-an-email-for-dark-mode-dark-and-light-optimization/) and [Litmus](https://www.litmus.com/blog/the-ultimate-guide-to-dark-mode-for-email-marketers/)) that go through exactly what these email clients are changing and how to mitigate some of those changes in the design as good starting points.

## Applying dark mode text color and background color overrides

[Video](/assets/videos/emailify/design/dark-mode-color-override.mp4)

You can click on elements like text, images, buttons, sections and columns, then click on the **Settings** button in the plugin header to specify dark mode text color and background color overrides for your elements at the bottom of the Settings panel, which will be shown on [the email clients that support](https://www.caniemail.com/features/css-at-media-prefers-color-scheme/) this feature (iOS/MacOS Apple Mail apps) when the email is being viewed on a device with dark mode enabled.

> **Warning:** The [support for dark mode override styles](https://www.caniemail.com/features/css-at-media-prefers-color-scheme/) in email clients is limited to Apple Mail on iOS/MacOS; which means dark mode overrides _will not work_ on any other clients like Gmail, Outlook etc. Please be aware of this and try to design your emails with the [progressive enhancement](https://www.litmus.com/blog/the-ultimate-guide-to-dark-mode-for-email-marketers/) in mind.

## Swapping between two image layers in dark and light mode

[Video](/assets/videos/emailify/design/swap-dark-mode-content.mp4)

You can also swap certain image layers to swap them out on dark mode by clicking on your Figma content layer (inside of a Column layer), then clicking on the **Settings** button in the plugin header, and enabling either the **Only Hide in Dark Mode** or **Only Show in Dark Mode** toggle depending on if you want the image layer to be shown or hidden on [the email clients that support](https://www.caniemail.com/features/css-at-media-prefers-color-scheme/) this feature (iOS/MacOS Apple Mail apps) when the email is being viewed on a device with dark mode enabled.

> **Warning:** The [support for dark mode override styles](https://www.caniemail.com/features/css-at-media-prefers-color-scheme/) in email clients is limited to Apple Mail on iOS/MacOS; which means dark mode overrides _will not work_ on any other clients like Gmail, Outlook etc. Please be aware of this and try to design your emails with the [progressive enhancement](https://www.litmus.com/blog/the-ultimate-guide-to-dark-mode-for-email-marketers/) in mind.

## Previewing dark mode in the plugin

[Video](/assets/videos/emailify/design/emulate-dark-mode.mp4)

You can preview your dark mode overrides using the **Dark Mode** toggle in the [preview](/emailify/design/preview) feature in the plugin.

Enabling the **Dark Mode** toggle in the plugin's preview panel will also allow you to see an _approximate_ visual of what your design will look like when it's viewed on a device with dark mode enabled by emulating some of the changes that they apply.

This preview mode will also allow you to easily see any of the background color, text color or dark/light image swaps that you've added in the Emailify [dark mode override](/emailify/design/dark-mode) settings.

> **Tip:** To _accurately_ see what your design looks like in [email clients that support dark mode overrides](https://www.caniemail.com/features/css-at-media-prefers-color-scheme/) (Apple Mail on iOS/MacOS), it's always worth doing a test of your own emails using a service like [Litmus](https://www.litmus.com/) or [Email on Acid](https://www.emailonacid.com/), just to ensure they're looking good before you send them out.

> **Warning:** The [support for dark mode override styles](https://www.caniemail.com/features/css-at-media-prefers-color-scheme/) in email clients is limited to Apple Mail on iOS/MacOS; which means dark mode overrides _will not work_ on any other clients like Gmail, Outlook etc. Please be aware of this and try to design your emails with the [progressive enhancement](https://www.litmus.com/blog/the-ultimate-guide-to-dark-mode-for-email-marketers/) in mind.

_Please note_ that different email clients (that have dark mode support) will apply their own dark mode overrides automatically to invert and update colors to try and maximize readability and contrast, so it's always worth doing a test of your own emails using a service like [Litmus](https://www.litmus.com/) or [Email on Acid](https://www.emailonacid.com/) to accurately see how they're rendered in all email clients in dark mode.

It's also worth using [some other clever design techniques](https://www.campaignmonitor.com/blog/email-marketing/designing-an-email-for-dark-mode-dark-and-light-optimization/) for creating your email with dark mode in mind as a fallback with other email clients, too.

## Testing your emails in dark mode

### Video Tutorial: Test HTML emails in dark mode with exports from Figma

This video tutorial is a complete step-by-step guide showing you how to test HTML emails in dark mode with exports from Figma using the Emailify plugin and Litmus.com.
[Embedded media](https://www.youtube.com/embed/h5Gq9apZrxk)

It's always worth doing a test of your own emails using a service like [Litmus](https://www.litmus.com/) or [Email on Acid](https://www.emailonacid.com/) to ensure they're looking good before you send them out.

> **Warning:** The [support for dark mode override styles](https://www.caniemail.com/features/css-at-media-prefers-color-scheme/) in email clients is limited to Apple Mail on iOS/MacOS; which means dark mode overrides _will not work_ on any other clients like Gmail, Outlook etc. Please be aware of this and try to design your emails with the [progressive enhancement](https://www.litmus.com/blog/the-ultimate-guide-to-dark-mode-for-email-marketers/) in mind.

> **Tip:** You can [apply settings in bulk](/emailify/design/settings#apply-settings-in-bulk) by opening **Settings**, then selecting multiple Emailify layers of the same type in Figma. Any setting you change will be applied to all selected layers.

---

---
url: "/emailify/design/email.md"
description: "Every email design in Emailify starts with a special blank email Figma frame, which you'll be able to fill up with Emailify layouts and content."
---

# Creating your first Emailify email Figma frame

> Every email design in Emailify starts with a special blank email Figma frame, which you'll be able to fill up with Emailify layouts and content.

[Video](/assets/videos/emailify/design/create-new-email.mp4)

The first time you run the Emailify plugin on a Figma page that doesn't contain any existing Emailify container frames, the plugin will automatically prompt you to name and create your first frame to get started.

Under the **Add New Blank Emailify Frame** tab, give your email a name (eg. "My Email Template") and then click the **Add New Emailify Container** button to add your empty email frame to your Figma page.

This new special Figma frame created by the plugin will automatically be recognized by the Emailify Figma plugin as an email, and allow you to start adding layouts and components to it using the plugin's design features.

> **Tip:** If you're new to the plugin or want some inspiration, you can duplicate any of the [free Emailify Figma templates here](https://www.figma.com/@adambrock) (or browse them directly from the plugin's "New Emailify Container" popup modal).

## Adding additional Emailify containers

You can add as many additional Emailify container Figma frames as you need, and each container will be treated as a seperate email by the plugin.

If you've already added an Emailify frame to your page, you can add a new blank Emailify frame at any time by clicking on the **+** (Plus) icon button in the Emailify plugin header, which will prompt you to name and create a new blank email Figma frame.

> **Info:** You can also **copy + paste** and existing Emailify frame that you've worked on if you don't want to start from scratch. Copying and pasting components from inside one Emailify frame into another also works, too.

## Selecting an Emailify frame

To select an email to start adding components to, you can either select it from the drop down box in the Emailify plugin header, or you can simply click on the parent frame itself on the Figma canvas.

Clicking on an email option using the select box will also automatically shift the focus on your Figma page onto the selected email.

> **Note:** **Checking which email frame is active** The email name that's currently shown as being selected in the Emailify plugin header drop down box always indicates which email is currently selected.

## Mobile breakpoint for the emails

The HTML emails exported from Emailify have a single "breakpoint" that's automatically set by the width of the desktop frame in Figma; for example, if your Emailify frame is 600px, the mobile styles/overrides will start showing at 599px and below.

### Recommended email width is 600px - 640px

Keeping the width of the email between 600px-640px is typically recommended, as some email client/app's inbox reader panels can be less than 700px wide, which would render the mobile styles at that width instead of the desktop layout. Keeping your Emailify frame width in Figma between 600-640px wide will ensure that the desktop layout always gets rendered across any mail clients or apps, on desktop or tablet.

---

---
url: "/emailify/design/fallback-images.md"
description: "If you add a Figma layer that was designed outside of Emailify to your email frame, it will be rendered as a static fallback image. You can also optionally set an Emailify layout layer to be rendered as a static image, too."
---

# Static fallback images for layout layers in your email designs

> If you add a Figma layer that was designed outside of Emailify to your email frame, it will be rendered as a static fallback image. You can also optionally set an Emailify layout layer to be rendered as a static image, too.

## Using layers not created with Emailify as static fallback images in your email designs

[Video](/assets/videos/emailify/design/static-fallback-images.mp4)

While **the plugin _doesn't_ support rendering Figma layers that were designed outside of Emailify as _rich text HTML content_**, if you do add any layers inside of your main email frame, **these will automatically be rendered as _static fallback images_** instead.

This is an easy way to bring in a Figma layer or frame that you've already designed (without using the Emailify design tools) into your email design as a static image.

> **Tip:** If you do need rich text HTML content rows or real background images behind rich text content, you can add these with the "Quick Add" design tools dropdown or [starter components](/emailify/design/presets) provided by the Emailify plugin, which you can bring your own content into as well.

## Setting an Emailify layout layer to be rendered as a static image instead

[Video](/assets/videos/emailify/design/render-as-image-toggle.mp4)

If you _are_ using an Emailify Row, Hero or Wrapper layer in your email frame, you can optionally render any of these elements as a static image (instead of rich HTML content), if needed, too.

To do this, select the Emailify layout layer in Figma, click on the **Settings** button in the plugin header, and then enable the **Render as an image (instead of HTML)** toggle to force that layer to be rendered as a static image.

You can disable the **Render as an image (instead of HTML)** toggle at any time to revert to rendering that layout element with rich text HTML content again.

> **Tip:** You can [apply settings in bulk](/emailify/design/settings#apply-settings-in-bulk) by opening **Settings**, then selecting multiple Emailify layers of the same type in Figma. Any setting you change will be applied to all selected layers.

---

---
url: "/emailify/design/fluid-buttons.md"
description: "You can set Button elements in your design to be fluid on mobile and always expand to the full width of the Column it's inside, or turn off this setting to maintain the same width as the Figma/desktop design."
---

# Setting fluid width buttons on mobile

> You can set Button elements in your design to be fluid on mobile and always expand to the full width of the Column it's inside, or turn off this setting to maintain the same width as the Figma/desktop design.

[Video](/assets/videos/emailify/design/full-width-mobile-button.mp4)

By default, any Button layers in your designs will be set to be fluid on mobile and expand to the width of the Column (depending on the size of the mobile device screen viewing the email).

You can change this behavior on mobile by clicking on your **Button** layer, then clicking the **Settings** layer in the plugin header, and toggling the **Full Width Button on Mobile** toggle option on or off.

> **Note:** If the width of your Button in the Figma (desktop) design exceeds 300px, the button will automatically be exported as Fluid, otherwise the longer fixed width button would push out the side of the layout on smaller screens.

> **Tip:** If your Button layer itself is set to **Fill container** in your Figma design, Emailify will also preserve the button's horizontal auto-layout alignment in the exported HTML. This means you can left align, center align or right align the button text inside a full-width button by changing the button's auto-layout alignment in Figma.

> **Tip:** You can [apply settings in bulk](/emailify/design/settings#apply-settings-in-bulk) by opening **Settings**, then selecting multiple Emailify layers of the same type in Figma. Any setting you change will be applied to all selected layers.

---

---
url: "/emailify/design/fonts.md"
description: "Custom web fonts are only supported on iOS/MacOS Apple Mail, so you can add font embeds for those, then set web safe fallback fonts to display all other email clients."
---

# Using web fonts and adding web safe fallback fonts in your emails

> Custom web fonts are only supported on iOS/MacOS Apple Mail, so you can add font embeds for those, then set web safe fallback fonts to display all other email clients.

> **Warning:** Currently, [support for custom fonts in email clients](https://www.caniemail.com/features/css-at-font-face/) is limited to **Apple Mail on iOS/MacOS**; so please be aware of this and try to design your emails with the "progressive enhancement" of custom fonts in mind.

### Video Tutorial: Embed custom web fonts in HTML email exports from Figma

This video tutorial is a complete step-by-step guide showing you how to embed custom web fonts (with web-safe fallbacks) in HTML email exports from Figma using the Figma Emailify plugin.
[Embedded media](https://www.youtube.com/embed/dtTNDXeO3FA)

## Adding custom web font URL embeds

[Video](/assets/videos/emailify/design/applying-web-fonts.mp4)

If you're using custom fonts, you'll need to add a link directly to the `.woff` or `.woff2` font file URL, which you can do by clicking on the **Configure Fonts** button in the **Preview** panel of the plugin.

This will allow you to paste a link to each of the custom fonts used in your email designs (eg. `https://fonts.cdnfonts.com/s/8766/SansThirteenBlack.woff`), which will then be included as `@font-face` CSS rules in your exported HTML.

> **Note:** Please ensure you link directly to the `.woff` or `.woff2` web font file; if you only have a link to a CSS embed, you can open that link in your browser, and you should see a `url` link to the font file in there (eg. `https://fonts.cdnfonts.com/s/8766/SansThirteenBlack.woff`), which you can then copy/paste into the plugin.

> **Warning:** **Custom Font Embeds are only supported on iOS/MacOS Apple Mail**. Currently, [support for custom fonts in email clients](https://www.caniemail.com/features/css-at-font-face/) is limited to _Apple Mail on iOS/MacOS_, so please be aware of this and try to design your emails with the "progressive enhancement" of custom fonts in mind.

## Setting and previewing web safe fallback fonts

[Video](/assets/videos/emailify/design/preview-font-fallbacks.mp4)

If your using custom fonts in your emails, you can set a [web safe fallback font](#list-of-web-safe-fallback-fonts) for each custom font, which will be displayed as a fallback if the HTML email is being view in any [email clients that don't support custom fonts](https://www.caniemail.com/features/css-at-font-face/).

You can specify fallback fonts for any Google Fonts and custom fonts under the same **Configure Fonts** settings panel, too.

If you've specified any [web safe fallback fonts](#list-of-web-safe-fallback-fonts) for custom web fonts in your email, you can preview how they will look by toggling the **Show Fallback Fonts** switch at the bottom of the Emailify preview window.

### List of web-safe fallback fonts

Below are the different web-safe fonts you can set for any custom web fonts used in your Figma email designs; as custom font embeds are _only_ supported on iOS/MacOS Apple Mail, specifying the fallback fonts below will determine which font is displays for all other email clients (eg. Outlook, Gmail, etc) which sadly don't support custom fonts.

 #### Sans-Serif Web Safe Fallback Fonts

  - Arial
  - Arial Black
  - Tahoma
  - Trebuchet MS
  - Verdana

  #### Serif Web Safe Fallback Fonts

  - Georgia
  - Times New Roman

  #### Monospace Web Safe Fallback Fonts

  - Courier New

## Using Google Fonts in your emails

Emailify automatically includes Google Font `@import` code in your HTML exports for any Figma layers that are using a font from the [Google Fonts library](https://fonts.google.com/) that Figma includes by default.

Please note that Google Fonts will only be visible on any [email clients that support the use of @font-face](https://www.caniemail.com/features/css-at-font-face/) in emails, and a [web safe fallback fonts](#list-of-web-safe-fallback-fonts) (eg. "Arial", "Georgia" or "Courier") will automatically be loaded instead for any email clients that don't support custom fonts.

> **Warning:** **Google Fonts are only supported on iOS/MacOS Apple Mail**. Currently, [support for custom fonts in email clients](https://www.caniemail.com/features/css-at-font-face/) is limited to _Apple Mail on iOS/MacOS_, so please be aware of this and try to design your emails with the "progressive enhancement" of custom fonts in mind.

> **Tip:** **Using custom fonts in your images**. Please note that if you need to ensure a custom font is visually consistent across all email clients, it may be worth putting your text layers inside of an "Image" frame. This text content will be exported as part of the image itself, and therefore won't be relying on custom web font support to display correctly.

---

---
url: "/emailify/design/full-width-backgrounds.md"
description: "You can optiionally set a toggle to expand the background width of a section in your Emailify design, if you need to extend it outside the content body width of your design."
---

# Extend any Row or Wrapper background to take up the full width of the email client window.

> You can optiionally set a toggle to expand the background width of a section in your Emailify design, if you need to extend it outside the content body width of your design.

[Video](/assets/videos/emailify/design/full-width-background.mp4)

If you need the background for a certain Row or Wrapper in your email to extend to the full width of the email client's window, and expand beyond the width of the main body content width of your design, you can click on any **Row** or **Wrapper** layer in your Emailify frame, then click the *Settings** button in the plugin header, and enable the **Force 100% width outside email** toggle option.

> **Note:** Please note, this toggle will only be available for any "Row" layers when the **Stack Columns in this Row** toggle is also enabled.

> **Tip:** You can [apply settings in bulk](/emailify/design/settings#apply-settings-in-bulk) by opening **Settings**, then selecting multiple Emailify layers of the same type in Figma. Any setting you change will be applied to all selected layers.

---

---
url: "/emailify/design/fundamentals.md"
description: "Before using Emailify to design and export HTML emails, it's very important to understand a few fundamentals about how the plugin works."
---

# Understanding how the Emailify plugin works

> Before using Emailify to design and export HTML emails, it's very important to understand a few fundamentals about how the plugin works.

> **Warning:** Emailify **does not support** any Figma email designs that were created outside of the plugin.

## Emailify Overview

Emailify helps you to design emails in Figma by providing a set of common starter components which you can then customize the content, styles and brand of using the normal design tools in Figma, then apply responsive styles and export the emails to production ready HTML.

### Emailify _does_...

- Provide you with starter components and design tools to create email layouts.
- Let you customize any text/image content, visual styles and links using Figma.
- Export your emails (designed with the Emailify plugin) to production-ready HTML.
- Integrate with email marketing platforms to upload HTML templates via API.

###  Emailify does _not_...

- Automatically convert Figma email designs that have been manually designed in Figma without using the Emailify plugin (if you have a design like this, you will need to recreate the design using the Emailify plugin's design tools to export it to HTML).
- Offer any special workarounds to overcome lacking email client support for certain HTML/CSS properties that are only supported in certain clients (eg. [overriding dark mode styles](https://www.caniemail.com/search/?s=dark%20mode) for Gmail or Outlook, or [displaying custom fonts](https://www.caniemail.com/features/css-at-font-face/) in non-Apple Mail clients)

## How is Emailify different from other email Figma plugins?

Unlike other Figma plugins that try to help you to export emails from Figma to HTML, Emailify does _not_ attempt to automatically take any Figma file that has been manually designed in Figma and then _magically_ turn it into HTML code that you can send via email.

### The problem with other "email design to HTML" Figma plugins

The fundamental problem with trying to convert _any_ manually designed Figma file of an email mockup to HTML is that **there is no concept of _intent_**.

The simplest example of this would be imagining what a "Frame" layer in Figma that contains a "Rectangle" layer and a "Text" layer inside of it is intended to be (by the designer):

- a clickable button?
- a single static image (with some text embedded inside of it)?
- a hero block with a background image, and some rich text sitting on top of it?
- a social icon link?

Even if a Figma plugin were able to correctly determine the intent of those 3 layers, this still doesn't also include any intent about how that element should look on mobile, if it should link somewhere when clicked, or if it has other attributes (like `alt` text), etc.

While the example above is tricky enough, this is being generous and providing the simplest example of understanding the intent of 3 Figma layers; the complexity only increases.

Knowing that a _real_ email mockup Figma design may contain thousands of layers, potentially nested inside of dozens (or hundreds) or other "frame" or "group" layers that also offer no information about how they should be rendered as HTML, it quickly becomes almost impossible to get the HTML output that you need based on the design input (hundreds of unstructured rectangles, frames, groups and text layers) you've created in Figma.

Due to HTML emails already being _very_ difficult to visually render consistenly across all email clients, we believe that it's way too risky to try and _infer_ the intent of the designer from an infinite number of possible Figma layer structures of every designer doing things differently.

### How Emailify solves the "intent" problem

**To resolve the intent problem**, Emailify takes a more opinionated "on-rails" approach to designing emails, where it helps you create special layers in Figma that map directly to _real_ HTML elements when you export your code; so the plugin understands exactly what each element of your email is intended to be (eg. a "Button" _is_ a button, a "Column" _is_ a column, etc).

For example, adding a _Button_ layer to your Figma email design using the Emailify plugin will create a brand new layer with some special data attached to it that tells Emailify that this _is_ a button, and not just a rectangle layer that may (or may not) be intended to be a "button".

By providing these design tools, it helps you to quickly create layouts and content elements that Emailify understands, and can then automatically export to HTML for you in a reliable way.

## What kind of designs can you create with Emailify and Figma?

[Video](/assets/videos/emailify/design/template-examples.mp4)

Emailify provides a bunch of tools to help you create layouts, when you can then customize the content and styles of using Figma, and also specifify responsive design for as well.

Using a combination of the tools that the plugin provides and using Figma for styling and content, you can create an email design that is totally customized and on-brand.

For some inspiration, please feel free to check out these [free Emailify compatible Figma templates](https://www.figma.com/@adambrock) (that were designed entirely with Emailify in Figma) as some inspration for email customization with your own brand.

Each Figma template also has a link to a full step by step video tutorial walkthrough in its Figma page description for additional context and reference for how it was created. You can also browse through [the full YouTube playlist](https://www.youtube.com/watch?v=_84LY0fL0Ag&list=PLUGeoZ1yrQAr2_hHBW7WXmXkExRQB1nXZ&index=2) for each of the Figma templates.

## Understanding the Figma layer structure in Emailify designs

When creating layouts for your emails using Emailify using the [starter components](/emailify/design/presets) and **Quick Add Element** (the dropdown at the bottom of the plugin) design tools, the plugin will automatically create the required layer structures for you.

**It's very important that you maintain this basic layer structure** and not do things like nesting these generated Figma layers inside of other Figma frames or groups that you've added manually in Figma, otherwise the plugin will get confused and treat those blocks as foreign layers (which are rendered as static images instead of rich text/HTML content).

### Example Emailify layer structure

To show a quick example of what this looks like, in the screenshot below, you can see a set of Figma layers that were automatically created by the Emailify plugin.

You will notice that there is a very consistent Figma layer structure: the parent email frame added by Emailify can contain one or more "Row" layers directly inside of it, which can each have one or more "Column" layers inside of each of those, and then each "Column" layer can contain one or more "Content" layers (eg. text, images, buttons etc).

![Basic Example of Emailify Layer Structure](/assets/images/emailify/example-layer-structure.jpg)

#### Basic Example of Emailify Layer Structure

- ✉️ Email
  - 🦸 Hero
    - ✍️ Text
    - ✍️ Text
    - 🔗 Button
      - ✍️ Button Text
  - 🚣 Row
    - 🏛️ Column
      - 📷 Image
    - 🏛️ Column
      - ✍️ Text
      - ✍️ Text
  - 🚣 Row
    - 🏛️ Column
      - 📷 Image
    - 🏛️ Column
      - 🪑 Data Table
        - 🪑🚣 Data Table Row
          - 🪑🏛️ Data Table Cell (Content)
            - 📷 Vector Icon
          - 🪑🏛️ Data Table Cell (Content)
            - ✍️ Text
        - 🪑🚣 Data Table Row
          - 🪑🏛️ Data Table Cell (Content)
            - 📷 Vector Icon
          - 🪑🏛️ Data Table Cell (Content)
            - ✍️ Text
  - 🚣 Row
    - 🏛️ Column
      - 📷 Image
      - ✍️ Text
      - 🐦 Social
        - 🔗 Social Icon Link
          - 📷 SVG Vector Icon
        - 🔗 Social Icon Link
          - 📷 SVG Vector Icon
        - 🔗 Social Icon Link
          - 📷 SVG Vector Icon
        - 🔗 Social Icon Link
          - 📷 SVG Vector Icon
      - 🍔 Navigation
        - 🔗 Nav Link
          - ✍️ Nav Link Text
        - 🔗 Nav Link
          - ✍️ Nav Link Text
  - 🚣 Row
    - 🏛️ Column
      - 🪑 Data Table
        - 🪑🚣 Data Table Row
          - 🪑🏛️ Data Table Cell (Content)
            - ✍️ Text
          - 🪑🏛️ Data Table Cell (Content)
            - ✍️ Text
        - 🪑🚣 Data Table Row
          - 🪑🏛️ Data Table Cell (Content)
            - ✍️ Text
          - 🪑🏛️ Data Table Cell (Content)
            - ✍️ Text
  - 🎁 Wrapper (For Multiple Rows)
    - 🚣 Row
      - 🏛️ Column
        - 📷 Image
      - 🏛️ Column
        - ✍️ Text
    - 🚣 Row
      - 🏛️ Column
        - 📷 Image
      - 🏛️ Column
        - ✍️ Text

### Emailify layer types you can use

To understand more about each layer type, you can ready about each of the individual [layout elements](/emailify/elements/email) and [design elements](/emailify/elements/text) in the Emailify documentation.

Again, it's very important that this structure is maintained, as moving these layers around out of order will cause the HTML not to render as expected (for example, you cannot put a "Row" inside of another "Row", or put a "Text" layer directly inside of an "Email" frame, or put a "Row" inside of a "Column etc").

The simplest way to make sure you're adding the correct structure is to add starter components from the Emailify plugin, and customise the cotent/styles as needed, without fundamentally changing the structure of your layout layers.

### Customizing your layers in Figma

### Video Tutorial: Design and export Emails from Figma to HTML

This video tutorial is a complete step-by-step guide showing you how to design and export production-ready, responsive HTML email from Figma using the Emailify plugin.
[Embedded media](https://www.youtube.com/embed/OWv4WX3eqvU)

When you a any Emailify component to your email, it's rendered onto your Figma canvas, where you can interact with the layers as you normally would (as if you had added the layers manually yourself).

For example, this means that for a text layer, you can update its content, change its font sizes, line-heights, letter spacings, paragraph spacing, and horizontal alignment using the regular Figma settings panel.

Emailify purposefully renders very basic elements, so you can then customise the images, text and layout values to match your own brand and styleguide.

> **Tip:** **Re-using components as Figma instances** Once you've customised a component, you can re-use it multiple times as a Figma instance, or even across other email designs in the future.

> **Note:** **Emailify content components use Figma's Auto-Layout**. The components included with Emailify are using auto-layout, making them really easy to adjust layout values like padding and space between columns or elements.

---

---
url: "/emailify/design/hero.md"
description: "You can add 🦸 Hero elements when you need to display a single column of rich text, buttons or other content elements on top of a background image."
---

# Adding hero background image blocks to your email designs

> You can add 🦸 Hero elements when you need to display a single column of rich text, buttons or other content elements on top of a background image.

[Video](/assets/videos/emailify/design/add-hero-block.mp4)

The quickest way to add a new Hero is either to [add a preset starter component](/emailify/design/presets) (mostly from the "CTA" tab) or to use the **Quick Add Element** dropdown at the bottom of the plugin to insert a new blank Hero layer to your email design, when your Emailify email Figma frame is selected.

This will add a brand new empty Hero layer with a placeholder background image fill set on it.

You can then start populating it with content layers and customizing the styles (eg. adding a background, adjusting [padding and spacing](/emailify/design/item-spacing), etc) in Figma as needed.

> **Tip:** If you need to use a background image for more than one column of content, you can also [add background images](/emailify/design/background-images) to any 🚣 Row or 🎁 Wrapper layers, or apply one directly to individual 🏛️ Column layers.

> **Warning:** **🦸 Hero** elements can only be added directly inside of ✉️ **Email** layers. **🦸 Hero** elements cannot contain any **🏛️ Column** layers, as it doesn't support multiple column layouts; instead, content layers are added directly inside of the frame, without needing any **🏛️ Column** layers (unlike a **🚣 Row** element).

---

---
url: "/emailify/design/hover.md"
description: "Add hover states for buttons and links with support notes and previews."
---

# Adding hover states

> Add hover states for buttons and links with support notes and previews.

> **Warning:** **Hover styles aren't supported everywhere**. Currently, [support for hover styles in email clients](https://www.caniemail.com/features/css-pseudo-class-hover/) is still relatively low; so please be aware of this and try to design your emails with the "progressive enhancement" of these hover styles in mind. If an email client doesn't support hover styles, the button's hover state will just fall back to looking the same as its normal state when the user hovers over it.

### Video Tutorial: Add hover effects to buttons in HTML emails from Figma

This video tutorial is a complete step-by-step guide showing you how to add hover effects to buttons in HTML emails from Figma using the Emailify Figma plugin.
[Embedded media](https://www.youtube.com/embed/8pydrphK6bU)

[Video](/assets/videos/emailify/design/button-hover-state.mp4)

You can apply hover states to any Emailify "🔗 Button" layer by selecting the layer while the **Settings** panel is open, then adding the hex color values and/or selecting the animated transition option you'd like to apply to the selected button layer on hover under the **Button Hover State** area.

You can set any/all of the following properties:

- Background Color
- Text Color
- Transition

You can [preview your hover states](/emailify/design/preview) using the preview HTML feature in the plugin.

## Adding hover states to text and navigation links

### Video Tutorial: Add hover colors to text links in HTML emails from Figma

This video tutorial is a complete step-by-step guide showing you how to add hover colors to text links in HTML emails from Figma using the Emailify Figma plugin.
[Embedded media](https://www.youtube.com/embed/T-HSfOhTTTw)

[Video](/assets/videos/emailify/design/link-hover-color.mp4)

You can apply hover states to any Emailify "✍️ Text" or "🍔 Navigation" layer by selecting the layer while the **Settings** panel is open, then adding the hex color value you'd like to apply to any text links in the selected layer on hover under the **Links Hover State** area.

You can also optionally enable the **Fade Transition** toggle, which will add a slight color transition to the link's text color change on hover.

You can [preview your hover states](/emailify/design/preview) using the preview HTML feature in the plugin.

> **Warning:** **Hover styles aren't supported everywhere**. Currently, [support for hover styles in email clients](https://www.caniemail.com/features/css-pseudo-class-hover/) is still relatively low; so please be aware of this and try to design your emails with the "progressive enhancement" of these hover styles in mind. If an email client doesn't support hover styles, the button's hover state will just fall back to looking the same as its normal state when the user hovers over it.

---

---
url: "/emailify/design/item-spacing.md"
description: "You can adjust the spacing between layers by tweaking the Item Spacing auto-layout property, and also use an Emailify spacer element for extra custom vertical spacing."
---

# Adding item spacing and spacer elements to your email designs

> You can adjust the spacing between layers by tweaking the Item Spacing auto-layout property, and also use an Emailify spacer element for extra custom vertical spacing.

## Changing the default auto-layout item spacing for your layers

[Video](/assets/videos/emailify/design/adding-item-spacing.mp4)

By adjusting the **Item Spacing** property for your Row, Column or other Emailify layout layers (like a Wrapper, Hero or Social icons container), you can define the default amount of spacing in-between the child elements inside of that layer.

For example, setting an item spacing value of `16` to a Column layer will distribute an even amount of spacing (16 pixels) in-between any elements (eg. text, images, buttons etc) inside of that Column layer.

## Adding custom vertical spacer elements to your columns

[Video](/assets/videos/emailify/design/adding-spacer-elements.mp4)

If you've already set your default item spacing, but still need an extra bit of vertical spacing between certain layers in your Column, you can add a special Emailify spacer element by clicking on your "Column" layer, then selecting the "Spacer" item from the Quick Add dropdown menu at the bottom of the plugin, and then clicking the **Add +** button to insert the spacer layer into your Column.

After the spacer layer has been added to your Column, you can drag and drop the layer in your layers panel to re-order which layers it sits between, and then you can adjust the size of it by adjusting the **Height** of the layer in its Figma layer properties panel.

> **Info:** Custom spacer elements will also have the default Item Spacing of its parent element surrounding it, so you take this into account when specifying the Height value of your spacer.

## Adding automatic vertical item spacing between your column layers

[Video](/assets/videos/emailify/design/vertical-auto-layout-split.mp4)

If you'd like to have a column layout style where one layer of content is at the top (eg. a text layer) of the column and the other layer is always at the buttom (eg. a button layer), with variable amount of spacing in between (depending on the content length), you can do this by setting your "Column" layer's vertical auto-layout setting to **Fill container**, and then setting the Item Spacing auto-layout setting to **Auto**.

> **Tip:** **Override the item spacing value for mobile**. If you're using this method to create a split vertical layout for your desktop design, you should also add a mobile override value for the Item Spacing by clicking on the same "Column" layer you applied the above steps to, then click the **Settings** button, enable the **Item Spacing** mobile override toggle, and enter a number value of your choice (in pixels) to make the item spacing a static and consistent size on mobile (regardless of the "auto" spacing size on desktop is).

## Adding custom vertical margin spacing between your text layer paragraphs

[Video](/assets/videos/emailify/design/paragraph-spacing.mp4)

You can customize the vertical spacing between paragraphs in your Figma text layers by opening the Figma text properties panel, then adjusting the **Paragraph spacing** value under the **Basics** tab. This will determine how much `margin-bottom` to add to the `` tags inside that text layer's content when your HTML email is generated.

> **Tip:** Please note that if you've added any extra paragraph lines (eg. pressing `Enter` or `Return` twice to create a double space), the _empty_ extra paragraph will still be included, and any custom paragraph spacing will also be added as `margin-bottom` underneath that, too. You can optionally remove these extra/blank paragraphs (as per the video above) to have finer control over the paragraph spacing in your text instead.

> **Tip:** You can [apply settings in bulk](/emailify/design/settings#apply-settings-in-bulk) by opening **Settings**, then selecting multiple Emailify layers of the same type in Figma. Any setting you change will be applied to all selected layers.

---

---
url: "/emailify/design/library.md"
description: "Load, organize, and search Emailify components from your Figma library."
---

# Creating a reusable component library

> Load, organize, and search Emailify components from your Figma library.

Any elements that you add to Figma from the Emailify plugin will automatically be added as native Figma components, which you can customize the style and content of; and any Emailify components inside your current Figma file can be accessed directly from the plugin by clicking on the **Library** icon button in the header tabs row.

## Adding components from your Component Library tab

### Video Tutorial: Create a component library for HTML email designs in Figma

This video tutorial is a complete step-by-step guide showing you how to design a Figma component library for HTML emails using the Emailify Figma plugin.
[Embedded media](https://www.youtube.com/embed/lQb9-_9maxs)

[Video](/assets/videos/emailify/load-component-library.mp4)

Clicking on the **Load all Emailify Components from this Figma file** will find and load previews of any Emailify Figma components in your file; clicking on any component in the plugin will automatically add it to the selected Emailify frame, just like any other category.

If you've added any new components to your Figma file since loading the initial components, you can click on the **Refresh** icon button in the plugin, which will re-check the Figma file for any Emailify components and include them in the list.

## Organizing your component library with custom categories

### Video Categories: Add custom categories for Figma email components

This video tutorial is a complete step-by-step guide showing you how to add custom categories for Figma email components using the Emailify Figma plugin.
[Embedded media](https://www.youtube.com/embed/M6p5AY2-g54)

[Video](/assets/videos/emailify/create-custom-categories.mp4)

By default, all of your Figma components will be _Uncategorized_, but you can optionally create your own custom categories by clicking on the **Pencil** icon button in the component library subheader tabs row.

This will allow you to create new custom categories, and then move components from any existing categories into any other category that you've added.

You can also remove a custom category at any time, which won't delete any of your Figma components, but will automatically move any components that were in that category back to the _Uncategorized_ category.

### Searching and sorting your Component Library

[Video](/assets/videos/emailify/search-and-sort-components.mp4)

To quickly find a custom Figma component in the component library tab, you can use the **Search** input field to filter down your components list by the layer name of any Figma component.

You can also sort the list of components by any of these options:

**Sort by Figma Layer Age**
- Newest to Oldest ↓
- Oldest to Newest ↑

**Sort by Figma Layer Name**
- Figma Layer Name ↓
- Figma Layer Name ↑

**Sort by Figma Layer Order**
- Figma Layer Order ↓
- Figma Layer Order ↑

**Sort Visually (Rows)**
- Visually Top to Bottom ↓
- Visually Bottom to Top ↑

**Sort Visually (Columns)**
- Visually Left to Right →
- Visually Right to Left ←

### Adding metadata to your Figma components

[Video](/assets/videos/emailify/figma-component-metadata.mp4)

You can add metadata to your Figma components by clicking on your component layer in Figma, and then clicking on the **Component configuration** icon button in the Figma right-hand side column next to the component name. This will allow you to enter some text for _How to use this component_ and a URL as a _Link to documentation_.

If these are present on any of your Emailify components, the label for your component in the component library tab will automatically be linked to your documentation URL, and the description of how to use the component will appear in the tooltip of the component when the thumbnail is hovered over.

---

---
url: "/emailify/design/mobile-hamburger-menu.md"
description: "You can optionally enable a togglable hamburger menu icon on any [Navigation](/emailify/content/link-nav-menu) element for mobile devices running Apple Mail on iOS."
---

# Enabling a collapseable hamburger menu toggle for your navbar layers (only supported in Apple Mail on iOS)

> You can optionally enable a togglable hamburger menu icon on any [Navigation](/emailify/content/link-nav-menu) element for mobile devices running Apple Mail on iOS.

[Video](/assets/videos/emailify/design/mobile-hamburger-menu.mp4)

You can enable the toggleable hamburger icon by clicking on any Emailify **Navigation** layer, then clicking the **Settings** layer in the plugin header, and toggling the **Enable Hamburger Menu** toggle option on or off.

If you've enabled the hamburger menu toggle, you can then also specify the **Alignemnt** (`Left`, `Center` or `Right`), the **Hamburger Icon Size** in pixels (eg. `44`) and the **Hamburger Icon Color** hex code (eg. `#000000`).

> **Warning:** Please treat this as a progressive enhancement, as **the Hamburger Menu feature only work on iOS with the Apple Mail email client**, for other email clients, the nav links will be displayed in a vertical list, and the hamburger icon won't be visible.

> **Tip:** You can [apply settings in bulk](/emailify/design/settings#apply-settings-in-bulk) by opening **Settings**, then selecting multiple Emailify layers of the same type in Figma. Any setting you change will be applied to all selected layers.

---

---
url: "/emailify/design/optimizing-html-file-size.md"
description: "The size of your final HTML will depend on the amount of content you've added to your email design."
---

# Optimizing Figma email layer structure to get smaller HTML export file sizes

> The size of your final HTML will depend on the amount of content you've added to your email design.

[Video](/assets/videos/emailify/design/optimize-layers.mp4)

Emailify automatically applies HTML minification and compression during your code exports from the plugin, so if your email is still over the [Gmail 102kb clipping limit](https://mailchimp.com/help/gmail-is-clipping-my-email/), you will need to either remove some content from your design, or try to consolidate content layers where possible.

For example, if you have multiple **Row** layers on top of each other, which all have the same background color, and all only contain a single **Column** layer in each row, you can shift all of the content layers inside of each **Column** into a single **Row**, with a single **Column** layer, which will allow you to delete all of the other (now empty) **Row** layers previously being used.

> **Tip:** Please note that **the file size of any images used do not count** towards the size of your `.html` file, so using smaller images won't have any impact on the size of your HTML code.

### Checking the file size of your HTML email in kilobytes (kb) before exporting your email

In the header of the [Preview](/emailify/design/preview) panel, you'll see a number that represents the total file size of your email's HTML (which is just the `.html` itself, not including any image assets). This can be helpful for knowing if you've gone over the [Gmail 102kb clipping limit](https://mailchimp.com/help/gmail-is-clipping-my-email/).

> **Warning:** **If your HTML size is over 102kb**, the file size in your preview window will be highlighted in yellow as a visual flag to indicate that your email has exceeded that limit.

---

---
url: "/emailify/design/padding.md"
description: "You can adjust the vertical and horizontal padding for your Emailify layout layers by updating the 'Padding' auto-layout property."
---

# Adding padding to your email design layouts

> You can adjust the vertical and horizontal padding for your Emailify layout layers by updating the 'Padding' auto-layout property.

## Adding padding to your layout layers

[Video](/assets/videos/emailify/design/adding-layout-padding.mp4)

To set the height of your layout layers and specify the amount of spacing at the top or bottom of them, you can adjust the **Vertical Padding** auto-layout property in Figma.

To set the width of the inner content inside your layout layers and specify the amount of spacing on the left or right of them, you can adjust the **Horizontal Padding** auto-layout property in Figma.

> **Warning:** You should always use **Padding** to set the height of any Row or Column layer (with the layer's auto-layout height property set to **Hug**). Setting **Fixed** heights in Figma won't be carried over to the final HTML, as the height of elements in HTML are determined by the size of their content (plus any top/bottom padding), so using **Padding** is the most reliable way to visually design your emails for exporting to HTML.

## Adding outer padding around multiple Row layers

[Video](/assets/videos/emailify/design/adding-outer-wrapper-padding.mp4)

If you have multiple rows that you'd like to add padding around, you can add a special [Wrapper](/emailify/design/wrappers) layout layer to your email by clicking on your Emailify frame, selecting **Row Wrapper** from the Quick Add dropdown menu options, and then clicking **Add +** to insert it into your email as a new Figma layer.

After you've added the Wrapper to your design, you can move your Row(s) into the new Wrapper layer and adjust you can adjust the **Horizontal Padding** and  **Vertical Padding** auto-layout properties in Figma to create outer padding around the Row layers inside of your Wrapper.

## Adding inner padding to your text layers

[Video](/assets/videos/emailify/design/text-padding.mp4)

You can optionally add inner text padding by selecting a Figma text layer in your email while the **Settings** panel is open, enabling the **Inner Padding** toggle, then adding any padding values you'd like to apply to the selected text layer.

This will add extra "inner" padding inside of your text layer when it's rendered to HTML, allowing you to specify padding values for certain text layers in your Column without affecting other layers.

> **Tip:** You can also optionally override any text layer padding on mobile by enabling the **Mobile Padding** toggle, then adding any padding values you'd like to apply to the selected text layer, which will only be visible when viewing your HTML email on mobile.

## Adding inner padding to your divider line layers

[Video](/assets/videos/emailify/design/divider-padding.mp4)

You can optionally add inner padding to your dividers by selecting an Emailify divider layer in your email while the **Settings** panel is open, enabling the **Inner Padding** toggle, then adding any padding values you'd like to apply to the selected divider layer.

This will add extra "inner" padding inside of your divider layer when it's rendered to HTML, allowing you to specify padding values for certain text layers in your Column without affecting other layers.

> **Tip:** You can also optionally override any Emailify divider layer padding on mobile by enabling the **Mobile Padding** toggle, then adding any padding values you'd like to apply to the selected divider layer, which will only be visible when viewing your HTML email on mobile.

---

---
url: "/emailify/design/paragraph-spacing.md"
description: "You can add custom spacing margins between paragraphs to any text layers in your email designs."
---

# Adding vertical spacing between your text layer paragraphs

> You can add custom spacing margins between paragraphs to any text layers in your email designs.

[Video](/assets/videos/emailify/design/paragraph-spacing.mp4)

You can customize the vertical spacing between paragraphs in your Figma text layers by opening the Figma text properties panel, then adjusting the **Paragraph spacing** value under the **Basics** tab. This will determine how much `margin-bottom` to add to the `` tags inside that text layer's content when your HTML email is generated.

> **Tip:** Please note that if you've added any extra paragraph lines (eg. pressing `Enter` or `Return` twice to create a double space), the _empty_ extra paragraph will still be included, and any custom paragraph spacing will also be added as `margin-bottom` underneath that, too. You can optionally remove these extra/blank paragraphs (as per the video above) to have finer control over the paragraph spacing in your text instead.

---

---
url: "/emailify/design/presets.md"
description: "The quickest way to start adding layout components to your email is by adding common design components directly from the Emailify plugin."
---

# Adding Emailify starter components to your email

> The quickest way to start adding layout components to your email is by adding common design components directly from the Emailify plugin.

[Video](/assets/videos/emailify/design/add-preset-components.mp4)

To browse the components available in the Emailify plugin, you can click on any of the category tabs under the plugin header bar. Clicking on each tab will reveal the components that the category contains, which you can then scroll up and down to visually browse the subcategories inside the selected tab.

> **Note:** To re-order any row added from the presets, you can click and drag the row up/down inside the Emailify container frame (which has auto-layout enabled) to change its position.

## Browsing the External Component Library

### Video Tutorial: Use 500+ free HTML email components in your Figma designs

This video tutorial is a complete step-by-step guide showing you how to use 500+ free HTML email components in your Figma designs with the Emailify Figma plugin.
[Embedded media](https://www.youtube.com/embed/zMUQ3tE76Vo)

[Video](/assets/videos/emailify/design/external-component-library.mp4)

In addition to the built-in components available in the Emailify plugin, you can browse and use components from external component libraries through the Emailify web app. This allows you to access a wider range of pre-built email components that can be copied directly into your Figma designs.

To use components from the external library:

1. Visit the [Emailify web app](https://emailify.hypermatic.com) to browse the full catalog of available email components
2. Filter components by category, template usage, or search for specific elements
3. Click the **Copy Figma Component** button on any component to copy its HTML snippet to your clipboard
4. In Figma, select an Emailify frame where you want to paste the component
5. Paste the component directly into the Emailify frame using **Cmd+V** (Mac) or **Ctrl+V** (Windows)

The pasted component will automatically integrate with your email design and can be customized just like any other Emailify component.

> **Note:** Components from the external library are designed to work seamlessly with Emailify's auto-layout system, so they can be reordered by dragging them up or down within your Emailify container frame.

## Starter Component Categories

Emailify sorts components into a few categories (and subcategories) to make it easier to browse for what you need in your email design.

### Headers

Typically used at the top of your email; these can be components like a brand logo, "view online" links, a navigation menu, social icons etc.

### Images

These are components for displaying image content; these can be components like a full width image, background image (for adding text on top of), logo grid, image cards, grids and captions.

### Content

Includes many different components for displaying text-based content; these can be components like simple paragraphs, quotes/tesimonials, author avatars, article cards, feature icons, stats, promo codes and product cards.

### Ecomm (E-Commerce)

Offers some common components that might be used for displaying products or elements related to a post-checkout email, and also includes some Klaviyo-specific components for displaying dynamic product grids for that platform.

### CTAs (Call To Action)

These components are primarily used for asking the user to click something or take an action; these can be components like buttons, links, background image heroes, video thumbnails, feature tiles, app store buttons, social media icons and product heroes.

### Footer

Typically used at the bottom of your email; these can be components for displaying your brand logo and address details, social media links, unsubscribe links or app download buttons.

> **Tip:** Any components you add in another category will automatically be "bookmarked" to the Favourites category to make it easy to access them again later. You also have the option to remove any components from your favourites by clicking on the **Trash** icon; this will remove the component from your favourites list, but won't "delete" it from the other categories.

---

---
url: "/emailify/design/preview.md"
description: "The preview window in Emailify will allow you to see and interact with your email in real HTML before you export it."
---

# Previewing your HTML email in Figma

> The preview window in Emailify will allow you to see and interact with your email in real HTML before you export it.

[Video](/assets/videos/emailify/design/preview-email.mp4)

 Clicking on the **Preview** button in the Emailify plugin header will automatically generate a real HTML preview of your email directly inside the Figma plugin.

 While the preview window is open, updates you make to your Emailify layers in Figma are reflected in real time in the HTML preview.

> **Info:** **GIFs** are displayed as static images in preview mode to speed up the preview loading (due to GIFs taking longer to render), but they will be animated in your final HTML exports from the plugin.

> **Tip:** You can edit any mobile overrides while in the preview window is open by clicking on the **Settings** button in the preview panel header.

### Previewing your email at different device widths

To see how it looks on different device widths, click on the select box in the header of the preview panel, and choose from the options below:

- Desktop (**726px** Wide)
- iPhone 15 Pro Max (**430px** Wide)
- iPhone 15 (**393px** Wide)
- iPhone 13 Mini (**375px** Wide)
- iPhone 12 Mini (**360px** Wide)
- iPhone SE (**320px** Wide)

> **Note:** **Mobile breakpoint for the emails**. The HTML emails exported from Emailify have a single "breakpoint" that's automatically set by the width of the desktop frame in Figma; for example, if your Emailify frame is 600px, the mobile styles/overrides will start showing at 599px and below.

> **Tip:** Keeping the width of the email **between 600px - 640px** is typically recommended, as some email client/app's inbox reader panels can be less than 700px wide, which would render the mobile styles at that width instead of the desktop layout.

## Live preview changes in HTML preview window from Figma

With the HTML preview open, you can keep editing your Figma layers and immediately see those changes update in the preview window, without needing to click **Refresh** each time.

[Video](/assets/videos/emailify/design/live-preview-edits-desktop.mp4)

## Toggling emulated dark mode in the HTML preview window

[Video](/assets/videos/emailify/design/emulate-dark-mode.mp4)

> **Warning:** The [support for dark mode override styles](https://www.caniemail.com/features/css-at-media-prefers-color-scheme/) in email clients is limited to Apple Mail on iOS/MacOS; which means dark mode overrides _will not work_ on any other clients like Gmail, Outlook etc. Please be aware of this and try to design your emails with the [progressive enhancement](https://www.litmus.com/blog/the-ultimate-guide-to-dark-mode-for-email-marketers/) in mind.

Enabling the **Emulated Dark Mode** toggle in the plugin's preview panel will allow you to see an _approximate_ visual of what your design will look like when it's viewed on a device with dark mode enabled by emulating some of the changes that they apply.

This preview mode will also allow you to easily see any of the background color, text color or dark/light image swaps that you've added in the Emailify [dark mode override](/emailify/design/dark-mode) settings.

> **Tip:** To _accurately_ see what your design looks like in [email clients that support dark mode overrides](https://www.caniemail.com/features/css-at-media-prefers-color-scheme/), it's always worth doing a test of your own emails using a service like [Litmus](https://www.litmus.com/) or [Email on Acid](https://www.emailonacid.com/), just to ensure they're looking good before you send them out.

_Please note_ that different email clients (that have dark mode support) will apply their own dark mode overrides automatically to invert and update colors to try and maximize readability and contrast, so it's always worth doing a test of your own emails using a service like [Litmus](https://www.litmus.com/) or [Email on Acid](https://www.emailonacid.com/) to accurately see how they're rendered in all email clients in dark mode.

It's also worth using [some other clever design techniques](https://www.campaignmonitor.com/blog/email-marketing/designing-an-email-for-dark-mode-dark-and-light-optimization/) for creating your email with dark mode in mind as a fallback with other email clients, too.

## Checking the file size of your HTML email in kilobytes (kb)

In the header of the preview panel, you'll see a number that represents the total file size of your email's HTML (which is just the `.html` itself, not including any image assets). This can be helpful for knowing if you've gone over the [Gmail 102kb clipping limit](https://mailchimp.com/help/gmail-is-clipping-my-email/).

> **Warning:** **If your HTML size is over 102kb**, the file size in your preview window will be highlighted in yellow as a visual flag to indicate that your email has exceeded that limit.

> **Tip:** [Reducing or consolidating the number of "Row" layers in your email](/emailify/design/optimizing-html-file-size) is the best way to reduce your HTML file size.

## Previewing web safe font fallbacks in your email

[Video](/assets/videos/emailify/design/preview-font-fallbacks.mp4)

If you've specified any web safe [fallback fonts](/emailify/design/fonts) for custom web fonts in your email, you can preview how they will look by toggling the **Show Fallback Fonts** switch at the bottom of the Emailify preview window.

## Auto-layout linting (and auto-fixing) for Emailify layers

[Video](/assets/videos/emailify/design/linter-auto-fix.mp4)

When previewing your HTML in the **Preview** feature of the plugin, it will automatically detect if any of your layers that were added via the Emailify plugin still have the correct Figma auto-layout properties to ensure a visually consistent export to HTML.

It will show you a list of layers that need to have their auto-layout properties tweaked (eg. changing "Fixed" height to "Hug"); you can optionally automatically apply these changes by clicking the **Apply all Layer Fixes**, which will update the Figma layers flagged with the auto-layout property tweaks that are required.

## Manually moving and resolving Emailify layers that are in the wrong place

[Video](/assets/videos/emailify/design/manual-move-layers.mp4)

When previewing your HTML in the **Preview** feature of the plugin, it will automatically detect if any of your layers that were added via the Emailify plugin are still in the correct structure that they were created with (eg. Row Layer -> Column(s) Layers -> Content Layers) to ensure a visually consistent export to HTML.

It will show you a list of layers that need to to be manually moved, along with instructions for each item (eg. "Move this Row layer back into the main Email frame"), and a button to instantly jump to the layer on your page and in your Figma layer's list, making it easier to find and move as required.

> **Tip:** You can [apply settings in bulk](/emailify/design/settings#apply-settings-in-bulk) by opening **Settings**, then selecting multiple Emailify layers of the same type in Figma. Any setting you change will be applied to all selected layers.

---

---
url: "/emailify/design/responsive.md"
description: "Emailify allows you to have extra control over how each element of your email renders on mobile by using the Settings panel."
---

# Add responsive mobile override settings for your email layers

> Emailify allows you to have extra control over how each element of your email renders on mobile by using the Settings panel.

[Video](/assets/videos/emailify/design/live-preview-edits-mobile.mp4)

To add mobile style overrides, click on any Emailify layer in your design, then click the **Settings** button in the plugin header, and apply any desired mobile style overrides for the selected layer as needed.

For example, clicking on a Text layer in your email will allow you to override its font size, line height, letter spacing, paragraph spacing, padding and alignment for mobile; whereas clicking on a Row layer in your email will allow you to override its padding, the item spacing between its columns, whether it should stack the columns on mobile (or not), and when multiple columns still share a mobile row, their vertical alignment on mobile.

You can visually preview your mobile overrides using the [preview](/emailify/design/preview) feature in the Emailify plugin.

> **Note:** **Mobile breakpoint for the emails**. The HTML emails exported from Emailify have a single "breakpoint" that's automatically set by the width of the desktop frame in Figma; for example, if your Emailify frame is 600px, the mobile styles/overrides will start showing at 599px and below.

> **Tip:** Keeping the width of the email **between 600px - 640px** is typically recommended, as some email client/app's inbox reader panels can be less than 700px wide, which would render the mobile styles at that width instead of the desktop layout.

> **Tip:** You can [apply settings in bulk](/emailify/design/settings#apply-settings-in-bulk) by opening **Settings**, then selecting multiple Emailify layers of the same type in Figma. Any setting you change will be applied to all selected layers.

---

---
url: "/emailify/design/reverse-columns.md"
description: "You can visually reverse the order of the Columns within a Row inside your email on desktop, while preserving the natural stacking order on mobile."
---

# Reversing the column order for a row on desktop

> You can visually reverse the order of the Columns within a Row inside your email on desktop, while preserving the natural stacking order on mobile.

[Video](/assets/videos/emailify/design/reverse-column-order.mp4)

The order of your Column layers in Figma will always determine how they stack on mobile (eg. any Column layers on the left will always stack on top of any columns to the right), but sometimes you may want to have a different order of these Columns on desktop.

You can achieve this effect by clicking on the Row layer you want to reverse the Column layers of on desktop, then clicking the **Settings** button in the plugin header menu, and enabling the **Reverse desktop column order** toggle.

You can visually preview your visual order column overrides using the [preview HTML](/emailify/design/preview) feature in the plugin.

> **Tip:** You can [apply settings in bulk](/emailify/design/settings#apply-settings-in-bulk) by opening **Settings**, then selecting multiple Emailify layers of the same type in Figma. Any setting you change will be applied to all selected layers.

---

---
url: "/emailify/design/rows.md"
description: "Emailify designs are made up of **🚣 Row** layers, which use a horizontal auto-layout to render 🏛️ **Column** layers and create layouts to display your content layers."
---

# Adding rows to your email designs

> Emailify designs are made up of **🚣 Row** layers, which use a horizontal auto-layout to render 🏛️ **Column** layers and create layouts to display your content layers.

[Video](/assets/videos/emailify/design/adding-new-rows.mp4)

The quickest way to add a new Row is either to [add a preset starter component](/emailify/design/presets) or to use the **Quick Add Element** dropdown at the bottom of the plugin to insert a new blank Row layer to your email design, when your Emailify email Figma frame is selected.

This will add a brand new empty Row layer with a single Column layer inside of it, which you can then start populating with content layers and customizing the styles (eg. adding a background, adjusting [padding and spacing](/emailify/design/item-spacing), etc) in Figma as needed.

> **Warning:** **🚣 Row** layers can only be added directly to an ✉️ **Email** frame, and can only contain one or more 🏛️ **Column** layers inside of it.

---

---
url: "/emailify/design/settings.md"
description: "Learn how to open the Settings panel for any Emailify layer, apply layer attributes, and apply settings in bulk to multiple same-type layers."
---

# Open and use layer settings in Emailify

> Learn how to open the Settings panel for any Emailify layer, apply layer attributes, and apply settings in bulk to multiple same-type layers.

Emailify lets you apply HTML attributes and responsive overrides from the **Settings** panel for any supported Emailify layer in your design.

## Open layer settings

[Video](/assets/videos/emailify/design/live-preview-edits-mobile.mp4)

1. Select any Emailify layer in your Figma design (for example: Text, Image, Button, Row, Column, Wrapper, Hero, Social Icon Link, Navigation Link).
2. Click the **Settings** button in the Emailify plugin panel (or in the HTML preview window).
3. Update any available attributes for that selected layer.

Depending on the layer type, this includes options like clickable URL links, image alt text, show/hide controls, mobile overrides, dark mode overrides, and other HTML export attributes.

## Apply settings in bulk

[Video](/assets/videos/emailify/design/bulk-apply-email-settings.mp4)

You can also apply settings to multiple layers at once.

1. Multi-select two or more Emailify layers of the same type in Figma (for example, multiple text layers or multiple image layers).
2. Open the **Settings** panel.
3. Confirm **Bulk Edit Mode** is active.
4. Change any setting value in the panel.

When Bulk Edit Mode is active, setting changes are applied to all selected layers of that same type.

If selected layers have different existing values, Emailify will detect and report mixed values. Changing a setting will override that specific setting across all selected layers.

## Next steps

- To preview mobile/desktop results after changing settings, use the HTML preview panel: [Preview HTML emails](/emailify/design/preview)
- To learn about mobile overrides in detail, see: [Mobile style overrides](/emailify/design/responsive)

---

---
url: "/emailify/design/show-hide.md"
description: "Show or hide layers on mobile or desktop, including separate image variants for each viewport."
---

# Showing and hiding elements in your emails on desktop or mobile

> Show or hide layers on mobile or desktop, including separate image variants for each viewport.

## Hiding a layer from displaying on mobile or desktop

[Video](/assets/videos/emailify/design/mobile-desktop-hide.mp4)

If you'd like to hide a certain element on mobile or desktop for any reason, you can do this by clicking on the **Settings** button in the plugin header, then click any layer in your Emailify container frame and enable the **Hide On Mobile** toggle to hide the element on mobile, or enable on the **Hide On Desktop** toggle to hide the element on desktop.

You can [visually preview your visibility overrides](/emailify/design/preview) using the preview HTML feature in the plugin.

## Using separate image layers for mobile and desktop

[Video](/assets/videos/emailify/design/swap-images-mobile-desktop.mp4)

To achieve the effect of showing a variation of a content element on mobile and another on desktop, you can duplicate the Figma layer, open the **Settings** panel with either image selected, and then set one to **Hide on Mobile** and the other to **Hide on Desktop**, which will ensure that each only appears on desktop or mobile.

Please note that this should be done sparingly, as it will add some extra code to your HTML export each time because both image layers are exported as normal image elements with their own visibility settings.

> **Tip:** You can [apply settings in bulk](/emailify/design/settings#apply-settings-in-bulk) by opening **Settings**, then selecting multiple Emailify layers of the same type in Figma. Any setting you change will be applied to all selected layers.

---

---
url: "/emailify/design/stack-mobile-columns.md"
description: "By default, any **Column** layers in your email design's Row layers will be stacked on mobile, but you can configure this per Row based on what you prefer them to do."
---

# Stacking (or not stacking) columns layers inside your rows on mobile

> By default, any **Column** layers in your email design's Row layers will be stacked on mobile, but you can configure this per Row based on what you prefer them to do.

[Video](/assets/videos/emailify/design/stack-mobile-columns.mp4)

By default, any Column layers in your designs will be set to stack on mobile (unless you're using a preset component where this is already turned off prior to match its intent).

You can change this behavior on mobile by clicking on any **Row** layer, then clicking the **Settings** layer in the plugin header, and toggling the **Stack Columns in this Row** toggle option on or off.

> **Note:** If you're using a more than 2 **Column** layers in your **Row**, you may want to consider keeping them set as stacked, otherwise the content inside of them can become very narrow and small on smaller mobile device screens.

## Overriding the number of stacked columns on mobile

By default, enabling the **Stack Columns in this Row** toggle option will stack all the Column layers in your Row into a single column, but you can optionally override this by selecting any of the options in the dropdown selector next to the toggle in the plugin:

- 1 Column Per Row on Mobile
- 2 Columns Per Row on Mobile
- 3 Columns Per Row on Mobile
- 4 Columns Per Row on Mobile

For example, if you have a Row in your with with 4 Columns, you could select the _2 Columns Per Row on Mobile_ option and that would ensure your columns are stacked in 2 columns across 2 rows (displaying as a "grid" of 4) when the row is viewed on mobile.

> **Note:** Please ensure you only select a dropdown value that makes sense for your number of columns; for example, setting the dropdown option to _3 Columns Per Row on Mobile_, if your Row only contains 2 columns in the design, would result in those 2 columns having a width of `33%` each, which won't take up the entire screen width on mobile and may look broken or strange.

## Overriding vertical alignment for mobile column rows

If your Row still keeps multiple Column layers side by side on mobile, you can also override how those columns vertically align against each other for that mobile row. To do this, click on your **Row** layer, enable the **Override Column Vertical Align on Mobile** toggle, then choose **Top**, **Middle** or **Bottom** from the dropdown selector next to it.

This mobile vertical alignment override is only enabled when your Row still has multiple columns on mobile, which means either:

- the **Stack Columns In This Row** toggle is turned off, or
- the toggle is turned on and the dropdown is set to more than **1 Column Per Row on Mobile**

> **Tip:** You can [apply settings in bulk](/emailify/design/settings#apply-settings-in-bulk) by opening **Settings**, then selecting multiple Emailify layers of the same type in Figma. Any setting you change will be applied to all selected layers.

---

---
url: "/emailify/design/superscript-and-subscript.md"
description: "You can add superscript and subscript HTML tags to any text paragraphs in your email designs by applying those settings to areas of your content using the native Figma text properties."
---

# Adding superscript and subscript text to your paragraphs

> You can add superscript and subscript HTML tags to any text paragraphs in your email designs by applying those settings to areas of your content using the native Figma text properties.

[Video](/assets/videos/emailify/design/sub-sup-scripts.mp4)

You can add [superscript or subscript](https://help.figma.com/hc/en-us/articles/360039956634-Explore-text-properties#h_01G6682GY2AHM7ETNZRPTQD5FY) styles to any characters in a text paragraph by selecting a Figma text layer in your email, then applying a **Superscript** or **Subscript** value in the Figma **Type Settings** panel (under the **Details** tab), and these will automatically be rendered as `` and `` tags when you export (or preview) your email to HTML via the plugin.

---

---
url: "/emailify/design/templates.md"
description: "You can browse 100+ free Figma templates, which were all designed using the Emailify plugin to ensure they look great for HTML exports, and duplicate them into your own Figma account to reference, customize or mix and match."
---

# Duplicating a free Emailify-ready Figma starter template

> You can browse 100+ free Figma templates, which were all designed using the Emailify plugin to ensure they look great for HTML exports, and duplicate them into your own Figma account to reference, customize or mix and match.

### Video Tutorial: Use free Figma email templates to design HTML emails

This video tutorial is a complete step-by-step guide showing you how to use free Figma email templates to design HTML emails with the Emailify Figma Plugin.
  [Embedded media](https://www.youtube.com/embed/lLCTEAAoCWY
)

[Video](/assets/videos/emailify/design/email-templates.mp4)

> **Tip:** The Figma templates included with Emailify are **100% free to use for your own personal and commercial projects**, and are designed to help you become more familiar with what kind of layouts and components the plugin can help you to create.

If you're looking for inspiration or would like to copy/paste and customize some pre-designed Emailify-ready layouts or components with your own brand/content, you can [duplicate a Figma Community file](https://help.figma.com/hc/en-us/articles/360038510873-Duplicate-Community-files) by clicking on the **Browse Figma Emailify Templates** tab, and then clicking on any of the template thumbnails to load up the Figma template inside the Figma Community.

Once the Figma Community file page loads, you can duplicate the Figma email template by clicking the **Open in Figma** button, then chosing the Figma account you'd like the Figma file to be duplicated into as a new draft.

After you open up the new duplicated Figma file containing the Emailify frame, you can re-run the Emailify plugin to preview it as HTML, and then customize the design however you like, or you're welcome to copy/paste certain "Row" layers or elements into your own Emailify frame to mix and match parts from different Emailify starter templates.

---

---
url: "/emailify/design/text-background-color.md"
description: "You can customize the backgrounds of your Emailify text layers by setting a solid background color on them via the plugin settings panel."
---

# Setting a solid background color on text layers

> You can customize the backgrounds of your Emailify text layers by setting a solid background color on them via the plugin settings panel.

[Video](/assets/videos/emailify/design/text-background.mp4)

To set a solid background color on text layers in your email design by selecting a Figma text layer in your email while the **Settings** panel is open, pasting in your hex color value (eg. `#FFFBA8`) into the **Text Background Color** input field. This will automatically add a solid background color behind that text content in your HTML email.

> **Tip:** You can also optionally combine setting a background color on your text layer with [adding inner padding to your text layer](/emailify/design/text-padding), which will provide some additional padding around the text content and give the background area some padding.

---

---
url: "/emailify/design/text-indents.md"
description: "You can add text indentation or hanging punctuation to any text paragraphs in your email designs"
---

# Adding a text indents or hanging punctuation to your paragraphs

> You can add text indentation or hanging punctuation to any text paragraphs in your email designs

## Adding text indentation to your paragraph

[Video](/assets/videos/emailify/design/text-indentation.mp4)

You can add text indentation to the first line of any paragraph by selecting a Figma text layer in your email, then applying a Paragraph Indent value in the Figma **Type Settings** panel (under the **Details** tab).

## Adding hanging punctuation (negative text indentation) to your paragraph

[Video](/assets/videos/emailify/design/hanging-punctuation.mp4)

Figma doesn't allow negative paragraph indent values; so as a workaround, the plugin will still let you use a _negative_ text indent value by enabling the **Hanging Punctuation** setting on the text layer, which will use the Paragraph Indent value in the Figma **Type Settings** panel (under the **Details** tab) on the text layer as a _negative_ value, to get around Figma not allowing negative values in their UI.

---

---
url: "/emailify/design/text-padding.md"
description: "You can add inner text padding to any text layers in your email designs via the plugin settings panel"
---

# Adding inner padding to your text layers

> You can add inner text padding to any text layers in your email designs via the plugin settings panel

[Video](/assets/videos/emailify/design/text-padding.mp4)

You can optionally add inner text padding by selecting a Figma text layer in your email while the **Settings** panel is open, enabling the **Inner Padding** toggle, then adding any padding values you'd like to apply to the selected text layer.

This will add extra "inner" padding inside of your text layer when it's rendered to HTML, allowing you to specify padding values for certain text layers in your Column without affecting other layers.

> **Tip:** You can also optionally override any text layer padding on mobile by enabling the **Mobile Padding** toggle, then adding any padding values you'd like to apply to the selected text layer, which will only be visible when viewing your HTML email on mobile.

---

---
url: "/emailify/design/wrappers.md"
description: "You can wrap multiple **🚣 Row** inside of the special **🎁 Wrapper** layer type in the cases where you need to have outer padding and background color around certain rows."
---

# Wrapping multiple rows in your email designs

> You can wrap multiple **🚣 Row** inside of the special **🎁 Wrapper** layer type in the cases where you need to have outer padding and background color around certain rows.

[Video](/assets/videos/emailify/design/add-row-wrapper.mp4)

The quickest way to add a new Wrapper is to use the **Quick Add Element** dropdown at the bottom of the plugin to insert a new blank Wrapper layer to your email design, when your Emailify email Figma frame is selected.

This will add a brand new empty Wrapper layer with a single empty Row layer inside of it, which you can then start populating with content layers, or drag and drop existing Row layers from your email into.

> **Warning:** **🎁 Wrapper** layers can only be added directly to an ✉️ **Email** frame, and can only contain one or more **🚣 Row** layers inside of it.

---

---
url: "/emailify/elements/button.md"
description: "Add CTA buttons with link settings for Emailify email exports."
---

# Button

> Add CTA buttons with link settings for Emailify email exports.

The 🔗 **Button** element layer allows you to include CTA (call to action) links into your emails with the style of a button. These can be styled in Figma to match the size, color, line-height, letter-spacing etc of your designs. You can also

## Add hyperlinks to button layers

You can add hyperlinks to your 🔗 **Button** layers by clicking the **Settings** button in the Emailify plugin header, then clicking on your 🔗 **Button** layer; this will allow you to paste your URL into the link input field.

This URL will automatically be converted into an `` link tag when the email is exported out to exported HTML.

## Using the "Quick Add" feature to add new Emailify layers

[Video](/assets/videos/emailify/element-contexts.mp4)

Emailify allows you to build out your designs using special layout blocks and content elements that are added as layers to your Figma designs, and allows them to be exported out to HTML from the plugin.

To add these layout blocks and content elements, ensure that you have created at least one Emailify frame, and then click on that frame to automatically reveal the **Quick Add Element** context menu at the bottom of the plugin, then click the desired element, and click the **Add +** button to add it to the selected layer.

> **Tip:** The options that are available in the context menu will change based on your current Figma layer selection.

> **Tip:** You can [apply settings in bulk](/emailify/design/settings#apply-settings-in-bulk) by opening **Settings**, then selecting multiple Emailify layers of the same type in Figma. Any setting you change will be applied to all selected layers.

---

---
url: "/emailify/elements/carousel.md"
description: "Add interactive image carousels with optional thumbnails and Outlook fallback details."
---

# Image Carousel

> Add interactive image carousels with optional thumbnails and Outlook fallback details.

The 🎠 **Image Carousel** element layer allows you to add an interactive image carousel that can be navigated with left/right arrows and (optional) thumbnails.

> **Tip:** **Customise image carousel thumbnails**. You can customise the appearance of your 🎠 **Image Carousel** component's thumbnails by clicking the **Settings** button in the Emailify plugin header, then clicking on your 🎠 **Image Carousel** layer; this will allow you modify things like the thumbnail size, if it's shown on desktop/mobile, and other things like active/hover border colors and item spacing.

> **Warning:** **Image carousels not supported in Outlook**. Please note that if you're viewined the 🎠 **Image Carousel**  component on Outlook email clients, it will fallback to only displaying the first image in your carousel slides instead. Unfortunately, Outlook doesn't support the features required for the interactive image carousel to work. Understanding this limitation, please be mindful of this and design your emails with "progressive enhancement" in mind for any email clients that won't be able to see all of your images, and ensure that the first "fallback" image that will be shown is the most important one, and any additional slides aren't essential to the messaging of the email itself.

## 🎠 Image Carousel Elements

These options will be visible when an 🎠 **Image Carousel** Figma layer is selected:

- 🎠 [Carousel Image](#carousel-image)

### Carousel Image

The **🎠📷 Carousel Image** element allow you to add more image slides to your existing 🎠 **Image Carousel** parent elements.

## Using the "Quick Add" feature to add new Emailify layers

[Video](/assets/videos/emailify/element-contexts.mp4)

Emailify allows you to build out your designs using special layout blocks and content elements that are added as layers to your Figma designs, and allows them to be exported out to HTML from the plugin.

To add these layout blocks and content elements, ensure that you have created at least one Emailify frame, and then click on that frame to automatically reveal the **Quick Add Element** context menu at the bottom of the plugin, then click the desired element, and click the **Add +** button to add it to the selected layer.

> **Tip:** The options that are available in the context menu will change based on your current Figma layer selection.

> **Tip:** You can [apply settings in bulk](/emailify/design/settings#apply-settings-in-bulk) by opening **Settings**, then selecting multiple Emailify layers of the same type in Figma. Any setting you change will be applied to all selected layers.

---

---
url: "/emailify/elements/code.md"
description: "Insert custom code blocks between Emailify layout elements in the email frame."
---

# Custom Code

> Insert custom code blocks between Emailify layout elements in the email frame.

[Video](/assets/videos/emailify/content/custom-code-elements.mp4)

If you need to add any custom code _in between_ any elements in your ✉️ **Email** frame, such as platform specific template/conditional tags, you can insert a **🧑‍💻 Custom Code** layer to do this. It will be added as a Figma text layer, which you can paste your custom code into, and have that rendered out as plain code when the email gets exported to HTML.

> **Warning:** **Code layers can't be nested**. **🧑‍💻 Custom Code** layers can only be added directly to an ✉️ **Email** frame as a way to inject custom code blocks _between_ 🚣 Content Row, 🦸 Hero and 🎁 Row Wrapper layers in your email design.

## Using the "Quick Add" feature to add new Emailify layers

[Video](/assets/videos/emailify/element-contexts.mp4)

Emailify allows you to build out your designs using special layout blocks and content elements that are added as layers to your Figma designs, and allows them to be exported out to HTML from the plugin.

To add these layout blocks and content elements, ensure that you have created at least one Emailify frame, and then click on that frame to automatically reveal the **Quick Add Element** context menu at the bottom of the plugin, then click the desired element, and click the **Add +** button to add it to the selected layer.

> **Tip:** The options that are available in the context menu will change based on your current Figma layer selection.

---

---
url: "/emailify/elements/column.md"
description: "Use content columns inside rows to hold text, images, buttons, and other elements."
---

# Content Column

> Use content columns inside rows to hold text, images, buttons, and other elements.

**🏛️ Content** elements and are used to create a single or multiple column layouts which hold the actual content layers.

> **Warning:** **Column layers can't be nested**. **🏛️ Column** elements can only be added directly inside of 🚣 **Row** layers. If you need multiple rows of columns, you'll need to create brand new 🚣 **Row** for each row of columns you need.

> **Note:** **🏛️ Column layers can include background images and gradients** in Emailify preview and HTML-rendered exports. You can also add image and/or gradient background fills to top level 🚣 **Row**, 🦸 **Hero** and 🎁 **Wrapper** layers. Raw `mjml` and `loops` exports still omit Column background image attributes.

## Column Content Elements

These options will be visible when a 🏛️ **Column** Figma layer is selected:

- ✍️ [Text](/emailify/elements/text)
- 📷 [Image](/emailify/elements/image)
- 🔗 [Button](/emailify/elements/button)
- 📐 [Spacer](/emailify/elements/spacer)
- ➖ [Divider Line](/emailify/elements/divider)
- 🧾 [Spreadsheet (Import)](/emailify/elements/spreadsheet)
- 🪑 [Data Table](/emailify/elements/table)
- 🍔 [Navigation Links](/emailify/elements/navbar)
- 🐦 [Social](/emailify/elements/social)
- 🎠 [Image Carousel](/emailify/elements/carousel)

## Using the "Quick Add" feature to add new Emailify layers

[Video](/assets/videos/emailify/element-contexts.mp4)

Emailify allows you to build out your designs using special layout blocks and content elements that are added as layers to your Figma designs, and allows them to be exported out to HTML from the plugin.

To add these layout blocks and content elements, ensure that you have created at least one Emailify frame, and then click on that frame to automatically reveal the **Quick Add Element** context menu at the bottom of the plugin, then click the desired element, and click the **Add +** button to add it to the selected layer.

> **Tip:** The options that are available in the context menu will change based on your current Figma layer selection.

---

---
url: "/emailify/elements/divider.md"
description: "Add divider lines to separate content inside Emailify layouts."
---

# Divider Line

> Add divider lines to separate content inside Emailify layouts.

The **➖ Divider Line**  element layer allows you to create a solid color divider line between your content elements, this can be used as a visual way to break up content inside of a column or hero block.

## Using the "Quick Add" feature to add new Emailify layers

[Video](/assets/videos/emailify/element-contexts.mp4)

Emailify allows you to build out your designs using special layout blocks and content elements that are added as layers to your Figma designs, and allows them to be exported out to HTML from the plugin.

To add these layout blocks and content elements, ensure that you have created at least one Emailify frame, and then click on that frame to automatically reveal the **Quick Add Element** context menu at the bottom of the plugin, then click the desired element, and click the **Add +** button to add it to the selected layer.

> **Tip:** The options that are available in the context menu will change based on your current Figma layer selection.

---

---
url: "/emailify/elements/email.md"
description: "Start with the Email frame and add rows, heroes, wrappers, and custom code."
---

# Email Frame

> Start with the Email frame and add rows, heroes, wrappers, and custom code.

Every email design in Emailify starts with a special blank email Figma frame, which you'll be able to fill up with Emailify layout elements.

## Email Frame Elements

These options will be visible when an ✉️ **Email** Figma layer is selected:

- 🚣 [Content Row](/emailify/elements/row)
- 🦸 [Hero](/emailify/elements/hero)
- 🎁 [Row Wrapper](/emailify/elements/wrapper)
- 🧑‍💻 [Custom Code](/emailify/elements/code)

> **Note:** **Applying background colors/images/gradients to ✉️ Email frame layers won't be included.** However, you can add solid color, image and/or gradient background fills to any top level 🚣 **Row**, 🦸 **Hero** or 🎁 **Wrapper**.

## Using the "Quick Add" feature to add new Emailify layers

[Video](/assets/videos/emailify/element-contexts.mp4)

Emailify allows you to build out your designs using special layout blocks and content elements that are added as layers to your Figma designs, and allows them to be exported out to HTML from the plugin.

To add these layout blocks and content elements, ensure that you have created at least one Emailify frame, and then click on that frame to automatically reveal the **Quick Add Element** context menu at the bottom of the plugin, then click the desired element, and click the **Add +** button to add it to the selected layer.

> **Tip:** The options that are available in the context menu will change based on your current Figma layer selection.

---

---
url: "/emailify/elements/hero.md"
description: "Use Hero sections for single-column content with background images and content elements."
---

# Hero

> Use Hero sections for single-column content with background images and content elements.

**🦸 Hero** elements are a special type of content container that are able to have a background image added to its own frame element.

> **Warning:** **Hero layers can't be nested or contain columns**. **🦸 Hero** elements can only be added directly inside of ✉️ **Email** layers. **🦸 Hero** elements cannot contain any **🏛️ Column** layers, as it doesn't support multiple column layouts; instead, content layers are added directly inside of the frame, without needing any **🏛️ Column** layers (unlike a **🚣 Row** element).

> **Tip:** **Adding background images and/or gradients**. You can add image and/or gradient background fills to 🚣 **Row**, 🏛️ **Column**, 🦸 **Hero** and 🎁 **Wrapper** layers. Please note that raw `mjml` and `loops` exports still omit Column background image attributes.

## Hero Content Elements

These options will be visible when a 🦸 **Hero** Figma layer is selected:

- ✍️ [Text](/emailify/elements/text)
- 📷 [Image](/emailify/elements/image)
- 🔗 [Button](/emailify/elements/button)
- 📐 [Spacer](/emailify/elements/spacer)
- ➖ [Divider Line](/emailify/elements/divider)
- 🧾 [Spreadsheet (Import)](/emailify/elements/spreadsheet)
- 🪑 [Data Table](/emailify/elements/table)
- 🍔 [Navigation Links](/emailify/elements/navbar)
- 🐦 [Social](/emailify/elements/social)
- 🎠 [Image Carousel](/emailify/elements/carousel)

## Using the "Quick Add" feature to add new Emailify layers

[Video](/assets/videos/emailify/element-contexts.mp4)

Emailify allows you to build out your designs using special layout blocks and content elements that are added as layers to your Figma designs, and allows them to be exported out to HTML from the plugin.

To add these layout blocks and content elements, ensure that you have created at least one Emailify frame, and then click on that frame to automatically reveal the **Quick Add Element** context menu at the bottom of the plugin, then click the desired element, and click the **Add +** button to add it to the selected layer.

> **Tip:** The options that are available in the context menu will change based on your current Figma layer selection.

---

---
url: "/emailify/elements/image.md"
description: "Add images with styling and hyperlink support in Emailify."
---

# Image

> Add images with styling and hyperlink support in Emailify.

The 📷 **Image** element layer allows you to include image content into your emails. These can be styled in Figma to swap out the image content, or add styles like border radiuses or image fill overlays.

## Add hyperlinks to image layers

You can add hyperlinks to your 📷 **Image** layers by clicking the **Settings** button in the Emailify plugin header, then clicking on your 📷 **Image** layer; this will allow you to paste your URL into the link input field.

This URL will automatically be converted into an `` link tag when the email is exported out to exported HTML.

## Using the "Quick Add" feature to add new Emailify layers

[Video](/assets/videos/emailify/element-contexts.mp4)

Emailify allows you to build out your designs using special layout blocks and content elements that are added as layers to your Figma designs, and allows them to be exported out to HTML from the plugin.

To add these layout blocks and content elements, ensure that you have created at least one Emailify frame, and then click on that frame to automatically reveal the **Quick Add Element** context menu at the bottom of the plugin, then click the desired element, and click the **Add +** button to add it to the selected layer.

> **Tip:** The options that are available in the context menu will change based on your current Figma layer selection.

> **Tip:** You can [apply settings in bulk](/emailify/design/settings#apply-settings-in-bulk) by opening **Settings**, then selecting multiple Emailify layers of the same type in Figma. Any setting you change will be applied to all selected layers.

---

---
url: "/emailify/elements/navbar.md"
description: "Add navigation link menus with per-link URL settings."
---

# Navigation Links

> Add navigation link menus with per-link URL settings.

The **🍔 Navigation Links** element layer allows you to include a menu bar containing navigation links.

## 🔗 Navigation Links Elements

These options will be visible when a 🍔 **Navigation Links** Figma layer is selected:

- 🔗 [Navigation Link](#navigation-link)

### Navigation Link

Navigation links allow you to add more menu items to your existing 🍔 **Navigation Links** elements.

#### Add hyperlinks to navigation link layers

You can add hyperlinks to your 🔗 Navigation Link layers by clicking the **Settings** button in the Emailify plugin header, then clicking on your 🔗 Navigation Link layer; this will allow you to paste your URL into the link input field.

This URL will automatically be converted into an `` link tag when the email is exported out to exported HTML.

## Using the "Quick Add" feature to add new Emailify layers

[Video](/assets/videos/emailify/element-contexts.mp4)

Emailify allows you to build out your designs using special layout blocks and content elements that are added as layers to your Figma designs, and allows them to be exported out to HTML from the plugin.

To add these layout blocks and content elements, ensure that you have created at least one Emailify frame, and then click on that frame to automatically reveal the **Quick Add Element** context menu at the bottom of the plugin, then click the desired element, and click the **Add +** button to add it to the selected layer.

> **Tip:** The options that are available in the context menu will change based on your current Figma layer selection.

> **Tip:** You can [apply settings in bulk](/emailify/design/settings#apply-settings-in-bulk) by opening **Settings**, then selecting multiple Emailify layers of the same type in Figma. Any setting you change will be applied to all selected layers.

---

---
url: "/emailify/elements/row.md"
description: "Use rows as primary layout containers and optionally render rows as images."
---

# Content Row

> Use rows as primary layout containers and optionally render rows as images.

**🚣 Row** elements are the main basic building blocks inside of an Emailify ✉️ **Email** frame. These can only be added directly inside of the main email frame, and are just used as containers for 🏛️ **Content** elements.

> **Warning:** **Rows can't be nested**. **🚣 Row** layers can only be added directly to an ✉️ **Email** frame, and can only contain one or more 🏛️ **Column** layers inside of it.

> **Tip:** **Adding background images and/or gradients**. You can add image and/or gradient background fills to 🚣 **Row**, 🏛️ **Column**, 🦸 **Hero** and 🎁 **Wrapper** layers. Please note that raw `mjml` and `loops` exports still omit Column background image attributes.

## Content Row Elements

These options will be visible when a 🚣 **Row** Figma layer is selected:

- 🏛️ [Content Column](/emailify/elements/column)

## Using the "Quick Add" feature to add new Emailify layers

[Video](/assets/videos/emailify/element-contexts.mp4)

Emailify allows you to build out your designs using special layout blocks and content elements that are added as layers to your Figma designs, and allows them to be exported out to HTML from the plugin.

To add these layout blocks and content elements, ensure that you have created at least one Emailify frame, and then click on that frame to automatically reveal the **Quick Add Element** context menu at the bottom of the plugin, then click the desired element, and click the **Add +** button to add it to the selected layer.

> **Tip:** The options that are available in the context menu will change based on your current Figma layer selection.

## Rendering a row as an image (instead of HTML)

[Video](/assets/videos/emailify/emailify-render-image.mp4)

For whatever reason, if you'd like to ensure that a certain row is rendered out as a full width image (instead of rich text/HTML content), you can do this by clicking on any row in your Emailify container frame with the settings panel open, then clicking on the **Render as image (instead of HTML)** toggle.

You can [visually preview your image render](/emailify/design/preview) using the preview HTML feature in the plugin.

---

---
url: "/emailify/elements/social.md"
description: "Add social icon sets with preset or custom icons and link settings."
---

# Social Icons

> Add social icon sets with preset or custom icons and link settings.

The 🐦 **Social** element layer allows you to add linkable icons for any social network or platform.

## Social Elements

These options will be visible when a 🐦 **Social** Figma layer is selected:

- 🔗 [Social Icon Link](#social-icon-link)

### Social Icon Link

Social icon links allow you to add more linkable social icons to your existing 🐦 **Social** elements. There are a number of presets for popular social networks you can select from:

> **Tip:** **You can also add your own social icons**. If the platform icon you'd like to use isn't included in the preset options, you can manually swap out the contents of any 🔗 **Social Icon Link** Figma frame layer and replace them with a new social icon vector.

- 🔗 Facebook
- 🔗 Twitter
- 🔗 Instagram
- 🔗 YouTube
- 🔗 TikTok
- 🔗 LinkedIn
- 🔗 Github
- 🔗 Pinterest
- 🔗 Snap
- 🔗 SoundCloud
- 🔗 Twitch
- 🔗 Tumblr
- 🔗 Spotify
- 🔗 Slack
- 🔗 Discord
- 🔗 Medium
- 🔗 PayPal
- 🔗 Flickr
- 🔗 LINE
- 🔗 WeChat
- 🔗 VK
- 🔗 Reddit
- 🔗 Behance

## Add hyperlinks to social icon link layers

You can add hyperlinks to your 🔗 Social Icon Link layers by clicking the **Settings** button in the Emailify plugin header, then clicking on your 🔗 Social Icon Link layer; this will allow you to paste your URL into the link input field.

This URL will automatically be converted into an `` link tag when the email is exported out to exported HTML.

## Using the "Quick Add" feature to add new Emailify layers

[Video](/assets/videos/emailify/element-contexts.mp4)

Emailify allows you to build out your designs using special layout blocks and content elements that are added as layers to your Figma designs, and allows them to be exported out to HTML from the plugin.

To add these layout blocks and content elements, ensure that you have created at least one Emailify frame, and then click on that frame to automatically reveal the **Quick Add Element** context menu at the bottom of the plugin, then click the desired element, and click the **Add +** button to add it to the selected layer.

> **Tip:** The options that are available in the context menu will change based on your current Figma layer selection.

> **Tip:** You can [apply settings in bulk](/emailify/design/settings#apply-settings-in-bulk) by opening **Settings**, then selecting multiple Emailify layers of the same type in Figma. Any setting you change will be applied to all selected layers.

---

---
url: "/emailify/elements/spacer.md"
description: "Insert spacer elements to add custom vertical gaps between content."
---

# Spacer

> Insert spacer elements to add custom vertical gaps between content.

The **📐 Spacer** element layer allows you to add an extra amount of space between elements inside of your content areas, where the default Figma auto-layout item spacing distribution needs to be modified for a particular part of the content (eg. you would like to add extra space just before a CTA button).

> **Tip:** **Add even spacing using Figma auto-layout**. Where possible, using Figma's [auto-layout item spacing](https://help.figma.com/hc/en-us/articles/360040451373-Explore-auto-layout-properties#spacing-between) to evenly create spacing between your content is preferable to using 📐 **Spacer** elements, as this will reduce the amount of extra code needed to create spacing.

## Using the "Quick Add" feature to add new Emailify layers

[Video](/assets/videos/emailify/element-contexts.mp4)

Emailify allows you to build out your designs using special layout blocks and content elements that are added as layers to your Figma designs, and allows them to be exported out to HTML from the plugin.

To add these layout blocks and content elements, ensure that you have created at least one Emailify frame, and then click on that frame to automatically reveal the **Quick Add Element** context menu at the bottom of the plugin, then click the desired element, and click the **Add +** button to add it to the selected layer.

> **Tip:** The options that are available in the context menu will change based on your current Figma layer selection.

---

---
url: "/emailify/elements/spreadsheet.md"
description: "Import spreadsheet data into HTML tables for email layouts."
---

# Spreadsheet (Import)

> Import spreadsheet data into HTML tables for email layouts.

### Video Tutorial: Import spreadsheets to tables for HTML emails in Figma

This video tutorial is a complete step-by-step guide showing you how to automatically generate tables for HTML emails in Figma from XLSX/CSV or Google Sheets using the Emailify plugin.
[Embedded media](https://www.youtube.com/embed/CB3tRj0GtW4)

The **🧾 Spreadsheet** option allows you to import data from a CSV/XLSX spreadsheet and automatically turn that content into an HTML table with multiple rows and columns. You can add additional rows or columns by copy/pasting the table row and/or table data cell Figma layers that are initially created.

Please note that the **🧾 Spreadsheet** will render the same way on desktop and mobile, so please be mindful about the width of your table if you're adding more than a couple of table columns.

## Using the "Quick Add" feature to add new Emailify layers

[Video](/assets/videos/emailify/element-contexts.mp4)

Emailify allows you to build out your designs using special layout blocks and content elements that are added as layers to your Figma designs, and allows them to be exported out to HTML from the plugin.

To add these layout blocks and content elements, ensure that you have created at least one Emailify frame, and then click on that frame to automatically reveal the **Quick Add Element** context menu at the bottom of the plugin, then click the desired element, and click the **Add +** button to add it to the selected layer.

> **Tip:** The options that are available in the context menu will change based on your current Figma layer selection.

---

---
url: "/emailify/elements/table.md"
description: "Build data tables with rows and columns for email content."
---

# Data Table

> Build data tables with rows and columns for email content.

The **🪑 Data Table** element layer allows you to render content into an HTML table with multiple rows and columns. You can add additional rows or columns by copy/pasting the table row and/or table data cell Figma layers that are initially created.

Please note that the **🪑 Data Table** will render the same way on desktop and mobile, so please be mindful about the width of your table if you're adding more than a couple of table columns.

## Using the "Quick Add" feature to add new Emailify layers

[Video](/assets/videos/emailify/element-contexts.mp4)

Emailify allows you to build out your designs using special layout blocks and content elements that are added as layers to your Figma designs, and allows them to be exported out to HTML from the plugin.

To add these layout blocks and content elements, ensure that you have created at least one Emailify frame, and then click on that frame to automatically reveal the **Quick Add Element** context menu at the bottom of the plugin, then click the desired element, and click the **Add +** button to add it to the selected layer.

> **Tip:** The options that are available in the context menu will change based on your current Figma layer selection.

---

---
url: "/emailify/elements/text.md"
description: "Add rich text with inline hyperlinks using Figma link tooling."
---

# Text

> Add rich text with inline hyperlinks using Figma link tooling.

The ✍️ **Text** element layer allows you to add rich text content into your emails. These can be styled in Figma to match the size, color, line-height, letter-spacing etc of your designs.

## Add hyperlinks to text layer content

You can add hyperlinks inside of your ✍️ **Text** layers by highlighting the selection of text you would like to link, and then using the [native Figma hyperlink feature](https://help.figma.com/hc/en-us/articles/360045942953-Add-links-to-text) to include your URL.

This URL will automatically be converted into an `` link tag when the email is exported out to exported HTML.

## Using the "Quick Add" feature to add new Emailify layers

[Video](/assets/videos/emailify/element-contexts.mp4)

Emailify allows you to build out your designs using special layout blocks and content elements that are added as layers to your Figma designs, and allows them to be exported out to HTML from the plugin.

To add these layout blocks and content elements, ensure that you have created at least one Emailify frame, and then click on that frame to automatically reveal the **Quick Add Element** context menu at the bottom of the plugin, then click the desired element, and click the **Add +** button to add it to the selected layer.

> **Tip:** The options that are available in the context menu will change based on your current Figma layer selection.

---

---
url: "/emailify/elements/wrapper.md"
description: "Wrap multiple rows with padding or backgrounds using Wrapper sections."
---

# Wrapper

> Wrap multiple rows with padding or backgrounds using Wrapper sections.

If you need to wrap multiple **🚣 Row** layers into a padded section with its own background color, you can move them inside of a **🎁 Wrapper** layer to achieve this effect.

> **Warning:** **Wrapper layers can't be nested**. **🎁 Wrapper** layers can only be added directly to an ✉️ **Email** frame, and can only contain one or more **🚣 Row** layers inside of it.

> **Tip:** **Adding background images and/or gradients**. You can add image and/or gradient background fills to 🚣 **Row**, 🏛️ **Column**, 🦸 **Hero** and 🎁 **Wrapper** layers. Please note that raw `mjml` and `loops` exports still omit Column background image attributes.

### Wrapper Elements

These options will be visible when a 🎁 **Wrapper** Figma layer is selected:

- 🚣 [Row](/emailify/elements/row)

## Using the "Quick Add" feature to add new Emailify layers

[Video](/assets/videos/emailify/element-contexts.mp4)

Emailify allows you to build out your designs using special layout blocks and content elements that are added as layers to your Figma designs, and allows them to be exported out to HTML from the plugin.

To add these layout blocks and content elements, ensure that you have created at least one Emailify frame, and then click on that frame to automatically reveal the **Quick Add Element** context menu at the bottom of the plugin, then click the desired element, and click the **Add +** button to add it to the selected layer.

> **Tip:** The options that are available in the context menu will change based on your current Figma layer selection.

---

---
url: "/emailify/export/amp.md"
description: "Use Emailify's AMP Email export option to download AMP for Email HTML from Figma."
---

# Exporting your emails as AMP Email

> Use Emailify's AMP Email export option to download AMP for Email HTML from Figma.

If you want to export an AMP for Email version of your design, click the **Export HTML** button in Emailify, select the email(s) you'd like to export, choose **AMP Email** from the export dropdown, then click **Export To AMP**.

After Emailify has finished processing your export, click the **Download your .zip file** button to save the AMP email package to your computer.

> **Tip:** **Saving file downloads from Figma** If you're using the Figma **desktop app**, you'll see a prompt appear to download your file. However, if you're using Figma in a **web browser**, your file will automatically be downloaded to your computer by default (usually to the **Downloads** directory on your computer).

Each exported email folder will include an `index.html` file containing the AMP email code, along with a `plain-text-version.txt` file and any exported image assets.

> **Warning:** AMP emails only work when they are sent through a supported email platform or service provider and opened in an email client that supports AMP for Email.

> **Tip:** For best results when sending AMP emails, make sure your exported images are available from hosted HTTPS URLs. You can do this by enabling image uploads in Emailify or by using your own hosted image base URL.

> **Note:** Unlike the MJML Source Code export option, AMP Email exports do not include an `index.mjml` file. Emailify converts the generated email markup directly into AMP email HTML for the exported `index.html` file.

---

---
url: "/emailify/export/global-code.md"
description: "For advanced users who need to inject small snippets of custom HTML or CSS code into your exported emails, you can do this via the Settings panel in the plugin."
---

# Injecting global custom HTML/CSS code into your email

> For advanced users who need to inject small snippets of custom HTML or CSS code into your exported emails, you can do this via the Settings panel in the plugin.

[Video](/assets/videos/emailify/export/global-html-css.mp4)

For any reason, if you needed to add some very specific custom CSS into your email, or some HTML into the `` tag, you can do this via the Emailify plugin by selecting your parent email container Figma frame, then clicking on the **Settings** button and adding your code to be injected as needed.

The **Add Mobile CSS Rules** field will add these CSS rules inside of the `@media` tag for mobile styles, where any screen sizes below the width of your Figma frame will have these styles applied (you will need to use `!important` for any CSS rules applied to this area).

The **Add Inline CSS Rules** field will automatically inline any CSS properties onto the HTML selector that you specify (eg. adding `p { color: blue }` would inline `style="color: blue;"` on any `` tags in your exported HTML email code).

The **Add Head Tag HTML** field will automatically inject any HTML you write here into the `` tag of your exported HTML email, which may be useful if your email marketing platform gives you the option of adding special tracking tags or any other HTML tags that need to be added to the `` tag of your HTML.

> **Tip:** Emailify will automatically minify HTML exports to reduce the file size as much as possible, but įf you're adding custom code where it's important for CSS classes not be modified due to interactivity via pseudo-classes, you can skip minification by ensuring that your custom CSS contains at least one `#interactive:checked` style rule (eg. `#interactive:checked ~ .content { display: block; }`), and the plugin will automatically turn off minification for that email.

> **Tip:** You can [apply settings in bulk](/emailify/design/settings#apply-settings-in-bulk) by opening **Settings**, then selecting multiple Emailify layers of the same type in Figma. Any setting you change will be applied to all selected layers.

---

---
url: "/emailify/export/images.md"
description: "You have the option to self-host your exported image files, or have Emailify automatically upload them for you to our own CDN."
---

# Hosting your exported email images

> You have the option to self-host your exported image files, or have Emailify automatically upload them for you to our own CDN.

## Using the Emailify image hosting CDN (default)

[Video](/assets/videos/emailify/export/upload-image-urls.mp4)

For HTML exports, by default, Emailify will export your HTML emails with any images saved alongside the `.html` files, so you can upload them wherever you like.

However, if you would like to use the Emailify CDN (content delivery network) to host your images for you, you can enable the **Upload Hosted Image URLs** toggle. This will upload your images and automatically swap out the URLs in your HTML email to point to the uploaded files.

> **Note:** If you're using any of the built-in email marketing platform [integrations](/emailify/integrations), your images will automatically be uploaded to the Emailify CDN.

## Uploading image assets to your own self-hosted Cloud Storage bucket

[Video](/assets/videos/emailify/export/webook-image-bucket-selector.mp4)

By default, Emailify will use the Emailify CDN (content delivery network) to host your images for you, but you can optionally swap this out to use your own cloud storage service bucket (eg. [AWS S3](https://aws.amazon.com/s3/) or [Backblaze B2](https://www.backblaze.com/cloud-storage) instead.

Once you select the image hosting service you'd like to use, you'll need to enter your bucket credentials and details below, which will automatically upload your image assets to your own bucket (and use your bucket image path in the `src` attrbutes of your HTML `` tags) during the export process:

- Region (eg. `us-east-1`)
- Access Key  (eg. `003g8...`)
- Secret Access Key (eg. `K454q...`)
- Bucket Name (eg. `my-emailify-bucket`)
- Bucket URL (eg. `https://my-emailify-bucket.s3.us-east-1.amazonaws.com/`)

> **Tip:** Please ensure any buckets you create are set to **Public** access view permissions, otherwise the uploaded image URLs won't be accessible when the HTML email is sent out

> **Note:** If you're using **Cloudflare R2**, paste your R2 S3 endpoint into the URL field using the format `https://accountid.r2.cloudflarestorage.com/` rather than `https://your-bucket.r2.cloudflarestorage.com/`. Emailify will combine that endpoint with your bucket name automatically when it creates the signed upload URLs.

### Supported self-hosted cloud storage service options in Emailify

You can self-host the exported images from Emailify in any of the S3-compatible object storage services below:

- [Amazon AWS S3](https://aws.amazon.com/s3/)
- [Backblaze B2](https://www.backblaze.com/cloud-storage)
- [Cloudflare R2](https://www.cloudflare.com/en-au/developer-platform/products/r2/)
- [Wasabi](https://wasabi.com/)
- [Google Cloud Storage](https://cloud.google.com/storage)
- [DigitalOcean Spaces](https://www.digitalocean.com/products/spaces)
- [Vultr](https://docs.vultr.com/products/cloud-storage/object-storage)
- [Tencent Cloud Object Storage](https://www.tencentcloud.com/product/cos)

## Setting a custom base URL to self-host the exported email images on your own server or CDN

By default, the src for all the images in your HTML exported by Emailify will be a relative img/ path (eg. `img/ceb3f891b78815897e04299f93eef255.jpg`); this will allow you to easily review your email and upload a zip to certain platforms like MailChimp, which will automatically upload the images and update the src URLs for you.

However, if you're using a platform that doesn't support this feature or are just hosting the images on your own custom server, you may want to set your own custom base URL instead.

### Per-Email Custom Base URL

[Video](/assets/videos/emailify/export/set-base-image-url.mp4)

You can set a custom base URL for individual emails by selecting your main email Figma frame, clicking the Settings button in the plugin header, then enabling the **Override "img/" Base Path** toggle and pasting in your own base URL path where the images are going to be hosted; enabling the custom base URL will automatically prefix all of the image src attributes for your images (for example, replacing `img/` with `https://your-custom-server.com/image/path/here/` in the exported HTML file).

This per-email setting is ideal when you need different base URLs for specific campaigns or want to override the global CDN setting for individual emails.

### Global Custom CDN Base URL

If you're consistently hosting images on the same custom CDN or server across all your emails, you can set a global custom base URL instead of configuring it for each email individually:

1. In the export settings panel, locate the CDN dropdown menu
2. Select **Custom Base URL** from the list of CDN options
3. Enter your custom base URL in the input field that appears (e.g., `https://cdn.example.com/images/`)
4. All exported emails will now use this base URL for image paths by default

The global custom CDN setting provides a convenient way to standardize image hosting across your email campaigns. If both global and per-email custom base URLs are configured, the per-email setting takes priority, giving you flexibility to override the global CDN when needed for specific campaigns.

> **Note:** Whether using global or per-email settings, ensure your custom base URL is publicly accessible and properly configured with CORS settings if required. The URL can include or omit a trailing slash, Emailify will handle both formats correctly.

---

---
url: "/emailify/export/make.md"
description: "Emailify includes a built-in integration with Make, which allows you to upload HTML emails directly from the Figma plugin into your Make webhook, to create a custom upload flow with other platforms."
---

# Uploading your emails to Make (as a .zip file)

> Emailify includes a built-in integration with Make, which allows you to upload HTML emails directly from the Figma plugin into your Make webhook, to create a custom upload flow with other platforms.

In the Emailify export panel, select the **Make** option from the dropdown list, then paste in a valid [Make webhook](https://help.make.com/webhooks) URL.

When you're ready, click the **Upload To Make** button to start exporting the emails you've selected from Figma to HTML, and have them automatically be uploaded to your Make webhook URL.

---

---
url: "/emailify/export/mjml.md"
description: "You have the option to export your emails from Figma to [MJML](http://mjml.io/), which stands for Mailjet Markup Language, and is the source code for the `.html` that gets exported from Emailify."
---

# Exporting your emails to MJML

> You have the option to export your emails from Figma to [MJML](http://mjml.io/), which stands for Mailjet Markup Language, and is the source code for the `.html` that gets exported from Emailify.

### Video Tutorial: Export emails from Figma to MJML code

This video tutorial is a complete step-by-step guide showing you how to export emails from the Figma Emailify plugin to MJML code.
[Embedded media](https://www.youtube.com/embed/_y9-1IvtlH8)

[Video](/assets/videos/emailify/export/export-mjml-code.mp4)

If you selected the **MJML Source Code** option when you exported your emails from the Emailify plugin, your exported email folder(s) will include an additional `index.mjml` alongside the regular HTML file.

Having the MJML file makes it really easy for a developer to open up the file in their code editor and make any manual updates or customisations, without needing to deal with the compiled HTML tables that are much harder to work with.

Once the updates have been made, they can be compiled into HTML by using one of a number of methods detailed in the [usage section](https://documentation.mjml.io/#usage) on the MJML documentation site.

> **Tip:** Emailify will automatically minify HTML exports to reduce the file size as much as possible, but įf you're exporting emails with the **MJML Source Code** option selected, you can skip minification by turning _off_ the **Minify HTML** toggle, and the plugin will automatically turn off minification for those exported email.

---

---
url: "/emailify/export/netlify.md"
description: "Emailify includes a built-in integration with Netlify, which allows you to upload HTML emails directly from the Figma plugin into your Netlify sites list to use as a shareable preview link to send to stakeholders or anyone else for review/approval."
---

# Uploading your emails to Netlify (as a preview link)

> Emailify includes a built-in integration with Netlify, which allows you to upload HTML emails directly from the Figma plugin into your Netlify sites list to use as a shareable preview link to send to stakeholders or anyone else for review/approval.

### Video Tutorial: Upload preview links for HTML emails from Figma to Netlify

This video tutorial is a complete step-by-step guide showing you how to upload preview links for HTML emails from Figma to Netlify using Emailify.
[Embedded media](https://www.youtube.com/embed/YZAILKYkyUM)

In the Emailify export panel, select the **Netlify** option from the dropdown list, then paste in a valid Netlify [personal access token](https://app.netlify.com/user/applications) to connect Emailify and create a new Netlify site for the current Figma page.

You can optionally click on the **Change site name** link to update the auto-generated subdomain name from Netlify to something more personalized, and then click the **Refresh** icon button in Figma after saving it in Netlify to show the updated URL.

When you're ready, click the **Upload To Netlify** button to start exporting the emails you've selected from Figma to HTML, and have them automatically be uploaded to your Netlify URL.

---

---
url: "/emailify/export/pdf.md"
description: "Emailify includes a built-in PDF export option, which allows you to export images of your real rendered HTML emails directly from the Figma plugin to PDF files (and JPG images) to use as a shareable preview documents to send to stakeholders or anyone else for review/approval."
---

# Exporting your emails to PDF

> Emailify includes a built-in PDF export option, which allows you to export images of your real rendered HTML emails directly from the Figma plugin to PDF files (and JPG images) to use as a shareable preview documents to send to stakeholders or anyone else for review/approval.

## Export emails to PDFs (with seperate JPG images included)

### Video Tutorial: Exporting your emails to PDF

This video tutorial is a complete step-by-step guide showing you how to export HTML emails from the Figma Emailify plugin to PDF files.
[Embedded media](https://www.youtube.com/embed/Wmub2cYLHcQ)

[Video](/assets/videos/emailify/export/export-pdf.mp4)

In the Emailify export panel, select the **PDF Previews** option from the dropdown list, then when you're ready, click the **Export To PDF** button to start exporting the emails you've selected from Figma to PDFs, and then download your .zip file from the confirmation screen when it's completed.

### Add Clickable PDF Links

Enable the **Add Clickable PDF Links** toggle to preserve click/tap areas from your email's `` links in the exported PDF.

### Add Alt Text Comments

Enable the **Add Alt Text Comments** toggle to include image alt text as PDF comments for any images that contain `alt` attributes.

The export will also include static JPG images of your emails, too.

### Hide layers from PDF exports

If you'd like to exclude specific content from PDF previews without affecting your normal HTML exports, you can add `[pdf-hide]` anywhere in the Figma layer name that you want hidden.

For example, naming a layer `Footer Snippets [pdf-hide]` or `Legal Placeholder [pdf-hide]` will hide it from **PDF Previews** only.

Emailify only checks for this tag when generating **PDF Previews**, and if no layers contain `[pdf-hide]` it will skip the temporary export-clone step entirely.

This works well for things like dynamic snippet rows, content block placeholders, or any internal-only layers that shouldn't appear in compliance PDFs.

Emailify will temporarily hide any tagged layers only while the **PDF Previews** export is being generated, then clean up the temporary export copy automatically. Your original Figma layers stay unchanged, and the same layers will still export normally to HTML unless you hide them some other way.

## Export emails to PDFs (as Grayscale Wireframes)

### Video Tutorial: Export PDFs as Grayscale Wireframes

This video tutorial is a complete step-by-step guide showing you how to export emails as grayscale wireframe previews from the Figma Emailify plugin to PDF files.
[Embedded media](https://www.youtube.com/embed/JCYA2oQ4O2U)

[Video](/assets/videos/emailify/export/grayscale-pdf-wireframe.mp4)

If you would prefer to export your PDF previews with "Lorem Ipsum" text, grayscale colors and blank images, you can optionally toggle the **Enable Wireframe Mode** setting, which will automatically convert your email designs into stripped back previews; sometimes this is useful for early client feedback.

The export will also include static JPG images of your emails, too.

---

---
url: "/emailify/export/presets.md"
description: "Emailify lets you save custom presets for API keys and settings for platforms like Mailchimp or Klaviyo, simplifying switching between environments or clients."
---

# Saving Custom Export Presets for Email Platforms

> Emailify lets you save custom presets for API keys and settings for platforms like Mailchimp or Klaviyo, simplifying switching between environments or clients.

[Video](/assets/videos/emailify/export/saved-presets.mp4)

If you're managing multiple environments for any export platform(s), like MailChimp or Klaviyo, etc; you may find it useful to save these different environments (eg. platform API keys and settings) as custom presets that you can easily switch between as needed.

To do this, select the platform you would like to upload your HTML email to in the plugin's "Export" panel, enter your API key(s) and specify any other settings or toggles, then click on the **Presets List** icon button, enter a label (eg. `My MailChimp Client 1`) and then click the **Create Saved Preset** button to save your custom settings preset.

You can then find this new option in the platforms drop down selector under the **Saved Presets** group, where selecting any of your saved presets will automatically populate the plugin export input fields with your saved settings.

> **Tip:** You can **Update** or **Delete** any saved presets by clicking on the **Pencil** icon button when you have the preset option selected (as per the video screencap above).

> **Info:** Saved export presets are mirrored to Figma’s local storage for the current user, so as long as you’re logged into Figma on the same computer, you can reuse them across multiple Figma files.

---

---
url: "/emailify/export/sending.md"
description: "Guidance on sending exported HTML emails via ESPs and built-in Emailify integrations."
---

# Sending your HTML emails

> Guidance on sending exported HTML emails via ESPs and built-in Emailify integrations.

After you've exported the HTML, you'll need to use an email service provider (ESP) such as [Klaviyo](https://help.klaviyo.com/hc/en-us/articles/115005254068-Import-a-Custom-HTML-Template), [MailChimp](https://mailchimp.com/help/import-a-custom-html-template/) or one of the many other services that allow you to send HTML emails to a list.

If you aren't already using an ESP to deliver emails to your list, you'll need to sign up for one, which will help you host all of your image assets online and also handle delivering the send of your HTML email in bulk to a your email audience list.

> **Warning:** **Do not use Outlook or Gmail to send your HTML email**. Unfortunately, you can't reliably send out HTML emails using Gmail or Outlook, as the images need to be hosted somewhere online, and the HTML will get messed up in the process using these email services that aren't designed for handling this type of bulk send.  Try signing up for a service like [Klaviyo](https://help.klaviyo.com/hc/en-us/articles/115005254068-Import-a-Custom-HTML-Template) or [MailChimp](https://mailchimp.com/help/import-a-custom-html-template/) to get started if you're new to sending HTML emails.

## Built-In Emailify Platform Integrations

These are the email service providers/platforms that Emailify has built-in export/upload integrations with:

### Video Tutorial: Export HTML emails from Figma to MailChimp

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to MailChimp.
[Embedded media](https://www.youtube.com/embed/FgPl-a_z59A)

### Video Tutorial: Export HTML emails from Figma to Campaign Monitor

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Campaign Monitor.
[Embedded media](https://www.youtube.com/embed/vyAsh8v8GLE)

### Video Tutorial: Export HTML emails from Figma to Klaviyo

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Klaviyo.
[Embedded media](https://www.youtube.com/embed/7OCqmOsrAYk)

### Video Tutorial: Add dynamic Klaviyo product feeds to custom HTML email designs in Figma

This video tutorial is a complete step-by-step guide showing you how to add custom Klaviyo product feeds into custom HTML templates with the Emailify Figma Plugin.
[Embedded media](https://www.youtube.com/embed/PaRSIxVLYlo)

### Video Tutorial: Export HTML emails from Figma to Postmark

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Postmark.
[Embedded media](https://www.youtube.com/embed/BD7dghnkeKM)

### Video Tutorial: Export HTML emails from Figma to Salesforce Marketing Cloud

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Salesforce Marketing Cloud.
[Embedded media](https://www.youtube.com/embed/Q4QD3GTxD9s)

### Video Tutorial: Export HTML emails from Figma to Pardot (Marketing Cloud Account Engagement)

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Pardot.
[Embedded media](https://www.youtube.com/embed/VtVuPmb57cw)

### Video Tutorial: Export HTML emails from Figma to SendGrid

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to SendGrid.
[Embedded media](https://www.youtube.com/embed/cYYVO_3HT1U)

### Video Tutorial: Export HTML emails from Figma to Mailjet

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Mailjet.
[Embedded media](https://www.youtube.com/embed/LwkH-A3pAYE)

### Video Tutorial: Export HTML emails from Figma to SendPulse

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to SendPulse.
[Embedded media](https://www.youtube.com/embed/lLH2aHdVSN4)

### Video Tutorial: Export HTML emails from Figma to Brevo

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Brevo (formerly called "Sendinblue").
[Embedded media](https://www.youtube.com/embed/8BJN16U_IHg)

### Video Tutorial: Export HTML emails from Figma to Mailgun

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Mailgun.
[Embedded media](https://www.youtube.com/embed/hrsveAlzzZo)

### Video Tutorial: Export HTML emails from Figma to Customer.io

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Customer.io.
[Embedded media](https://www.youtube.com/embed/KQyaQy6gYps)

### Video Tutorial: Export HTML emails from Figma to HubSpot

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to HubSpot.
[Embedded media](https://www.youtube.com/embed/AOSWquXuhRA)

### Video Tutorial: Export HTML emails from Figma to Braze

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Braze.
[Embedded media](https://www.youtube.com/embed/6GnG-rTdQl8)

### Video Tutorial: Export HTML emails from Figma to ActiveCampaign

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to ActiveCampaign.
[Embedded media](https://www.youtube.com/embed/TgCROp1QHsg)

### Video Tutorial: Export HTML emails from Figma to OneSignal

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to OneSignal.
[Embedded media](https://www.youtube.com/embed/haQHdEan54Q)

### Video Tutorial: Export HTML emails from Figma to Selzy

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Selzy.
[Embedded media](https://www.youtube.com/embed/5w2qyBTYToY)

### Video Tutorial: Export HTML emails from Figma to Omnisend

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Omnisend.
[Embedded media](https://www.youtube.com/embed/Zl8DZWbyrt8)

### Export HTML emails from Figma to Zoho Campaigns

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Zoho Campaigns.
[Embedded media](https://www.youtube.com/embed/UQ2va7H6RN0)

### Export HTML emails from Figma to Stripo

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Stripo.
[Embedded media](https://www.youtube.com/embed/98oeeXB7FNI)

### Export HTML emails from Figma to MailerLite

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to MailerLite.
[Embedded media](https://www.youtube.com/embed/5eKKe7M2-yo)

### Export HTML emails from Figma to EmailOctopus

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to EmailOctopus.
[Embedded media](https://www.youtube.com/embed/SxoknO-JXSM)

### Export HTML emails from Figma to Loops.so

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Loops.so.
[Embedded media](https://www.youtube.com/embed/tPKd8R7gH1Q)

### Export HTML emails from Figma to GetResponse

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to GetResponse.
[Embedded media](https://www.youtube.com/embed/_WtsjQmQV-I)

### Export HTML emails from Figma to ConvertKit

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to ConvertKit.
[Embedded media](https://www.youtube.com/embed/I8kwRdvwf8k)

### Export HTML emails from Figma to Constant Contact

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Constant Contact.
[Embedded media](https://www.youtube.com/embed/XDjtuc0XWKI)

### Export HTML emails from Figma to Drip

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Drip.
[Embedded media](https://www.youtube.com/embed/T-VmrIW9e7c)

### Export HTML emails from Figma to Aweber

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Aweber.
[Embedded media](https://www.youtube.com/embed/WpBJ0B8XrUc)

### Export HTML emails from Figma to SugarCRM (Sugar Market)

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to SugarCRM (Sugar Market).
[Embedded media](https://www.youtube.com/embed/dudacdc97vQ)

### Export HTML emails from Figma to Benchmark Email

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Benchmark Email.
[Embedded media](https://www.youtube.com/embed/KYIdqjManjg)

---

---
url: "/emailify/export/subject-and-preheader.md"
description: "You can set a subject line and preheader for your emails before exporting them to production-ready HTML code."
---

# Set a subject line and preheader text for your HTML emails

> You can set a subject line and preheader for your emails before exporting them to production-ready HTML code.

[Video](/assets/videos/emailify/export/export-html-with-metadata.mp4)

Before you export your HTML emails from Emailify, you can optionally set the subject line and preheader text by populating the **Subject Line** and **Preheader Text** inputs in the export panel, after clicking on the **Export HTML** button in the plugin header menu.

## Subject Line

The subject line will be added to the `` tag in your exported HTML's `` tag (which will be used as the browser tab name if the email is "viewed in the browser"); it will also be used to set the subject line in your email marketing platform if you're using a built-in Emailify upload integration (and if the email marketing platform API supports setting the subject line).

## Preheader Text

The preheader text will be used as the text that's seen next to your subject line when the email is viewed inside the inbox of an email client; it will automatically inject your preheader text inside of an invisible `` tag, so it won't be visible when viewing the email, but it will be shown in the inbox preview as the first text content that it reads from the HTML.

If you've already set the preheader text in Emailify, you _don't_ need to set it again in your email marketing platform, or this may double up the preview text when you send out the email.

### Add extra whitespace to the preheader text

You can optionally include the [whitespace preheader trick](https://parcel.io/blog/preheader-spacing) to ensure that the body content of your email doesn't show up in the recipient email client's subject line area. You can turn this on by enabling the **Add Whitespace to Preview Text** toggle in the email export options.

---

---
url: "/emailify/export/testing.md"
description: "How to test Emailify HTML emails across clients using Litmus, Email on Acid, and test sends."
---

# Testing your HTML emails before sending

> How to test Emailify HTML emails across clients using Litmus, Email on Acid, and test sends.

### Video Tutorial: Test HTML emails in different clients with exports from Figma

This video tutorial is a complete step-by-step guide showing you how to test HTML emails in different clients with exports from Figma using the Emailify plugin and Litmus.com.
[Embedded media](https://www.youtube.com/embed/vZkuFfpkh1Q)

### Video Tutorial: Test HTML emails in dark mode with exports from Figma

This video tutorial is a complete step-by-step guide showing you how to test HTML emails in dark mode with exports from Figma using the Emailify plugin and Litmus.com.
[Embedded media](https://www.youtube.com/embed/h5Gq9apZrxk)

### Video Tutorial: Test HTML emails in Gmail with exports from Figma

This video tutorial is a complete step-by-step guide showing you how to test HTML emails in Gmail with exports from Figma using the Emailify plugin and Litmus.com.
[Embedded media](https://www.youtube.com/embed/Jlm1YBOioM0)

### Video Tutorial: Test HTML emails on mobile with exports from Figma

This video tutorial is a complete step-by-step guide showing you how to test HTML emails on mobile with exports from Figma using the Emailify plugin and Litmus.com.
[Embedded media](https://www.youtube.com/embed/yz2KQPFBzA0)

### Video Tutorial: Test HTML emails in Outlook with exports from Figma

This video tutorial is a complete step-by-step guide showing you how to test HTML emails in Microsoft Outlook with exports from Figma using the Emailify plugin and Litmus.com.
[Embedded media](https://www.youtube.com/embed/5MJzh5rbfdY)

### Video Tutorial: Send yourself tests of HTML emails from Figma with PutsMail

This video tutorial is a complete step-by-step guide showing you how to send yourself tests of HTML emails from Figma using the Emailify plugin and PutsMail.com.
[Embedded media](https://www.youtube.com/embed/CxdlzgUaCMM)

The base design components that come included with the Emailify plugin have been pre-tested using [Litmus](https://www.litmus.com/) to ensure they look great across all popular desktop (including Outlook) and mobile email clients.

However, it's always worth doing a test of your own emails using a service like [Litmus](https://www.litmus.com/) or [Email on Acid](https://www.emailonacid.com/), just to ensure they're looking good before you send them out.

You can also send a simple test email of the HTML to yourself using a free service like [htmltest.email](https://htmltest.email), which is also a great way of ruling out any issues that may be caused by an email marketing platform modifying some of the HTML (as htmltest.email doesn't modify the HTML, and sends the email "as-is").

## Using the Email on Acid integration

### Video Tutorial: Export HTML email tests from Figma to Email on Acid

This video tutorial is a complete step-by-step guide showing you how to upload HTML email tests from the Figma Emailify plugin to Email on Acid.
[Embedded media](https://www.youtube.com/embed/ThlA2CpDI9U)

Emailify includes a built-in integration with Email on Acid, which allows you to upload HTML email tests directly from the Figma plugin directly into your Email on Acid projects.

In the Emailify export panel, select the **Email on Acid** option from the dropdown list, then paste in a valid Email on Acid API key, which can be generated from your [Email on Acid account](https://app.emailonacid.com/app/cp/account/) page, and then paste in your Email on Acid **account password** (the one you login to the website with) into the second text input field in the Emailify export options.

When you're ready, click the **Upload To Email on Acid** button to start exporting the emails you've selected from Figma to HTML, and have them automatically be uploaded to your [Email on Acid projects](https://app.emailonacid.com/app/site/projects/).

---

---
url: "/emailify/export/webhook.md"
description: "Emailify includes a built-in Webhook export option, which allows you to send a `POST` request contain a JSON payload (below) that includes  your email's name, HTML code, subject line and preheader text."
---

# Uploading your emails to a custom Webhook URL

> Emailify includes a built-in Webhook export option, which allows you to send a `POST` request contain a JSON payload (below) that includes  your email's name, HTML code, subject line and preheader text.

[Video](/assets/videos/emailify/export/webook-export.mp4)

In the Emailify export panel, select the **Custom Webhook URL** option from the dropdown list, then paste in your own custom URL endpoint that has been created to handle [the JSON payload](#the-json-payload-object-sent-via-post-to-your-url) sent from Emailify.

When you're ready, click the **POST** button to start exporting the emails you've selected from Figma to HTML, and have them automatically sent as a `POST` request to your custom webhook endpoint.

> **Tip:** Your images will automatically be uploaded to our CDN and included as the `src` attribute for any `` tags in the `html` string property sent via the payload.

> **Note:** Your code will be exported as the default HTML option, so if you need the code to be exported for a certain email marketing platform destination (which you'll handle in your own function), you can optionally **select a platform specific option in the Webhook export options** panel.

## The JSON payload object sent via POST to your URL

The JSON payload sent from Emailify contains the object keys/values below; you'll need to ensure that your custom webhook URL has been created to handle this payload, which you can then use however you like.

```
{
  "name": "Name of the Figma frame",
  "subject": "Subject line set in Emailify settings",
  "preheader": "Preheader text set in Emailify settings",
  "html": "Exported email HTML"
}
```

### Adding custom JSON body and headers to your payload

You can optionally add your own [valid JSON string](https://www.w3schools.com/js/js_json_datatypes.asp) to the input fields below, and those will automatically be included in your payload's `header` object and/or `data` body object that's sent to your endpoint URL from the plugin as a `POST` request:

- You can set custom `header` object properties via the **Custom Request Headers (Optional)** field (eg. `{ "Authorization": "Bearer xyz" }`)
- You can set custom body `data` object properties **Custom Extra JSON Data (Optional)** (eg. `{ "category": "emailify" }`)
- Or, you can also set custom body `data` object properties on a "per-email" basis in the **Extra Email-Specific JSON Payload Data (Optional)** (eg. `{ "id": 26, "tag": "email", "edit": true }`) field under any email(s) in your export panel list, which will be merged with any global JSON data you may have already set globally (above).

## POST your JSON payload via a proxy server

As Figma plugins are run inside of a sandboxed `iFrame` element in the Figma app, it doesn't have any `origin`, so your Webhook URL that you `POST` the JSON payload to _may_ reject the request due to cross-origin CORS issues.

To work around this, you can either update your own Webhook function with [Access-Control-Allow-Origin](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin) set to `*` (all), or you can enable the **Use Proxy** toggle (which is turned on by default) in the Emailify plugin settings when you're exporting your email to a custom Webhook.

Enabling the **Use Proxy** toggle with autoamtically route your request through a proxy server before hitting your Webhook URL, to ensure that the incoming POST request has an `origin` and should resolve any CORS issues. This is purely a forwarding request, so the JSON data will flow directly through the proxy, and forwarded on straight to your own Webhook URL.

> **Note:** Enabling the **Use Proxy** setting means that the requests routed through the proxy server will come from a **dynamic IP address** each time a request is sent, so **if you need a static IP address** (eg. you're only allowing incoming requests from certain IPs, like a range of IP addresses in your office network), you should turn this setting off and update your Webhook function to set [Access-Control-Allow-Origin](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin) to `*` to accept POST requests directly from the Figma plugin instead (without being routed via the proxy server).

---

---
url: "/emailify/export/zapier.md"
description: "Emailify includes a built-in integration with Zapier, which allows you to upload HTML emails directly from the Figma plugin into your Zapier webhook, to create a custom upload flow with other platforms."
---

# Uploading your emails to Zapier (as a .zip file)

> Emailify includes a built-in integration with Zapier, which allows you to upload HTML emails directly from the Figma plugin into your Zapier webhook, to create a custom upload flow with other platforms.

### Video Tutorial: Export HTML emails from Figma to Zapier (Google Drive)

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Zapier (Google Drive).
[Embedded media](https://www.youtube.com/embed/cI93RXk9MV0)

In the Emailify export panel, select the **Zapier** option from the dropdown list, then paste in a valid [Zapier webhook](https://zapier.com/apps/webhook/integrations) URL.

When you're ready, click the **Upload To Zapier** button to start exporting the emails you've selected from Figma to HTML, and have them automatically be uploaded to your Zapier webhook URL.

---

---
url: "/emailify/export/zip.md"
description: "After you've finished designing your email in Figma using the Emailify plugin, you can export it to production-ready HTML code, along with your image assets, and download them as a .zip package to your computer."
---

# Export production ready HTML emails from Figma to a local .zip file

> After you've finished designing your email in Figma using the Emailify plugin, you can export it to production-ready HTML code, along with your image assets, and download them as a .zip package to your computer.

[Video](/assets/videos/emailify/export/export-html-with-metadata.mp4)

Once you're happy with your design and the settings that you wanted to configure, you can export your email(s) from Figma to HTML by clicking on the **Export HTML** button in the Emailify plugin header, selecting the email(s) you'd like to export and optionally adding [a subject line and preheader text](/emailify/export/subject-and-preheader).

## Export and download your HTML email from Figma as a .zip file

The default option selected is **HTML Email**, which will ensure your emails are exported to compiled production ready emails (with all the CSS pre-inlined and the HTML minified).

When you're ready, click on the **Export To HTML** button to start exporting the emails you've selected from Figma to HTML.

After Emailify has finished processing your email(s), you'll be shown a confirmation message; you can download your `.zip` file by clicking the **Download your .zip file** button.

> **Tip:** **Saving file downloads from Figma** If you're using the Figma **desktop app**, you'll see a prompt appear to download your file. However, if you're using Figma in a **web browser**, your file will automatically be downloaded to your computer by default (usually to the **Downloads** directory on your computer).

> **Info:** Emailify will automatically detect if any text layers in your design require RTL (right-to-left) styling, and will automatically apply the `dir="rtl"` HTML attribute to any text content areas in your exported emails.

## Unzipping and viewing your exported HTML email .zip package

[Video](/assets/videos/emailify/export/review-html-export.mp4)

After you've downloaded your `.zip` file from Figma to your computer, you can open your file explorer to the directory where it was saved. **Double clicking** on the exported `.zip` file will unzip the contents.

The `.zip` file contains the `index.html` HTML code and image assets inside of a seperate folder for each email, and also includes another `index.html` file in the root of the zip file, which is a preview page that's automatically generated so you can easily review all of your exported HTML emails at once (or [upload it as a Netlify preview link](/emailify/export/netlify) for your clients/team).

Double clicking on either the _preview_ page `index.html` file, or any `index.html` file inside your individual email folders will open up the file in your web browser and let you preview the exported HTML.

> **Note:** The plain text content version of your HTML email will automatically be included inside the .zip file of any email exports from the plugin. If you unzip your exported .zip file, then open the folder of your email, there will be a `plain-text-version.txt` file alongside your `index.html` file.

---

---
url: "/emailify/faq/plans.md"
description: "To get unlimited usage of all of the Emailify Pro features, you will need to purchase a license from the [Hypermatic website](https://hypermatic.com/emailify#pro)."
---

# Emailify Free vs Emailify Pro

> To get unlimited usage of all of the Emailify Pro features, you will need to purchase a license from the [Hypermatic website](https://hypermatic.com/emailify#pro).

Emailify includes 10 free trials of the _Pro_ version. Once these trials have been used up, the Figma plugin will revert to their _Free_ version, which will have limited functionality.

  - **Emailify Free**: ### Email Designer Features Unlimited Usage       ### HTML Email Exports Try during 10 Pro Trials       ### Image Hosting Try during 10 Pro Trials       ### GIF Uploads Not Available       ### Platform Uploads Try during 10 Pro Trials       ### Text Localization Try during 10 Pro Trials
  - **Emailify Pro**: ### Email Designer Features Unlimited Usage       ### HTML Email Exports Unlimited Usage       ### Image Hosting Unlimited Usage       ### GIF Uploads Unlimited Usage       ### Platform Uploads Unlimited Usage       ### Text Localization Unlimited Usage

---

---
url: "/emailify/faq/security.md"
description: "Emailify runs as an official plugin inside of Figma's own app, which are reviewed and approved by the Figma team."
---

# Emailify Security

> Emailify runs as an official plugin inside of Figma's own app, which are reviewed and approved by the Figma team.

The Figma plugin is run directly from Figma's own servers, and runs inside of a your Figma file, which means that it inherits all of the [security](https://www.figma.com/security/) and infrastructure of the Figma platform, which exceed industry standards for data protection and security:

- SOC 2 Type 2
- SOC 3
- Cloud Security Alliance (CSA) STAR: Level 1
- ISO/IEC 27001:2013
- ISO/IEC 27018:2019
- EU Cloud Code of Conduct (COC): Level 2

There's **no additional software** that needs to be installed to use the Figma plugin, as Figma plugins run as a built-in part of Figma's own native functionality, and all Figma plugins easily accessibile and can be instantly run from inside any Figma file, or via the official [Figma Community](https://www.figma.com/community) ecosystem inside of the Figma app.

If your organization is already approved to use Figma, then you _already have access_ to Figma plugins.

## How Emailify works

The [Emailify Figma plugin](https://www.figma.com/community/plugin/910671699871076601) helps users design and export production ready HTML from Figma.

Emailify is designed to be privacy and security focused, so nothing _ever_ leaves your Figma file; unless you _optionally_ decide to use a built-in integration that uses your own email marketing platform's official API (eg. MailChimp, Salesforce, Klaviyo, etc) to automatically upload your email template, or _optionally_ upload your images to be hosted automatically.

If you decide to _optionally_ use any of the [built-in platform integrations](/emailify/integrations/activecampaign) in Emailify, or the feature to upload and host your exported images automatically, the images URLs contained in the email's HTML will be stored and linked as images via the [Backblaze B2](https://www.backblaze.com/b2/cloud-storage.html) storage CDN service.

All functionality and code generation are handled client-side directly in the Figma plugin using the [Figma Plugins API](https://www.figma.com/plugin-docs/), and are _never_ processed in the cloud or outside of Figma.

## What Emailify does and doesn't do

Emailify uses the [Figma Plugins API](https://www.figma.com/plugin-docs/) to help users compress their images, and download them _directly_ to their computer.

Emailify doesn't rely on _any_ external servers to handle compressing image data, which means that nothing in your Figma file ever leaves the Figma plugin or Figma itself.

Any files that are exported via the plugin are done so entirely locally to the user's own computer.

### Emailify does

- Allow users to design emails in Figma via tools in the plugin.
- Allow users to export their Figma designs to HTML, and download them _directly_ to your computer.
- Allow users to _optionally_ upload their exported HTML emails to their _own_ email marketing platform account (eg. MailChimp, Klaviyo, Salesforce, etc) _directly_ via their official APIs.
- Allow users to _optionally_ automatically host the images in their emails.
- Allow users to generate PDF previews from their email designs.
- Download any exported files _directly_ to the user's computer.

### Emailify does _not_

- Upload _any_ data, HTML or images or data from your Figma file (unless you _optionally_ decide to use the built-in email marketing platform integrations or image upload features).
- Store _any_ data, HTML or images from your Figma file (unless you _optionally_ decide to use the built-in email marketing platform integrations or image upload features).
- Use _any_ cloud storage to store your Figma images (unless you _optionally_ decide to use the built-in email marketing platform integrations or image upload features).
- Collect or store _any_ personal information (Figma plugins *cannot* access any private information about Figma projects, Figma teams or Figma users).

## How Figma plugins work

Figma plugins are written in HTML/CSS/Javascript, and are run in a tightly controlled [sandbox environment](https://www.figma.com/plugin-docs/how-plugins-run/) inside of the main Figma application.

Figma plugins can only do whatever Figma allows them to do inside the permissions of the [Figma Plugins API](https://www.figma.com/plugin-docs/), and importantly, **plugins don't have any access to personal information** about the Figma user running the plugin.

## What Figma plugins can and can't do

As per the article on [Figma plugin security](https://www.figma.com/blog/how-we-built-the-figma-plugin-system/), there are a limited number of things that Figma plugins can do, and many more things that they can't do:

### Figma plugins can

- Only be run by an explicit user action
- Show UI in a single plugin-specific dialog
- Read any data in your Figma document (e.g. a “find layer by name” plugin)
- Modify any data in your Figma document (e.g. a “rename selected layers” plugin)
- Communicate with any server over the internet (e.g. an “import from service X” plugin)

### Figma plugins _cannot_

- Run by themselves
- Get information about the project or team that owns the file
- Access anything when they aren’t running
- Access data from any files other than the file they were run in
- Change Figma’s UI outside of the plugin UI dialog

> **Tip:** Figma account administrators at your company can [configure an allowlist of plugins](https://help.figma.com/hc/en-us/articles/4404228724759-Manage-plugins-and-widgets-in-an-organization) that are allowed inside the organization. This can be used to prevent untrusted Figma plugins from being run in any file in that organization.

---

---
url: "/emailify/faq/troubleshooting.md"
description: "Troubleshooting guide for Emailify design, export, and client-specific issues."
---

# Troubleshooting Emailify

> Troubleshooting guide for Emailify design, export, and client-specific issues.

## Figma

  ### Figma email designs created outside of Emailify are not supported

In order to export production ready HTML from Emailify, you'll need to create your email layout using the design tools provided as part of the Emailify Figma Plugin, which you can then customize the content and style of as needed. This will add special layers to your page to ensure that the plugin understands what each element is (eg. a "Row" is a row, a "Column" is a column, a "Button" is a button, etc).

    Adding layers or frames that were previously designed in Figma without the Emailify plugin will be rendered as a static image, instead of rich text/HTML content.
  ### Setting image format overrides

Emailify will automatically detect if a layer contains areas of full transparency and set **PNG** as the default export format, otherwise it will be set to **JPG**. You can override this to set the export format of any layer to **JPG** or **PNG** by adding your own export setting.
  ### Freezing issue with Figma 'Scroll Wheel' or 'Drag to Pan' settings enabled

There's a random issue where the plugin or the canvas may have a strange freezing behavior if these settings (as shown in the screenshot below) are enabled.

    If this is happening in your Figma file, you can resolve this by disabling these settings in Figma by going to the **Main Figma Menu**, going down to **Preferences**, and then _unchecking_ the **Use scroll wheel zoom** and **Right-click and drag to pan** settings.

    ![Image](/assets/images/emailify/scroll-pan.png)
  ### Adding links to normal Figma text layer paragraph/content

If you highlight the text you'd like to link in the Figma text layer, and then click on the [native Figma "Link" icon button](https://help.figma.com/hc/en-us/articles/360045942953-Add-links-to-text) in the Figma header toolbar area, that will let you paste a URL in, which Emailify will automatically render.

    **Only use this for content text layers (not buttons or nav links)**. Please note that this only works for normal content text layers; if you need to set a link on a button, social icon or navigation link layer that Emailify generates, you'll need to click on that Figma layer, then click the **Settings** button in the Emailify plugin header, then paste your URL into the link field.
  ### Adding superscript or subscript text

You can [add superscript and subscript to your Figma text layers](https://docs.hypermatic.com/emailify/design/superscript-and-subscript), and that will automatically get rendered as superscript (eg. `sup`) or subscript (eg. `sub`) tags in the HTML export from the plugin.
  ### Using heading tags (eg. h1, h2, h3) in your HTML text

If you need to, you can swap the default paragraph tag (`p`) for any heading tag (eg., `h1`, `h2`). You can [wrap your Figma text layer content with a heading tag](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Heading_Elements) you're after, and that will automatically handle changing the tag when the HTML is exported via the Emailify plugin.
  ### Blank file extensions using Figma desktop app on Windows

There's a known issue with the Figma desktop app (only on Windows), which also happens for normal file exports from Figma. When you go to save your file, you may see an "all files" label. If you ignore this and continue by clicking "Save", it should still save the file with the correct extension and allow you to open it as expected after it has downloaded to your computer. If it still saves the file with a blank extension, you should be able to rename the file to manually append the correct extension to the file name.
  ### Optimizing your designs to reduce the size of the HTML export

The biggest factor in the exported HTML is the number of "Row" components in your design; each time a "Row" is used, it creates a brand new set of **table** elements etc. The best way to optmize the size of your exported HTML is to try to avoid creating a new row if you don't need to.

    For example, if you're adding a "heading" text layer, a "subheading" text layer, a "body" text layer and maybe a "button" layer; you can keep all 4 of these content layers inside of a single "Column" that's inside of a single "Row", so there's no need to create 4 seperate "Row" layers for each of these content layers.
  ### Emailify settings panel options not appearing when clicking an Emailify Figma layer

If you're clicking on an Emailify layer in your Figma design and the settings aren't showing up when clicking the **Settings** button in the plugin header, your main Emailify frame may be nested inside of other frames or groups etc; to resolve this, you can move your Emailify frame out of any nested frames/layers and move it back out to the "Page" level, so that it isn't nested inside of any other layers.
  ### UTM tag query string parameters getting striped out when sending your HTML email

There are [a few reasons](https://www.netnatives.com/blog/utm-tracking) that UTM query string parameters may get stripped out when you send your HTML emails, as more browsers/devices have been starting to automatically remove these (for privacy reasons) in the last year or so. If the query strings are working when you open the links from the Emailify preview window, but not after the email is sent from your email marketing platform, then there's likely an additional link forwarder/shortener getting applied when the email is sent that may be stripping those out or breaking them.
  ### 'Please wait, loading Figma images...' speed

Figma had an update a little while ago that forces all Figma plugins to wait for every single full resolution image in the current Figma page to finish loading before a plugin can export any image data (even if it only needs one layer/image).

    The only solution at the moment is to try and limit the number of frames/layers on your current Figma page, which will help make this process much faster when the plugin initially runs; for example, you could create a brand new page in your current Figma file, and only the Emailify frame(s) you want to work on or export to that blank page, and that should load much faster when you re-run the plugin there.
  ### Pixelated image exports

If you're exporting your email while the image assets in Figma are still progressively loading, they may be exported looking pixelated, as the image wasn't fully loaded in the Figma file before it was exported. To resolve this, please ensure that all of the images have loaded 100% and are looking sharp inside the Figma file before exporting your emails with the Emailify plugin.

    To help further with solving this issue, you can use the ["Downsizer" feature](https://docs.hypermatic.com/tinyimage/usage.html#downsizing-your-figma-layer-fills) in [TinyImage](https://www.figma.com/community/plugin/789009980664807964/TinyImage-Compressor) to shrink down your image fills to match their layer size, which will shrink their file size and ensure they load much faster in your Figma file.
  ### Editing PDFs in Adobe Acrobat shows dotted lines

This can be resolved by un-checking the "Show bounding boxes" toggle in the Acrobat Acrobat app sidebar while editing your PDF. Showing the dotted bounding box lines is something that [Adobe enables by default](https://archive.md/Uhdbk) while enter "Edit" mode when you have a PDF open in the app, but turning off the "Show bounding boxes" toggle will turn hide those from being displayed with one click.
  ### VPN may be required in China

Please note, if you're in China, the accounts server _may_ be blocked by "The Great Firewall of China". If you're seeing a activation error, despite using a valid key, you will likely need to use a [VPN](https://protonvpn.com/free-vpn/) to resolve the issue.
  ### 'An error occurred while loading the plugin environment'

This may happen in the Figma desktop app if [the Use Developer VM](https://www.figma.com/plugin-docs/debugging/#developer-vm) debug setting in Figma is enabled by mistake; you can make sure it's turned off by **right-clicking** anywhere on your Figma canvas, hovering over **Plugins**, then hovering over **Development**, and making sure that the **Use Developer VM** is _unchecked_; after it is unchecked (and does _not_ have a tick icon next to it), re-running the Figma plugin should work as expected.
  ### Image uploads being blocked on your network

If you've enabled the **Upload Hosted Image URLs** feature, or uploaded the HTML email to any email platform using the built-in Emailify export options, the plugin will automatically upload the images online to be hosted automatically.

    If you're seeing a warning message in the plugin (**Images uploads _may_ be blocked on your current network**), this means that the plugin isn't able to access the upload service required to host those images online.

    This is usually usually due to the network (eg. your company, which may have a firewall blocking certain URLs) or ISP (internet service provider) you're connected to restricting or blocking the URLs; to troubleshoot this:

    - Try tethering your mobile phone as a Wi-Fi hotspot to your machine, then re-run the Emailify Figma plugin again to see if this resolves the issue. If so, it means that your other network was blocking the requests.
    - You can also try using a [VPN](https://protonvpn.com/), which should tunnel your network requests and get around any network blocking issues.
    - If you're already using a VPN, try turning that _off_, then re-run the Emailify Figma plugin again to see if this resolves the issue.

    If you're still having issues, please feel free to [get in touch](https://www.hypermatic.com/contact/) via email.

## Email Clients

  ### Forwarding any HTML email templates breaks them

Unfortunately, if someone decides to forward a custom HTML email that they've received to someone else, this often visually breaks the email after it's forwarded on to somebody else.

    The reason for this is that different email clients will modify (or remove) part of the HTML code when the email gets forwarded, causing it to break; as this [When Forwarded Emails Break](https://www.litmus.com/blog/when-forwarded-emails-break/) article from Litmus details:

    >It’s common knowledge that email clients all render email differently. When a subscriber forwards an email, some email clients make changes to the code of the forwarded message. This can include stripping out certain HTML elements, wrapping your email in a blockquote, or inserting additional classes to your code—all of which can break your design and make the email less functional for the recipient of the forwarded email.

    One common option to help mitigate this impact is to have a "Web link" version that can be opened in the browser if it's not rendering correctly, usually added somewhere to the top of the email (like [this one](https://mailchimp.com/help/add-a-campaign-page-link-to-your-email-campaign/) in MailChimp), you could also create this as a shareable type link in the email somewhere as well, if needed.
  ### My emails are getting sent to spam. What could be causing this?

There are a few common reasons your emails might land in spam:

    - **Too many links**: Every link affects deliverability. Remove any that aren’t essential — even social media links — to improve inbox placement.
    - **Poor sender reputation**: If your domain or IP has a history of low engagement, bounces, or complaints, mailbox providers may flag your emails.
    - **Spammy content**: Overuse of promotional language (e.g. “Free!”, “Act now!”, “Limited time offer”) or too many images and too little text can trigger filters.
    - **Authentication issues**: Make sure you’ve correctly set up SPF, DKIM, and DMARC for your sending domain.
    - **Low engagement**: If subscribers consistently don’t open or click, your future emails are more likely to be marked as spam.
    - **List quality**: Sending to old or purchased lists can cause bounces and spam complaints that hurt your sender score.

    Start by simplifying your email, checking your domain authentication, and trimming any unnecessary links; those changes alone often improve deliverability.
  ### Dark mode overrides are only supported on iOS/Mac Apple Mail apps

Currently, [support for dark mode override styles in email clients](https://www.caniemail.com/features/css-at-media-prefers-color-scheme/) is still relatively low; so please be aware of this and try to design your emails with the "progressive enhancement" of these dark mode overrides in mind.

    It's also worth using [some other clever design techniques](https://www.campaignmonitor.com/blog/email-marketing/designing-an-email-for-dark-mode-dark-and-light-optimization/) for creating your email with dark mode in mind as a fallback with other email clients, too.
  ### Thin white sub-pixel lines on stacked mobile images

This sometimes happens if you're using full width inline images, as depending on the device width, when the image gets scaled down on mobile, it can have these "sub-pixels" creep in to the height of the image (which is what's leaving that faint gap between each one and letting the background show through from behind it).

    The quickest workaround for this would be to [add a Wrapper layer](https://docs.hypermatic.com/emailify/design/wrappers) around your "Row" layers that contain those images, and then also set the background for that Wrapper as a "Linear Gradient" with your background color (eg. grey) on both sides of the gradient; this will ensure that the background gets rendered as an image, to avoid the CSS background color still getting swapped out or inverted to black on dark mode, and should provide a consistent background behind your image rows to cover up the sub-pixel gaps there.
  ### Google/Custom Font embeds are only supported on iOS/macOS Apple Mail apps

Currently, support for custom fonts in email clients is [only supported](https://www.caniemail.com/features/css-at-font-face/) in Apple Mail for iOS/macOS, so using [web safe fonts](https://www.cssfontstack.com/) is recommended for your Figma text layers, which you can set via the **Configure Fonts** panel under the "Preview" feature in Emailify.

    Also, certain email service providers (like MailChimp) actively strip them out before the email is even sent to ensure that only web safe fonts are used.

    However, Emailify still includes Google Font @imports, and also sets a fallback websafe font (eg. "Arial", "Georgia" or "Courier") if a Google Font is being used for rich text. They'll be visible on any [email clients that support the use of @font-face](https://www.caniemail.com/features/css-at-font-face/) in emails.

    **Use custom fonts in your images**. Please note that if you need to ensure a custom font is visually consistent across all email clients, it may be worth putting your text layers inside of an "Image" frame. This text content will be exported as part of the image itself, and therefore won't be relying on custom web font support to display correctly.
  ### Form elements in emails are not supported

The support for **form** elements in HTML emails is [still quite low](https://www.campaignmonitor.com/blog/email-marketing/how-forms-perform-in-html-emai/), and can cause the emails to be flagged as spam etc if they're included, so it's best to avoid using native forms inside of HTML emails at the moment.

    The best workaround is to create a nice looking call to action (CTA) button in your Emailify design, and then link that off to an external form URL like [Google Forms](https://docs.google.com/forms/) or [Typeform](https://www.typeform.com/), and collecting the information from recipients there via the browser instead.
  ### Understanding how image blocking works in some clients

Thare a couple of really good articles below describing what image blocking is and which email clients enable it by default (mainly Outlook), whereas other clients like Gmail, Android, Apple/iOS etc all show images by default.

    [How Image Blocking Works in Email](https://www.campaignmonitor.com/resources/guides/image-blocking-in-email/)

    [Email Image Blocking: Answering the What, Why, Where, Who, and How](https://www.litmus.com/blog/the-ultimate-guide-to-email-image-blocking/)

    Unfortunately, it's not related to if the images are secure (SSL) or not, it's always just across the board for any images inside of the email.

    The upside is that usually if the recipient is using one of the former email clients, they're fairly used to this happening and clicking the "show images" button, or more likely have already enabled images to show by default for incoming emails.
  ### Purple text in Gmail (multiple test sends with the same subject line)

If you're sending multiple tests of an email to a Gmail account, you might notice that certain text is a dark purple color.

    This isn't a problem with your HTML code; it happens when Gmail decides that multiple emails sent in the same day with the same subject are responses to one another. When this happens, it displays the thread of emails in a "conversation view."

    To learn more about Gmail's conversation view, read [Google's documentation](https://support.google.com/mail/thread/5162234?hl=en):

    >The purple coloration is a display only feature that only exists in the display where it is being seen. It is not sent in any messages and you can use Gmail's show original feature to verify that - you will need to know a little about HTML coding.

    >The color is applied to text that is repeated from a previous message in the current conversation and the reason it is visible to recipients is because they also are using Gmail and they also have copies of previous messages in the current conversation. What gets coloured in their conversation might be quite different from what gets coloured in yours.
  ### Email clients adding blue links to dates, phone numbers and addresses

This is a long time issue where certain mail clients will [automatically apply links](https://www.litmus.com/blog/how-to-fix-blue-links-in-gmail) to things like dates, phone numbers and addresses, and [apply their own color styles](https://www.litmus.com/blog/update-banning-blue-links-on-ios-devices-2) to them as well (usually blue links).

    Emailify automatically applies all the [suggested code fixes](https://email2go.io/blog/all-about-blue-links-in-emails) to help mitigate this in some email clients, but the clients often get updated to workaround/remove these fixes from getting applied.

    There are 2 extra/ methods you can try to prevent the email client from adding links automatically (which are both mentioned in those articles above):

    **Method #1** is to pre-apply a placeholder link (eg. to your own website) to each of those text layers in Figma, and just remove any underline styles in Figma and set the color to whatever you like (so it won't appear clickable); this will pre-apply a link tag around the date text, so the email client won't try to automatically apply its own unstyled link instead.

    **Method #2** is to add a special invisible HTML entity (which is: `&zwnj;`) directly after the first character in each of your dates, phone numbers or addresses (eg. `6&zwnj;75 Massachusetts Ave, Cambridge, MA 02139`), and that should hopefully trick the email client into thinking it's not a date and prevent it from applying a date link automatically.
  ### Certain VPNs may be blocked from displaying uploaded images

If you've enabled the **Upload Hosted Image URLs** feature, or uploaded the HTML email to any email platform using the built-in Emailify export options, there's a very rare edge case where certain IP addresses assigned by some VPNs are blocked by the image host and will prevent the image from loading.

    If you're having any issues with images not loading, this is the likely cause (please temporarily turn off your VPN to verify this yourself).
  ### Email signatures do not support custom fonts

Unlike full/regular HTML emails, where it's possible to embed custom fonts - but still _only_ for Apple Mail (other clients like Gmail and Outlook do not support any kind of custom font embeds) - email signatures [don't support](https://signature.email/guides/can-i-use-google-fonts-in-email-signatures) having a **style** tag to be able to add any font embed code at all, so you should design your signatures to use web-safe system fonts, instead.
  ### Gmail iOS app not rendering mobile responsive styles

The main reason for this is if any of the CSS properties or styles in the `@media` query contain a typo (eg. `padding-bottm` instead of `padding-bottom`) or if there's a line-break in the middle of a style property (eg. `padd` _new line_ `ing-top`), the Gmail app will ignore _all_ other styles and won't render any mobile responsive overrides.

    This should not happen with code exported natively via the plugin, but may occur if you are manually editing the HTML code after exporting it from Emailify (of if your email marketing platform is modifying the code or adding line length limits).
  ### 500 characters per line limit in HTML emails

The Emailify plugin automatically limits line lengths in your HTML exports to a maximum of 500 characters per line; this to comply with the line limit that HTML emails have when they're sent out. Technically, the limitation is supposed to be closer to 1,000 (or "998") characters per line, but various tests show that extending characters to that number per line will cause issues in Outlook and with certain email service providers.
  ### VPNs may cause some social media links not to open correctly

While this seems to be rare, if you're having any issues with links to some social networks (eg. Facebook, Instagram) not opening correctly, this is the likely cause (please temporarily turn off your VPN to verify this yourself), and not an issue with the HTML email or the links themselves.

## Outlook

  ### Border radius not showing in Outlook

Unfortunately, the border-radius property isn't supported in Outlook, so it will always fall back to normal square edges instead. Please see the [border-radius support list](https://www.caniemail.com/features/css-border-radius/) for a better idea of which email clients support this CSS property.

  ### Button height collapsing on Outlook.com (due to not having a real URL)

If you're seeing the height of a button component collapsing to the size of the text layer inside of it, Outlook.com does this if the `href` isn't set to a real URL (eg. `[replaceLinkInHere]` instead of a real URL like `https://google.com`). Setting a real URL on your button component by clicking on the button layer in Figma, and using the **Settings** button in the plugin, and paste in your URL there.

  ### 1px white line on 'reversed order' rows in certain Outlook versions

There's a known bug in some versions of Outlook when using the [reverse column](https://docs.hypermatic.com/emailify/usage.html#reversing-column-visual-order-of-a-row-on-desktop) setting where a 1px white line can show up beside one of the columns. This is one of Outlook's rendering quirks caused by the Microsoft Word rendering engine, and it can happen when the reversed Row also has padding applied to it.

    The best workaround is to remove the padding from that reversed **Row** layer, wrap the Row inside a [Wrapper](/emailify/design/wrappers), and move the padding to the outer **Wrapper** instead. That keeps the same visual spacing, but avoids the Outlook rendering bug on the reversed Row itself.

    This workaround aligns with the approach discussed in the related [MJML GitHub issue](https://github.com/mjmlio/mjml/issues/2828).

  ### Outlook automatically turning dates/times into blue calendar links

To prevent Outlook parsing the text as a date/time and stop it from automatically rendering it as a link, you can insert a "zero-width space" HTML entity (`&#8203;`) in-between the days, dates and times to break Outlook's pattern matching, like this tested and working example here: `Monday&#8203; — Friday 8&#8203;am to 5&#8203;pm`

  ### Uppercase text with accents (diacritics) getting cut off

If you have a text layer with "uppercase"/caps, and some characters contain diacritics (eg. Ä, Ö, Ü) where the top accent is not showing in Outlook; the reason this is happening is that the "line height" value on the text layer in Figma is smaller than the "font size" value for the text, and Outlook will basically crop/cut off any content that isn't contained inside the line-height value (unlike other clients, which will just allow it to overflow normally).

    To resolve this, all you need to do is increase the line-height value to be a little bit larger than your font size; for example if you have a text layer with a "24px" font size, and your line-height is currently "23px", you'll need to increase the line-height from "23px" to "28px" in Figma (to provide enough extra height buffer for the accents rising above the 24px uppercase font cap size), and that will then render the accents/diacritics as expected in Outlook without being cut off due to the lower line-height.

  ### The random '1px line' Outlook bug

There's a very annoying issue known as [the Outlook 1px line bug](https://www.emailonacid.com/blog/article/email-development/how-do-i-get-rid-of-the-lines-in-outlook-emails/) that randomly appears in certain versions of Outlook where:

    >Outlook will add extra lines to our emails. These lines will inherit the background set on your **body** tag... to make matters worse, this bug seems to happen at random, although it does appear more regularly on Windows 10 machines, compared to Windows 7.

    As mentioned in the article above, while it's quite random and there's no reliable fix for it; it can _usually_ be solved with some trial and error of adjusting the font size for the text content above where the line shows up. For example (from the article):

    >For some folks, the fix is as simple as changing font sizes from odd numbers to even numbers. For example, if you have a font size of 13px or 15px, try converting it to 14px.

    There's another good overview article called [Fixing White Lines in Outlook](https://www.actionrocket.co/email-design-review/white-lines-in-outlook) that goes into some extra detail and potential fixes, too.

    For a deeper dive, this [Outlook 2016 madness and the weird 1px thin horizontal lines](https://mosaico.io/email-client-tricks/outlook-2016-weird-1px-horizontal-lines/) article goes into some more detail about the underlying issue, and this detailed [Litmus forum discussion](https://litmus.com/community/discussions/4990-outlook-2016-1px-horizontal-lines-showing-up-in-the-body) also speculates on possible causes and ways to try troubleshooting it.

## Gmail

  ### Gmail clipping the email

Gmail [clips emails](https://mailchimp.com/help/gmail-is-clipping-my-email/) that have a message size larger than 102KB, and hides the full content behind a "View entire message" link. To avoid this, use the **Preview** button to see the size of your HTML file before exporting, and remove as much content as possible to try and get the file size down.

    If the email is still getting clipped, despite being under the HTML file size limit, it's [most likely](https://www.emailonacid.com/blog/article/email-development/gmail-email-clipping/) due to a UTF-8 character being used in the email content, which also can trigger Gmail to clip the email. The best solution here is to replace the UTF-8 character with its HTML encoded version (eg. by using `&copy` instead of `©`), which the plugin does apply automatically.

    One other reason this happens is if you're sending out emails with the same subject line (eg. when sending multiple tests to yourself), where Gmail will consolidate the emails into a single thread, and can clip the contents of the subsequent sends. To get around this, ensure that the subject line is always different (eg. "Test v1", "Test v2", etc).

  ### Buttons with white text turning black in Gmail mobile app in dark mode

Gmail (and other apps) will automatically apply dark mode styles to your email when the user's system theme is set to dark mode, which includes buttons.

    To keep white button text white on dark mode in Gmail mobile apps, Emailify will automatically add some extra code to force this if you ensure the button text layer is set to pure white (eg. `#fff`) in Figma, and _also_ has a dark mode override text color set to pure white (`#fff`) in the **Settings** panel when your `Button` component is selected.

  ### Columns stacking on desktop in Gmail

Some email service providers (like MailChimp) will try to modify your email's HTML before it gets sent out, which can cause some of the columns in your email to stack on Gmail when viewed on desktop, instead of being in a row.

    Usually for the purpose of these platforms modifying your HTML is to ensure they're "inlining" styles onto your HTML elements; however, Emailify automatically pre-inlines all of the CSS styles, so that your emails are production ready. If you can find a setting in your email service provider's HTML/import options to "disable" this inlining or modification, this should resolve the issue.

    If you're unsure if it's being caused by your email service provider or the code itself, please use a free service like [htmltest.email](https://htmltest.email/) (which won't modify any of your HTML) to send yourself an email test. If the test works from [htmltest.email](https://htmltest.email/), then your email service provider is modifying your HTML before it's sent out.

  ### Gmail on iOS forces a minimum line-height

If setting `line-height` to a value less than the current `font-size`, Gmail will automatically change it to `line-height:normal;`; so `line-height:1`, `line-height:1em`, `line-height:100%` all work as expected, however `line-height:0.9`, `line-height:0.9em`, `line-height:99%`, will all get converted to `line-height:normal;`.

    Same works for px values, where `font-size:20px; line-height:19px` won't work, but `font-size:19px; line-height:19px` will work.

    To resolve the issue, just make sure that the line height on your text layer is equal to or greater than the font size.

  ### Gmail iOS app not rendering mobile responsive styles

The main reason for this is if any of the CSS properties or styles in the `@media` query contain a typo (eg. `padding-bottm` instead of `padding-bottom`) or if there's a line-break in the middle of a style property (eg. `padd` _new line_ `ing-top`), the Gmail app will ignore _all_ other styles and won't render any mobile responsive overrides.

    This should not happen with code exported natively via the plugin, but may occur if you are manually editing the HTML code after exporting it from Emailify (of if your email marketing platform is modifying the code or adding line length limits).

  ### Gmail mis-translating English-only emails into other languages

If your email contains mostly image blocks, without rich text, or lots of image blocks before any rich text lower in email, Gmail will sometimes think that the email is in a different language and prompt you to translate it into English, this is despite the code automatically getting a `lang="en"` attribute added to the **html** and **body** tags by Emailify.

    As per [this article discussing it](https://litmus.com/community/discussions/7028-gmail-mis-translating-our-english-only-emails-into-other-languages) on the Litmus forums:

    >We have found (empirically) that mails containing a lot of CSS and HTML before any actual content get classified as English even though the content is in another language.

    >Our workaround is to send a multipart text and HTML email, with a text version before the HTML part. Of course the text must be consequent, not just "Bonjour ...", as otherwise the HTML tags/CSS are still dominant.

    >The translation algorithm does not seem to make any attempt to strip out html/css from the body of the mail, or if it does, perhaps it truncates the message before stripping and so ends up with very little content to use for detection purposes. (It is easy to end up with >5000 caracters of headers and CSS these days before a single line of content.)

## GIFs

  ### Converting videos into animated GIFs for your emails

While native **video** tags sadly [aren't supported](https://www.caniemail.com/features/html-video/) for HTML emails, the best way to add animated images or video content into your HTML email designs is to use GIFs instead; either using a GIF file downloaded from the internet, or one you've created yourself.

    If you already have a video you'd like to use as a GIF, you can use a free app called [Gifski](https://gif.ski/) to help convert short video files into animated GIF files to use in your email designs.

    Then there's also a [good walkthrough video tutorial](https://docs.hypermatic.com/emailify/videos.html#add-animated-gifs-from-figma-to-html-email-exports) that goes through the different ways that you can use GIFs in your Emailify designs and include them in your exports to HTML.

  ### Colors/gradients in GIFs look a bit grainy

GIFs are a bit different from normal JPG/PNG images, as they can only contain a maximum of 256 colors. If you're using highly detailed images or gradients with lots of color variation, it's expected that it won't look as sharp or have the same color accuracy as the original images used as the source of the GIF due to this limitation of the GIF format.

  ### Transparency isn't showing in GIFs

The GIF file format supports either 0% opacity or 100% opacity, but nothing in between. This means that you can have an animated GIF with a completely transparent background behind elements that are completely opaque and visible. This means that layers either need to be completely transparent or not; any layers with lower than 50% opacity will be transparent, while any layers with opacity greater than 50% will be opaque.

    **Flagging transparent GIFs in Figma**. Emailify will try to automatically detect if your GIF contains a transparent background; if your GIF does require transparency, and the plugin isn't detecting that by itself, please add the word **Transparent** anywhere in your Figma layer's name (eg. `My Layer Name - Transparent`) to force it to be exported with a transparent background enabled.

  ### Keeping your original GIF file during export (by maintaining the aspect ratio)

If you drop your GIF into Figma and resize the layer proportionally to maintain the original aspect ratio, Emailify will automatically use the original GIF file in your exports.

    Conversely, if you change the aspect ratio of your Figma layer to be different to the original GIF, Emailify will need to re-create your GIF to account for the cropped image area, which can lead to larger GIF file sizes and a slower export times.

  ### GIF image not showing in Gmail (file size limit)

If you've used GIFs in your design, but aren't seeing them show up when you do a test send to a Gmail inbox, it's likely that the [Gmail image caching limit](https://stackoverflow.com/questions/49771254/images-in-gmail-not-displaying-due-to-google-image-cache-proxy) is being hit, which causes it to not render.

    During export to HTML, Emailify will try to compress any large GIFs to get them underneath the file size limit for Gmail, which should resolve this issue in almost all cases (unless the GIF is exceptionally long, large in size, or contains a very high frame rate to begin with).

## Klaviyo

  ### Klaviyo template editor (sometimes) crashes when GIFs are used in your email design

There is a random bug with the Klaviyo that causes it to have an Error 500 (internal server error), where it shows a page saying **Something is amiss. We're on it.**; this seems to mainly happen if the template is "Editable".

    Klaviyo are aware of this bug, but there doesn't seem to be any plans to fix it in the near-term.

    One workaround here is to remove the GIF in your Figma design before exporting the HTML for Klaviyo, and then upload the GIF image separately into Klaviyo after the template editor loads without the error above.

  ### Extra padding around text blocks in editable Klaviyo templates

Due the Klaviyo [updating their editor](https://help.klaviyo.com/hc/en-us/articles/13160284274459), and forcing all templates to use it as of June 6th 2023; unfortunately, if you're exporting HTML emails with the **Editable Content** toggle enabled in Emailify, Klaviyo will automatically apply ~18px of additional padding around each text element by default, as an inline `style` attribute to a new **td** element that it injects into the HTML if it's an editable template.

    Enabling the **Force the padding added by Klaviyo's new editor to be 0px** toggle in Emailify does automatically add some extra CSS to remove this padding for all mobile clients and non-Outlook desktop clients like Gmail etc, however, _Outlook_ will still render the padding unless each of the "Padding" values for any editable text blocks in your template are manually changed to "0" when editing the email for your Campaign in the Klaviyo editor.

## MailChimp

  ### Enabling editable images will use blurrier @1x images (instead of @2x retina)

You can optionally enable your images in the template to be editable in MailChimp with the **Editable Images** toggle, but unfortunately, [MailChimp doesn't support editable @2x retina images](https://github.com/mailchimp/email-blueprints/issues/37), so these will be @1x instead.

    If you'd prefer to have @2x retina images that aren't editable, please leave this option turned off.
  ### "MailChimp

tags">
    MailChimp removes link styles when a custom **Typekit stylesheet** is added to your email. Specifically, if you include a tag like: ``

    in the ``, MailChimp will strip all **`style`** attributes from your **``** tags. Removing this tag fixes the issue and restores your link styles.

    If you’d still like to use your Typekit fonts, you can do this through the plugin’s built-in **Web Fonts** feature. Instead of linking the stylesheet, you’ll need the direct **`.woff2`** font file URL from your Typekit CSS file (for example:
    `https://use.typekit.net/...`). Paste this URL into the **Configure Fonts** panel in the plugin, and it will automatically generate the correct `@font-face` style to match your Figma font names in the HTML. See the [step-by-step video tutorial](https://youtu.be/dtTNDXeO3FA) for more guidance.

    Please note that custom web fonts only work in **Apple Mail**. Other email clients (such as Outlook or Gmail) don’t support them, so we recommend setting a **web-safe fallback font** in the plugin to control what displays. Many users find it easiest to design with web-safe fonts in Figma, but adding custom web fonts can still be a nice progressive enhancement for Apple Mail users.

---

---
url: "/emailify/integrations/acoustic.md"
description: "Emailify includes a Acoustic export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform."
---

# Uploading your emails to Acoustic

> Emailify includes a Acoustic export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform.

In the Emailify export panel, select the **Acoustic** option from the dropdown list, when you're ready, click the **Export For Acoustic** button to start exporting the emails you've selected from Figma to HTML.

Once the HTML has been exported, you'll need to manually upload your HTML templates to Acoustic by clicking the **Download your .zip file** button in Emailify, _unzipping_ that file after saving it to your computer, then you'll be able to [upload the email .zip file(s) to Acoustic](https://help.goacoustic.com/hc/en-us/articles/360055843014-Create-an-email) from the **_zips (For upload to Acoustic)** folder inside of your main unzipped folder.

### Acoustic Link Tracking Support

When the export platform is set to **Account** and the **Add xt="SPCLICK" tracking tags to Links** toggle option is enabled, Emailify applies Acoustic's `xt` tracking attributes for you during HTML generation. This removes the need to manually tag every link for your Acoustic emails.

See below for the different automatic link tracking mapping:

| Link type / selector | Applied attribute |
| -------------------- | ----------------- |
| Normal text links | `xt="SPCLICK"` |
| `mailto:` email links | `xt="SPEMAIL"` |
| View in browser link (`#SPCLICKTOVIEW`) | `xt="SPCLICKTOVIEW"` |
| One-click opt-out (unsubscribe) link (`#SPONECLICKOPTOUT`) | `xt="SPONECLICKOPTOUT"` |
| Linked images | `xt="SPIMAGE"` |

---

---
url: "/emailify/integrations/activecampaign.md"
description: "Emailify includes a built-in integration with ActiveCampaign, which allows you to upload HTML emails directly from the Figma plugin directly to your ActiveCampaign templates."
---

# Uploading your emails to ActiveCampaign

> Emailify includes a built-in integration with ActiveCampaign, which allows you to upload HTML emails directly from the Figma plugin directly to your ActiveCampaign templates.

### Video Tutorial: Uploading your emails to ActiveCampaign

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to ActiveCampaign.
[Embedded media](https://www.youtube.com/embed/TgCROp1QHsg)

In the Emailify export panel, select the **ActiveCampaign** option from the dropdown list, then paste in a valid ActiveCampaign URL and API key, which can be generated from your [ActiveCampaign account](https://help.activecampaign.com/hc/en-us/articles/207317590-Getting-started-with-the-API#how-to-obtain-your-activecampaign-api-url-and-key) settings integrations page.

When you're ready, click the **Upload To ActiveCampaign** button to start exporting the emails you've selected from Figma to HTML, and have them automatically be uploaded to your [ActiveCampaign templates](https://www.activecampaign.com/login).

---

---
url: "/emailify/integrations/activetrail.md"
description: "Emailify includes a built-in integration with ActiveTrail, which allows you to upload HTML emails directly from the Figma plugin directly to your ActiveTrail templates."
---

# Uploading your emails to ActiveTrail

> Emailify includes a built-in integration with ActiveTrail, which allows you to upload HTML emails directly from the Figma plugin directly to your ActiveTrail templates.

In the Emailify export panel, select the **ActiveTrail** option from the dropdown list, then paste in a valid ActiveTrail URL and API key, which can be generated from your [ActiveTrail account](https://www.activetrail.com/integrations/learning/guides/a-guide-to-accessing-activetrails-restful-api) settings integrations page.

When you're ready, click the **Upload To ActiveTrail** button to start exporting the emails you've selected from Figma to HTML, and have them automatically be uploaded to your ActiveTrail templates.

---

---
url: "/emailify/integrations/amazon-ses.md"
description: "Emailify includes a built-in integration with Amazon Simple Email Service (SES) on AWS, which allows you to upload HTML emails directly from the Figma plugin directly to your SES templates."
---

# Uploading your emails to Amazon SES

> Emailify includes a built-in integration with Amazon Simple Email Service (SES) on AWS, which allows you to upload HTML emails directly from the Figma plugin directly to your SES templates.

### Video Tutorial: Export HTML emails from Figma to Amazon Simple Email Service (SES)

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Amazon Simple Email Service (SES).
[Embedded media](https://www.youtube.com/embed/6kC4wbapV88)

In the Emailify export panel, select the **SES (AWS)** option from the dropdown list, then paste in a valid AWS API **Access Key** and **Access Secret**, which can be generated from inside your AWS account [IAM](https://aws.amazon.com/iam/) (Identity and Access Management) page.

When you're ready, click the **Upload To SES** button to start exporting the emails you've selected from Figma to HTML, and have them automatically be uploaded to your SES templates list (which you can then use the AWS SES [getEmailTemplate](https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_GetEmailTemplate.html) API endpoint to consume as needed).

---

---
url: "/emailify/integrations/aweber.md"
description: "Emailify includes a Aweber export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform."
---

# Uploading your emails to Aweber

> Emailify includes a Aweber export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform.

### Video Tutorial: Export HTML emails from Figma to Aweber

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Aweber.
[Embedded media](https://www.youtube.com/embed/WpBJ0B8XrUc)

In the Emailify export panel, select the **Aweber** option from the dropdown list, when you're ready, click the **Export For Aweber** button to start exporting the emails you've selected from Figma to HTML.

Once the HTML has been exported, you'll need to manually upload your HTML templates to Aweber, by following the video tutorial above.

---

---
url: "/emailify/integrations/bazaarvoice.md"
description: "Emailify includes a Bazaarvoice export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform."
---

# Uploading your emails to Bazaarvoice

> Emailify includes a Bazaarvoice export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform.

In the Emailify export panel, select the **Bazaarvoice** option from the dropdown list, when you're ready, click the **Export For Bazaarvoice** button to start exporting the emails you've selected from Figma to HTML.

Once the HTML has been exported, you'll need to manually upload your HTML templates to Bazaarvoice by reaching out to their support team, as per [their docs here](https://knowledge.bazaarvoice.com/wp-content/conversations-prr/en_US/design_services/email_template_options.html).

> **Note:** Bazaarvoice can add your provided HTML email templates via a support ticket (at no additional cost) for a limited number of email templates.

---

---
url: "/emailify/integrations/benchmark-email.md"
description: "Emailify includes a Benchmark Email export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform."
---

# Uploading your emails to Benchmark Email

> Emailify includes a Benchmark Email export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform.

### Video Tutorial: Export HTML emails from Figma to Benchmark Email

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Benchmark Email.
[Embedded media](https://www.youtube.com/embed/KYIdqjManjg)

In the Emailify export panel, select the **Benchmark Email** option from the dropdown list, when you're ready, click the **Export For Benchmark Email** button to start exporting the emails you've selected from Figma to HTML.

Once the HTML has been exported, you'll need to manually upload your HTML templates to Benchmark Email, by following the video tutorial above.

> **Note:** Please note, you will need a paid (Pro or Enterprise) Benchmark Email account to be able to upload custom HTML templates to their platform.

---

---
url: "/emailify/integrations/bento.md"
description: "Emailify includes a Bento export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform."
---

# Uploading your emails to Bento

> Emailify includes a Bento export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform.

### Video Tutorial: Export HTML emails from Figma to Bento

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Bento.
[Embedded media](https://www.youtube.com/embed/iv2PWcrxthQ)

In the Emailify export panel, select the **Bento** option from the dropdown list, when you're ready, click the **Export For Bento** button to start exporting the emails you've selected from Figma to HTML.

Once the HTML has been exported, you'll need to manually upload your HTML templates to Bento, by following the video tutorial above.

---

---
url: "/emailify/integrations/bloomreach.md"
description: "Emailify includes a Bloomreach export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform."
---

# Uploading your emails to Bloomreach

> Emailify includes a Bloomreach export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform.

In the Emailify export panel, select the **Bloomreach** option from the dropdown list, when you're ready, click the **Export For Bloomreach** button to start exporting the emails you've selected from Figma to HTML.

Once the HTML has been exported, you'll need to manually upload your HTML templates to Bloomreach by pasting your HTML code into a campaign via the "Code" import feature, as per [their docs here](https://documentation.bloomreach.com/engagement/docs/email-editors#navigating-the-html-builder).

---

---
url: "/emailify/integrations/blueshift.md"
description: "Emailify includes a built-in integration with Blueshift, which allows you to upload HTML emails directly from the Figma plugin directly to your Blueshift templates."
---

# Uploading your emails to BlueShift

> Emailify includes a built-in integration with Blueshift, which allows you to upload HTML emails directly from the Figma plugin directly to your Blueshift templates.

In the Emailify export panel, select the **Blueshift** option from the dropdown list, then paste in a valid Blueshift API key, which can be generated from your [Blueshift account](https://developer.blueshift.com/reference/authorization-1#obtain-the-api-keys) settings page.

When you're ready, click the **Upload To Blueshift** button to start exporting the emails you've selected from Figma to HTML, and have them automatically be uploaded to your Blueshift templates.

---

---
url: "/emailify/integrations/braze.md"
description: "Emailify includes a built-in integration with Braze, which allows you to upload HTML emails directly from the Figma plugin directly to your Braze templates."
---

# Uploading your emails to Braze

> Emailify includes a built-in integration with Braze, which allows you to upload HTML emails directly from the Figma plugin directly to your Braze templates.

### Video Tutorial: Uploading your emails to Braze

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Braze.
[Embedded media](https://www.youtube.com/embed/6GnG-rTdQl8)

In the Emailify export panel, select the **Braze (API)** option from the dropdown list, then paste in a valid Braze [API key and REST endpoint region](https://www.braze.com/docs/api/basics/), which can be found and generated via your Braze dashboard page.

> **Note:** To _create_ emails to braze, you’ll need a Braze API key with the **templates.email.create** permission enabled.

When you're ready, click the **Upload To Braze** button to start exporting the emails you've selected from Figma to HTML, and have them automatically be uploaded to your Braze marketing templates; which you can view  by logging into your Braze account, clicking the **Templates** sidebar item, clicking **Email Templates**, then clicking the **HTML Editor** option and browsing the **Saved HTML Templates** list below.

## Important: Disable Inline CSS Setting

If the [Braze Inline CSS setting](https://www.braze.com/docs/user_guide/message_building_by_channel/email/html_editor/css_inline) is active in your Braze account, this will re-process your HTML by moving styles from a CSS stylesheet into the body of your HTML email, which has already been handled by Emailify, so if this toggle is enabled, it will strip out other styles and break part of your layout on mobile and desktop.

> **Warning:** Please ensure that the **Enable Inline CSS** in the **Sending Settings** -> **Advanced** section is _disabled_. Emailify automatically inlines and minifies the HTML, and re-processing it in Braze will break the code.

> **Tip:** To turn off Inline CSS for a single email, navigate to the **Edit Sending Info** -> **Advanced** tab of the Drag & Drop Editor in Braze and _disable_ **Inline CSS**. This can also be set globally in Braze via  **Settings** -> **Email Preferences**.

> **Note:** If you are using an older version of Braze, you can find the the Global Inline CSS toggle (to turn off) in **Manage Settings** -> **Email Settings** -> **Inline CSS**

## Updating Braze Templates uploaded from Emailify

If you'd like to have your Braze templates automatically _update_ instead of being created as new templates each time, you can optionally enable the **Enable Updatable Templates** toggle in the plugin's export settings (when the _Braze (API)_ option is selected).

This will automatically append a `brazeTemplateId` value to the Figma frame's layer name that was uploaded, and then re-use that ID when the same frame is re-uploaded to Braze via the API upon the next export from the plugin.

> **Tip:** Please note, you will need to **ensure the _Enable Updatable Templates_ toggle is also enabled _prior_ to uploading your initial template**, as this will append the _Braze Template ID_ of the original template that's uploaded to Braze into your FIgma frame name; this ID will then be used for any future re-uploads to update that same template in your Braze account (instead of creating a new one each time), provided that the _Enable Updatable Templates_ toggle remains enabled, too).

> **Note:** To _update_ emails in Braze, you’ll need a Braze API key with the **templates.email.update** permission enabled.

## Universal links and App Links (SparkPost)

To turn any of [your Emailify links](https://docs.hypermatic.com/emailify/content/link-images) into a [universal link for SparkPost](https://www.braze.com/docs/user_guide/message_building_by_channel/email/universal_links/#sparkpost), you can add `[[data-msys-sublink='open-in-app']]` to the end of your URL (eg. `http://www.example.com[[data-msys-sublink='open-in-app']]`), which will automatically include that `data-msys-sublink` data attribute in your `` link tag (eg. ``).

Then, make sure your app is set up to handle the custom path properly. Refer to SparkPost’s article on [Using SparkPost click tracking on deep links](https://support.sparkpost.com/docs/tech-resources/deep-links-self-serve#preferred-solution-using-sparkpost-click-tracking-on-deep-links). This article contains example code for [iOS](https://support.sparkpost.com/docs/tech-resources/deep-links-self-serve#ios-swift-forwarding-clicks-to-sparkpost) and [Android](https://support.sparkpost.com/docs/tech-resources/deep-links-self-serve#forwarding-clicks-from-android-to-sparkpost).

## Universal links and App Links (SendGrid)

To turn any of [your Emailify links](https://docs.hypermatic.com/emailify/content/link-images) into a [universal link for SendGrid](https://www.braze.com/docs/user_guide/message_building_by_channel/email/universal_links/#sendgrid), you can add `[[universal='true']]` to the end of your URL (eg. `http://www.example.com[[universal='true']]`), which will automatically include that `universal` data attribute in your `` link tag (eg. ``).

Then, make sure your app is set up to handle the custom path properly. Refer to SendGrid’s article on [Using SendGrid click tracking on deep links](https://www.twilio.com/docs/sendgrid/ui/sending-email/universal-links). This article contains example code for [iOS](https://www.twilio.com/docs/sendgrid/ui/sending-email/universal-links#resolving-links-in-ios) and [Android](https://www.twilio.com/docs/sendgrid/ui/sending-email/universal-links#resolving-links-in-android).

---

---
url: "/emailify/integrations/brevo.md"
description: "Emailify includes a built-in integration with Brevo, which allows you to upload HTML emails directly from the Figma plugin directly to your Brevo templates."
---

# Uploading your emails to Brevo

> Emailify includes a built-in integration with Brevo, which allows you to upload HTML emails directly from the Figma plugin directly to your Brevo templates.

> **Note:** Brevo was [formerly known as Sendinblue](https://www.brevo.com/blog/becoming-brevo/)

### Video Tutorial: Uploading your emails to Brevo

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Brevo (formerly called "Sendinblue").
[Embedded media](https://www.youtube.com/embed/8BJN16U_IHg)

In the Emailify export panel, select the **Brevo** option from the dropdown list, then paste in a valid Brevo API key and sender email address, which can be generated from your Brevo account [API settings](https://app.brevo.com/settings/keys/api) page, and from the [Senders](https://app.brevo.com/senders) page.

When you're ready, click the **Upload To Brevo** button to start exporting the emails you've selected from Figma to HTML, and have them automatically be uploaded to your [Brevo marketing templates](https://my.brevo.com/camp/lists/template).

---

---
url: "/emailify/integrations/campaign-monitor.md"
description: "Emailify includes a built-in integration with Campaign Monitor, which allows you to upload HTML emails directly from the Figma plugin directly to your Campaign Monitor templates."
---

# Uploading your emails to Campaign Monitor

> Emailify includes a built-in integration with Campaign Monitor, which allows you to upload HTML emails directly from the Figma plugin directly to your Campaign Monitor templates.

### Video Tutorial: Uploading your emails to Campaign Monitor

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Campaign Monitor.
[Embedded media](https://www.youtube.com/embed/vyAsh8v8GLE)

In the Emailify export panel, select the **Campaign Monitor** option from the dropdown list, then paste in a valid Campaign Monitor **API key** and **Client ID**, which can be generated from your [Campaign Monitor account settings](https://help.campaignmonitor.com/api-keys) page.

When you're ready, click the **Upload To Campaign Monitor** button to start exporting the emails you've selected from Figma to HTML, and have them automatically be uploaded to your Campaign Monitor **My templates** page.

---

---
url: "/emailify/integrations/cheetah-digital.md"
description: "Emailify includes a built-in integration with Cheetah Digital by Marigold, which allows you to upload HTML emails directly from the Figma plugin directly to your Cheetah Digital content blocks."
---

# Uploading your emails to Cheetah Digital

> Emailify includes a built-in integration with Cheetah Digital by Marigold, which allows you to upload HTML emails directly from the Figma plugin directly to your Cheetah Digital content blocks.

1. In the Emailify export panel, select the **Cheetah Digital** option from the dropdown list.
2. Paste in a valid Cheetah Digital **Consumer Key** and **Consumer Secret** (under the **OAuth 2.0** section), which can be found in your Cheetah Digital account's **Data** -> [API Keys](https://login.eccmp.com/ux/Ux/Main#API-Keys) page.
3. After you've authenticated with your Engage+ account, you'll need to enter your **Customer ID** into the Emailify plugin (which your Marigold representative will provide you; so please email them if you don't have your Customer ID yet).
4. Finally, you can select any **Table** and **Folder** options from the dropdown menus (underneath your Customer ID field) in the Emailfiy plugin.
5. When you're ready, click the **Upload To Cheetah Digital** button to start exporting the emails you've selected from Figma to HTML, and have them automatically uploaded to your Cheetah Digital account as new _content blocks_.

---

---
url: "/emailify/integrations/constant-contact.md"
description: "Emailify includes a Constant Contact export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform."
---

# Uploading your emails to Constant Contact

> Emailify includes a Constant Contact export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform.

### Video Tutorial: Export HTML emails from Figma to Constant Contact

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Constant Contact.
[Embedded media](https://www.youtube.com/embed/XDjtuc0XWKI)

In the Emailify export panel, select the **Constant Contact** option from the dropdown list, when you're ready, click the **Export For Constant Contact** button to start exporting the emails you've selected from Figma to HTML.

Once the HTML has been exported, you'll need to manually upload your HTML templates to Constant Contact, by following the video tutorial above.

---

---
url: "/emailify/integrations/contlo.md"
description: "Emailify includes a Contlo export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform."
---

# Uploading your emails to Contlo

> Emailify includes a Contlo export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform.

In the Emailify export panel, select the **Contlo** option from the dropdown list, when you're ready, click the **Export For Contlo** button to start exporting the emails you've selected from Figma to HTML.

Once the HTML has been exported, you'll need to manually upload your HTML templates to Contlo via the **Custom HTML** option, by [following the instructions in the Contlo documentation](https://docs.contlo.com/docs/create-and-send-an-email-campaign) site.

---

---
url: "/emailify/integrations/convertkit.md"
description: "Emailify includes a ConvertKit export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform."
---

# Uploading your emails to ConvertKit

> Emailify includes a ConvertKit export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform.

### Video Tutorial: Export HTML emails from Figma to ConvertKit

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to ConvertKit.
[Embedded media](https://www.youtube.com/embed/I8kwRdvwf8k)

In the Emailify export panel, select the **ConvertKit** option from the dropdown list, when you're ready, click the **Export For ConvertKit** button to start exporting the emails you've selected from Figma to HTML.

Once the HTML has been exported, you'll need to manually upload your HTML templates to ConvertKit, by following the video tutorial above.

---

---
url: "/emailify/integrations/customer-io.md"
description: "Emailify includes an option to export your HTML for Customer.io, which allows you to take your exported HTML file and copy/paste it into the Customer.io email layouts section in your account."
---

# Uploading your emails to Customer.io

> Emailify includes an option to export your HTML for Customer.io, which allows you to take your exported HTML file and copy/paste it into the Customer.io email layouts section in your account.

### Video Tutorial: Uploading your emails to Customer.io

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Customer.io.
[Embedded media](https://www.youtube.com/embed/KQyaQy6gYps)

In the Emailify export panel, select the **Customer.io** option from the dropdown list, then when you're ready, click the **Export For Customer.io** button to start exporting the emails you've selected from Figma to HTML.

Once the export is finished, download the .zip file to your computer and unzip it, then open the "index.html" inside the folder with your email name in a code/text editor and copy all the HTML in the file, then:

- [Login](https://fly.customer.io/login) to your Customer.io account
- Expand the **Content** menu item in the admin navigation
- Then click the **Email Layouts** menu item
- Click the **Create Layout** button
- Click the **Start from scratch** option
- Name your layout and click **Create Layout**.
- Paste your copied HTML from the exported index.html file into the **Edit** tab editor.
- Click the **Save changes** button.

## Creating a totally blank layout in Customer.io

> **Warning:** **Make sure you're using a totally blank layout!** By default, Customer.io will automatically add its own extra HTML tags (eg. head, body, etc) to any new layout created; you'll need to ensure that this code is removed, otherwise your HTML template will look broken when it's sent out.

In Customer.io, when you start creating an email, you'll need to select a [Layout](https://customer.io/docs/journeys/3-layouts-and-customerio/), and this needs to be totally blank, so that your own custom HTML template is the only thing that gets rendered.

![Image](/assets/images/emailify/customer-io-one.jpg)

As you can see in the screenshot below, selecting a **Layout** that looks blank, isn't actually blank (as it has those `` tags automatically included and wrapping around your HTML template content)

![Image](/assets/images/emailify/customer-io-two.jpg)

To fix this, you'll need to manually remove any HTML that Customer.io adds to your blank Layout, and only leave the `content` tag (below).

![Image](/assets/images/emailify/customer-io-three.jpg)

After the **Layout** has been saved and only contains the `content` tag, your custom HTML template should render as expected.

---

---
url: "/emailify/integrations/dotdigital.md"
description: "Emailify includes a built-in integration with DotDitigal, which allows you to upload HTML emails directly from the Figma plugin directly to your DotDitigal templates."
---

# Uploading your emails to DotDitigal

> Emailify includes a built-in integration with DotDitigal, which allows you to upload HTML emails directly from the Figma plugin directly to your DotDitigal templates.

In the Emailify export panel, select the **DotDitigal** option from the dropdown list, then paste in a valid DotDitigal API user details , which can be generated from your [DotDitigal account](https://developer.dotdigital.com/docs/getting-started-with-the-api#setting-up-your-api-user) settings page. Then you'll also need to select your [region](https://developer.dotdigital.com/docs/api-conventions#region-specific-end-points) from the drop down list in the plugin.

When you're ready, click the **Upload To DotDitigal** button to start exporting the emails you've selected from Figma to HTML, and have them automatically be uploaded to your DotDitigal templates.

---

---
url: "/emailify/integrations/drip.md"
description: "Emailify includes a Drip export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform."
---

# Uploading your emails to Drip

> Emailify includes a Drip export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform.

### Video Tutorial: Export HTML emails from Figma to Drip

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Drip.
[Embedded media](https://www.youtube.com/embed/T-VmrIW9e7c)

In the Emailify export panel, select the **Drip** option from the dropdown list, when you're ready, click the **Export For Drip** button to start exporting the emails you've selected from Figma to HTML.

Once the HTML has been exported, you'll need to manually upload your HTML templates to Drip, by following the video tutorial above.

---

---
url: "/emailify/integrations/emailoctopus.md"
description: "Emailify includes a EmailOctopus export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform."
---

# Uploading your emails to EmailOctopus

> Emailify includes a EmailOctopus export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform.

### Video Tutorial: Export HTML emails from Figma to EmailOctopus

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to EmailOctopus.
[Embedded media](https://www.youtube.com/embed/SxoknO-JXSM)

In the Emailify export panel, select the **EmailOctopus** option from the dropdown list, when you're ready, click the **Export For EmailOctopus** button to start exporting the emails you've selected from Figma to HTML.

Once the HTML has been exported, you'll need to manually upload your HTML templates to EmailOctopus, as per [their docs here](https://help.emailoctopus.com/article/50-create-or-import-a-template) (or follow the step by step video tutorial above).

---

---
url: "/emailify/integrations/emarsys.md"
description: "Emailify includes a built-in integration with Emarsys, which allows you to upload HTML emails directly from the Figma plugin directly to your Emarsys campaigns."
---

# Uploading your emails to Emarsys

> Emailify includes a built-in integration with Emarsys, which allows you to upload HTML emails directly from the Figma plugin directly to your Emarsys campaigns.

## Setting up your your Emarsys API Key

To upload your email campaigns from any Emailify Figma designs, you'll need to create a WSSE key in Emarsys, set the permissions for it, and then use the generated API key credentials to connect Emailify to your Emarsys account.

### Creating your Emarsys WSSE key

The first step is to [create your WSSE key in Emarsys](https://help.emarsys.com/hc/en-us/articles/22036625729554-Security-settings-API-Credentials#wsse) (please note that you'll need to be an **account owner** to have permission to do this) and then navigate to **Management** -> **Security Settings** -> **API Credentials** to create your WSSE key.

### Setting your API key permissions

After you've created your key and stored your username and key somewhere safe (to paste into the Emailify Figma plugin in the next step below), you will also need to enable the [API endpoint permissions](https://dev.emarsys.com/docs/emarsys-core-api-guides/ef41493bd7812-endpoint-permission-settings) below for the API integration to work as expected:

- `campaign.create`
- `campaign.update`
- `contactlist.list`

## Uploading your HTML from Emailify

In the Emailify export panel, select the **Emarsys** option from the dropdown list, then paste in a valid Emarsys API credentials (as per the previous step above); once Emarsys is authenticated in the plugin, you'll need to select the **Contact List** you'd like the campaign to be sent to later, along with the **From Name** and **From Email** address that the campaign will be sent from later, too.

When you're ready, click the **Upload To Emarsys** button to start exporting the emails you've selected from Figma to HTML, and have them automatically be uploaded to your Emarsys campaigns.

## Updating Emarsys Templates uploaded from Emailify

If you'd like to have your Emarsys templates automatically _update_ instead of being created as new templates each time, you can optionally enable the **Enable Updatable Templates** toggle in the plugin's export settings (when the _Emarsys_ option is selected).

This will automatically append a `emarsysTemplateId` value to the Figma frame's layer name that was uploaded, and then re-use that ID when the same frame is re-uploaded to Emarsys via the API upon the next export from the plugin.

> **Note:** Please note, you will _need_ to enable the `campaign.update` permission on your Emarsys WWSE key for this to work.

> **Tip:** Please note, you will need to **ensure the _Enable Updatable Templates_ toggle is also enabled _prior_ to uploading your initial template**, as this will append the _Emarsys Template ID_ of the original template that's uploaded to Emarsys into your FIgma frame name; this ID will then be used for any future re-uploads to update that same template in your Emarsys account (instead of creating a new one each time), provided that the _Enable Updatable Templates_ toggle remains enabled, too).

---

---
url: "/emailify/integrations/getresponse.md"
description: "Emailify includes a GetResponse export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform."
---

# Uploading your emails to GetResponse

> Emailify includes a GetResponse export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform.

### Video Tutorial: Export HTML emails from Figma to GetResponse

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to GetResponse.
[Embedded media](https://www.youtube.com/embed/_WtsjQmQV-I)

In the Emailify export panel, select the **GetResponse** option from the dropdown list, when you're ready, click the **Export For GetResponse** button to start exporting the emails you've selected from Figma to HTML.

Once the HTML has been exported, you'll need to manually upload your HTML templates to GetResponse, by following the video tutorial above.

---

---
url: "/emailify/integrations/hubspot.md"
description: "Emailify includes a built-in integration with HubSpot, which allows you to upload HTML emails directly from the Figma plugin directly to your HubSpot templates."
---

# Uploading your emails to HubSpot

> Emailify includes a built-in integration with HubSpot, which allows you to upload HTML emails directly from the Figma plugin directly to your HubSpot templates.

> **Warning:** As per the [HubSpot docs](https://knowledge.hubspot.com/design-manager/build-a-custom-coded-template) for custom HTML emails: a **Marketing Hub Professional** or **Enterprise account** is required to build custom coded email templates.

In the Emailify export panel, select the **HubSpot** option from the dropdown list, then paste in a valid HubSpot Private App API key, which can be generated from your HubSpot account by creating a new [Private App](https://developers.hubspot.com/docs/api/migrate-an-api-key-integration-to-a-private-app#create-a-new-private-app) from the **Integrations** -> **Private Apps** page in your HubSpot account settings by following then steps below:

1. Click the **Create private app** button
2. On the **Basic Info** tab, give the private a name (eg. **Emailify**)
3. Then on the **Scopes** tab, search for `content` and tick the **content** checkbox.
4. Click the **Create app** button, then click **Continue creating**
5. Click the **Show token** button, then click the **Copy** button
6. Store this key somewhere safe (for future re-use/reference)
7. Go back to Emailify and paste it in the **HubSpot API** key input

When you're ready, click the **Upload To HubSpot** button to start exporting the emails you've selected from Figma to HTML, and have them automatically be uploaded to your [HubSpot templates](https://app.hubspot.com/).

## Important note on editing HTML emails in HubSpot

Unfortunately, HubSpot doesn’t offer a visual editor for custom HTML emails in the same way tools like Mailchimp or Klaviyo do. Once an HTML email is uploaded to HubSpot, any changes need to be made directly in their code editor.

HubSpot does support modules (reusable custom code blocks), but these are fairly complex to set up, must be managed manually, and don’t work especially well for one-off or campaign-based emails.

Recommended workaround:
If you’d like to use Emailify with HubSpot, the simplest approach is to invite your team into the same Figma file. Teammates can edit text and images directly in Figma, and once everything is final, you can export and upload the email to HubSpot from the plugin.

It’s not perfect, but this workflow avoids HubSpot’s editor limitations and keeps content edits fast and collaborative.

---

---
url: "/emailify/integrations/insider.md"
description: "Emailify includes a built-in integration with Insider, which allows you to upload HTML emails directly from the Figma plugin as Insider campaigns or reusable templates."
---

# Uploading your emails to Insider

> Emailify includes a built-in integration with Insider, which allows you to upload HTML emails directly from the Figma plugin as Insider campaigns or reusable templates.

### Video Tutorial: Export HTML emails from Figma to Insider (UseInsider)

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Insider (UseInsider).
[Embedded media](https://www.youtube.com/embed/uZAXjEmKhJ0)

> **Note:** The video above shows the original campaign upload flow. Emailify now includes a **Destination** dropdown that lets you upload to either Insider campaign content or the Insider template library.

In the Emailify export panel, select the **Insider** option from the dropdown list, then choose either **Campaign** or **Template** from the **Destination** dropdown and paste in a valid Insider API key, which can be generated from your Insider account by [generating a new API key](https://academy.useinsider.com/docs/api-authentication-tokens#generate-api-key) by following the steps below:

1. Navigate to **Settings** -> **Inone Settings** -> **Integration Settings** while logged into the Insider platform.
2. Click the **Generate API Key** button at the bottom of the _Integration Settings_ page.
3. Select the correct key type in the _API Key Type_ panel for the destination you're using:

   - Choose **Email Content** if you're uploading to **Campaign**.
   - Choose **Email Content and Templates** if you're uploading to **Template**.

4. Click the **Next** button to generate the API key.
5. Click the **Copy** button to copy your API key.
6. Go back to Emailify and paste it in the **Insider API** key input.

When you're ready, click the **Upload To Insider** button to start exporting the emails you've selected from Figma to HTML.

- If you selected **Campaign**, Emailify will upload your HTML to Insider's campaign content area under [**Messages** -> **Email**](https://inone.useinsider.com/login).
- If you selected **Template**, Emailify will upload your HTML to Insider's reusable template library under [**Email** -> **Templates**](https://inone.useinsider.com/login).

---

---
url: "/emailify/integrations/intercom.md"
description: "Emailify includes a Intercom export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform."
---

# Uploading your emails to Intercom

> Emailify includes a Intercom export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform.

### Video Tutorial: Export HTML emails from Figma to Intercom

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Intercom.
[Embedded media](https://www.youtube.com/embed/U14GJx6k4mM)

In the Emailify export panel, select the **Intercom** option from the dropdown list, when you're ready, click the **Export For Intercom** button to start exporting the emails you've selected from Figma to HTML.

Once the HTML has been exported, you'll need to manually upload your HTML templates to Intercom, as per [their docs here](https://www.intercom.com/help/en/articles/245-creating-html-emails) or [here](https://www.intercom.com/help/en/articles/247-create-html-email-templates).

---

---
url: "/emailify/integrations/iterable.md"
description: "Emailify includes a built-in integration with Iterable, which allows you to upload HTML emails directly from the Figma plugin directly to your Iterable templates."
---

# Uploading your emails to Iterable

> Emailify includes a built-in integration with Iterable, which allows you to upload HTML emails directly from the Figma plugin directly to your Iterable templates.

In the Emailify export panel, select the **Iterable** option from the dropdown list, then paste in a valid Iterable API key, which can be generated from your Iterable account [API Keys](https://support.iterable.com/hc/en-us/articles/360043464871-API-Keys#creating-api-keys) settings page.

When you're ready, click the **Upload To Iterable** button to start exporting the emails you've selected from Figma to HTML, and have them automatically be uploaded to your Iterable templates.

---

---
url: "/emailify/integrations/klaviyo.md"
description: "Emailify includes a built-in integration with Klaviyo, which allows you to upload HTML emails directly from the Figma plugin directly to your Klaviyo templates."
---

# Uploading your emails to Klaviyo

> Emailify includes a built-in integration with Klaviyo, which allows you to upload HTML emails directly from the Figma plugin directly to your Klaviyo templates.

### Video Tutorial: Uploading your emails to Klaviyo

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Klaviyo.
[Embedded media](https://www.youtube.com/embed/7OCqmOsrAYk)

> **Tip:** If you need Klaviyo template links (for example, `{{ event.url }}`) in your [text paragraphs](/emailify/content/link-paragraphs), Figma's native link field will block them as invalid URLs. To get around this, you can use Emailify's special Klaviyo link format instead, `https://klaviyo.invalid/?{{ event.url }}`, and Emailify will output the raw Klaviyo template syntax in your exported HTML.

In the Emailify export panel, select the **Klaviyo** option from the dropdown list, then paste in a valid Klaviyo private API key (via the steps below):

1. Login to Klaviyo and go your [Klaviyo API Keys settings page](https://www.klaviyo.com/settings/account/api-keys).
2. Click the **Create Private API Key** button.
3. Give it a name (eg. "Emailify API Key") and click the **Custom Key** radio button.
4. Set the  **Templates** API Scopes radio button to **Read/Write Access** (all other API scopes can can be left as _No Access_).
5. Click the **Copy** icon button under the **Your Private Key** section on the API creation success screen.
6. Paste your copied API key (which should look something like `pk_b3338b071136f98817d2a0e0a9581137ee`) into the Emailify plugin.

When you're ready, click the **Upload To Klaviyo** button to start exporting the emails you've selected from Figma to HTML, and have them automatically be uploaded to your [Klaviyo templates](https://www.klaviyo.com/email-templates/list) page.

> **Info:** If your HTML email size is under 102kb, but your email is still being clipped in Gmail after being sent from Klaviyo, this is caused by having link tracking turned on in Klaviyo, which automatically swaps your original link URLs into much longer "tracking URLs" and increases the file size of your HTML that's sent out. To prevent this from happening, you can optionally turn off the link tracking/GA setting in your Klaviyo account.

## Updating Klaviyo templates uploaded from Emailify

If you'd like Emailify to automatically update the same Klaviyo template instead of creating a new template each time, you can optionally enable the **Enable Updatable Templates** toggle in the plugin's export settings when the **Klaviyo** option is selected.

This will automatically append a `klaviyoTemplateId` value to the Figma frame name after the first successful upload, and Emailify will re-use that stored template ID the next time the same frame is uploaded to Klaviyo.

> **Tip:** Please make sure the **Enable Updatable Templates** toggle is enabled before you upload the template for the first time. That initial upload is what stores the original Klaviyo Template ID in your Figma frame name for future re-uploads.

> **Warning:** This only updates the saved template in your Klaviyo templates library. If that template has already been used in a Klaviyo campaign or flow, Klaviyo creates a copy for that message, so re-uploading from Emailify will not automatically replace those in-use copies.

## Using your uploaded Klaviyo email template in a campaign

1. Create a new [email campaign](https://www.klaviyo.com/campaigns) in Klaviyo
2. Click on your new template name in the **Email:saved** tab on the **Templates** page list.
3. Click the **Use template** button in the popup preview window.
4. Click the **Save** button on the code editor page (**this step is important**)
5. After "Your changes have been saved.", click the **Back to Content** button.
6. Schedule your email campaign as needed.

## Editable text/images in Klaviyo (optional)

> **Warning:** **IMPORTANT: Klaviyo's new editor adds automatic padding to editable text blocks and buttons**. Unfortunately, you will need to manually override each of these back to "0" to get the email looking like your original designs from Figma by following the video under the **Fixing Klaviyo's automatic padding overrides in editable campaigns** section below.

If you would like to enable content blocks to be editable after the template has been uploaded to Klaviyo, enable the **Editable Content** toggle in the Emailify export options, and then follow the steps below in Klaviyo:

1. Create a new [email campaign](https://www.klaviyo.com/campaigns) in Klaviyo
2. Click the **Drag and Drop** option in the campaign **Content** step
3. Click the **My Templates** tab, then click on your new template
4. Click the **Save** button, then click **Back to Content**
5. Click the **Edit Email** button

### Fixing Klaviyo's automatic padding overrides in editable campaigns

[Video](/assets/videos/emailify/export/klaviyo-padding-overrides.mp4)

Due the Klaviyo [updating their editor](https://help.klaviyo.com/hc/en-us/articles/13160284274459), and forcing all templates to use it as of June 6th 2023; unfortunately, if you're exporting HTML emails with the **Editable Content** toggle enabled in Emailify, Klaviyo will automatically apply ~18px of additional padding around each text element by default, as an inline `style` attribute to a new `` element that it injects into the HTML if it's an editable template.

Enabling the **Force the padding added by Klaviyo's new editor to be 0px** toggle in Emailify does automatically add some extra CSS to remove this padding for all mobile clients and non-Outlook desktop clients like Gmail etc, however, _Outlook_ **will still render the padding** unless each of the "Padding" values for any editable text blocks in your template are manually changed to "0" when editing the email for your Campaign in the Klaviyo editor.

## Adding a dynamic product feed to your Klaviyo emails

### Video Tutorial: Adding a dynamic product feed to your Klaviyo emails

This video tutorial is a complete step-by-step guide showing you how to add custom Klaviyo product feeds into custom HTML templates with the Emailify Figma Plugin.
[Embedded media](https://www.youtube.com/embed/PaRSIxVLYlo)

To add a dynamic Klaviyo [product feed](https://help.klaviyo.com/hc/en-us/articles/115005082787) to your HTML email template in Emailify, you have the option of using one of the component presets under the **Ecomm** tab in the Emailify plugin category tabs.

After you've added the component to your Emailify frame, you'll need to swap the `YOUR_KLAVIYO_PRODUCT_FEED_NAME_HERE` name in the component that's added with your own Klaviyo Product Feed name that you've created in your Klaviyo account as a product feed.

To use custom HTML product feeds in Klaviyo, you'll also need to ensure that the **Editable Content** toggle in the Emailify export options, which will allow you to drag and drop a default "Product" block from the Klaviyo editor's "Blocks" sidebar into your email after it's uploaded to your Klaviyo Templates.

It's worth following the video tutorial above to watch how to do this step by step, and ensure that your Klaviyo template is setup correctly, otherwise the data from your product feed may not show up if you haven't followed the steps correctly.

> **Note:** **If you need a hand with this**, please reach out to a developer on your team, or [your Klaviyo support rep](https://www.klaviyo.com/support), as we (Emailify) can't provide any technical expertise or assist with any custom implementations of this more advanced templating feature in Klaviyo.

### Manually adding editable region to drag/drop the Klaviyo Product Feed

Since 2025, it seems like you also need to manually include this editable region to your HTML template via Klaviyo's own HTML template code editor _first_ and re-save the template before using it in a campaign, to ensure the dynamic product feed loads any data:

```

        Drag and Drop your Klaviyo Product Feed Block Here

        NOTE: Remove this text element in Klaviyo's editor when you're done!

        Video Tutorial: https://www.youtube.com/watch?v=PaRSIxVLYlo

```

You can paste it in the line above: ` **Note:** **If you need a hand with this**, please reach out to a developer on your team, or [your Klaviyo support rep](https://www.klaviyo.com/support), as we (Emailify) can't provide any technical expertise or assist with any custom implementations of this more advanced templating feature in Klaviyo.

---

---
url: "/emailify/integrations/loops.md"
description: "Emailify includes a Loops.so export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform."
---

# Uploading your emails to Loops.so

> Emailify includes a Loops.so export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform.

### Video Tutorial: Export HTML emails from Figma to Loops.so

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Loops.so.
[Embedded media](https://www.youtube.com/embed/tPKd8R7gH1Q)

1. Click the **Export HTML** button in Emailify.
2. Select the **Loops** option from the dropdown list, then click the **Export For Loops** button.
3. Download and unzip the `.zip` file exported from Emailify.
4. Go to your Loops.so [Templates](https://app.loops.so/templates) page and click **Blank campaign**.
5. Click the **Upload a custom email** icon button in the top right of the Loops compose campaign page.
6. **Drag and drop a .zip file** from the `_zips (For upload to Loops.so)` folder (in your Emailify export) into Loops.
7. Click the **Upload** button after dropping your `.zip` file into the Loops file upload area.

---

---
url: "/emailify/integrations/mailchimp.md"
description: "Emailify includes a built-in integration with MailChimp, which allows you to upload HTML emails directly from the Figma plugin directly to your MailChimp templates."
---

# Uploading your emails to MailChimp

> Emailify includes a built-in integration with MailChimp, which allows you to upload HTML emails directly from the Figma plugin directly to your MailChimp templates.

### Video Tutorial: Uploading your emails to MailChimp

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to MailChimp.
[Embedded media](https://www.youtube.com/embed/FgPl-a_z59A)

> **Tip:** If you need Mailchimp merge tag links (for example, `*|UNSUB|*`) in your [text paragraphs](/emailify/content/link-paragraphs), Figma's native link field will block them as invalid URLs. To get around this, you can use Emailify's special Mailchimp link format instead, `https://mailchimp.invalid/?*|UNSUB|*`, and Emailify will output the raw Mailchimp merge tag in your exported HTML.

In the Emailify export panel, select the **MailChimp (API)** option from the dropdown list, then paste in a valid MailChimp API key, which can be generated from your [MailChimp account settings](https://admin.mailchimp.com/account/api/) page.

When you're ready, click the **Upload To MailChimp** button to start exporting the emails you've selected from Figma to HTML, and have them automatically be uploaded to your [MailChimp templates](https://admin.mailchimp.com/templates/) page (which you can also get to from your MailChimp dashboard menu by clicking on **Content**, then clicking **Email templates**).

## Making images editable in MailChimp campaign editor

By default, the text content areas and rows in your HTML template will be editable in the MailChimp campaign editor after it's uploaded; you can also optionally allow images to be editable by enabling the **Editable Images** toggle in the Emailify export settings.

> **Warning:** **Enabling editable images will use @1x images (instead of @2x retina)**. You can optionally enable your images in the template to be editable in MailChimp with the **Editable Images** toggle, but unfortunately, [MailChimp doesn't support editable @2x retina images](https://github.com/mailchimp/email-blueprints/issues/37), so these will be @1x instead. If you'd prefer to have @2x retina images that aren't editable, please leave this option turned off.

## Blurry images in the MailChimp editor (when template is editable)

Unfortunately, [MailChimp doesn't support editable @2x retina images](https://github.com/mailchimp/email-blueprints/issues/37), so your images will be exported @1x resolution if you've enabled the **Editable Images** toggle. If you'd prefer to have @2x retina images that aren't editable, please leave the **Editable Images** toggle option turned _off_.

## Manually uploading local .zip exports to MailChimp (without using the MailChimp API)

[Video](/assets/videos/emailify/export/mailchimp-local-zip.mp4)

If you'd prefer to upload your email templates to MailChimp manually via .zip file upload, you can do that by selecting the **MailChimp (Zip)** option from the Export HTML dropdown list, then clicking the **Export for MailChimp** button.

After the export process has finished, click the **Download your .zip file** button and _unzip_ that file after saving it to your computer, then you'll be able to upload the .zip files from the **_zips (For upload to MailChimp)** folder inside of your main unzipped folder (as per the video screencap above).

## MailChimp HTML modifications and Gmail rendering

MailChimp automatically modifies uploaded HTML email templates before sending. These changes are applied forcibly and cannot be disabled.

Some of the known modifications include:

- Splitting combined `@media` query blocks into multiple separate media queries
- Rewriting or restructuring CSS rules
- Stripping `"` quotation characters from certain CSS selectors (eg. `a[href^="tel:"]` becomes `a[href^=tel:]`)

These changes can have unintended side effects, particularly in Gmail. Gmail has a strict CSS parser and will ignore all styles inside a `` tag if it encounters a single invalid selector or property. This can result in issues such as column widths not applying or layouts stacking unexpectedly.

Where possible, Emailify applies MailChimp-specific workarounds to avoid known issues during the export process from the plugin. However, because these modifications happen after the HTML is uploaded, some behaviour is outside of our control (especially if you are adding additional custom CSS, too).

If you encounter Gmail-specific layout issues when sending via MailChimp, it is very likely related to these automatic template transformations rather than the original HTML exported from Figma.

---

---
url: "/emailify/integrations/mailercloud.md"
description: "Emailify includes a Mailercloud export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform."
---

# Uploading your emails to Mailercloud

> Emailify includes a Mailercloud export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform.

### Video Tutorial: Uploading your emails to Mailercloud

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Mailercloud.
[Embedded media](https://www.youtube.com/embed/vtVd9ng97w8)

In the Emailify export panel, select the **Mailercloud** option from the dropdown list, when you're ready, click the **Export For Mailercloud** button to start exporting the emails you've selected from Figma to HTML.

Once the HTML has been exported, you'll need to manually upload your HTML templates to Mailercloud by pasting your HTML code into a campaign via the "HTML Editor" option after clicking **Choose template** from your new campaign screen.

---

---
url: "/emailify/integrations/mailerlite.md"
description: "Emailify includes a MailerLite export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform."
---

# Uploading your emails to MailerLite

> Emailify includes a MailerLite export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform.

### Video Tutorial: Export HTML emails from Figma to MailerLite

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to MailerLite.
[Embedded media](https://www.youtube.com/embed/5eKKe7M2-yo)

In the Emailify export panel, select the **MailerLite** option from the dropdown list, when you're ready, click the **Export For MailerLite** button to start exporting the emails you've selected from Figma to HTML.

Once the HTML has been exported, you'll need to manually upload your HTML templates to MailerLite, as per [their docs here](https://www.mailerlite.com/help/how-to-use-the-custom-html-editor) (or follow the step by step video tutorial above).

---

---
url: "/emailify/integrations/mailgun.md"
description: "Emailify includes a built-in integration with Mailgun, which allows you to upload HTML emails directly from the Figma plugin directly to your Mailgun templates."
---

# Uploading your emails to Mailgun

> Emailify includes a built-in integration with Mailgun, which allows you to upload HTML emails directly from the Figma plugin directly to your Mailgun templates.

### Video Tutorial: Uploading your emails to Mailgun

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Mailgun.
[Embedded media](https://www.youtube.com/embed/hrsveAlzzZo)

In the Emailify export panel, select the **Mailgun** option from the dropdown list, then pasting in your Mailgun [domain](https://app.mailgun.com/app/sending/domains) and a valid Mailgun [private API key](https://app.mailgun.com/app/account/security/api_keys) from your Mailgun account.

When you're ready, click the **Upload To Mailgun** button to start exporting the emails you've selected from Figma to HTML, and have them automatically be uploaded to your Mailgun account, which can be viewed by logging into your [Mailgun dashboard](https://app.mailgun.com/mg/dashboard), clicking the **Sending** menu link, then clicking on the **Templates** link.

---

---
url: "/emailify/integrations/mailjet.md"
description: "Emailify includes a built-in integration with MailJet, which allows you to upload HTML emails directly from the Figma plugin directly to your MailJet templates."
---

# Uploading your emails to MailJet

> Emailify includes a built-in integration with MailJet, which allows you to upload HTML emails directly from the Figma plugin directly to your MailJet templates.

### Video Tutorial: Uploading your emails to MailJet

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Mailjet.
[Embedded media](https://www.youtube.com/embed/LwkH-A3pAYE)

In the Emailify export panel, select the **Mailjet** option from the dropdown list, then paste in a valid Mailjet API key and secret, which can be generated from your [Mailjet account](https://app.mailjet.com/account/apikeys) API settings page.

When you're ready, click the **Upload To Mailjet** button to start exporting the emails you've selected from Figma to HTML, and have them automatically be uploaded to your [Mailjet marketing templates](https://app.mailjet.com/templates/marketing).

> **Tip:** You can optionally [disable Mailjet link tracking](https://documentation.mailjet.com/hc/en-us/articles/360042751854-How-to-exclude-a-link-from-being-tracked-when-click-tracking-is-enabled
> ) by enabling the **Add rel="notrack" to Links** toggle in the Emailify export settings when exporting your HTML emails to Mailjet.

## Manually uploading local .zip exports to Mailjet (without using the Mailjet API)

If you'd prefer to [upload your email templates to Mailjet manually via .zip file upload](https://documentation.mailjet.com/hc/en-us/articles/360042953273-Template-Management#templates-create-html), you can do that by selecting the **Mailjet (Zip)** option from the Export HTML dropdown list, then clicking the **Export for Mailjet** button.

After the export process has finished, click the **Download your .zip file** button and _unzip_ that file after saving it to your computer, then you'll be able to upload the .zip files from the **_zips (For upload to Mailjet)** folder inside of your main unzipped folder.

---

---
url: "/emailify/integrations/mailmodo.md"
description: "Emailify includes a Mailmodo export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform."
---

# Uploading your emails to Mailmodo

> Emailify includes a Mailmodo export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform.

### Video Tutorial: Export HTML emails from Figma to Mailmodo

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Mailmodo.
[Embedded media](https://www.youtube.com/embed/WstlHCpO8L4)

In the Emailify export panel, select the **Mailmodo** option from the dropdown list, when you're ready, click the **Export For Mailmodo** button to start exporting the emails you've selected from Figma to HTML.

Once the HTML has been exported, you'll need to manually upload your HTML templates to Mailmodo, by following the video tutorial above.

---

---
url: "/emailify/integrations/marketo.md"
description: "Emailify includes a built-in integration with Marketo (Adobe Marketo Engage), which allows you to upload HTML emails directly from the Figma plugin directly to your Marketo templates."
---

# Uploading your emails to Marketo

> Emailify includes a built-in integration with Marketo (Adobe Marketo Engage), which allows you to upload HTML emails directly from the Figma plugin directly to your Marketo templates.

### Video Tutorial: Uploading your emails to Marketo

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Marketo.
[Embedded media](https://www.youtube.com/embed/GBU_cdxPBfA)

## Uploading your Marketo templates from Figma via the API integration

To upload your HTML templates from Emailify to your Marketo account, you'll need to paste in your **Client ID**, **Client Secret** and **REST API Endpoint URL** for your Marketo account by following the steps below:

### Step 1: Get your Marketo REST API Endpoint URL

This first step will show you how to get your **REST API Endpoint URL** in Marketo.

1. Login to Marketo and navigate to the 'Admin' page

![Image](/assets/images/emailify/marketo/01-marketo-api-admin.jpg)

2. Click the **Web Services** nav item and copy the REST API **Endpoint** URL to your clipboard to use later in Step 3 (below)

![Image](/assets/images/emailify/marketo/04-marketo-api-endpoints.jpg)

### Step 2: Get your Marketo Client ID and Client Secret details

This second step will show you how to get your **Client ID** and **Client Secret** details in Marketo.

> **Tip:** If you've already created a Marketo role that has _Read/Write Assets_ permissions, you don't need to create a new one if you don't want to; feel free to click the **View Details** link (as per _Step 6_ below) to get your existing Client ID and Client Secret

1. Login to Marketo and navigate to the **Admin** page

![Image](/assets/images/emailify/marketo/01-marketo-api-admin.jpg)

2. Go to the **Users & Roles** nav item, click the **Roles** tab at the top, then click **New Role**

![Image](/assets/images/emailify/marketo/02-marketo-api-roles.jpg)

3. Add a new role with **Read/Write Assets** permissions enabled (under the **Access API** dropdown item) and click **Create**

![Image](/assets/images/emailify/marketo/03-marketo-api-new-role.jpg)

4. Go to the **LaunchPoint** nav item, and under **Installed Services**, hover over **New**, then click **New Service**

![Image](/assets/images/emailify/marketo/05-marketo-api-services.jpg)

5. Populate the description, select **Custom** from the **Service** dropdown list, then select an **API Only User** who already has the API permissions to upload the templates, then click **Create**.

![Image](/assets/images/emailify/marketo/06-marketo-api-new-service.jpg)

6. Under the **Installed Services**, click the **View Details** link for your service

![Image](/assets/images/emailify/marketo/07-marketo-api-details.jpg)

7. Copy the **Client Id** and **Client Secret** details to your clipboard to use later in Step 3 (below)

![Image](/assets/images/emailify/marketo/08-marketo-api-credentials.jpg)

### Step 3: Uploading your template to Marketo from the Emailify plugin

This third (and final) step will show you how to paste the **REST API Endpoint URL**, **Client ID** and **Client Secret** details you copied from Marketo in the first two steps into the Emailify Figma Plugin, to automatically upload your HTML emails into your Marketo Email Templates.

1. Run the Emailify plugin in Figma and click the **Export HTML** button

![Image](/assets/images/emailify/marketo/09-marketo-api-emailify.jpg)

2. Select the **Marketo (API)** option from the export platform options list

![Image](/assets/images/emailify/marketo/10-marketo-api-platform.jpg)

3. Paste in your Marketo **REST API Endpoint URL**, **Client ID** and **Client Secret** that you copied in Step 1 and Step 2 (above) to authenticate the plugin with Marketo

![Image](/assets/images/emailify/marketo/11-marketo-api-credentials.jpg)

4. Click on the **Upload To Marketo** button to upload your template(s)

![Image](/assets/images/emailify/marketo/12-marketo-api-upload.jpg)

> **Tip:** You can optionally enable the **Add Marketo Editable Content Tags** toggle in the Emailify export options, which will automatically include [editable Marketo tags]([Add Marketo Editable Content Tags](https://experienceleague.adobe.com/en/docs/marketo/using/product-docs/email-marketing/general/email-editor-2/email-template-syntax)) to your code, allowing you to edit your email template content after it has been created in Marketo.

5. Click the Template folder link in the Emailify confirmation to view your new template(s) in Marketo

![Image](/assets/images/emailify/marketo/13-marketo-api-folder.jpg)

6. View your new email template(s) in your Marketo **Design Studio** and use it however you like

![Image](/assets/images/emailify/marketo/14-marketo-api-templates.jpg)

## Uploading your Marketo templates from Figma by copy/pasting the HTML

If you don't want to use the built-in API integration above, you can also manually upload/create new email templates in your Marketo account by copy/pasting the exported HTML code from Emailify.

To do this, click on the **Export HTML** button in the Emailify plugin header, then select the **Marketo (Zip)** option from the export platform options list and click the **Export for Marketo** button.

After the export has finished, click the **Download your .zip file** button, save it to your computer, then unzip the contents to find your email folder name inside it; which will contain an `index.html` file with your exported email template HTML code.

If you login into your Marketo account, then click on the **Design Studio** menu item, you can create a new email template in a folder of your choice, and then copy/paste the exported HTML code from the `index.html` file into the Marketo code editor to finish creating your new Marketo email template.

> **Tip:** You can optionally enable the **Add Marketo Editable Content Tags** toggle in the Emailify export options, which will automatically include [editable Marketo tags]([Add Marketo Editable Content Tags](https://experienceleague.adobe.com/en/docs/marketo/using/product-docs/email-marketing/general/email-editor-2/email-template-syntax)) to your code, allowing you to edit your email template content after it has been created in Marketo.

---

---
url: "/emailify/integrations/moosend.md"
description: "Emailify includes a Moosend export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform."
---

# Uploading your emails to Moosend

> Emailify includes a Moosend export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform.

### Video Tutorial: Uploading your emails to Moosend

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Moosend.
[Embedded media](https://www.youtube.com/embed/ByG957iMh6c)

In the Emailify export panel, select the **Moosend** option from the dropdown list, when you're ready, click the **Export For Moosend** button to start exporting the emails you've selected from Figma to HTML.

Once the HTML has been exported, you'll need to manually upload your HTML templates to Moosend by pasting your HTML code into a campaign via the Custom HTML import feature, as per [their docs here](https://docs.moosend.com/users/moosend/en/import-a-campaign.html).

---

---
url: "/emailify/integrations/omnisend.md"
description: "Emailify includes a Omnisend export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform."
---

# Uploading your emails to Omnisend

> Emailify includes a Omnisend export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform.

### Video Tutorial: Uploading your emails to Omnisend

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Omnisend.
[Embedded media](https://www.youtube.com/embed/Zl8DZWbyrt8)

In the Emailify export panel, select the **Omnisend** option from the dropdown list, when you're ready, click the **Export For Omnisend** button to start exporting the emails you've selected from Figma to HTML.

Once the HTML has been exported, you'll need to manually upload your HTML templates to Omnisend by pasting your HTML code into a campaign via the Custom HTML import feature, as per [their docs here](https://support.omnisend.com/en/articles/2964086-importing-a-custom-html-template).

---

---
url: "/emailify/integrations/onesignal.md"
description: "Emailify includes a built-in integration with OneSignal, which allows you to upload HTML emails directly from the Figma plugin directly to your OneSignal templates."
---

# Uploading your emails to OneSignal

> Emailify includes a built-in integration with OneSignal, which allows you to upload HTML emails directly from the Figma plugin directly to your OneSignal templates.

### Video Tutorial: Uploading your emails to OneSignal

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to OneSignal.
[Embedded media](https://www.youtube.com/embed/haQHdEan54Q)

In the Emailify export panel, select the **OneSignal** option from the dropdown list, then paste in a valid App ID and API key, which can be found on your [OneSignal App ID and API key](https://documentation.onesignal.com/docs/keys-and-ids) settings page.

When you're ready, click the **Upload To OneSignal** button to start exporting the emails you've selected from Figma to HTML, and have them automatically be uploaded to your [OneSignal marketing templates](https://dashboard.onesignal.com/).

---

---
url: "/emailify/integrations/ongage.md"
description: "Emailify includes a Ongage export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform."
---

# Uploading your emails to Ongage

> Emailify includes a Ongage export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform.

### Video Tutorial: Uploading your emails to Ongage

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Ongage.
[Embedded media](https://www.youtube.com/embed/ApcOT2WG_cc)

In the Emailify export panel, select the **Ongage** option from the dropdown list, when you're ready, click the **Export For Ongage** button to start exporting the emails you've selected from Figma to HTML.

Once the HTML has been exported, you'll need to manually upload your HTML templates to Ongage by pasting your HTML code into a campaign via the Custom HTML import feature, as per [their docs here](https://www.maildesigner365.com/creating-html-emails-to-send-with-ongage/).

---

---
url: "/emailify/integrations/pardot.md"
description: "Emailify includes a built-in integration with Pardot, which allows you to upload HTML emails directly from the Figma plugin directly to your Pardot templates."
---

# Uploading your emails to Pardot

> Emailify includes a built-in integration with Pardot, which allows you to upload HTML emails directly from the Figma plugin directly to your Pardot templates.

> **Note:** Pardot is now known as [Account Engagement](https://www.salesforce.com/blog/next-gen-marketing-cloud-vision-product-name-change/) in Salesforce Marketing Cloud.

### Video Tutorial: Uploading your emails to Pardot

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Pardot.
[Embedded media](https://www.youtube.com/embed/VtVuPmb57cw)

> **Tip:** If you need AMPscript links (for example, `%%=v(@url)=%%`) in your [text paragraphs](/emailify/content/link-paragraphs), Figma's native link field will block them as invalid URLs. To get around this, you can use Emailify's special AMPscript link format instead, `https://ampscript.invalid/?%%=v(@url)=%%`, and Emailify will output the raw AMPscript tag in your exported HTML.

## 1. Create a Connected App in Pardot

If you don't already have one set up, you'll need to create a new Connected App in Pardot, which will give you your **Consumer Key** and **Consumer Secret** to paste into the plugin in Step 3 ([Authenticate with Pardot](#3-authenticate-with-pardot)).

1. In the top right corner of your Pardot admin, click the **Settings Icon**, then click **Setup**.
2. In the settings search bar, search for "App Manager" and click the **App Manager** result.
3. Click the **New Connected App** button.
4. Add a name for your connected app (eg. _Emailify Integration_).
5. Add the contact details of the owner of the Connected App.
6. Check the **Enable OAuth Flows** checkbox.
7. Add `https://figma.com/` as the Callback URL.
8. Under **Selected OAuth Scopes**, add the following scopes below, which gives the app the ability to access and authenticate to Pardot:
  - `Access content resources (content)`
  - `Access the identity URL service (id, profile, email, address, phone)`
  - `Manage Pardot services (pardot_api)`
  - `Perform requests at any time (refresh _token, offline_access)`
9. Check the **Require Secret for Web Server Flow** checkbox input.
10. If shown, ensure **Require Proof Key for Code Exchange (PKCE) Extension for Supported Authorization Flows** is not checked.
11. Click **Save**.

## 2. Find your Pardot Business Unit ID

Your Business Unit ID is an 18-character long ID that begins with "0Uv"; you can find your Pardot Business Unit ID by following the steps below:

1. Log into Salesforce using the same account you use to log into Pardot.
2. Click on the **Setup** tab.
3. Find the **Pardot** dropdown and click **Pardot Account Setup**.
4. You may have multiple Pardot business units; choose the Business Unit ID of the one you want to use with Emailify.

## 3. Authenticate with Pardot

In the Emailify export panel, select the **Pardot (API)** option, or a [Padot test account option](#different-pardot-api-endpoints), from the dropdown list, then copy/paste the following Pardot credentials and details into the Emailify export settings input fields:

- **Pardot [Business Unit ID](#2-find-your-pardot-business-unit-id)** (eg. `0UvXXXXXXXXXXXXXXX`)
- **Pardot Username** that you use to login (eg. `name@domain.com`)
- **Pardot Password** that you use to login (eg. `*********`)
- **Consumer Key** from [your Connected App](#1-create-a-connected-app-in-pardot) (eg. `y0Zd2jVHJ5Cc1wQg0l5yMJsXpPs...`)
- **Consumer Secret** from [your Connected App](#1-create-a-connected-app-in-pardot)  (eg. `8C8F8D11A3B7B026A90C5C3...`)

Once you've pasted all of these details in, Emailify will authenticate with your Pardot instance.

#### Different Pardot API Endpoint options in Emailify

If you're using a test or sandbox instance, you can select different Pardot API export options from the Emailify export options. Please see below for what endpoints each one calls:

| Emailify Option     | Authorization Domain                                              | Content Domain  |
|-------------------|----------------------------------------------------------------|--------------------|
| Pardot **API**      | **login**.salesforce.com/services/oauth2/token?grant_type=password | **pi**.pardot.com      |
| Pardot **Test API** | **test**.salesforce.com/services/oauth2/token?grant_type=password  | **pi.demo**.pardot.com |
| Pardot **Dev API**  | **login**.salesforce.com/services/oauth2/token?grant_type=password  | **pi.demo**.pardot.com      |

### Troubleshooting Pardot authentication issues

If you're having trouble authenticating with your Pardot username/password, the most common issue is that Salesforce Multi-Factor Authentication (MFA) has been enabled for the Salesforce user that your integration relies on.

The most common reason that authentication with Pardot fails is related to 2FA issues, but this can often be resolved in Pardot by:

- Changing the **IP Relaxation** setting to **Relax IP Restrictions**
- Changing the **Permitted Users** setting to **All users may self-authorize**
- Enabling the **Allow OAuth Username-Password Flows** toggle in **OAuth and OpenID Connect Settings**
- **Passwords _cannot_ contain special characters** (eg. `#` `%` `&`, etc), and can only be letters and numbers (eg. `mypa55word1234`)

#### Ensuring API integration users work with Salesforce MFA

Salesforce MFA is primarily enforced for interactive user interface logins. API-based integrations can usually continue to work without interactive MFA prompts, but your Salesforce admin needs to configure the integration user correctly.

For Emailify's Pardot API upload flow, the best practice is to use a dedicated Salesforce integration user account rather than a shared personal login.

##### Recommended: use a Salesforce Integration user license

If your Salesforce edition includes **Salesforce Integration** user licenses, assign one of those licenses to the dedicated integration user that Emailify uses.

Benefits:

- These users are designed for API-only access.
- They can't log into the Salesforce UI, so they are inherently exempt from UI MFA prompts.
- They help keep your integration separate from normal user accounts.
- Their API-only profile typically has **API Enabled** set by default.

To check whether these licenses are available:

1. In Salesforce, go to **Setup**.
2. Search for **Company Information**.
3. Open **Company Information**.
4. Look for **Salesforce Integration** under the **User Licenses** list.

##### Alternative: waive UI MFA for a standard Salesforce user

If you can't use a Salesforce Integration user license and your integration is using a standard Salesforce user, your Salesforce admin can exempt that dedicated integration user from UI MFA by assigning a Permission Set with the **Waive Multi-Factor Authentication for Exempt Users** system permission.

To set that up:

1. In Salesforce, go to **Setup**.
2. Search for **Permission Sets**.
3. Create a new Permission Set for your integration user.
4. Open **System Permissions** and click **Edit**.
5. Enable **Waive Multi-Factor Authentication for Exempt Users**.
6. Save the Permission Set.
7. Assign that Permission Set to the dedicated integration user.

If you're using a standard Salesforce user license for the integration, also make sure the user's Profile still has **API Enabled** turned on in **System Permissions**.

##### Additional recommendations

- Prefer a dedicated integration user instead of a personal user account.
- If you're using username/password authentication, keep those credentials and any security token stored securely.
- Test your Pardot connection in a sandbox before enabling MFA-related changes in production.
- If authentication starts failing after an MFA rollout, check the Salesforce user's **Login History** for the exact failure reason.

##### Salesforce references

- [Best Practices for Configuring Your Integration User](https://admin.salesforce.com/blog/2023/best-practices-for-configuring-your-integration-user)
- [Exclude Exempt Users from MFA](https://help.salesforce.com/s/articleView?id=sf.security_mfa_exclude_exempt_users.htm&language=en_US&type=5)

## 4. Upload Email Templates to Pardot

Once your Pardot API connection has been successfully authenticated, you'll be able to specify the following required fields using the inputs and dropdowns that will show up:

- **Sender Name**
- **Sender Address**

- **Campaign Name**
- **Folder Name**
- **Domain Tracking Name**

You can also optionally automatically include [Pardot editable region tags](https://help.salesforce.com/s/articleView?language=en_US&id=sf.pardot_landing_pages_content_regions.htm&type=5) to your HTML template by enabling the **Editable Tags** toggle.

Once you've selected the desired options above, when you're ready, click the **Upload To Pardot** button to start exporting the emails you've selected from Figma to HTML, and have them automatically be uploaded to your email templates in Pardot.

---

---
url: "/emailify/integrations/postmark.md"
description: "Emailify includes a built-in integration with Postmark, which allows you to upload HTML emails directly from the Figma plugin directly to your Postmark templates."
---

# Uploading your emails to Postmark

> Emailify includes a built-in integration with Postmark, which allows you to upload HTML emails directly from the Figma plugin directly to your Postmark templates.

### Video Tutorial: Uploading your emails to Postmark

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Postmark.
[Embedded media](https://www.youtube.com/embed/BD7dghnkeKM)

In the Emailify export panel, select the **Postmark** option from the dropdown list, then paste in a valid Postmark API key, which can be generated from your [Postmark account Servers](https://account.postmarkapp.com/servers) page.

When you're ready, click the **Upload To Postmark** button to start exporting the emails you've selected from Figma to HTML, and have them automatically be uploaded to your [Postmark Server's templates](https://account.postmarkapp.com/servers) page.

---

---
url: "/emailify/integrations/salesforce.md"
description: "Emailify includes a built-in integration with Salesforce, which allows you to upload HTML emails directly from the Figma plugin directly to your Salesforce templates."
---

# Uploading your emails to Salesforce Marketing Cloud

> Emailify includes a built-in integration with Salesforce, which allows you to upload HTML emails directly from the Figma plugin directly to your Salesforce templates.

### Video Tutorial: Uploading your emails to Salesforce Marketing Cloud

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Salesforce Marketing Cloud.
[Embedded media](https://www.youtube.com/embed/Q4QD3GTxD9s)

> **Tip:** If you need AMPscript links (for example, `%%=v(@url)=%%`) in your [text paragraphs](/emailify/content/link-paragraphs), Figma's native link field will block them as invalid URLs. To get around this, you can use Emailify's special AMPscript link format instead, `https://ampscript.invalid/?%%=v(@url)=%%`, and Emailify will output the raw AMPscript tag in your exported HTML.

In the Emailify export panel, select the **Marketing Cloud (API)** option from the dropdown list, then follow the steps below to get your authentication credentials:

1. [Login](https://mc.login.exacttarget.com/hub-cas/login) to your Salesforce Marketing Cloud account.
2. Go to **Marketing Cloud** -> **Setup** -> **Platform Tools ("Apps")** -> **Installed Packages**.
3. Click **New**.
4. Give the package a name and description.
5. Select to create the package with enhanced functionality.
6. **Save** the package.
7. Under Components, click **Add Component**.
8. Select **API Integration** (_after you add an API integration component, it can’t be removed_).
9. Select the **Server-to-server integration** type.
10. Set the properties for the component, you'll need to allow **Read** and **Write** persmissions for **Emails** (under _Channels_) and for **Documents and Images** and **Saved Content** (under _Assets_).
11. Click **Save** to save the component.

After that's created, you will be able to copy/paste the following required details from your new integration created above into your Emailify export settings:

- **Client ID** (eg. 3e8poc4erkli6ghjavq8kuio)
- **Client Secret** (eg. EOjPb4HPWwtyUkcb5CnCpo5C)
- **REST Base URL** (eg. https://mcvb5-qrzy845tggex49976pmz38.rest.marketingcloudapis.com/)

When you're ready, click the **Upload To Marketing Cloud** button to start exporting the emails you've selected from Figma to HTML, and have them automatically be uploaded to your [Content Builder templates](https://mc.s51.exacttarget.com/cloud/#app/Content%20Builder/) in Marketing Cloud.

If you'd prefer Emailify to place the uploaded HTML template into a specific Content Builder folder instead of the default root location, connect your Salesforce account and choose a **Template Folder** in the Emailify export panel before uploading. Leaving it set to **Content Builder (Default)** keeps the previous behavior.

## Uploading images into Salesforce Content Builder

If you also want Salesforce Marketing Cloud to host the images used in your email, you can now use the **Salesforce Content Builder** option from the **CDN** dropdown in Emailify.

1. In the Emailify export panel, select either **Marketing Cloud (API)** or **Marketing Cloud (oAuth)** and connect your Salesforce Marketing Cloud account first.
2. Open the **CDN** dropdown and choose **Salesforce Content Builder**.
3. Choose the **Content Builder** folder you want Emailify to upload the images into.
4. Export your email as normal.

Emailify will automatically upload the images for the email into the selected Salesforce Content Builder folder, then replace the image URLs in the exported HTML with the published Salesforce asset URLs before uploading the email template.

The **Template Folder** and image **Content Builder** folder can be different, which is useful if your team keeps HTML templates and image assets in separate folders.

If you export the same email again into the same Content Builder folder, Emailify will reuse matching existing image assets when possible instead of failing if Salesforce reports that the image name is already taken.

## Additional options for Salesforce Marketing Cloud

There are a few other options you can optionally enable for your Salesforce Marketing Cloud exports:

### Add Content Slot

Enabling the **Slot** toggle will automatically add a `` tag into your exported HTML, which will allow you to drag and drop other content into your email from the Marketing Cloud editor.

### Add Alias Tags

Enabling the **Aliases** toggle will automatically add an `alias="Your Figma layer name"` attribute to any of your button, image, social icon or navbar links in your Figma design. It will automatically populate this with whatever each Figma layer name is in your layers panel.

This will allow you to specify aliases for those `` tag links in your exported HTML to help tracking data by naming them something relevant to the design (eg. "Hero CTA Button").

### Add Conversion Tags

Enabling the **Conversions** toggle will automatically add a `conversion="true"` attribute onto any `` link tags your exported HTML.

### Add Impression Tags

Enabling the **Impressions** toggle will automatically wrap any Row, Wrapper or Hero layers with an opening `%%=BeginImpressionRegion("your_figma_layer_name")=%%` and closing `%%=EndImpressionRegion()=%%` Salesforce Marketing Cloud Impression tags in your exported HTML.

### HTML Block Files

Enabling the **Blocks** toggle will automatically include some extra `.html` files to your `.zip` file export; it will automatically split out each row from your Emailify design into their own HTML files, allowing you to extract these more easily if you're planning to create your own re-useable modules in Salesforce Marketing Cloud.

You'll also need to be mindful that the HTML code for each block will still require the CSS/**style** tags and other elements from the `` tag, so you'll need to spend some time extracting those if you are taking this approach.

Please note, this toggle will only be available when the **Marketing Cloud (Zip)** platform option is selected in the Emailify export settings panel, and won't be visible if the API option is selected.

---

---
url: "/emailify/integrations/sare.md"
description: "Emailify includes a SARE export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform."
---

# Uploading your emails to SARE

> Emailify includes a SARE export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform.

### Video Tutorial: Export HTML emails from Figma to SARE

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to SARE.
[Embedded media](https://www.youtube.com/embed/_-9AIr6dE0U)

In the Emailify export panel, select the **SARE** option from the dropdown list, when you're ready, click the **Export For SARE** button to start exporting the emails you've selected from Figma to HTML.

Once the HTML has been exported, you'll need to manually upload your HTML templates to SARE by clicking the **Download your .zip file** button in Emailify, _unzipping_ that file after saving it to your computer, then you'll be able to [upload the email .zip file(s) to SARE](https://sare.pl/baza-wiedzy/en/sare-system/email-campaigns/html-guidelines-proper-preparation-of-html-mailing-creations/#toc-zip-package) from the **_zips (For upload to SARE)** folder inside of your main unzipped folder.

---

---
url: "/emailify/integrations/selzy.md"
description: "Emailify includes a built-in integration with Selzy, which allows you to upload HTML emails directly from the Figma plugin directly to your Selzy templates."
---

# Uploading your emails to Selzy

> Emailify includes a built-in integration with Selzy, which allows you to upload HTML emails directly from the Figma plugin directly to your Selzy templates.

### Video Tutorial: Uploading your emails to Selzy

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Selzy.
[Embedded media](https://www.youtube.com/embed/5w2qyBTYToY)

In the Emailify export panel, select the **Selzy** option from the dropdown list, then paste in a valid API key, which can be found on your [Selzy API key](https://cp.selzy.com/en/v5/user/info/api) settings page.

When you're ready, click the **Upload To Selzy** button to start exporting the emails you've selected from Figma to HTML, and have them automatically be uploaded to your [Selzy templates](https://cp.selzy.com/en/v5/letters/template).

---

---
url: "/emailify/integrations/sendgrid.md"
description: "Emailify includes a built-in integration with SendGrid, which allows you to upload HTML emails directly from the Figma plugin directly to your SendGrid templates."
---

# Uploading your emails to SendGrid

> Emailify includes a built-in integration with SendGrid, which allows you to upload HTML emails directly from the Figma plugin directly to your SendGrid templates.

### Video Tutorial: Uploading your emails to SendGrid

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to SendGrid.
[Embedded media](https://www.youtube.com/embed/cYYVO_3HT1U)

In the Emailify export panel, select the **SendGrid** option from the dropdown list, then paste in a valid SendGrid API key, which can be generated from your SendGrid account [API Keys](https://app.sendgrid.com/settings/api_keys) settings page.

When you're ready, click the **Upload To SendGrid** button to start exporting the emails you've selected from Figma to HTML, and have them automatically be uploaded to your [SendGrid Design Library](https://mc.sendgrid.com/design-library/your-designs) templates.

---

---
url: "/emailify/integrations/sendpulse.md"
description: "Emailify includes a built-in integration with SendPulse, which allows you to upload HTML emails directly from the Figma plugin directly to your SendPulse templates."
---

# Uploading your emails to SendPulse

> Emailify includes a built-in integration with SendPulse, which allows you to upload HTML emails directly from the Figma plugin directly to your SendPulse templates.

### Video Tutorial: Uploading your emails to SendPulse

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to SendPulse.
[Embedded media](https://www.youtube.com/embed/lLH2aHdVSN4)

In the Emailify export panel, select the **SendPulse** option from the dropdown list, then paste in a valid SendPulse API ID and Secret, which can be generated from your SendPulse account [API Settings](https://login.sendpulse.com/settings/#api) page.

When you're ready, click the **Upload To SendPulse** button to start exporting the emails you've selected from Figma to HTML, and have them automatically be uploaded to your [SendPulse Email Templates](https://login.sendpulse.com/emailservice/templates/) dashboard page.

---

---
url: "/emailify/integrations/sendwithus.md"
description: "Emailify includes a built-in integration with Sendwithus, which allows you to upload HTML emails directly from the Figma plugin directly to your Sendwithus templates."
---

# Uploading your emails to Sendwithus

> Emailify includes a built-in integration with Sendwithus, which allows you to upload HTML emails directly from the Figma plugin directly to your Sendwithus templates.

### Video Tutorial: Uploading your emails to Sendwithus

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Sendwithus.
[Embedded media](https://www.youtube.com/embed/b99i9ZaXL6E)

In the Emailify export panel, select the **Sendwithus** option from the dropdown list, then paste in a valid Sendwithus API key, which can be generated from your [Sendwithus API](https://app.sendwithus.com/#/api_settings) account page.

When you're ready, click the **Upload To Sendwithus** button to start exporting the emails you've selected from Figma to HTML, and have them automatically be uploaded to your [Sendwithus templates](https://app.sendwithus.com/#/templates) page.

---

---
url: "/emailify/integrations/sendx.md"
description: "Emailify includes a SendX export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform."
---

# Uploading your emails to SendX

> Emailify includes a SendX export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform.

### Video Tutorial: Uploading your emails to SendX

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to SendX.
[Embedded media](https://www.youtube.com/embed/uVTTIoT4Lk4)

In the Emailify export panel, select the **SendX** option from the dropdown list, when you're ready, click the **Export For SendX** button to start exporting the emails you've selected from Figma to HTML.

Once the HTML has been exported, you'll need to manually upload your HTML templates to SendX by pasting your HTML code into a campaign via the Custom HTML import feature, as per [their docs here](https://www.sendx.io/v2/support/sendx/how-to-create-custom-email-template).

---

---
url: "/emailify/integrations/shopify.md"
description: "Emailify includes a Shopify export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform."
---

# Uploading your emails to Shopify

> Emailify includes a Shopify export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform.

In the Emailify export panel, select the **Shopify** option from the dropdown list, when you're ready, click the **Export For Shopify** button to start exporting the emails you've selected from Figma to HTML.

Once the HTML has been exported, you'll need to manually upload your HTML templates to Shopify by pasting your HTML code into a campaign via the "Code your own" import feature, as per [their docs here](https://help.shopify.com/en/manual/promoting-marketing/create-marketing/shopify-email/create-email/create-campaigns#create-coded-email).

---

---
url: "/emailify/integrations/spotler.md"
description: "Emailify includes a Spotler export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform."
---

# Uploading your emails to Spotler

> Emailify includes a Spotler export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform.

In the Emailify export panel, select the **Spotler** option from the dropdown list, when you're ready, click the **Export For Spotler** button to start exporting the emails you've selected from Figma to HTML.

Once the HTML has been exported, you'll need to manually upload your HTML templates to Spotler via the **Custom HTML** option, by [following the instructions in the Spotler documentation](https://support.reallysimplesystems.com/designing-emails/) site.

### Add Title Attributes

Enabling the **Add Title Attributes to Links** toggle will automatically add an `title="Your Figma layer name"` attribute to any of your button, image, social icon or navbar links in your Figma design. It will automatically populate this with whatever each Figma layer name is in your layers panel.

This will allow you to specify aliases for those `` tag links in your exported HTML to help tracking data by naming them something relevant to the design (eg. "Hero CTA Button").

---

---
url: "/emailify/integrations/stripo.md"
description: "Emailify includes a Stripo export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform."
---

# Uploading your emails to Stripo

> Emailify includes a Stripo export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform.

### Video Tutorial: Export HTML emails from Figma to Stripo

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Stripo.
[Embedded media](https://www.youtube.com/embed/98oeeXB7FNI)

In the Emailify export panel, select the **Stripo** option from the dropdown list, when you're ready, click the **Export For Stripo** button to start exporting the emails you've selected from Figma to HTML.

Once the HTML has been exported, you'll need to manually upload your HTML templates to Stripo, as per [their docs here](https://support.stripo.email/en/articles/6420354-how-to-adapt-my-own-html-code-to-stripo) (or follow the step by step video tutorial above).

---

---
url: "/emailify/integrations/sugarcrm.md"
description: "Emailify includes a SugarCRM export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform."
---

# Uploading your emails to SugarCRM (Sugar Market)

> Emailify includes a SugarCRM export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform.

### Video Tutorial: Export HTML emails from Figma to SugarCRM (Sugar Market)

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to SugarCRM (Sugar Market).
[Embedded media](https://www.youtube.com/embed/dudacdc97vQ)

In the Emailify export panel, select the **SugarCRM** option from the dropdown list, when you're ready, click the **Export For SugarCRM** button to start exporting the emails you've selected from Figma to HTML.

Once the HTML has been exported, you'll need to manually upload your HTML templates to SugarCRM (Sugar Market), by following the video tutorial above.

---

---
url: "/emailify/integrations/webex.md"
description: "Emailify includes a Webex export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform."
---

# Uploading your emails to Webex

> Emailify includes a Webex export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform.

In the Emailify export panel, select the **Webex** option from the dropdown list, when you're ready, click the **Export For Webex** button to start exporting the emails you've selected from Figma to HTML.

Once the HTML has been exported, you'll need to manually upload your HTML templates to Webex.

---

---
url: "/emailify/integrations/yotpo.md"
description: "Emailify includes a Yotpo export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform."
---

# Uploading your emails to Yotpo

> Emailify includes a Yotpo export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform.

### Video Tutorial: Export HTML emails from Figma to Yotpo

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Yotpo.
[Embedded media](https://www.youtube.com/embed/lRU0Wjw9vHQ)

In the Emailify export panel, select the **Yotpo** option from the dropdown list, when you're ready, click the **Export For Yotpo** button to start exporting the emails you've selected from Figma to HTML.

Once the HTML has been exported, you'll need to manually upload your HTML templates to Yotpo, by following the video tutorial above.

---

---
url: "/emailify/integrations/zeta.md"
description: "Emailify includes a built-in integration with Zeta, which allows you to upload HTML emails directly from the Figma plugin directly to your Zeta templates."
---

# Uploading your emails to Zeta

> Emailify includes a built-in integration with Zeta, which allows you to upload HTML emails directly from the Figma plugin directly to your Zeta templates.

In the Emailify export panel, select the **Zeta** option from the dropdown list, then paste in a valid Zeta `Site ID` and `REST API key`, which can be found in your [Zeta account settings](https://app.zetaglobal.net/settings/integrations) integrations page.

When you're ready, click the **Upload To Zeta** button to start exporting the emails you've selected from Figma to HTML, and have them automatically be uploaded to your [Zeta templates](https://app.zetaglobal.net/marketing_templates) page.

---

---
url: "/emailify/integrations/zoho-campaigns.md"
description: "Emailify includes a Zoho Campaigns export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform."
---

# Uploading your emails to Zoho Campaigns

> Emailify includes a Zoho Campaigns export option, which allows you to export HTML emails directly from the Figma plugin ready to manually add to their platform.

### Video Tutorial: Export HTML emails from Figma to Zoho Campaigns

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify plugin to Zoho Campaigns.
[Embedded media](https://www.youtube.com/embed/UQ2va7H6RN0)

In the Emailify export panel, select the **Zoho Campaigns** option from the dropdown list, when you're ready, click the **Export For Zoho Campaigns** button to start exporting the emails you've selected from Figma to HTML.

Once the HTML has been exported, you'll need to manually upload your HTML templates to Zoho Campaigns, as per [their docs here](https://help.zoho.com/portal/en/kb/campaigns/user-guide/email-campaigns/create-campaign/articles/how-to-import-html) (or follow the step by step video tutorial above).

---

---
url: "/emailify/localization/chatgpt.md"
description: "Use ChatGPT inside Emailify with either direct API translation or manual CSV prompts to localize your email frames in Figma."
---

# Translating your email designs with ChatGPT

> Use ChatGPT inside Emailify with either direct API translation or manual CSV prompts to localize your email frames in Figma.

### Video Tutorial: Translate email designs in Figma with ChatGPT

This video tutorial is a complete step-by-step guide showing you how to Translate email designs in Figma with ChatGPT (automatically).
[Embedded media](https://www.youtube.com/embed/6CqRT3FTALA)

Emailify supports ChatGPT in two ways:

- **ChatGPT API** for automated translation and import inside the plugin.
- **ChatGPT Prompt** for a manual copy and paste workflow using the ChatGPT app.

## Use ChatGPT API

[Video](/assets/videos/emailify/content/auto-translate.mp4)

The API workflow is the fastest option if you want Emailify to handle the full translation and import flow for you.

1. Click the **Localize** button in Emailify.
2. Choose **ChatGPT API**.
3. Paste your OpenAI [API key](https://platform.openai.com/api-keys).
4. Pick the model you want Emailify to use.
5. Select the email frames and target locales you want to translate.
6. Leave **Use Markdown** enabled to preserve inline bold, italic, and linked text during translation. This option is enabled by default for ChatGPT methods.
7. Click **Translate & Import**.

Emailify will send the selected frame text to ChatGPT for each locale, then automatically import the translated results back into Figma as cloned localized email frames.

> **Tip:** Your ChatGPT API key is stored per Figma user on your device and is not saved into the Figma file itself.

## Use ChatGPT Prompt

The manual prompt workflow is useful if you prefer to run translation requests yourself inside ChatGPT instead of connecting an API key.

1. Choose **ChatGPT Prompt** in the localization options.
2. Select the email frames and locales you want to translate.
3. Click **Generate Prompt**.
4. Click **Copy Prompt**.
5. Run the prompt in ChatGPT and make sure it returns **raw CSV only**.
6. Paste the CSV response back into Emailify.
7. Click **Translate Figma Frames** to import the translated content into Figma.

In the manual prompt workflow, you choose the ChatGPT model inside the ChatGPT app yourself. Emailify validates the pasted CSV before importing it.

The generated prompt also tells ChatGPT to preserve supported markdown formatting and keep markdown markers, URLs, and placeholders unchanged so the translated content can be mapped back into the original Figma text styling.

> **Tip:** Do not remove or rename the `id`, `frame_id`, `layer_name`, or `figma_text` columns in the CSV response. Emailify uses those columns to match translated rows back to the correct Figma layers.

---

---
url: "/emailify/localization/claude.md"
description: "Use Claude inside Emailify with either direct API translation or manual CSV prompts to localize your email frames in Figma."
---

# Translating your email designs with Claude

> Use Claude inside Emailify with either direct API translation or manual CSV prompts to localize your email frames in Figma.

Emailify supports Claude in two ways:

- **Claude API** for automated translation and import inside the plugin.
- **Claude Prompt** for a manual copy and paste workflow using the Claude app.

[Video](/assets/videos/emailify/content/auto-translate.mp4)

## Use Claude API

1. Click the **Localize** button in Emailify.
2. Choose **Claude API**.
3. Paste your Anthropic [API key](https://console.anthropic.com/settings/keys).
4. Pick the Claude model you want Emailify to use.
5. Select the email frames and target locales you want to translate.
6. Leave **Use Markdown** enabled to preserve inline bold, italic, and linked text during translation. This option is enabled by default for Claude methods.
7. Click **Translate & Import**.

Emailify will translate the selected frames with Claude and automatically import the translated results back into Figma as cloned localized email frames.

> **Tip:** Your Claude API key is stored per Figma user on your device and is not saved into the Figma file itself.

## Use Claude Prompt

1. Choose **Claude Prompt** in the localization options.
2. Select the email frames and locales you want to translate.
3. Click **Generate Prompt**.
4. Click **Copy Prompt**.
5. Run the prompt in Claude and make sure the response contains **raw CSV only**.
6. Paste the CSV response back into Emailify.
7. Click **Translate Figma Frames** to import the translated content into Figma.

In the manual prompt workflow, you choose the Claude model inside Claude yourself. Emailify will validate the CSV structure before importing the translated frames.

The generated prompt also tells Claude to preserve supported markdown formatting and keep markdown markers, URLs, and placeholders unchanged so the translated content can be imported back into Figma with the correct inline styling.

> **Tip:** The manual prompt generated by Emailify includes all selected locales in a single CSV prompt by default, which makes it faster to translate multiple locales in one request.

---

---
url: "/emailify/localization/crowdin.md"
description: "Use Emailify with the Crowdin API to upload source text from Figma and import translated email variants back into your file."
---

# Translating your email designs with Crowdin

> Use Emailify with the Crowdin API to upload source text from Figma and import translated email variants back into your file.

## Use the Crowdin API with Emailify

### Video Tutorial: Translate email designs in Figma with the Crowdin API

This video tutorial is a complete step-by-step guide showing you how to translate HTML email designs with the Crowdin API and Figma by using the Emailify plugin.
[Embedded media](https://www.youtube.com/embed/qcQglNYqtJc)

If you use [Crowdin](https://crowdin.com/), Emailify can upload your source email content to Crowdin and then import translated variants back into Figma.

### Step 1: Connect your Crowdin account

1. Click the **Localize** button in Emailify.
2. Choose **Crowdin API** from the localization options.
3. Paste your Crowdin [API Personal Access Token](https://crowdin.com/settings#api-key).
4. Select your Crowdin project from the dropdown list.

### Step 2: Select target locales

Choose the locales you want to work with from the locales list in Emailify. These come from the target languages configured in your Crowdin project.

### Step 3: Upload source text from Figma

Click **Upload** to export your selected email frames and source text from Figma into Crowdin.

### Step 4: Translate in Crowdin

Open your Crowdin project in the browser and translate or review the strings for each target locale.

### Step 5: Import translated frames back into Figma

Click **Import Translations** in Emailify to pull the translated content back into Figma as cloned localized email frames.

> **Tip:** **If you have a Crowdin Enterprise account** you will need to enable the **Use Crowdin Enterprise Account** toggle and paste in your **Organization Domain** so the API requests are sent to the correct endpoint, for example `https://{your_organization_domain}.api.crowdin.com/api`.

---

---
url: "/emailify/localization/gemini.md"
description: "Use Gemini inside Emailify with either direct API translation or manual CSV prompts to localize your email frames in Figma."
---

# Translating your email designs with Gemini

> Use Gemini inside Emailify with either direct API translation or manual CSV prompts to localize your email frames in Figma.

Emailify supports Gemini in two ways:

- **Gemini API** for automated translation and import inside the plugin.
- **Gemini Prompt** for a manual copy and paste workflow using the Gemini app.

[Video](/assets/videos/emailify/content/auto-translate.mp4)

## Use Gemini API

1. Click the **Localize** button in Emailify.
2. Choose **Gemini API**.
3. Paste your Google AI Studio [API key](https://aistudio.google.com/app/apikey).
4. Pick the Gemini model you want Emailify to use.
5. Select the email frames and target locales you want to translate.
6. Leave **Use Markdown** enabled to preserve inline bold, italic, and linked text during translation. This option is enabled by default for Gemini methods.
7. Click **Translate & Import**.

Emailify will send the selected frame text to Gemini for translation and then automatically import the translated results back into Figma as cloned localized email frames.

> **Tip:** Your Gemini API key is stored per Figma user on your device and is not saved into the Figma file itself.

## Use Gemini Prompt

1. Choose **Gemini Prompt** in the localization options.
2. Select the email frames and locales you want to translate.
3. Click **Generate Prompt**.
4. Click **Copy Prompt**.
5. Run the prompt in Gemini and make sure the response contains **raw CSV only**.
6. Paste the CSV response back into Emailify.
7. Click **Translate Figma Frames** to import the translated content into Figma.

In the manual prompt workflow, you choose the Gemini model inside Gemini yourself. Emailify validates the CSV structure before importing the translated frames into Figma.

The generated prompt also tells Gemini to preserve supported markdown formatting and keep markdown markers, URLs, and placeholders unchanged so the translated content can be imported back into Figma with the correct inline styling.

> **Tip:** If you use placeholders, merge tags, URLs, or markdown in your email content, keep them unchanged in the translated CSV so Emailify can safely map them back into your design.

---

---
url: "/emailify/localization/lokalise.md"
description: "Use Emailify with the Lokalise API to push source text from Figma and pull translated email variants back into your file."
---

# Translating your email designs with Lokalise

> Use Emailify with the Lokalise API to push source text from Figma and pull translated email variants back into your file.

## Use the Lokalise API with Emailify

### Video Tutorial: Translate email designs in Figma with the Lokalise API

This video tutorial is a complete step-by-step guide showing you how to translate HTML email designs with the Lokalise API and Figma by using the Emailify plugin.
[Embedded media](https://www.youtube.com/embed/s6-pYRm_B1c)

If you use [Lokalise](https://lokalise.com/), Emailify can send your source email copy directly to your Lokalise project and then import your translated versions back into Figma.

### Step 1: Connect your Lokalise project

1. Click the **Localize** button in Emailify.
2. Choose **Lokalise API** from the localization options.
3. Paste your Lokalise [API Token](https://app.lokalise.com/profile/#apitokens).
4. Paste your Lokalise [Project ID](https://docs.lokalise.com/en/articles/1400460-projects#project-id).

### Step 2: Upload source text from Figma

After your project is connected, choose the email frames you want to localize and click **Upload**. Emailify will export the text content from those frames into your Lokalise project using the base locale configured in Lokalise.

### Step 3: Translate in Lokalise

Open your Lokalise project in the browser and add or review translations for the target locales you need.

### Step 4: Import translated frames back into Figma

Back in Emailify, click **Import Translations** to pull the translated content into Figma. Emailify will create translated cloned frames for each locale you import.

> **Tip:** If your email copy includes bold, italic, or linked text formatting, keep the **Use Markdown** toggle enabled in Emailify so your localization workflow preserves that formatting where possible.

---

---
url: "/emailify/overview/install.md"
description: "Ensure you're logged into your Figma account, then follow the steps below to install and run the [Emailify Figma Plugin](https://www.figma.com/community/plugin/910671699871076601/emailify-html-email-builder)."
---

# Install and run the Emailify Figma Plugin

> Ensure you're logged into your Figma account, then follow the steps below to install and run the [Emailify Figma Plugin](https://www.figma.com/community/plugin/910671699871076601/emailify-html-email-builder).

### Video Tutorial: How to install (and remove) Figma plugins

This video tutorial is a complete step-by-step guide showing you the new process of how to install (and remove) Figma plugins after the mid-2024 "UI3" update to the Figma app
[Embedded media](https://www.youtube.com/embed/CzjxF2Jv6PM)

## Installing the Emailify Figma Plugin

1. Open any Figma file.
2. Click on the **Actions** icon in the bottom Figma toolbar.
3. Click the **Plugins & Widgets** tab to filter results to Figma plugins.
4. Search for **Emailify** in the search bar.
5. Click on the **Emailify** search result.
6. Click the **Save** button to install the Emailify plugin.

> **Note:** Figma users in a **Figma Organization** may only be able to install approved plugins. Please contact your Figma Org admin at your company to [approve the Emailify plugin](https://help.figma.com/hc/en-us/articles/4404228724759-Manage-plugins-and-widgets-in-an-organization) if you're unable to install certain Figma plugins.

## Running the Emailify Figma Plugin

Once you've [installed](#installing-the-figma-plugin) the **Emailify** Figma plugin, to run the plugin in your Figma file:

  1. **Right-click** anywhere on your Figma file's page canvas
  2. Hover your mouse over the **Plugins** ▶ menu item
  3. Hover your mouse over the **Saved plugins** ▶ menu item
  4. Click on the **Emailify** plugin menu item

> **Tip:** After you've run the **Emailify** plugin once in a Figma file, you'll be able to quickly re-launch it by clicking the **Emailify** icon in the right-hand side Figma column (under the **Plugin** subheading).

> **Warning:** Only Figma users with **Edit** access to a Figma file can run a Figma plugin in that Figma file; if you only have **View** permissions, you won't be able to run any Figma plugins in that file.

## Uninstalling the Emailify Figma plugin

1. Open any Figma file.
2. Click on the **Actions** icon in the bottom Figma toolbar.
3. Click the **Plugins & Widgets** tab to filter results to Figma plugins.
4. Search for **Emailify** in the search bar.
5. Click on the **Emailify** search result.
6. Click the **Remove** button to uninstall the Emailify plugin.

> **Note:** This will remove the plugin from your **Saved Plugins** list, however, the Figma plugin may still show up under your **Recents** list (if it has been recently run), as Figma saves this list of recent plugins in your browser's/app's local storage. The plugin will vanish from the Recents menu after other plugins are run to take its place.

---

---
url: "/emailify/overview/pro.md"
description: "After trying out all the Pro features of Emailify **10 times**, you can optionally upgrade to continue using all the extra features that are only available in the Pro version; or if you're a casual user, you can continue using the Free version forever."
---

# Activating Emailify Pro

> After trying out all the Pro features of Emailify **10 times**, you can optionally upgrade to continue using all the extra features that are only available in the Pro version; or if you're a casual user, you can continue using the Free version forever.

> **Tip:** Need a Emailify Pro account? You can purchase a Pro account for you or your team by visiting the [Emailify](https://www.hypermatic.com/emailify/#pro) product page on the Hypermatic website.

## Activating the Figma plugin with an Emailify Pro license key

1. **Purchase a Pro license** for you or your team by visiting the [Emailify](https://www.hypermatic.com/emailify/#pro) product page on the Hypermatic website.
2. **Run the Emailify Plugin**, then click on the **Upgrade Now** button at the bottom of the Figma plugin window.
3. **Paste in your Pro key**, then click the **Unlock** button.

This will unlock the Pro version of Emailify and give you unlimited use all of the Figma plugin features.

> **Warning:** Please note, if you're in China, the accounts server _may_ be blocked by "The Great Firewall of China". If you're seeing a activation error, despite using a valid key, you will likely need to use a [VPN](https://protonvpn.com/free-vpn/) to resolve the issue.

> **Info:** If you ever need to use a different license key at any time (eg. you were using your own personal Pro license key, but now your employer is buying you a Pro license to use instead), you can press **CTRL + K** while your plugin window is open in Figma, and this will bring up the license key prompt again, where you can enter a different license key.

---

---
url: "/emailify/overview/quickstart.md"
description: "Easily create and export responsive, production ready HTML emails (eDMs) from Figma."
---

# Get Started with Emailify

> Easily create and export responsive, production ready HTML emails (eDMs) from Figma.

[![Emailify Figma Plugin](https://www.hypermatic.com/emailify.jpg)](https://www.figma.com/community/plugin/910671699871076601/emailify-html-email-builder)

> **Warning:** Emailify **does not support** any Figma email designs that were created outside of the plugin.

## Install & Activate Emailify

- [Install & Run the Figma plugin](/emailify/overview/install.md): How to run Emailify inside of Figma
- [Activate Emailify Pro](/emailify/overview/pro.md): How to buy and use a Pro license key

## Using Emailify

  - [Emailify Documentation](/emailify/design/fundamentals.md): Detailed docs with short screencaps
  - [Emailify Video Tutorials](/emailify/tutorials.md): Full step-by-step video walkthroughs

## Frequently Asked Questions

- [Troubleshooting Emailify](/emailify/faq/troubleshooting.md): Common issues issues you may run into
- [Emailify Security](/emailify/faq/security.md): Details about how Emailify works
- [Receipts](/faq/receipts.md): Find email receipts and PDF invoices
- [Billing](/faq/billing.md): Manage your Pro subscription
- [License Seat Management](/faq/seats.md): Manage the Figma users on your key
- [Emailify Free vs Pro](/emailify/faq/plans.md): Compare Free vs Pro features

[Video](https://www.hypermatic.com/assets/videos/emailify/EMAILIFY_DEMO.mp4)

## Emailify Features

- Quickly design emails using dozens of included common components.
- Add your own re-usable components with the custom component builder.
- Customise your text, images, styles and auto-layout settings with Figma.
- Includes 100+ free professionally designed Emailify-ready Figma templates for inspiration.
- Easily specify responsive design overrides (per layer) for mobile.
- Translate and localize your Figma email designs via OpenAI, Claude, Gemini, Excel (XLSX) file export/import, or using the Lokalise API or Crowdin API, with optional Markdown formatting.
- Dark mode previews with custom color overrides and image swaps (for [supported](https://www.caniemail.com/features/css-at-media-prefers-color-scheme/) clients)
- Supports exporting animated GIFs from Figma layers in email designs.
- Preview your real HTML email at different device sizes directly inside the plugin.
- Supports Google font and custom font embeds (with configureable web safe fallbacks for [unsupported](https://www.caniemail.com/search/?s=font) clients).
- Easily design and export HTML email signatures
- No coding required; export responsive, production ready HTML with one-click.
- Integrations for Klaviyo, MailChimp, Campaign Monitor, SendGrid, PostMark, HubSpot, ActiveCampaign, Salesforce Marketing Cloud, Pardot, Braze, Bazaarvoice, Iterable, OneSignal, Omnisend, Ongage, Dotdigital, MailJet, Intercom, Zoho Campaigns, Customer.io, Brevo (Sendinblue), Mailgun, SendPulse, Selzy, Stripo, MailerLite, EmailOctopus, Loops.so, GetResponse, ConvertKit, Constant Contact, Drip, SugarCRM, Shopify, Aweber, Benchmark Email, Insider, Moosend, SendX, Mailercloud, Bloomreach, Amazon SES (AWS), Sendwithus, Emarsys, Contlo, Spotler, Mailmodo, Blueshift, Yotpo, Bento, Cheetah Digital by Marigold, Zeta, SARE, Netlify, Zapier, Make, PDF, Email on Acid or Custom Webhook URL.
- Automatically generates a preview page with all of your HTML emails.
- Optionally export developer friendly MJML source code or AMP Email HTML.
- Export HTML emails to PDFs for sending to clients for approvals.
- Optionally self-host images on your own Cloud Storage bucket (eg. AWS S3, Backblaze B2, Cloudflare R2, etc).
- Download the exported .zip file to your computer from Figma.

---

---
url: "/emailify/signatures/airmail-mac.md"
description: "Emailify includes an option for exporting HTML signatures, which you can then copy/paste and use in Airmail (MacOS)."
---

# Export and install custom HTML email signatures for Airmail (MacOS)

> Emailify includes an option for exporting HTML signatures, which you can then copy/paste and use in Airmail (MacOS).

> **Warning:** **Email signatures have a size limit of 10,000 characters in the HTML**. The plugin will warn you after exporting your email signature if its over the size limit. To avoid this you can use some of the **Signature** starter components under the **Footer** tab in the Emailify plugin.

> **Note:** Unfortunately, any **responsive mobile overrides _won't_ be rendered for any "HTML Email Signature" exports**, as any CSS style tags and @media queries are stripped out by email clients (therefore, it's also not included in the code export), so it's worth trying to strike a balance in the original design that looks nice across both desktop and mobile widths.

### Video Tutorial: Design and export HTML Email Signatures from Figma

This video tutorial is a complete step-by-step guide showing you how to design
  and export production-ready, responsive HTML email from Figma using the
  Emailify plugin.
  [Embedded media](https://www.youtube.com/embed/dmjDTWiphWk)

## Export your HTML signature from Emailify

[Video](/assets/videos/emailify/export/export-email-signature.mp4)

In the Emailify plugin, click on the **Export HTML** button to open the export panel, select the **HTML Email Signature** option from the dropdown list, then click the **Export to HTML Signature** button to start exporting the emails you've selected from Figma to HTML.

After Emailify has finished processing your email(s), you'll be shown a confirmation message; you can download your `.zip` file to your computer by clicking the **Download your .zip file** button, then you can unzip the `.zip` to see your exported files.

## Copy your HTML email signature to the clipboard

[Video](/assets/videos/emailify/export/copy-html-signature.mp4)

After you've exported your HTML email signature from Emailify and unzipped the `.zip` file, you can open the `preview-and-install.html` file in your [Google Chrome](https://www.google.com/chrome/) web browser (as other browsers like Safari may have issues) and then click the **Copy HTML Signature** button on the preview page, which will automatically copy the contents of your HTML signature to your clipboard.

> **Tip:** Some email clients may require the "raw" HTML code, so if that's the case, you can click the **Copy HTML Signature (Raw Code)** button in the `preview-and-install.html` file to copy the selection as raw HTML to your clipboard that way instead.

> **Note:** Once you've copied the HTML to your clipboard, you can follow the instructions below (taken from the excellent guides provided by [SignatureHound](https://signaturehound.com/)) to install the signature in your email client.

## How to install your HTML email signature in Airmail (MacOS)

![Airmail (MacOS) Icon](/assets/images/emailify/signatures/airmail-macos.png)

1. With the Airmail application open, click **Airmail** and then **Preferences** in the top left corner of your screen.

2. From the preferences pop-up, click the **Accounts** tab, and then the settings cog on your email account.

3. Click the **Signature** tab, and then the **+** to create a new signature.

4. Click the **HTML** option in the signature editor and copy and paste your signature into the left-hand column.

![Screenshot of Airmail Settings Modal](/assets/images/emailify/signatures/airmail-macos-1.jpg)

> **Note:** By copying and pasting your signature into this HTML editor, you will ensure that your signature's images are not sent as attachments.

5. Click **Save**, close the Settings modal, compose a new email and enjoy your new signature!

![Screenshot of Installed Signature on Airmail](/assets/images/emailify/signatures/airmail-macos-2.jpg)

---

---
url: "/emailify/signatures/apple-mail-mac.md"
description: "Emailify includes an option for exporting HTML signatures, which you can then copy/paste and use in Apple Mail (MacOS)."
---

# Export and install custom HTML email signatures for Apple Mail (MacOS)

> Emailify includes an option for exporting HTML signatures, which you can then copy/paste and use in Apple Mail (MacOS).

> **Warning:** **Email signatures have a size limit of 10,000 characters in the HTML**. The plugin will warn you after exporting your email signature if its over the size limit. To avoid this you can use some of the **Signature** starter components under the **Footer** tab in the Emailify plugin.

> **Note:** Unfortunately, any **responsive mobile overrides _won't_ be rendered for any "HTML Email Signature" exports**, as any CSS style tags and @media queries are stripped out by email clients (therefore, it's also not included in the code export), so it's worth trying to strike a balance in the original design that looks nice across both desktop and mobile widths.

### Video Tutorial: Design and export HTML Email Signatures from Figma

This video tutorial is a complete step-by-step guide showing you how to design
  and export production-ready, responsive HTML email from Figma using the
  Emailify plugin.
  [Embedded media](https://www.youtube.com/embed/dmjDTWiphWk)

## Export your HTML signature from Emailify

[Video](/assets/videos/emailify/export/export-email-signature.mp4)

In the Emailify plugin, click on the **Export HTML** button to open the export panel, select the **HTML Email Signature** option from the dropdown list, then click the **Export to HTML Signature** button to start exporting the emails you've selected from Figma to HTML.

After Emailify has finished processing your email(s), you'll be shown a confirmation message; you can download your `.zip` file to your computer by clicking the **Download your .zip file** button, then you can unzip the `.zip` to see your exported files.

## Copy your HTML email signature to the clipboard

[Video](/assets/videos/emailify/export/copy-html-signature.mp4)

After you've exported your HTML email signature from Emailify and unzipped the `.zip` file, you can open the `preview-and-install.html` file in your [Google Chrome](https://www.google.com/chrome/) web browser (as other browsers like Safari may have issues) and then click the **Copy HTML Signature** button on the preview page, which will automatically copy the contents of your HTML signature to your clipboard.

> **Tip:** Some email clients may require the "raw" HTML code, so if that's the case, you can click the **Copy HTML Signature (Raw Code)** button in the `preview-and-install.html` file to copy the selection as raw HTML to your clipboard that way instead.

> **Note:** Once you've copied the HTML to your clipboard, you can follow the instructions below (taken from the excellent guides provided by [SignatureHound](https://signaturehound.com/)) to install the signature in your email client.

## How to install your HTML email signature in Apple Mail (MacOS)

![Apple Mail (MacOS) Icon](/assets/images/emailify/signatures/apple-mail-macos.png)

1. With the Mail application open, click **Mail** and then **Preferences** in the top left corner of your screen.

2. From the preferences pop-up, click the **Signatures** tab.

3. Click the **+** button at the bottom of the middle column.

4. Copy and paste your new email signature into the right-hand column and close the pop-up window to save.

In this preview the images will appear blank. Don't worry – once you actaully go to compose an email the images will appear.

![Screenshot of Apple Mail MacOS Signature Modal](/assets/images/emailify/signatures/apple-mail-macos-1.jpg)

> **Warning:** Ensure that **Always match my default message font** is unchecked, otherwise your signature will appear in plain text.

> **Note:** Still seeing a plain text version? Try toggling the **Place signature above quoted text** checkbox and pasting in your signature again.

5. Select your new signature in the **Choose Signature** field near the bottom of the pop-up.

6. Close the **Preferences** pop-up, compose a new email and enjoy your new signature!

![Screenshot of Installed Signature on Apple Mail MacOS](/assets/images/emailify/signatures/apple-mail-macos-2.jpg)

> **Tip:** Images not appearing when you compose an email? Go to your Privacy settings and ensure that **Block All Remote Content** is unchecked.

> **Info:** When using Apple Mail in dark mode, it has a quirk where it will display a white background behind your signature in the "Inbox" panel (even if both the system and Mail settings are set to dark mode) if any retina images are being used in the signature. If the images are exported at a native 1x (instead of 2x retina) and not resized down etc, then it will remove the white background, but this is at the cost of having blurry/fuzzy images in the signature.

---

---
url: "/emailify/signatures/em-client-windows.md"
description: "Emailify includes an option for exporting HTML signatures, which you can then copy/paste and use in eM Client (Windows)."
---

# Export and install custom HTML email signatures for eM Client (Windows)

> Emailify includes an option for exporting HTML signatures, which you can then copy/paste and use in eM Client (Windows).

> **Warning:** **Email signatures have a size limit of 10,000 characters in the HTML**. The plugin will warn you after exporting your email signature if its over the size limit. To avoid this you can use some of the **Signature** starter components under the **Footer** tab in the Emailify plugin.

> **Note:** Unfortunately, any **responsive mobile overrides _won't_ be rendered for any "HTML Email Signature" exports**, as any CSS style tags and @media queries are stripped out by email clients (therefore, it's also not included in the code export), so it's worth trying to strike a balance in the original design that looks nice across both desktop and mobile widths.

### Video Tutorial: Design and export HTML Email Signatures from Figma

This video tutorial is a complete step-by-step guide showing you how to design
  and export production-ready, responsive HTML email from Figma using the
  Emailify plugin.
  [Embedded media](https://www.youtube.com/embed/dmjDTWiphWk)

## Export your HTML signature from Emailify

[Video](/assets/videos/emailify/export/export-email-signature.mp4)

In the Emailify plugin, click on the **Export HTML** button to open the export panel, select the **HTML Email Signature** option from the dropdown list, then click the **Export to HTML Signature** button to start exporting the emails you've selected from Figma to HTML.

After Emailify has finished processing your email(s), you'll be shown a confirmation message; you can download your `.zip` file to your computer by clicking the **Download your .zip file** button, then you can unzip the `.zip` to see your exported files.

## Copy your HTML email signature to the clipboard

[Video](/assets/videos/emailify/export/copy-html-signature.mp4)

After you've exported your HTML email signature from Emailify and unzipped the `.zip` file, you can open the `preview-and-install.html` file in your [Google Chrome](https://www.google.com/chrome/) web browser (as other browsers like Safari may have issues) and then click the **Copy HTML Signature** button on the preview page, which will automatically copy the contents of your HTML signature to your clipboard.

> **Tip:** Some email clients may require the "raw" HTML code, so if that's the case, you can click the **Copy HTML Signature (Raw Code)** button in the `preview-and-install.html` file to copy the selection as raw HTML to your clipboard that way instead.

> **Note:** Once you've copied the HTML to your clipboard, you can follow the instructions below (taken from the excellent guides provided by [SignatureHound](https://signaturehound.com/)) to install the signature in your email client.

## How to install your HTML email signature in eM Client (Windows)

![eM Client (Windows) Icon](/assets/images/emailify/signatures/em-client-windows.png)

1. With the Em Client application open, click **Menu** in the top left of the window (next to the logo), then under the **Tools** option click the **Settings** link.

2. From the **Settings** pop-up, click the**Mail** tab, and then click the **Templates and Signatures** sub tab.

![Screenshot of the eM Client**s settings modal](/assets/images/emailify/signatures/em-client-windows-1.jpg)

1. Click the **Signatures...** button

2. From the **Signatures** pop-up click **Add Signature**.

3. Give your signature a name and copy and paste your signature into the editor.

![Screenshot of eM Client**s signature editor modal](/assets/images/emailify/signatures/em-client-windows-2.jpg)

6. Click **OK** to save your signature.

7. Ensure your signature now appears in the **Signature** pop-up and click **OK** again.

![Screenshot of Em Client**s signature editor modal](/assets/images/emailify/signatures/em-client-windows-3.jpg)

8. Select your new signature for the following options.

![Screenshot of eM Client**s vital signature settings](/assets/images/emailify/signatures/em-client-windows-4.jpg)

9. Click **Apply** to save your changes and then **OK** to close to Settings pop-up.

10. Compose a new email and enjoy your new signature!

![Screenshot of eM Client's compose email modal](/assets/images/emailify/signatures/em-client-windows-5.jpg)

---

---
url: "/emailify/signatures/gmail-ios.md"
description: "Emailify includes an option for exporting HTML signatures, which you can then copy/paste and use in Gmail (iOS)."
---

# Export and install custom HTML email signatures for Gmail (iOS)

> Emailify includes an option for exporting HTML signatures, which you can then copy/paste and use in Gmail (iOS).

> **Warning:** **Email signatures have a size limit of 10,000 characters in the HTML**. The plugin will warn you after exporting your email signature if its over the size limit. To avoid this you can use some of the **Signature** starter components under the **Footer** tab in the Emailify plugin.

> **Note:** Unfortunately, any **responsive mobile overrides _won't_ be rendered for any "HTML Email Signature" exports**, as any CSS style tags and @media queries are stripped out by email clients (therefore, it's also not included in the code export), so it's worth trying to strike a balance in the original design that looks nice across both desktop and mobile widths.

### Video Tutorial: Design and export HTML Email Signatures from Figma

This video tutorial is a complete step-by-step guide showing you how to design
  and export production-ready, responsive HTML email from Figma using the
  Emailify plugin.
  [Embedded media](https://www.youtube.com/embed/dmjDTWiphWk)

## Export your HTML signature from Emailify

[Video](/assets/videos/emailify/export/export-email-signature.mp4)

In the Emailify plugin, click on the **Export HTML** button to open the export panel, select the **HTML Email Signature** option from the dropdown list, then click the **Export to HTML Signature** button to start exporting the emails you've selected from Figma to HTML.

After Emailify has finished processing your email(s), you'll be shown a confirmation message; you can download your `.zip` file to your computer by clicking the **Download your .zip file** button, then you can unzip the `.zip` to see your exported files.

## Copy your HTML email signature to the clipboard

[Video](/assets/videos/emailify/export/copy-html-signature.mp4)

After you've exported your HTML email signature from Emailify and unzipped the `.zip` file, you can open the `preview-and-install.html` file in your [Google Chrome](https://www.google.com/chrome/) web browser (as other browsers like Safari may have issues) and then click the **Copy HTML Signature** button on the preview page, which will automatically copy the contents of your HTML signature to your clipboard.

> **Tip:** Some email clients may require the "raw" HTML code, so if that's the case, you can click the **Copy HTML Signature (Raw Code)** button in the `preview-and-install.html` file to copy the selection as raw HTML to your clipboard that way instead.

> **Note:** Once you've copied the HTML to your clipboard, you can follow the instructions below (taken from the excellent guides provided by [SignatureHound](https://signaturehound.com/)) to install the signature in your email client.

## How to install your HTML email signature in Gmail (iOS)

![Gmail (iOS) Icon](/assets/images/emailify/signatures/gmail-ios.png)

1. To have email sent via the Gmail iOS App use your custom signature you'll need to first install your signature on your webmail account.

> **Note:** If you haven't set up your custom signature in your Gmail webmail account yet, please [follow the Gmail Webmail instructions](/emailify/signatures/gmail-webmail) first.

2. In the Gmail App you need to ensure that the mobile signature option is turned off. To turn this off, click the **Menu Icon** click **Settings**, select your Gmail Account, **Signature Settings**, and set the **Mobile Signature** toggle to **Off**.

![Screenshot of Mobile Signature Setting in Gmail App](/assets/images/emailify/signatures/gmail-ios-1.jpg)

3. Send an email to yourself to ensure the signature appears.

> **Tip:** The signature will _not be visible_ in the email composer. The only way to test it is working is to **send yourself an email**.

### Troubleshooting signatures not showing up in the Gmail iOS app

> **Warning:** Once you've installed the signature to your webmail account it can take a while until it starts sending via the Gmail app.

We were able to get our signature to show up immediately by switching to another Gmail account and then switching back to our main account through the app.

We also found that removing our account from the app and then re-adding it resulted in our new signature loading instantly.

Still not showing up? Please ensure that you've selected your signature as the **For New Emails Use** drop down option in your Gmail webmail settings – [view the Gmail Webmail instructions](/emailify/signatures/gmail-webmail).

---

---
url: "/emailify/signatures/gmail-webmail.md"
description: "Emailify includes an option for exporting HTML signatures, which you can then copy/paste and use in Gmail (Web Mail)."
---

# Export and install custom HTML email signatures for Gmail (Web Mail)

> Emailify includes an option for exporting HTML signatures, which you can then copy/paste and use in Gmail (Web Mail).

> **Warning:** **Email signatures have a size limit of 10,000 characters in the HTML**. The plugin will warn you after exporting your email signature if its over the size limit. To avoid this you can use some of the **Signature** starter components under the **Footer** tab in the Emailify plugin.

> **Note:** Unfortunately, any **responsive mobile overrides _won't_ be rendered for any "HTML Email Signature" exports**, as any CSS style tags and @media queries are stripped out by email clients (therefore, it's also not included in the code export), so it's worth trying to strike a balance in the original design that looks nice across both desktop and mobile widths.

### Video Tutorial: Design and export HTML Email Signatures from Figma

This video tutorial is a complete step-by-step guide showing you how to design
  and export production-ready, responsive HTML email from Figma using the
  Emailify plugin.
  [Embedded media](https://www.youtube.com/embed/dmjDTWiphWk)

## Export your HTML signature from Emailify

[Video](/assets/videos/emailify/export/export-email-signature.mp4)

In the Emailify plugin, click on the **Export HTML** button to open the export panel, select the **HTML Email Signature** option from the dropdown list, then click the **Export to HTML Signature** button to start exporting the emails you've selected from Figma to HTML.

After Emailify has finished processing your email(s), you'll be shown a confirmation message; you can download your `.zip` file to your computer by clicking the **Download your .zip file** button, then you can unzip the `.zip` to see your exported files.

## Copy your HTML email signature to the clipboard

[Video](/assets/videos/emailify/export/copy-html-signature.mp4)

After you've exported your HTML email signature from Emailify and unzipped the `.zip` file, you can open the `preview-and-install.html` file in your [Google Chrome](https://www.google.com/chrome/) web browser (as other browsers like Safari may have issues) and then click the **Copy HTML Signature** button on the preview page, which will automatically copy the contents of your HTML signature to your clipboard.

> **Tip:** Some email clients may require the "raw" HTML code, so if that's the case, you can click the **Copy HTML Signature (Raw Code)** button in the `preview-and-install.html` file to copy the selection as raw HTML to your clipboard that way instead.

> **Note:** Once you've copied the HTML to your clipboard, you can follow the instructions below (taken from the excellent guides provided by [SignatureHound](https://signaturehound.com/)) to install the signature in your email client.

## How to install your HTML email signature in Gmail (Web Mail)

![Gmail (Web Mail) Icon](/assets/images/emailify/signatures/gmail-webmail.png)

1. Once logged into your Gmail account, click the **Settings** Cog in the top right corner.

2. Select the **Settings** drop down option.

3. Scroll down to the **Signature** section and click **Create new**.

4. Enter your new signature name into the modal and click **Create**.

5. Copy and paste your signature into the signature editor.

> **Warning:** There is currently a bug with Chrome and the way it performs the copy/paste that causes your signature's links to appear underlined. Please complete the signature install process using a different browser such as [Mozilla Firefox](https://www.mozilla.org/en-US/firefox/new/) to resolve the issue. You can go back to using Chrome once your email signature is setup using another browser.

6. Select your new signature in the **For New Emails Use** drop down.

7. Ensure you scroll the bottom of the page and click **Save Changes**.

8. Compose a new email and enjoy your new signature!

> **Tip:** Looking to also send this signature through the Gmail iOS app? [View the Gmail iOS App instructions](/emailify/signatures/gmail-ios).

![Screenshot of Installed Signature on Gmail](/assets/images/emailify/signatures/gmail-webmail-2.jpg)

---

---
url: "/emailify/signatures/mail-app-ios.md"
description: "Emailify includes an option for exporting HTML signatures, which you can then copy/paste and use in Mail App (iOS)."
---

# Export and install custom HTML email signatures for Mail App (iOS)

> Emailify includes an option for exporting HTML signatures, which you can then copy/paste and use in Mail App (iOS).

> **Warning:** **Email signatures have a size limit of 10,000 characters in the HTML**. The plugin will warn you after exporting your email signature if its over the size limit. To avoid this you can use some of the **Signature** starter components under the **Footer** tab in the Emailify plugin.

> **Note:** Unfortunately, any **responsive mobile overrides _won't_ be rendered for any "HTML Email Signature" exports**, as any CSS style tags and @media queries are stripped out by email clients (therefore, it's also not included in the code export), so it's worth trying to strike a balance in the original design that looks nice across both desktop and mobile widths.

### Video Tutorial: Design and export HTML Email Signatures from Figma

This video tutorial is a complete step-by-step guide showing you how to design
  and export production-ready, responsive HTML email from Figma using the
  Emailify plugin.
  [Embedded media](https://www.youtube.com/embed/dmjDTWiphWk)

## Export your HTML signature from Emailify

[Video](/assets/videos/emailify/export/export-email-signature.mp4)

In the Emailify plugin, click on the **Export HTML** button to open the export panel, select the **HTML Email Signature** option from the dropdown list, then click the **Export to HTML Signature** button to start exporting the emails you've selected from Figma to HTML.

After Emailify has finished processing your email(s), you'll be shown a confirmation message; you can download your `.zip` file to your computer by clicking the **Download your .zip file** button, then you can unzip the `.zip` to see your exported files.

## Copy your HTML email signature to the clipboard

[Video](/assets/videos/emailify/export/copy-html-signature.mp4)

After you've exported your HTML email signature from Emailify and unzipped the `.zip` file, you can open the `preview-and-install.html` file in your [Google Chrome](https://www.google.com/chrome/) web browser (as other browsers like Safari may have issues) and then click the **Copy HTML Signature** button on the preview page, which will automatically copy the contents of your HTML signature to your clipboard.

> **Tip:** Some email clients may require the "raw" HTML code, so if that's the case, you can click the **Copy HTML Signature (Raw Code)** button in the `preview-and-install.html` file to copy the selection as raw HTML to your clipboard that way instead.

> **Note:** Once you've copied the HTML to your clipboard, you can follow the instructions below (taken from the excellent guides provided by [SignatureHound](https://signaturehound.com/)) to install the signature in your email client.

## How to install your HTML email signature in Mail App (iOS)

![Mail App (iOS) Icon](/assets/images/emailify/signatures/apple-mail-ios.png)

1. Open the **Settings** app on your iOS device, type **Signature** into the search bar, and open the **Signature** setting under **Apps > Mail**. You can also get there manually via **Mail > Signature**.

![Screenshot of Apple Mail MacOS Signature Modal](/assets/images/emailify/signatures/apple-mail-ios-1.jpg)

2. Paste your signature into the signature editor. If you have more than one email account, make sure you're using the signature field for the correct account. Delete any existing text first, then press and hold in the editor and tap **Paste**.

> **Tip:** You can use Apple's [Universal Clipboard](https://support.apple.com/en-au/102430) feature to copy the HTML email signature on your Mac computer (by following [the step above](#copy-your-html-email-signature-to-the-clipboard)), and then paste it into your iPhone's Apple Mail app (ensuring that Wi-Fi and Bluetooth are enabled on both of your devices).

![Screenshot of signature in Mail Settings](/assets/images/emailify/signatures/apple-mail-ios-2.jpg)

> **Tip:** If the pasted signature looks too large or the formatting looks broken, use iOS Undo once to let Mail refresh the formatting. The easiest option is to tap the Undo arrow on the keyboard. If you don't see it, you can gently shake your iPhone until the Undo Change Attributes prompt appears and tap Undo, or swipe left with three fingers to undo. The signature formatting should automatically refresh after that.

![Animated demonstration of shaking an iPhone to undo signature formatting changes in Apple Mail](/assets/images/emailify/ios-shake.gif)

3. Close **Settings**, open the **Mail** app, and compose a new email to confirm your signature is working. If you have multiple email accounts, the signature will appear when you choose the same **From** address you pasted it into in **Settings**.

![Screenshot of signature in Mail Settings](/assets/images/emailify/signatures/apple-mail-ios-3.jpg)

> **Info:** When using Apple Mail in dark mode, it has a quirk where it will display a white background behind your signature in the "Inbox" panel (even if both the system and Mail settings are set to dark mode) if any retina images are being used in the signature. If the images are exported at a native 1x (instead of 2x retina) and not resized down etc, then it will remove the white background, but this is at the cost of having blurry/fuzzy images in the signature.

---

---
url: "/emailify/signatures/mail-app-windows-10.md"
description: "Emailify includes an option for exporting HTML signatures, which you can then copy/paste and use in Mail App (Windows 10)."
---

# Export and install custom HTML email signatures for Mail App (Windows 10)

> Emailify includes an option for exporting HTML signatures, which you can then copy/paste and use in Mail App (Windows 10).

> **Warning:** **Email signatures have a size limit of 10,000 characters in the HTML**. The plugin will warn you after exporting your email signature if its over the size limit. To avoid this you can use some of the **Signature** starter components under the **Footer** tab in the Emailify plugin.

> **Note:** Unfortunately, any **responsive mobile overrides _won't_ be rendered for any "HTML Email Signature" exports**, as any CSS style tags and @media queries are stripped out by email clients (therefore, it's also not included in the code export), so it's worth trying to strike a balance in the original design that looks nice across both desktop and mobile widths.

### Video Tutorial: Design and export HTML Email Signatures from Figma

This video tutorial is a complete step-by-step guide showing you how to design
  and export production-ready, responsive HTML email from Figma using the
  Emailify plugin.
  [Embedded media](https://www.youtube.com/embed/dmjDTWiphWk)

## Export your HTML signature from Emailify

[Video](/assets/videos/emailify/export/export-email-signature.mp4)

In the Emailify plugin, click on the **Export HTML** button to open the export panel, select the **HTML Email Signature** option from the dropdown list, then click the **Export to HTML Signature** button to start exporting the emails you've selected from Figma to HTML.

After Emailify has finished processing your email(s), you'll be shown a confirmation message; you can download your `.zip` file to your computer by clicking the **Download your .zip file** button, then you can unzip the `.zip` to see your exported files.

## Copy your HTML email signature to the clipboard

[Video](/assets/videos/emailify/export/copy-html-signature.mp4)

After you've exported your HTML email signature from Emailify and unzipped the `.zip` file, you can open the `preview-and-install.html` file in your [Google Chrome](https://www.google.com/chrome/) web browser (as other browsers like Safari may have issues) and then click the **Copy HTML Signature** button on the preview page, which will automatically copy the contents of your HTML signature to your clipboard.

> **Tip:** Some email clients may require the "raw" HTML code, so if that's the case, you can click the **Copy HTML Signature (Raw Code)** button in the `preview-and-install.html` file to copy the selection as raw HTML to your clipboard that way instead.

> **Note:** Once you've copied the HTML to your clipboard, you can follow the instructions below (taken from the excellent guides provided by [SignatureHound](https://signaturehound.com/)) to install the signature in your email client.

## How to install your HTML email signature in Mail App (Windows 10)

![Mail App (Windows 10) Icon](/assets/images/emailify/signatures/mail-app-windows.png)

> **Warning:** **Windows 10 Mail infamously uses the Microsoft Word rendering engine for email which will cause differences to your signature preview**. Spacing and font sizing will appear slightly differently, images are often squished, and underlines will be added to your links. For many of your recipients these links will appear with a blue underline, irrespective of the color you set for them. ![Screenshot of blue underlined links sent from MS Word email client](/assets/images/emailify/signatures/outlook-2019-windows-4.jpg)

> **Note:** If you really care about your email signature being "pixel perfect" then **we recommend using a different email client that uses a HTML rendering engine** such as [Outlook.com](https://outlook.com).

1. With Windows 10 Mail open, click the Settings cog in the bottom of the left sidebar to open the settings drawer.

![Screenshot of Windows 10 Mail Settings Drawer](/assets/images/emailify/signatures/mail-app-windows-1.jpg)

2. Click the **Signature** option in the settings drawer to open the signature modal.

3. Copy and paste your signature into the signature editor.

![Screenshot of Windows 10 Mail Signature Settings Modal](/assets/images/emailify/signatures/mail-app-windows-2.jpg)

4. Click **Save** to close the signature modal.

5. Compose a new email and enjoy your new signature!

![Screenshot of Installed Signature in Windows 10 Mail](/assets/images/emailify/signatures/mail-app-windows-3.jpg)

---

---
url: "/emailify/signatures/mailbird-windows.md"
description: "Emailify includes an option for exporting HTML signatures, which you can then copy/paste and use in Mailbird (Windows)."
---

# Export and install custom HTML email signatures for Mailbird (Windows)

> Emailify includes an option for exporting HTML signatures, which you can then copy/paste and use in Mailbird (Windows).

> **Warning:** **Email signatures have a size limit of 10,000 characters in the HTML**. The plugin will warn you after exporting your email signature if its over the size limit. To avoid this you can use some of the **Signature** starter components under the **Footer** tab in the Emailify plugin.

> **Note:** Unfortunately, any **responsive mobile overrides _won't_ be rendered for any "HTML Email Signature" exports**, as any CSS style tags and @media queries are stripped out by email clients (therefore, it's also not included in the code export), so it's worth trying to strike a balance in the original design that looks nice across both desktop and mobile widths.

### Video Tutorial: Design and export HTML Email Signatures from Figma

This video tutorial is a complete step-by-step guide showing you how to design
  and export production-ready, responsive HTML email from Figma using the
  Emailify plugin.
  [Embedded media](https://www.youtube.com/embed/dmjDTWiphWk)

## Export your HTML signature from Emailify

[Video](/assets/videos/emailify/export/export-email-signature.mp4)

In the Emailify plugin, click on the **Export HTML** button to open the export panel, select the **HTML Email Signature** option from the dropdown list, then click the **Export to HTML Signature** button to start exporting the emails you've selected from Figma to HTML.

After Emailify has finished processing your email(s), you'll be shown a confirmation message; you can download your `.zip` file to your computer by clicking the **Download your .zip file** button, then you can unzip the `.zip` to see your exported files.

## Copy your HTML email signature to the clipboard

[Video](/assets/videos/emailify/export/copy-html-signature.mp4)

After you've exported your HTML email signature from Emailify and unzipped the `.zip` file, you can open the `preview-and-install.html` file in your [Google Chrome](https://www.google.com/chrome/) web browser (as other browsers like Safari may have issues) and then click the **Copy HTML Signature** button on the preview page, which will automatically copy the contents of your HTML signature to your clipboard.

> **Tip:** Some email clients may require the "raw" HTML code, so if that's the case, you can click the **Copy HTML Signature (Raw Code)** button in the `preview-and-install.html` file to copy the selection as raw HTML to your clipboard that way instead.

> **Note:** Once you've copied the HTML to your clipboard, you can follow the instructions below (taken from the excellent guides provided by [SignatureHound](https://signaturehound.com/)) to install the signature in your email client.

## How to install your HTML email signature in Mailbird (Windows)

![Mailbird (Windows) Icon](/assets/images/emailify/signatures/mailbird-windows.png)

1. With Mailbird open, click the **Menu** in the top left corner and select the **Settings** option.

2. With the **Settings** modal open click the **Identities** tab, select your account and then click the **Edit** button.

![Screenshot of Settings modal in Mailbird](/assets/images/emailify/signatures/mailbird-windows-1.jpg)

3. Copy and paste your signature into the signature editor.

![Screenshot of Identity modal in Mailbird](/assets/images/emailify/signatures/mailbird-windows-2.jpg)

4. Click **OK** to save your signature, and close the Settings modal.

5. Compose a new email and enjoy your new signature!

![Screenshot of composing an email in Mailbird](/assets/images/emailify/signatures/mailbird-windows-3.jpg)

---

---
url: "/emailify/signatures/mozilla-thunderbird-windows.md"
description: "Emailify includes an option for exporting HTML signatures, which you can then copy/paste and use in Mozilla Thunderbird (Windows)."
---

# Export and install custom HTML email signatures for Mozilla Thunderbird (Windows)

> Emailify includes an option for exporting HTML signatures, which you can then copy/paste and use in Mozilla Thunderbird (Windows).

> **Warning:** **Email signatures have a size limit of 10,000 characters in the HTML**. The plugin will warn you after exporting your email signature if its over the size limit. To avoid this you can use some of the **Signature** starter components under the **Footer** tab in the Emailify plugin.

> **Note:** Unfortunately, any **responsive mobile overrides _won't_ be rendered for any "HTML Email Signature" exports**, as any CSS style tags and @media queries are stripped out by email clients (therefore, it's also not included in the code export), so it's worth trying to strike a balance in the original design that looks nice across both desktop and mobile widths.

### Video Tutorial: Design and export HTML Email Signatures from Figma

This video tutorial is a complete step-by-step guide showing you how to design
  and export production-ready, responsive HTML email from Figma using the
  Emailify plugin.
  [Embedded media](https://www.youtube.com/embed/dmjDTWiphWk)

## Export your HTML signature from Emailify

[Video](/assets/videos/emailify/export/export-email-signature.mp4)

In the Emailify plugin, click on the **Export HTML** button to open the export panel, select the **HTML Email Signature** option from the dropdown list, then click the **Export to HTML Signature** button to start exporting the emails you've selected from Figma to HTML.

After Emailify has finished processing your email(s), you'll be shown a confirmation message; you can download your `.zip` file to your computer by clicking the **Download your .zip file** button, then you can unzip the `.zip` to see your exported files.

## Copy your HTML email signature to the clipboard

[Video](/assets/videos/emailify/export/copy-html-signature.mp4)

After you've exported your HTML email signature from Emailify and unzipped the `.zip` file, you can open the `preview-and-install.html` file in your [Google Chrome](https://www.google.com/chrome/) web browser (as other browsers like Safari may have issues) and then click the **Copy HTML Signature** button on the preview page, which will automatically copy the contents of your HTML signature to your clipboard.

> **Tip:** Some email clients may require the "raw" HTML code, so if that's the case, you can click the **Copy HTML Signature (Raw Code)** button in the `preview-and-install.html` file to copy the selection as raw HTML to your clipboard that way instead.

> **Note:** Once you've copied the HTML to your clipboard, you can follow the instructions below (taken from the excellent guides provided by [SignatureHound](https://signaturehound.com/)) to install the signature in your email client.

## How to install your HTML email signature in Mozilla Thunderbird (Windows)

![Mozilla Thunderbird (Windows) Icon](/assets/images/emailify/signatures/thunderbird-windows.png)

1. Download your signature as a HTML file.

> **Tip:** After exporting your signature from Emailify, you can find your HTML email signature file inside the exported `.zip` file, inside your email signature's folder as the **index.html** file (do _not_ use the the 'preview.html' file)

2. With the Mozilla Thunderbird application open, click the **Menu Icon** in the top right, then under **Options** select **Account Settings**.

3. From the **Account Settings** pop-up, click the **Attach the signature from a file instead (text, HTML, or image) checkbox** and choose the HTML signature you exported from Emailify (`index.html`) for the file input below.

![Screenshot of Spark settings modal with no signature](/assets/images/emailify/signatures/thunderbird-windows-1.jpg)

4. Click **OK** in the bottom right of the popup, compose a new email and enjoy your new signature!

> **Note:** Thunderbird will show red borders around the elements in your email signature. Don't be alarmed – these won't be visible to your recipients when you send them emails.

![Screenshot of Installed Signature on Spark](/assets/images/emailify/signatures/thunderbird-windows-2.jpg)

---

---
url: "/emailify/signatures/outlook-2019-windows.md"
description: "Emailify includes an option for exporting HTML signatures, which you can then copy/paste and use in Outlook 2019 (Windows)."
---

# Export and install custom HTML email signatures for Outlook 2019 (Windows)

> Emailify includes an option for exporting HTML signatures, which you can then copy/paste and use in Outlook 2019 (Windows).

> **Warning:** **Email signatures have a size limit of 10,000 characters in the HTML**. The plugin will warn you after exporting your email signature if its over the size limit. To avoid this you can use some of the **Signature** starter components under the **Footer** tab in the Emailify plugin.

> **Note:** Unfortunately, any **responsive mobile overrides _won't_ be rendered for any "HTML Email Signature" exports**, as any CSS style tags and @media queries are stripped out by email clients (therefore, it's also not included in the code export), so it's worth trying to strike a balance in the original design that looks nice across both desktop and mobile widths.

### Video Tutorial: Design and export HTML Email Signatures from Figma

This video tutorial is a complete step-by-step guide showing you how to design
  and export production-ready, responsive HTML email from Figma using the
  Emailify plugin.
  [Embedded media](https://www.youtube.com/embed/dmjDTWiphWk)

## Export your HTML signature from Emailify

[Video](/assets/videos/emailify/export/export-email-signature.mp4)

In the Emailify plugin, click on the **Export HTML** button to open the export panel, select the **HTML Email Signature** option from the dropdown list, then click the **Export to HTML Signature** button to start exporting the emails you've selected from Figma to HTML.

After Emailify has finished processing your email(s), you'll be shown a confirmation message; you can download your `.zip` file to your computer by clicking the **Download your .zip file** button, then you can unzip the `.zip` to see your exported files.

## Copy your HTML email signature to the clipboard

[Video](/assets/videos/emailify/export/copy-html-signature.mp4)

After you've exported your HTML email signature from Emailify and unzipped the `.zip` file, you can open the `preview-and-install.html` file in your [Google Chrome](https://www.google.com/chrome/) web browser (as other browsers like Safari may have issues) and then click the **Copy HTML Signature** button on the preview page, which will automatically copy the contents of your HTML signature to your clipboard.

> **Tip:** Some email clients may require the "raw" HTML code, so if that's the case, you can click the **Copy HTML Signature (Raw Code)** button in the `preview-and-install.html` file to copy the selection as raw HTML to your clipboard that way instead.

> **Note:** Once you've copied the HTML to your clipboard, you can follow the instructions below (taken from the excellent guides provided by [SignatureHound](https://signaturehound.com/)) to install the signature in your email client.

## How to install your HTML email signature in Outlook 2019 (Windows)

![Outlook 2019 (Windows) Icon](/assets/images/emailify/signatures/outlook-2019-windows.png)

> **Warning:** **Outlook infamously uses the Microsoft Word rendering engine for email which will cause differences to your signature preview**. Spacing and font sizing will appear slightly differently, images are often squished, and underlines will be added to your links. For many of your recipients these links will appear with a blue underline, irrespective of the color you set for them. ![Screenshot of blue underlined links sent from MS Word email client](/assets/images/emailify/signatures/outlook-2019-windows-4.jpg)

> **Note:** If you really care about your email signature being "pixel perfect" then **we recommend using a different email client that uses a HTML rendering engine** such as [Outlook.com](https://outlook.com).

1. With Outlook open, click the **New Email** button to bring up the email composer.

2. Click **Signature** in the message toolbar and then the **Signatures** option to open the Signature Settings modal.

![Screenshot of Outlook 2019 Email Composer](/assets/images/emailify/signatures/outlook-2019-windows-1.jpg)

3. Select the existing signature you'd like to edit or click **New** to create one.

4. Copy and paste your signature into the signature editor.

![Screenshot of Outlook 2019 Signature Settings Modal](/assets/images/emailify/signatures/outlook-2019-windows-2.jpg)

5. Click **OK** to exit the Signature Settings modal.

6. Now under the **Signature** option in the message toolbar you should see your signature. From this dropdown click your signature to insert it into the email body.

![Screenshot of Installed Signature in Outlook 2019](/assets/images/emailify/signatures/outlook-2019-windows-3.jpg)

---

---
url: "/emailify/signatures/outlook-ios.md"
description: "Emailify includes an option for exporting HTML signatures, which you can then copy/paste and use in Outlook (iOS)."
---

# Export and install custom HTML email signatures for Outlook (iOS)

> Emailify includes an option for exporting HTML signatures, which you can then copy/paste and use in Outlook (iOS).

> **Warning:** **Email signatures have a size limit of 10,000 characters in the HTML**. The plugin will warn you after exporting your email signature if its over the size limit. To avoid this you can use some of the **Signature** starter components under the **Footer** tab in the Emailify plugin.

> **Note:** Unfortunately, any **responsive mobile overrides _won't_ be rendered for any "HTML Email Signature" exports**, as any CSS style tags and @media queries are stripped out by email clients (therefore, it's also not included in the code export), so it's worth trying to strike a balance in the original design that looks nice across both desktop and mobile widths.

### Video Tutorial: Design and export HTML Email Signatures from Figma

This video tutorial is a complete step-by-step guide showing you how to design
  and export production-ready, responsive HTML email from Figma using the
  Emailify plugin.
  [Embedded media](https://www.youtube.com/embed/dmjDTWiphWk)

## Export your HTML signature from Emailify

[Video](/assets/videos/emailify/export/export-email-signature.mp4)

In the Emailify plugin, click on the **Export HTML** button to open the export panel, select the **HTML Email Signature** option from the dropdown list, then click the **Export to HTML Signature** button to start exporting the emails you've selected from Figma to HTML.

After Emailify has finished processing your email(s), you'll be shown a confirmation message; you can download your `.zip` file to your computer by clicking the **Download your .zip file** button, then you can unzip the `.zip` to see your exported files.

## Copy your HTML email signature to the clipboard

[Video](/assets/videos/emailify/export/copy-html-signature.mp4)

After you've exported your HTML email signature from Emailify and unzipped the `.zip` file, you can open the `preview-and-install.html` file in your [Google Chrome](https://www.google.com/chrome/) web browser (as other browsers like Safari may have issues) and then click the **Copy HTML Signature** button on the preview page, which will automatically copy the contents of your HTML signature to your clipboard.

> **Tip:** Some email clients may require the "raw" HTML code, so if that's the case, you can click the **Copy HTML Signature (Raw Code)** button in the `preview-and-install.html` file to copy the selection as raw HTML to your clipboard that way instead.

> **Note:** Once you've copied the HTML to your clipboard, you can follow the instructions below (taken from the excellent guides provided by [SignatureHound](https://signaturehound.com/)) to install the signature in your email client.

## How to install your HTML email signature in Outlook (iOS)

![Outlook (iOS) Icon](/assets/images/emailify/signatures/outlook-ios.png)

> **Warning:** **HTML signatures have been poorly supported by the Outlook iOS app in the past**. At one time reliable, our latest assessment of the app shows that your signature's email and phone number links will be removed causing these to appear blue for some of your recipients (depending on what email client they are using).

> **Note:** If you really care about your email signature being "pixel perfect" then we recommend using a different email app on your device such as the iOS Mail app.

1. In the Outlook iOS app, click the profile icon in the top left corner to show the menu drawer.

![Screenshot of the header banner in Outlook iOS](/assets/images/emailify/signatures/outlook-ios-1.jpg)

2. Now click the settings cog in the bottom left corner to open the settings.

![Screenshot of menu drawer in Outlook iOS](/assets/images/emailify/signatures/outlook-ios-2.jpg)

3. Under Email, click the **Signature** option.

![Screenshot of Mail Settings in Outlook iOS](/assets/images/emailify/signatures/outlook-ios-3.jpg)

4. Copy and paste your signature into the signature editor (press and hold on the editor to bring up the paste option).

> **Tip:** You can use Apple's [Universal Clipboard](https://support.apple.com/en-au/102430) feature to copy the HTML email signature on your Mac computer (by following [the step above](#copy-your-html-email-signature-to-the-clipboard)), and then paste it into your iPhone's Outlook app (ensuring that Wi-Fi and Bluetooth are enabled on both of your devices).

![Screenshot of the signature setting in Outlook iOS](/assets/images/emailify/signatures/outlook-ios-4.jpg)

5. Close the settings, compose and new email and enjoy your new signature!

![Screenshot of the signature setting in Outlook iOS](/assets/images/emailify/signatures/outlook-ios-5.jpg)

---

---
url: "/emailify/signatures/outlook-webmail.md"
description: "Emailify includes an option for exporting HTML signatures, which you can then copy/paste and use in Outlook.com (Web Mail)."
---

# Export and install custom HTML email signatures for Outlook.com (Web Mail)

> Emailify includes an option for exporting HTML signatures, which you can then copy/paste and use in Outlook.com (Web Mail).

> **Warning:** **Email signatures have a size limit of 10,000 characters in the HTML**. The plugin will warn you after exporting your email signature if its over the size limit. To avoid this you can use some of the **Signature** starter components under the **Footer** tab in the Emailify plugin.

> **Note:** Unfortunately, any **responsive mobile overrides _won't_ be rendered for any "HTML Email Signature" exports**, as any CSS style tags and @media queries are stripped out by email clients (therefore, it's also not included in the code export), so it's worth trying to strike a balance in the original design that looks nice across both desktop and mobile widths.

### Video Tutorial: Design and export HTML Email Signatures from Figma

This video tutorial is a complete step-by-step guide showing you how to design
  and export production-ready, responsive HTML email from Figma using the
  Emailify plugin.
  [Embedded media](https://www.youtube.com/embed/dmjDTWiphWk)

## Export your HTML signature from Emailify

[Video](/assets/videos/emailify/export/export-email-signature.mp4)

In the Emailify plugin, click on the **Export HTML** button to open the export panel, select the **HTML Email Signature** option from the dropdown list, then click the **Export to HTML Signature** button to start exporting the emails you've selected from Figma to HTML.

After Emailify has finished processing your email(s), you'll be shown a confirmation message; you can download your `.zip` file to your computer by clicking the **Download your .zip file** button, then you can unzip the `.zip` to see your exported files.

## Copy your HTML email signature to the clipboard

[Video](/assets/videos/emailify/export/copy-html-signature.mp4)

After you've exported your HTML email signature from Emailify and unzipped the `.zip` file, you can open the `preview-and-install.html` file in your [Google Chrome](https://www.google.com/chrome/) web browser (as other browsers like Safari may have issues) and then click the **Copy HTML Signature** button on the preview page, which will automatically copy the contents of your HTML signature to your clipboard.

> **Tip:** Some email clients may require the "raw" HTML code, so if that's the case, you can click the **Copy HTML Signature (Raw Code)** button in the `preview-and-install.html` file to copy the selection as raw HTML to your clipboard that way instead.

> **Note:** Once you've copied the HTML to your clipboard, you can follow the instructions below (taken from the excellent guides provided by [SignatureHound](https://signaturehound.com/)) to install the signature in your email client.

## How to install your HTML email signature in Outlook.com (Web Mail)

![Outlook.com (Web Mail) Icon](/assets/images/emailify/signatures/outlook-webmail.png)

1. Once logged into your Outlook.com account, click the Settings Cog in the top right corner.

2. With the sidebar settings menu open click **View All Outlook Settings** in the bottom right corner.

3. Select the **Mail** tab and then **Compose and Reply** tab in the settings modal.

4. Copy and paste your new email signature into the signature editor.

> **Note:** Please ensure that the **Compose messages in HTML format** setting is correct and that you have checked the appropriate checkboxes around automatically using this signature.

![Screenshot of Outlook.com Web Mail Settings Screen](/assets/images/emailify/signatures/outlook-webmail-1.jpg)

5. Click Save and exit the settings modal.

6. Compose a new email and enjoy your new signature!

![Screenshot of Installed Signature on Outlook.com Webmail](/assets/images/emailify/signatures/outlook-webmail-2.jpg)

---

---
url: "/emailify/signatures/spark-mac.md"
description: "Emailify includes an option for exporting HTML signatures, which you can then copy/paste and use in Spark (MacOS)."
---

# Export and install custom HTML email signatures for Spark (MacOS)

> Emailify includes an option for exporting HTML signatures, which you can then copy/paste and use in Spark (MacOS).

> **Warning:** **Email signatures have a size limit of 10,000 characters in the HTML**. The plugin will warn you after exporting your email signature if its over the size limit. To avoid this you can use some of the **Signature** starter components under the **Footer** tab in the Emailify plugin.

> **Note:** Unfortunately, any **responsive mobile overrides _won't_ be rendered for any "HTML Email Signature" exports**, as any CSS style tags and @media queries are stripped out by email clients (therefore, it's also not included in the code export), so it's worth trying to strike a balance in the original design that looks nice across both desktop and mobile widths.

### Video Tutorial: Design and export HTML Email Signatures from Figma

This video tutorial is a complete step-by-step guide showing you how to design
  and export production-ready, responsive HTML email from Figma using the
  Emailify plugin.
  [Embedded media](https://www.youtube.com/embed/dmjDTWiphWk)

## Export your HTML signature from Emailify

[Video](/assets/videos/emailify/export/export-email-signature.mp4)

In the Emailify plugin, click on the **Export HTML** button to open the export panel, select the **HTML Email Signature** option from the dropdown list, then click the **Export to HTML Signature** button to start exporting the emails you've selected from Figma to HTML.

After Emailify has finished processing your email(s), you'll be shown a confirmation message; you can download your `.zip` file to your computer by clicking the **Download your .zip file** button, then you can unzip the `.zip` to see your exported files.

## Copy your HTML email signature to the clipboard

[Video](/assets/videos/emailify/export/copy-html-signature.mp4)

After you've exported your HTML email signature from Emailify and unzipped the `.zip` file, you can open the `preview-and-install.html` file in your [Google Chrome](https://www.google.com/chrome/) web browser (as other browsers like Safari may have issues) and then click the **Copy HTML Signature** button on the preview page, which will automatically copy the contents of your HTML signature to your clipboard.

> **Tip:** Some email clients may require the "raw" HTML code, so if that's the case, you can click the **Copy HTML Signature (Raw Code)** button in the `preview-and-install.html` file to copy the selection as raw HTML to your clipboard that way instead.

> **Note:** Once you've copied the HTML to your clipboard, you can follow the instructions below (taken from the excellent guides provided by [SignatureHound](https://signaturehound.com/)) to install the signature in your email client.

## How to install your HTML email signature in Spark (MacOS)

![Spark (MacOS) Icon](/assets/images/emailify/signatures/spark-macos.png)

1. With the Spark application open, click **Mail** and then **Preferences** in the top left corner of your screen.

2. From the preferences pop-up, click the **Signature** tab, and click the **Add Signature** button if you don't have any existing signatures.

![Screenshot of Spark settings modal with no signature](/assets/images/emailify/signatures/spark-macos-1.jpg)

3. Copy and paste your signature into the signature editor.

![Screenshot of Spark settings modal with signature](/assets/images/emailify/signatures/spark-macos-2.jpg)

> **Warning:** Ensure that **Always match my default message font** is unchecked.

4. Close the Settings modal, compose a new email and enjoy your new signature!

![Screenshot of Installed Signature on Spark](/assets/images/emailify/signatures/spark-macos-3.jpg)

---

---
url: "/emailify/signatures/yahoo-webmail.md"
description: "Emailify includes an option for exporting HTML signatures, which you can then copy/paste and use in Yahoo! (Web Mail)."
---

# Export and install custom HTML email signatures for Yahoo! (Web Mail)

> Emailify includes an option for exporting HTML signatures, which you can then copy/paste and use in Yahoo! (Web Mail).

> **Warning:** **Email signatures have a size limit of 10,000 characters in the HTML**. The plugin will warn you after exporting your email signature if its over the size limit. To avoid this you can use some of the **Signature** starter components under the **Footer** tab in the Emailify plugin.

> **Note:** Unfortunately, any **responsive mobile overrides _won't_ be rendered for any "HTML Email Signature" exports**, as any CSS style tags and @media queries are stripped out by email clients (therefore, it's also not included in the code export), so it's worth trying to strike a balance in the original design that looks nice across both desktop and mobile widths.

### Video Tutorial: Design and export HTML Email Signatures from Figma

This video tutorial is a complete step-by-step guide showing you how to design
  and export production-ready, responsive HTML email from Figma using the
  Emailify plugin.
  [Embedded media](https://www.youtube.com/embed/dmjDTWiphWk)

## Export your HTML signature from Emailify

[Video](/assets/videos/emailify/export/export-email-signature.mp4)

In the Emailify plugin, click on the **Export HTML** button to open the export panel, select the **HTML Email Signature** option from the dropdown list, then click the **Export to HTML Signature** button to start exporting the emails you've selected from Figma to HTML.

After Emailify has finished processing your email(s), you'll be shown a confirmation message; you can download your `.zip` file to your computer by clicking the **Download your .zip file** button, then you can unzip the `.zip` to see your exported files.

## Copy your HTML email signature to the clipboard

[Video](/assets/videos/emailify/export/copy-html-signature.mp4)

After you've exported your HTML email signature from Emailify and unzipped the `.zip` file, you can open the `preview-and-install.html` file in your [Google Chrome](https://www.google.com/chrome/) web browser (as other browsers like Safari may have issues) and then click the **Copy HTML Signature** button on the preview page, which will automatically copy the contents of your HTML signature to your clipboard.

> **Tip:** Some email clients may require the "raw" HTML code, so if that's the case, you can click the **Copy HTML Signature (Raw Code)** button in the `preview-and-install.html` file to copy the selection as raw HTML to your clipboard that way instead.

> **Note:** Once you've copied the HTML to your clipboard, you can follow the instructions below (taken from the excellent guides provided by [SignatureHound](https://signaturehound.com/)) to install the signature in your email client.

## How to install your HTML email signature in Yahoo! (Web Mail)

> **Warning:** Unfortunately, **Yahoo! Mail makes on the fly adjustments to the images in your signature which is out of our control**. Please [read all of the details about these rendering issues](#important-information-about-yahoo-mail-image-scale-rendering-issues) below.

![Yahoo! (Web Mail) Icon](/assets/images/emailify/signatures/yahoo-webmail.png)

1. Once logged into your Yahoo account, click the Settings Cog in the top right corner.

2. With the dropdown open click **More Settings**.

3. Click **Writing Email** from the settings options.

4. Click the **+** button at the bottom of the middle column.

5. Copy and paste your new email signature into the signature editor.

> **Warning:** There is currently a bug with Chrome and the way it performs the copy/paste that causes your signature's links to appear underlined. Please complete the signature install process using a different browser such as [Mozilla Firefox](https://www.mozilla.org/en-US/firefox/new/) to resolve the issue. You can go back to using Chrome once your email signature is setup using another browser.

> **Note:** If your signature does not appear in the preview on the right then move the text cursor in signature editor to the top of the pane and hit the **Enter** key.

![Screenshot of Yahoo Web Mail Settings Screen](/assets/images/emailify/signatures/yahoo-webmail-1.jpg)

6. Your signature should then save automatically. Close the settings page, compose a new email and enjoy your new signature!

![Screenshot of Installed Signature on Yahoo Webmail](/assets/images/emailify/signatures/yahoo-webmail-2.jpg)

### Important information about Yahoo! Mail image scale rendering issues

Unfortunately Yahoo Mail makes on the fly adjustments to the images in your signature which is out of our control. This can cause rendering issues in certain email clients if your images are being scaled down from their natural size.

We've noticed that the following images are being scaled down:

- Profile Image (400px → 100px)
- Logo (600px → 150px)

While the signature may look fine in the Yahoo Mail preview, it is likely that recipeints using Microsoft email clients such as Outlook 2019 will see any images at their full size (example below).

![Screenshot of Yahoo Web Mail sent email in MS Outlook](/assets/images/emailify/signatures/yahoo-webmail-warning.jpg)

Please test your signature by sending it to a recipient who is using a Windows mail client. If the issue is occuring you can resolve it by uploading your images at the exact size that they should appear in the signature (and not scale them down). You can use a [free online service](https://www.iloveimg.com/resize-image) (or Figma) to resize your images appropriately.

> **Warning:** Once resized your images will render correctly in Windows email clients however they will appear slightly blurry on tablets, phones and other high resolution screens. If you are not willing to compromise on this we recommend using a different email client.

---

---
url: "/emailify/tutorials.md"
description: "The best free Figma tutorial videos for beginners (or power users) to level up."
---

# Emailify Video Tutorials

> The best free Figma tutorial videos for beginners (or power users) to level up.

## Designing Emails

  ### Design and export Emails from Figma to HTML

This video tutorial is a complete step-by-step guide showing you how to design
    and export production-ready, responsive HTML email from Figma using the
    Emailify plugin.
    [Embedded media](https://www.youtube.com/embed/OWv4WX3eqvU)

  ### Create a component library for HTML email designs in Figma

This video tutorial is a complete step-by-step guide showing you how to design
    a Figma component library for HTML emails using the Emailify Figma plugin.
    [Embedded media](https://www.youtube.com/embed/lQb9-_9maxs)

  ### Use 500+ free HTML email components in your Figma designs

This video tutorial is a complete step-by-step guide showing you how to use 500+ free HTML email components in your
    Figma designs with the Emailify Figma plugin.
    [Embedded media](https://www.youtube.com/embed/zMUQ3tE76Vo)

  ### Easily add elements to HTML email designs in Figma

This video tutorial is a complete step-by-step guide showing you how to easily
    add design elements to email designs in Figma using the Emailify plugin.
    [Embedded media](https://www.youtube.com/embed/un_EgOdAdUQ)

  ### Create custom components for HTML email exports

This video tutorial is a complete step-by-step guide showing you how to add
    custom components to your email designs and export production-ready,
    responsive HTML emails from Figma using the Emailify plugin.
    [Embedded media](https://www.youtube.com/embed/vczegDic1Do)

  ### Add custom categories for Figma email components

This video tutorial is a complete step-by-step guide showing you how to add
    custom categories for Figma email components using the Emailify Figma plugin.
    [Embedded media](https://www.youtube.com/embed/M6p5AY2-g54)

  ### Use free Figma email templates to design HTML emails

This video tutorial is a complete step-by-step guide showing you how to use free Figma email templates to design
    HTML emails with the Emailify Figma Plugin.
    [Embedded media](https://www.youtube.com/embed/lLCTEAAoCWY
)

  ### Add UTM tracking code to HTML email links from Figma

This video tutorial is a complete step-by-step guide showing you how to add
    UTM tracking code to HTML email links from Figma using the Emailify Figma
    plugin.
    [Embedded media](https://www.youtube.com/embed/LrNKatzJo6g)

  ### Add Outlook-compatible gradient buttons to HTML emails with Figma

This video tutorial is a complete step-by-step guide showing you how to add Outlook-compatible rounded gradient
    buttons to HTML emails using the Figma Emailify plugin.
    [Embedded media](https://www.youtube.com/embed/P-faEnzef20)

  ### Add hover effects to buttons in HTML emails from Figma

This video tutorial is a complete step-by-step guide showing you how to add
    hover effects to buttons in HTML emails from Figma using the Emailify Figma
    plugin.
    [Embedded media](https://www.youtube.com/embed/8pydrphK6bU)

  ### Add hover colors to text links in HTML emails from Figma

This video tutorial is a complete step-by-step guide showing you how to add
    hover colors to text links in HTML emails from Figma using the Emailify Figma
    plugin.
    [Embedded media](https://www.youtube.com/embed/T-HSfOhTTTw)

  ### Add animated GIFs from Figma to HTML email exports

This video tutorial is a complete step-by-step guide showing you how to add
    animated GIFs to your email designs and export production-ready, responsive
    HTML emails from Figma using the Emailify plugin.
    [Embedded media](https://www.youtube.com/embed/Jmy2Tuzzwjg)

  ### Embed custom web fonts in HTML email exports from Figma

This video tutorial is a complete step-by-step guide showing you how to embed
    custom web fonts (with web-safe fallbacks) in HTML email exports from Figma
    using the Figma Emailify plugin.
    [Embedded media](https://www.youtube.com/embed/dtTNDXeO3FA)

  ### Add dark mode styles to HTML email designs

This video tutorial is a complete step-by-step guide showing you how to add
    custom dark mode style overrides to your email designs for exporting
    production-ready, responsive HTML emails from Figma using the Emailify plugin.
    [Embedded media](https://www.youtube.com/embed/uAxQ5Psi1m4)

  ### Design and export HTML Email Signatures from Figma

This video tutorial is a complete step-by-step guide showing you how to design
    and export production-ready, responsive HTML email from Figma using the
    Emailify plugin.
    [Embedded media](https://www.youtube.com/embed/dmjDTWiphWk)

  ### Add a countdown timer to HTML emails in Figma

This video tutorial is a complete step-by-step guide showing you how to add a
    countdown timer to HTML emails in Figma using the Emailify plugin.
    [Embedded media](https://www.youtube.com/embed/1IOfvsZTTXM)

## Email Content

  ### Add dynamic content to HTML emails in Figma

This video tutorial is a complete step-by-step guide showing you how to add
    dynamic content to HTML emails in Figma using the Emailify plugin.
    [Embedded media](https://www.youtube.com/embed/0512urzUNTk)

  ### Create Klaviyo abandoned cart flow email template in Figma

This video tutorial is a complete step-by-step guide showing you how to add custom Klaviyo abandoned cart flows into
    custom HTML templates with the Emailify Figma Plugin.
    [Embedded media](https://www.youtube.com/embed/MHPCkb1n8XM)
  ### Adding a dynamic product feed to your Klaviyo emails

This video tutorial is a complete step-by-step guide showing you how to add
    custom Klaviyo product feeds into custom HTML templates with the Emailify
    Figma Plugin.
    [Embedded media](https://www.youtube.com/embed/PaRSIxVLYlo)

  ### Translate HTML email designs with localization in Figma

This video tutorial is a complete step-by-step guide showing you how to
    translate HTML email designs with localization in Figma using the Emailify
    plugin.
    [Embedded media](https://www.youtube.com/embed/pZUOi6C7C5E)

  ### Localize HTML email designs (with text formatting) in Figma

This video tutorial is a complete step-by-step guide showing you how to
    localize HTML email designs with markdown text formatting in Figma using the
    Emailify plugin.
    [Embedded media](https://www.youtube.com/embed/OngJvgE6Aeg)

  ### Translate email designs in Figma with ChatGPT

This video tutorial is a complete step-by-step guide showing you how to Translate email designs in Figma with
    ChatGPT (automatically).
    [Embedded media](https://www.youtube.com/embed/6CqRT3FTALA)

  ### Translate email designs in Figma with the Lokalise API

This video tutorial is a complete step-by-step guide showing you how to
    translate HTML email designs with the Lokalise API and Figma by using the
    Emailify plugin.
    [Embedded media](https://www.youtube.com/embed/s6-pYRm_B1c)

  ### Translate email designs in Figma with the Crowdin API

This video tutorial is a complete step-by-step guide showing you how to
    translate HTML email designs with the Crowdin API and Figma by using the
    Emailify plugin.
    [Embedded media](https://www.youtube.com/embed/qcQglNYqtJc)

  ### Import spreadsheets to tables for HTML emails in Figma

This video tutorial is a complete step-by-step guide showing you how to
    automatically generate tables for HTML emails in Figma from XLSX/CSV or Google
    Sheets using the Emailify plugin.
    [Embedded media](https://www.youtube.com/embed/CB3tRj0GtW4)

## Platform Integrations

  ### Export HTML emails from Figma to MailChimp

This video tutorial is a complete step-by-step guide showing you how to upload
    HTML emails from the Figma Emailify plugin to MailChimp.
    [Embedded media](https://www.youtube.com/embed/FgPl-a_z59A)

  ### Export HTML emails from Figma to Campaign Monitor

This video tutorial is a complete step-by-step guide showing you how to upload
    HTML emails from the Figma Emailify plugin to Campaign Monitor.
    [Embedded media](https://www.youtube.com/embed/vyAsh8v8GLE)

  ### Export HTML emails from Figma to Klaviyo

This video tutorial is a complete step-by-step guide showing you how to upload
    HTML emails from the Figma Emailify plugin to Klaviyo.
    [Embedded media](https://www.youtube.com/embed/7OCqmOsrAYk)

  ### Export HTML emails from Figma to Zapier (Google Drive)

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify
    plugin to Zapier (Google Drive).
    [Embedded media](https://www.youtube.com/embed/cI93RXk9MV0)

  ### Export HTML emails from Figma to Postmark

This video tutorial is a complete step-by-step guide showing you how to upload
    HTML emails from the Figma Emailify plugin to Postmark.
    [Embedded media](https://www.youtube.com/embed/BD7dghnkeKM)

  ### Export HTML emails from Figma to Salesforce Marketing Cloud

This video tutorial is a complete step-by-step guide showing you how to upload
    HTML emails from the Figma Emailify plugin to Salesforce Marketing Cloud.
    [Embedded media](https://www.youtube.com/embed/Q4QD3GTxD9s)

  ### Export HTML emails from Figma to Pardot (Marketing Cloud Account Engagement)

This video tutorial is a complete step-by-step guide showing you how to upload
    HTML emails from the Figma Emailify plugin to Pardot.
    [Embedded media](https://www.youtube.com/embed/VtVuPmb57cw)

  ### Export HTML emails from Figma to SendGrid

This video tutorial is a complete step-by-step guide showing you how to upload
    HTML emails from the Figma Emailify plugin to SendGrid.
    [Embedded media](https://www.youtube.com/embed/cYYVO_3HT1U)

  ### Export HTML emails from Figma to Mailjet

This video tutorial is a complete step-by-step guide showing you how to upload
    HTML emails from the Figma Emailify plugin to Mailjet.
    [Embedded media](https://www.youtube.com/embed/LwkH-A3pAYE)

  ### Export HTML emails from Figma to SendPulse

This video tutorial is a complete step-by-step guide showing you how to upload
    HTML emails from the Figma Emailify plugin to SendPulse.
    [Embedded media](https://www.youtube.com/embed/lLH2aHdVSN4)

  ### Uploading your emails to Sendwithus

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify
    plugin to Sendwithus.
    [Embedded media](https://www.youtube.com/embed/b99i9ZaXL6E)

  ### Export HTML emails from Figma to Brevo

This video tutorial is a complete step-by-step guide showing you how to upload
    HTML emails from the Figma Emailify plugin to Brevo (formerly called
    "Sendinblue").
    [Embedded media](https://www.youtube.com/embed/8BJN16U_IHg)

  ### Export HTML emails from Figma to Mailmodo

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify
    plugin to Mailmodo.
    [Embedded media](https://www.youtube.com/embed/WstlHCpO8L4)

  ### Export HTML emails from Figma to Yotpo

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify
    plugin to Yotpo.
    [Embedded media](https://www.youtube.com/embed/lRU0Wjw9vHQ)

  ### Export HTML emails from Figma to Bento

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify
    plugin to Bento.
    [Embedded media](https://www.youtube.com/embed/iv2PWcrxthQ)

  ### Export HTML emails from Figma to Intercom

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify
    plugin to Intercom.
    [Embedded media](https://www.youtube.com/embed/U14GJx6k4mM)

  ### Export HTML emails from Figma to SARE

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify
    plugin to SARE.
    [Embedded media](https://www.youtube.com/embed/_-9AIr6dE0U)

  ### Export HTML emails from Figma to Mailgun

This video tutorial is a complete step-by-step guide showing you how to upload
    HTML emails from the Figma Emailify plugin to Mailgun.
    [Embedded media](https://www.youtube.com/embed/hrsveAlzzZo)

  ### Export HTML emails from Figma to Customer.io

This video tutorial is a complete step-by-step guide showing you how to upload
    HTML emails from the Figma Emailify plugin to Customer.io.
    [Embedded media](https://www.youtube.com/embed/KQyaQy6gYps)

  ### Export HTML emails from Figma to HubSpot

This video tutorial is a complete step-by-step guide showing you how to upload
    HTML emails from the Figma Emailify plugin to HubSpot.
    [Embedded media](https://www.youtube.com/embed/AOSWquXuhRA)

  ### Export HTML emails from Figma to Braze

This video tutorial is a complete step-by-step guide showing you how to upload
    HTML emails from the Figma Emailify plugin to Braze.
    [Embedded media](https://www.youtube.com/embed/6GnG-rTdQl8)

  ### Export HTML emails from Figma to ActiveCampaign

This video tutorial is a complete step-by-step guide showing you how to upload
    HTML emails from the Figma Emailify plugin to ActiveCampaign.
    [Embedded media](https://www.youtube.com/embed/TgCROp1QHsg)

  ### Export HTML emails from Figma to OneSignal

This video tutorial is a complete step-by-step guide showing you how to upload
    HTML emails from the Figma Emailify plugin to OneSignal.
    [Embedded media](https://www.youtube.com/embed/haQHdEan54Q)

  ### Export HTML emails from Figma to Selzy

This video tutorial is a complete step-by-step guide showing you how to upload
    HTML emails from the Figma Emailify plugin to Selzy.
    [Embedded media](https://www.youtube.com/embed/5w2qyBTYToY)

  ### Export HTML emails from Figma to Omnisend

This video tutorial is a complete step-by-step guide showing you how to upload
    HTML emails from the Figma Emailify plugin to Omnisend.
    [Embedded media](https://www.youtube.com/embed/Zl8DZWbyrt8)

  ### Export HTML emails from Figma to Zoho Campaigns

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify
    plugin to Zoho Campaigns.
    [Embedded media](https://www.youtube.com/embed/UQ2va7H6RN0)

  ### Export HTML emails from Figma to Stripo

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify
    plugin to Stripo.
    [Embedded media](https://www.youtube.com/embed/98oeeXB7FNI)

  ### Export HTML emails from Figma to MailerLite

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify
    plugin to MailerLite.
    [Embedded media](https://www.youtube.com/embed/5eKKe7M2-yo)

  ### Export HTML emails from Figma to EmailOctopus

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify
    plugin to EmailOctopus.
    [Embedded media](https://www.youtube.com/embed/SxoknO-JXSM)

  ### Export HTML emails from Figma to Loops.so

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify
    plugin to Loops.so.
    [Embedded media](https://www.youtube.com/embed/tPKd8R7gH1Q)

  ### Export HTML emails from Figma to GetResponse

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify
    plugin to GetResponse.
    [Embedded media](https://www.youtube.com/embed/_WtsjQmQV-I)

  ### Export HTML emails from Figma to ConvertKit

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify
    plugin to ConvertKit.
    [Embedded media](https://www.youtube.com/embed/I8kwRdvwf8k)

  ### Export HTML emails from Figma to Constant Contact

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify
    plugin to Constant Contact.
    [Embedded media](https://www.youtube.com/embed/XDjtuc0XWKI)

  ### Export HTML emails from Figma to Drip

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify
    plugin to Drip.
    [Embedded media](https://www.youtube.com/embed/T-VmrIW9e7c)

  ### Export HTML emails from Figma to Aweber

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify
    plugin to Aweber.
    [Embedded media](https://www.youtube.com/embed/WpBJ0B8XrUc)

  ### Export HTML emails from Figma to SugarCRM (Sugar Market)

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify
    plugin to SugarCRM (Sugar Market).
    [Embedded media](https://www.youtube.com/embed/dudacdc97vQ)

  ### Export HTML emails from Figma to Benchmark Email

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify
    plugin to Benchmark Email.
    [Embedded media](https://www.youtube.com/embed/KYIdqjManjg)

  ### Export HTML emails from Figma to Insider (UseInsider)

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify
    plugin to Insider (UseInsider).

    Note: this video shows the original Insider campaign upload flow. Emailify now also includes a
    Destination dropdown so you can upload to either Insider campaign content or the Insider template library.
    [Embedded media](https://www.youtube.com/embed/uZAXjEmKhJ0)

  ### Export HTML emails from Figma to Moosend

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify
    plugin to Moosend.
    [Embedded media](https://www.youtube.com/embed/ByG957iMh6c)

  ### Export HTML emails from Figma to SendX

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify
    plugin to SendX.
    [Embedded media](https://www.youtube.com/embed/uVTTIoT4Lk4)

  ### Export HTML emails from Figma to Ongage

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify
    plugin to Ongage.
    [Embedded media](https://www.youtube.com/embed/ApcOT2WG_cc)

  ### Export HTML emails from Figma to Mailercloud

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify
    plugin to Mailercloud.
    [Embedded media](https://www.youtube.com/embed/vtVd9ng97w8)

  ### Export HTML emails from Figma to Marketo

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify
    plugin to Adobe Marketo Engage.
    [Embedded media](https://www.youtube.com/embed/GBU_cdxPBfA)

  ### Export HTML emails from Figma to Amazon Simple Email Service (SES)

This video tutorial is a complete step-by-step guide showing you how to upload HTML emails from the Figma Emailify
    plugin to Amazon Simple Email Service (SES).
    [Embedded media](https://www.youtube.com/embed/6kC4wbapV88)

  ### Export emails from Figma to MJML code

This video tutorial is a complete step-by-step guide showing you how to export emails from the Figma Emailify plugin
    to MJML code.
    [Embedded media](https://www.youtube.com/embed/_y9-1IvtlH8)

  ### Export HTML emails from Figma to Plain Text format

This video tutorial is a complete step-by-step guide showing you how to export HTML emails from the Figma Emailify
    plugin to a Plain Text (.txt file) format version
    [Embedded media](https://www.youtube.com/embed/jUca0A7A7_8)

## Preview Links/PDFs

  ### Upload preview links for HTML emails from Figma to Netlify

This video tutorial is a complete step-by-step guide showing you how to upload preview links for HTML emails from
    Figma to Netlify using Emailify.
    [Embedded media](https://www.youtube.com/embed/YZAILKYkyUM)

  ### Export HTML emails from Figma to PDF previews

This video tutorial is a complete step-by-step guide showing you how to export
    HTML emails from the Figma Emailify plugin to PDF files.
    [Embedded media](https://www.youtube.com/embed/Wmub2cYLHcQ)

  ### Export emails from Figma to grayscale wireframe previews

This video tutorial is a complete step-by-step guide showing you how to export emails as grayscale wireframe
    previews from the Figma Emailify plugin to PDF files.
    [Embedded media](https://www.youtube.com/embed/JCYA2oQ4O2U)

## Testing Emails

  ### Export HTML email tests from Figma to Email on Acid

This video tutorial is a complete step-by-step guide showing you how to upload
    HTML email tests from the Figma Emailify plugin to Email on Acid.
    [Embedded media](https://www.youtube.com/embed/ThlA2CpDI9U)

  ### Test HTML emails in different clients with exports from Figma

This video tutorial is a complete step-by-step guide showing you how to test
    HTML emails in different clients with exports from Figma using the Emailify
    plugin and Litmus.com.
    [Embedded media](https://www.youtube.com/embed/vZkuFfpkh1Q)

  ### Test HTML emails in dark mode with exports from Figma

This video tutorial is a complete step-by-step guide showing you how to test
    HTML emails in dark mode with exports from Figma using the Emailify plugin and
    Litmus.com.
    [Embedded media](https://www.youtube.com/embed/h5Gq9apZrxk)

  ### Test HTML emails in Gmail with exports from Figma

This video tutorial is a complete step-by-step guide showing you how to test
    HTML emails in Gmail with exports from Figma using the Emailify plugin and
    Litmus.com.
    [Embedded media](https://www.youtube.com/embed/Jlm1YBOioM0)

  ### Test HTML emails on mobile with exports from Figma

This video tutorial is a complete step-by-step guide showing you how to test
    HTML emails on mobile with exports from Figma using the Emailify plugin and
    Litmus.com.
    [Embedded media](https://www.youtube.com/embed/yz2KQPFBzA0)

  ### Test HTML emails in Outlook with exports from Figma

This video tutorial is a complete step-by-step guide showing you how to test
    HTML emails in Microsoft Outlook with exports from Figma using the Emailify
    plugin and Litmus.com.
    [Embedded media](https://www.youtube.com/embed/5MJzh5rbfdY)

  ### Send yourself tests of HTML emails from Figma with PutsMail

This video tutorial is a complete step-by-step guide showing you how to send
    yourself tests of HTML emails from Figma using the Emailify plugin and
    PutsMail.com.
    [Embedded media](https://www.youtube.com/embed/CxdlzgUaCMM)

---

---
url: "/faq.md"
description: "Frequently asked questions that you may have can be found below."
---

# Billing & License FAQ

> Frequently asked questions that you may have can be found below.

- [Receipts](/faq/receipts.md): Find email receipts and PDF invoices
- [Billing](/faq/billing.md): Manage your Pro subscription
- [Free vs Pro](/faq/plans.md): Compare the Free/Pro feature sets
- [License Seat Management](/faq/seats.md): Manage the Figma users on your key

---

---
url: "/faq/billing.md"
description: "Billing help for cancellations, payment updates, seat changes, VAT, and refunds."
---

# Billing

> Billing help for cancellations, payment updates, seat changes, VAT, and refunds.

## Cancel Subscription

You can cancel your plan at any time by clicking the **subscription settings** or **manage membership** link at the bottom of any email receipt sent from [Gumroad](https://gumroad.com/) and then clicking on the **Cancel membership** button.

> **Tip:** Please email [support@gumroad.com](mailto:support@gumroad.com) if you can't find your receipt.

## Update Payment Details

You can update your payment details at any time by clicking the **subscription settings** or **manage membership** link at the bottom of any email receipt sent from [Gumroad](https://gumroad.com/) and then clicking on the **Use a different card?** button, add your new credit card details and click the **Update membership** button.

> **Info:** If you're having any issues with payments going through, please try turning off any VPN that you may be using, which should help with this; please also ensure that the Zip code and area details matches the location of your credit card, too. If you're still having any issues, please reach out to [support@gumroad.com](mailto:support@gumroad.com)

## Upgrade/Downgrade Seats

You can add or remove seats on your license at any time by clicking the **subscription settings** or **manage membership** link in any email receipt sent from [Gumroad](https://gumroad.com), then clicking on the plus (**+**) or minus (**-**) buttons under **Seats** to the total number you need on your license, and click the **Update membership** button.

> **Tip:** If you need to free up any seat(s) on your existing license for a new Figma user on your team to use instead, you can [self-manage your license seats](https://license.hypermatic.com) and remove any Figma users who no longer need to be linked to your key.

> **Info:** If you're having any issues with payments going through, please try turning off any VPN that you may be using, which should help with this; please also ensure that the Zip code and area details matches the location of your credit card, too. If you're still having any issues, please reach out to [support@gumroad.com](mailto:support@gumroad.com)

## Prorated Pricing When Upgrading Seats

Gumroad uses prorated pricing to calculate the exact amount when adding extra seats to an existing subscription, which can be a bit confusing at first glance, but ensures you are paying exactly the right amount for any additional seats to an existing active license.

If we use an example of an existing annual TinyImage license with 1 seats on it (billed yearly at $192/year), and we want to upgrade the license to have 2 seats on it during the year.

Essentially, when you upgrade seats on a subscription, it will take the total price for those seats (eg. $384 for 2 TinyImage seats in this case) and subtract/discount the unused period from your _existing_ billing cycle, and only charge that _remaining_ amount, depending on how many days remain in your current billing cycle (eg. so let's say, $243.18, in this case).

Importantly, **the billing cycle date will also get reset** from 1 year from today's date (or 1 month from today's date, if you're billed monthly) when you upgrade the seats on your license; for example, upgrading your annual subscription on January 25th 2025 means your next billing date will be on January 25th 2026 for the full amount of $384 again.

## VAT Refunds

If you open your email receipt, then click the "Manage membership" link, you can generate an invoice from there and input a VAT ID, which will automatically refund the VAT.

If you enter your VAT ID upon checkout initially, it shouldn't charge you at all.

## 30 Day Refund Policy

We really want you to get value from using our Figma plugins! If you don't see value **within the _first_ 30 days**, please [contact](https://hypermatic.com/contact) us for a full refund.

> **Warning:** Please note, we can't refund subscriptions that have passed the first 30 days since your original purchase.

> **Tip:** Please make a note of your subscription renewal dates, as we can't provide refunds if you accidentally forget to cancel your subscription after the first 30 days since your original purchase.

---

---
url: "/faq/plans.md"
description: "Overview of free vs pro plan comparisons across all Hypermatic plugins."
---

# Free vs Pro Feature Comparisons

> Overview of free vs pro plan comparisons across all Hypermatic plugins.

## Documentation Sections

- [TinyImage (Free vs Pro)](/tinyimage/faq/plans.md): Export compressed JPG, PNG, SVG, WebP, AVIF, GIF and PDF files from Figma, reducing sizes by up to 95%.
- [Pitchdeck (Free vs Pro)](/pitchdeck/faq/plans.md): Magically turn your Figma designs into animated presentable slide decks, or export them to PowerPoint.
- [Convertify (Free vs Pro)](/convertify/faq/plans.md): Export Figma to Sketch, XD, After Effects or import XD, Illustrator, PowerPoint, Word Docs, Google Docs, and PDF to Figma.
- [Emailify (Free vs Pro)](/emailify/faq/plans.md): Easily create and export responsive, production ready HTML emails (eDMs) from Figma.
- [CopyDoc (Free vs Pro)](/copydoc/faq/plans.md): Everything you need to easily export, import, localize and update text in your Figma designs.
- [Bannerify (Free vs Pro)](/bannerify/faq/plans.md): Animate and export production ready banners from Figma to HTML, GIFs and Videos.
- [Crypto (Free vs Pro)](/crypto/faq/plans.md): Securely share your Figma designs and prototypes as password protected URLs or PDF files.
- [Favvy (Free vs Pro)](/favvy/faq/plans.md): Export production ready favicons (with code) for your website or PWA from Figma in seconds.
- [Pixelay (Free vs Pro)](/pixelay/faq/plans.md): Compare your Figma designs with live or local website URLs using smart browser overlays.
- [HyperCrop (Free vs Pro)](/hypercrop/faq/plans.md): Batch crop/resize multiple images into multiple sizes with presets, smart cropping and face detection.
- [Commentful (Free vs Pro)](/commentful/faq/plans.md): Supercharge your Figma comments and gather external feedback from stakeholders.
- [Weblify (Free vs Pro)](/weblify/faq/plans.md): Inspect your Figma layers as clean HTML, React or Vue code with one click.

---

---
url: "/faq/receipts.md"
description: "How to locate Gumroad receipts and generate PDF invoices."
---

# Find Your Receipt

> How to locate Gumroad receipts and generate PDF invoices.

All licenses purchased through our online checkout (via [Gumroad](https://gumroad.com)) will automatically be emailed a receipt to the email address that you specified during the checkout process (these should be emailed from `noreply@customers.gumroad.com`).

> **Tip:** Please email [support@gumroad.com](mailto:support@gumroad.com) if you can't find your receipt.

### Generate PDF Invoice

After you open your email receipt, you can optionally also download a PDF invoice by clicking on the **Generate** button at the bottom of your email receipt.

---

---
url: "/faq/seats.md"
description: "You can remove any Figma users from your license key to free up some seats, or optionally upgrade your license to add extra seats to your key instead."
---

# Managing seats on your Pro license key

> You can remove any Figma users from your license key to free up some seats, or optionally upgrade your license to add extra seats to your key instead.

If you need to free up any seat(s) on your existing license for a new Figma user on your team to use instead, you can [self-manage your license seats](https://license.hypermatic.com) and remove any Figma users who no longer need to be linked to your key.

## Upgrade/Downgrade Seats

You can also optionally add or remove seats on your license at any time by clicking the **subscription settings** or **manage membership** link in any email receipt sent from [Gumroad](https://gumroad.com), then clicking on the plus (**+**) or minus (**-**) buttons under **Seats** to the total number you need on your license, and click the **Update membership** button.

---

---
url: "/favvy/code.md"
description: "Copy the generated favicon HTML snippet and reuse it later from the exported zip."
---

# Copying the generated HTML code

> Copy the generated favicon HTML snippet and reuse it later from the exported zip.

[Video](/assets/videos/favvy/create/copy-favicon-code.mp4)

On the confirmation screen, you will also be presented with HTML code that you can use in your website's `` tag. This easiest way to copy this block of code is to click the **Copy HTML to clipboard** button in the Favvy plugin.

Once you've copied the HTML, you'll be able to open up a code editor and paste the HTML into your `` tag. Please sure that the paths to your icons are updated as needed, depending on where they're located in your directory structure and/or on your server.

> **Tip:** **Finding this code after closing the Favvy plugin**. Don't worry if you forgot to copy this code from Favvy; if you need to refer back to it later, there is a file in the exported `.zip` file called `head.html`, which includes the same code that is shown in the Favvy confirmation screen.

---

---
url: "/favvy/design.md"
description: "The Favvy Figma plugin works by letting you select a single square Figma layer and automatically converting it into a favicon package to use on your website."
---

# Designing your favicon frame in Figma

> The Favvy Figma plugin works by letting you select a single square Figma layer and automatically converting it into a favicon package to use on your website.

[Video](/assets/videos/favvy/create/design-favicon.mp4)

To prepare your Figma frame for exporting to a favicon package using Favvy, your Figma layer _must be a square aspect ratio_, where the width and height are identical (eg. **512x512** pixels).

The quickest way to do this is to create a new blank Figma frame on your page, set both the width and height for your new favicon frame Figma to `512` pixels, and then drag and drop the icon you'd like to use for your favicon into the new Figma frame you've just created, and resize it as needed to fit the 512x512 frame.

For the best results, you should use SVG vector layers inside your Figma frame to ensure that the exported favicons are as sharp as possible.

> **Tip:** **If you'd like your favicons to have a transparent background**, ensure you remove the _fill_ from your new Figma frame that you created above. If not, you can set this to have any fill you like.

---

---
url: "/favvy/export.md"
description: "After you've selected your Figma layer, click the **Export Favicons** button in the Favvy plugin to generate production ready code and a favicon .zip file from your layer."
---

# Exporting your Figma frame to favicons

> After you've selected your Figma layer, click the **Export Favicons** button in the Favvy plugin to generate production ready code and a favicon .zip file from your layer.

[Video](/assets/videos/favvy/create/export-favicons.mp4)

> **Note:** **Your selected layer must be a square aspect ratio** where the width and height are identical (eg. **512x512** pixels). Favvy will let you know if you've selected a layer that isn't square.

After clicking the **Export Favicons** button, you'll see a confirmation screen letting you know that your favicons are ready to download. To download the `.zip` file from Figma to your computer, you can click the **Download favicons .zip file** button in the Favvy plugin.

> **Tip:** **Saving file downloads from Figma** If you're using the Figma **desktop app**, you'll see a prompt appear to download your file. However, if you're using Figma in a **web browser**, your file will automatically be downloaded to your computer by default (usually to the **Downloads** directory on your computer).

## What's in the exported Favvy .zip file?

Depending on the export formats you select, the full list of possible files included in the exported `.zip` file from Favvy are listed below:

- `android-chrome-192x192.png`
- `android-chrome-512x512.png`
- `apple-touch-icon.png`
- `favicon.ico`
- `favicon.svg`
- `head.html`
- `site.webmanifest`

## Other Favvy export options

Before exporting your favicons, you can optionally specify your website name and a theme colour.

### Website Name

Populating the **Website Name** input field with your website name will automatically add it to the `name` and `short_name` fields in the exported `site.webmanifest` file.

The `site.webmanifest` file is used in progressive web apps (PWA), and if you're interested, you can [read more about the web app manifest](https://developer.mozilla.org/en-US/docs/Web/Manifest) on the MDN web docs.

### Theme Colour

Populating the **Theme Colour** input field with a HEX colour code (or using the color picker) will automatically add it to the **browserconfig.xml** file exported by Favvy, the `theme-color` fields, and also use it for any iOS splash screen backgrounds, in the generated code for your `` tag.

### Sizes & Platforms

By default, Favvy exports a favicon package that covers all browser and devices, however, you can optionally turn off support for iOS (icons and/or splash screen support) and/or Android if you don't need them by toggling the switches in the Favvy plugin.

---

---
url: "/favvy/faq/plans.md"
description: "To get unlimited usage of all of the Favvy Pro features, you will need to purchase a license from the [Hypermatic website](https://hypermatic.com/favvy#pro)."
---

# Favvy Free vs Favvy Pro

> To get unlimited usage of all of the Favvy Pro features, you will need to purchase a license from the [Hypermatic website](https://hypermatic.com/favvy#pro).

Favvy includes 10 free trials of the _Pro_ version. Once these trials have been used up, the Figma plugin will revert to their _Free_ version, which will have limited functionality.

  - **Favvy Free**: ### 16px Icon Exports Unlimited Usage       ### Full Icon Set Exports Try during 10 Pro Trials       ### PWA Support Try during 10 Pro Trials
  - **Favvy Pro**: ### 16px Icon Exports Unlimited Usage       ### Full Icon Set Exports Unlimited Usage       ### PWA Support Unlimited Usage

---

---
url: "/favvy/faq/security.md"
description: "Favvy runs as an official plugin inside of Figma's own app, which are reviewed and approved by the Figma team."
---

# Favvy Security

> Favvy runs as an official plugin inside of Figma's own app, which are reviewed and approved by the Figma team.

The Figma plugin is run directly from Figma's own servers, and runs inside of a your Figma file, which means that it inherits all of the [security](https://www.figma.com/security/) and infrastructure of the Figma platform, which exceed industry standards for data protection and security:

- SOC 2 Type 2
- SOC 3
- Cloud Security Alliance (CSA) STAR: Level 1
- ISO/IEC 27001:2013
- ISO/IEC 27018:2019
- EU Cloud Code of Conduct (COC): Level 2

There's **no additional software** that needs to be installed to use the Figma plugin, as Figma plugins run as a built-in part of Figma's own native functionality, and all Figma plugins easily accessibile and can be instantly run from inside any Figma file, or via the official [Figma Community](https://www.figma.com/community) ecosystem inside of the Figma app.

If your organization is already approved to use Figma, then you _already have access_ to Figma plugins.

## How Favvy works

The [Favvy Figma plugin](https://www.figma.com/community/plugin/789010114208495133) helps users easily export favicons from their Figma layers.

Favvy is designed to be privacy and security focused, so nothing _ever_ leaves your Figma file.

All functionality and file exports are handled client-side directly in the Figma plugin using the [Figma Plugins API](https://www.figma.com/plugin-docs/), and are _never_ uploaded, processed or stored anywhere in the cloud or outside of Figma.

## What Favvy does and doesn't do

Favvy uses the [Figma Plugins API](https://www.figma.com/plugin-docs/) to help users inspect their Figma layers as code, and download them as code components _directly_ to their computer.

Favvy doesn't rely on _any_ external servers to handle compressing image data, which means that nothing in your Figma file ever leaves the Figma plugin or Figma itself.

Any files that are exported via the plugin are done so entirely locally to the user's own computer.

### Favvy does

- Allow users to export their Figma layers to favicon images and code.
- Download any exported files _directly_ to the user's computer.

### Favvy does _not_

- Upload _any_ data from your Figma file.
- Store _any_ data from your Figma file.
- Use _any_ servers or cloud storage to process or store your Figma data.
- Collect or store _any_ personal information (Figma plugins *cannot* access any private information about Figma projects, Figma teams or Figma users).

## How Figma plugins work

Figma plugins are written in HTML/CSS/Javascript, and are run in a tightly controlled [sandbox environment](https://www.figma.com/plugin-docs/how-plugins-run/) inside of the main Figma application.

Figma plugins can only do whatever Figma allows them to do inside the permissions of the [Figma Plugins API](https://www.figma.com/plugin-docs/), and importantly, **plugins don't have any access to personal information** about the Figma user running the plugin.

## What Figma plugins can and can't do

As per the article on [Figma plugin security](https://www.figma.com/blog/how-we-built-the-figma-plugin-system/), there are a limited number of things that Figma plugins can do, and many more things that they can't do:

### Figma plugins can

- Only be run by an explicit user action
- Show UI in a single plugin-specific dialog
- Read any data in your Figma document (e.g. a “find layer by name” plugin)
- Modify any data in your Figma document (e.g. a “rename selected layers” plugin)
- Communicate with any server over the internet (e.g. an “import from service X” plugin)

### Figma plugins _cannot_

- Run by themselves
- Get information about the project or team that owns the file
- Access anything when they aren’t running
- Access data from any files other than the file they were run in
- Change Figma’s UI outside of the plugin UI dialog

> **Tip:** Figma account administrators at your company can [configure an allowlist of plugins](https://help.figma.com/hc/en-us/articles/4404228724759-Manage-plugins-and-widgets-in-an-organization) that are allowed inside the organization. This can be used to prevent untrusted Figma plugins from being run in any file in that organization.

---

---
url: "/favvy/faq/troubleshooting.md"
description: "Troubleshooting guide for Favvy with common setup and export issues."
---

# Troubleshooting Favvy

> Troubleshooting guide for Favvy with common setup and export issues.

### Your selected layer must be a square

Favvy will let you know if you've selected a layer that isn't square; this can be resolved by resizing your frame
    until the width and height are identical (eg. **512x512**).

  ### Blank file extensions using Figma desktop app on Windows

There's a known issue with the Figma desktop app (only on Windows), which also happens for normal file exports from
    Figma. When you go to save your file, you may see an "all files" label. If you ignore this and continue by clicking
    "Save", it should still save the file with the correct extension and allow you to open it as expected after it has
    downloaded to your computer. If it still saves the file with a blank extension, you should be able to rename the
    file to manually append the correct extension to the file name.

  ### VPN may be required in China

Please note, if you're in China, the accounts server _may_ be blocked by "The Great Firewall of China". If you're
    seeing an activation error, despite using a valid key, you will likely need to use a
    [VPN](https://protonvpn.com/free-vpn/) to resolve the issue.

  ### 'An error occurred while loading the plugin environment'

This may happen in the Figma desktop app if [the Use Developer VM](https://www.figma.com/plugin-docs/debugging/#developer-vm) debug setting in Figma is enabled by mistake; you can make sure it's turned off by **right-clicking** anywhere on your Figma canvas, hovering over **Plugins**, then hovering over **Development**, and making sure that the **Use Developer VM** is _unchecked_; after it is unchecked (and does _not_ have a tick icon next to it), re-running the Figma plugin should work as expected.

---

---
url: "/favvy/overview/install.md"
description: "Ensure you're logged into your Figma account, then follow the steps below to install and run the [Favvy Figma Plugin](https://www.figma.com/community/plugin/789010114208495133/favvy-favicon-exporter)."
---

# Install and run the Favvy Figma Plugin

> Ensure you're logged into your Figma account, then follow the steps below to install and run the [Favvy Figma Plugin](https://www.figma.com/community/plugin/789010114208495133/favvy-favicon-exporter).

### Video Tutorial: How to install (and remove) Figma plugins

This video tutorial is a complete step-by-step guide showing you the new process of how to install (and remove) Figma plugins after the mid-2024 "UI3" update to the Figma app
[Embedded media](https://www.youtube.com/embed/CzjxF2Jv6PM)

## Installing the Favvy Figma Plugin

1. Open any Figma file.
2. Click on the **Actions** icon in the bottom Figma toolbar.
3. Click the **Plugins & Widgets** tab to filter results to Figma plugins.
4. Search for **Favvy** in the search bar.
5. Click on the **Favvy** search result.
6. Click the **Save** button to install the Favvy plugin.

> **Note:** Figma users in a **Figma Organization** may only be able to install approved plugins. Please contact your Figma Org admin at your company to [approve the Favvy plugin](https://help.figma.com/hc/en-us/articles/4404228724759-Manage-plugins-and-widgets-in-an-organization) if you're unable to install certain Figma plugins.

## Running the Favvy Figma Plugin

Once you've [installed](#installing-the-figma-plugin) the **Favvy** Figma plugin, to run the plugin in your Figma file:

  1. **Right-click** anywhere on your Figma file's page canvas
  2. Hover your mouse over the **Plugins** ▶ menu item
  3. Hover your mouse over the **Saved plugins** ▶ menu item
  4. Click on the **Favvy** plugin menu item

> **Tip:** After you've run the **Favvy** plugin once in a Figma file, you'll be able to quickly re-launch it by clicking the **Favvy** icon in the right-hand side Figma column (under the **Plugin** subheading).

> **Warning:** Only Figma users with **Edit** access to a Figma file can run a Figma plugin in that Figma file; if you only have **View** permissions, you won't be able to run any Figma plugins in that file.

## Uninstalling the Favvy Figma plugin

1. Open any Figma file.
2. Click on the **Actions** icon in the bottom Figma toolbar.
3. Click the **Plugins & Widgets** tab to filter results to Figma plugins.
4. Search for **Favvy** in the search bar.
5. Click on the **Favvy** search result.
6. Click the **Remove** button to uninstall the Favvy plugin.

> **Note:** This will remove the plugin from your **Saved Plugins** list, however, the Figma plugin may still show up under your **Recents** list (if it has been recently run), as Figma saves this list of recent plugins in your browser's/app's local storage. The plugin will vanish from the Recents menu after other plugins are run to take its place.

---

---
url: "/favvy/overview/pro.md"
description: "After trying out all the Pro features of Favvy **10 times**, you can optionally upgrade to continue using all the extra features that are only available in the Pro version; or if you're a casual user, you can continue using the Free version forever."
---

# Activating Favvy Pro

> After trying out all the Pro features of Favvy **10 times**, you can optionally upgrade to continue using all the extra features that are only available in the Pro version; or if you're a casual user, you can continue using the Free version forever.

> **Tip:** Need a Favvy Pro account? You can purchase a Pro account for you or your team by visiting the [Favvy](https://www.hypermatic.com/favvy/#pro) product page on the Hypermatic website.

## Activating the Figma plugin with an Favvy Pro license key

1. **Purchase a Pro license** for you or your team by visiting the [Favvy](https://www.hypermatic.com/favvy/#pro) product page on the Hypermatic website.
2. **Run the Favvy Plugin**, then click on the **Upgrade Now** button at the bottom of the Figma plugin window.
3. **Paste in your Pro key**, then click the **Unlock** button.

This will unlock the Pro version of Favvy and give you unlimited use all of the Figma plugin features.

> **Warning:** Please note, if you're in China, the accounts server _may_ be blocked by "The Great Firewall of China". If you're seeing a activation error, despite using a valid key, you will likely need to use a [VPN](https://protonvpn.com/free-vpn/) to resolve the issue.

> **Info:** If you ever need to use a different license key at any time (eg. you were using your own personal Pro license key, but now your employer is buying you a Pro license to use instead), you can press **CTRL + K** while your plugin window is open in Figma, and this will bring up the license key prompt again, where you can enter a different license key.

---

---
url: "/favvy/overview/quickstart.md"
description: "Export production ready favicons (with code) for your website or PWA from Figma in seconds."
---

# Get Started with Favvy

> Export production ready favicons (with code) for your website or PWA from Figma in seconds.

[![Favvy Figma Plugin](https://www.hypermatic.com/favvy.jpg)](https://www.figma.com/community/plugin/789010114208495133/favvy-favicon-exporter)

## Install & Activate Favvy

- [Install & Run the Figma plugin](/favvy/overview/install.md): How to run Favvy inside of Figma
- [Activate Favvy Pro](/favvy/overview/pro.md): How to buy and use a Pro license key

## Using Favvy

  - [Favvy Documentation](/favvy/design.md): Detailed docs with short screencaps
  - [Favvy Video Tutorials](/favvy/tutorials.md): Full step-by-step video walkthroughs

## Frequently Asked Questions

- [Troubleshooting Favvy](/favvy/faq/troubleshooting.md): Common issues issues you may run into
- [Favvy Security](/favvy/faq/security.md): Details about how Favvy works
- [Receipts](/faq/receipts.md): Find email receipts and PDF invoices
- [Billing](/faq/billing.md): Manage your Pro subscription
- [License Seat Management](/faq/seats.md): Manage the Figma users on your key
- [Favvy Free vs Pro](/favvy/faq/plans.md): Compare Free vs Pro features

[Video](https://www.hypermatic.com/assets/videos/favvy/FAVVY_DEMO.mp4)

## Favvy Features

- Seamlessly preview and customise your Favicons in Favvy.
- Generates all of the code and image files required.
- Copy/pasteable HTML snippet for your tag.
- Includes default .ico Favicon file.
- Includes Favicon for Apple iOS devices.
- Includes Splash Screens for Apple iOS devices.
- Includes SVG vector based Favicon.
- Includes a PWA (progressive web app) manifest file.
- Production ready favicon .zip package, in seconds.

---

---
url: "/favvy/tutorials.md"
description: "The best free Figma tutorial videos for beginners (or power users) to level up."
---

# Favvy Video Tutorials

> The best free Figma tutorial videos for beginners (or power users) to level up.

### Export favicons from Figma

This video tutorial is a complete step-by-step guide showing you how to automatically export production-ready favicons from Figma using the Favvy plugin.
[Embedded media](https://www.youtube.com/embed/RqPEqjgVGcw)

---

---
url: "/hypercrop/batch-cropping.md"
description: "Batch crop and resize images with presets, custom sizes, smart focal points, and export options."
---

# Batch crop and resize images into multiple sizes

> Batch crop and resize images with presets, custom sizes, smart focal points, and export options.

### Video Tutorial: Crop and resize images

This video tutorial is a complete step-by-step guide showing you how to batch crop and resize images from Figma using the HyperCrop plugin.
[Embedded media](https://www.youtube.com/embed/ysRuuEJvvYE)

## Selecting popular size presets

[Video](/assets/videos/hypercrop/crop/selecting-presets.mp4)

HyperCrop comes with dozens of size presets to make it easy for you to batch crop and export your images for popular platforms and devices without having to manually research and enter the dimensions for each one yourself.

You can add (and remove) any of these sizes by scrolling through the list and clicking the **checkbox** next to each item. Checking a size will add it to your **selected sizes** list, and unchecking a size will remove it.

### Popular platforms and device sizes included

You can select from dozens of presets from the categories below:

- Facebook
- Google Ads
- Instagram
- LinkedIn
- Paper
- Phones
- Pinterest
- Screens
- Snapchat
- Tablets
- Twitch
- Twitter (X)
- YouTube.

## Adding custom crop sizes presets

[Video](/assets/videos/hypercrop/crop/custom-sizes.mp4)

You can add (and remove) any of these sizes by scrolling through the list and clicking the **checkbox** next to each item. Checking a size will add it to your **sizes** list, and unchecking a size will remove it.

### Using "Auto" width or height

If you want to specify _either_ a width _or_ height and let HyperCrop automatically figure out what the height or width should be, you can populate either the **Crop Width** _or_ **Crop Height** input and leave the other one blank. The placeholder of the empty input will change to say **Auto** to indicate this. Once you're happy with the fixed width or height, you can click the **Add Custom Crop Size +** button to add it to your available custom crop sizes.

### Deleting a custom crop preset

To remove a custom preset from your available crops list, you can click the **Trash** icon next to a custom crop size to remove it from your **selected sizes** list _and_ delete it entirely from the available crops list.

## Selecting images for batch crop

[Video](/assets/videos/hypercrop/crop/selecting-layers.mp4)

All of the available images to batch crop will appear in the right hand side of the HyperCrop plugin. By clicking on the **checkbox** next to any image in the list, you can tell HyperCrop whether to include or exclude the image from the batch cropping process.

The number of images you select will be multiplied with the number of image sizes you select, giving you the total number of images that will be exported from HyperCrop.

> **Note:** **Images must have export settings to appear in HyperCrop**. To make your images/layers from Figma show up in the HyperCrop plugin, please ensure that you've added at least one export setting to the layer you want to crop, by clicking the **+** icon in the right-hand side column of Figma, under the **Export** heading.

> **Tip:** **Quick selection/de-selection**. To easily deselect (or re-select) all images at once, you can click on the checkbox at the very top of the list next to the **X of XX Images Selected** label.

### Specifying crop focal points

By default, HyperCrop will crop and resize batch images using **Center/Center** image anchoring; this means that the image focal point will always be the direct center of the image.

Sometimes you will want to change this so the focal point is located in a different part of the image, for example **Top/Left** or **Center/Right**.

You can easily do this by moving your mouse over to the image you would like to toggle the focal point for, and clicking on the vertical (↕) and horizintal (↔) **select boxes**, and selecting your desired option for each.

### Enabling smart cropping features

If you don't want to manually specify a focal point using the vertical (↕) and horizintal (↔) select boxes, you can use the **Content Aware** and **Detect Faces** toggles.

You can enable either (or both) of these features by moving your mouse over to the image you would like to enable (or disable) them for, and clicking on the **toggle switch** for each.

#### Content Aware

Enabling the **Content Aware** option tells HyperCrop to use smart cropping models to determine where the important/interesting focal parts are in your image. If your image doesn't have a tricky batch of sizes to crop faces for, then this setting _doesn't_ need to be enabled, as it will take longer to crop your images with it turned on.

#### Detect Faces

Enabling the **Detect Faces** option tells HyperCrop to use facial recognition models to determine where the face(s) are in your image. If your image doesn't contain any faces or doesn't have a tricky batch of sizes to crop faces for, then this setting _doesn't_ need to be enabled, as it will take longer to crop your images with it turned on.

> **Note:** **Browser Support**. Due to browser compatibility issues, the **Detect Faces** feature in HyperCrop _isn't_ supported in **Safari**. Please run the plugin in another browser (like [Chrome](https://www.google.com/intl/en_us/chrome/)) or the [Figma Desktop App](https://www.figma.com/downloads/) instead.

## Configuring batch cropping export settings

[Video](/assets/videos/hypercrop/crop/open-settings.mp4)

Once you've selected your crop sizes, your images and you're happy with their individually configured crop settings, you can get ready to batch crop and export your images.

To open the settings panel, you can click the **Batch Crop** button in the HyperCrop header.

After opening the batch crop settings panel, you can select things like **Image Format** (JPG or PNG), **Image Compression** (to specify the image quality/size) and **Image Fill** (which only applies to non-smart crops).

### Adding a custom filename format

For batch crops, HyperCrop lets you specify a custom filename format that will be applied to all of your exported images. This can be really useful for giving a consistent naming convention or grouping your images into sensible **subfolder** structures.

This field is optional, and if you leave this field empty/blank, it will default to **#&lcub;collection&rcub;/#&lcub;name&rcub;/#&lcub;width&rcub;x#&lcub;height&rcub;\_#&lcub;name&rcub;**.

#### Available variables for your filenames

You can **mix and match** _any_ of the variables below into your custom subfolder/filename pattern, including regular text and characters (like underscores or letters/numbers).

- **#&lcub;name&rcub;** The name of the Figma layer (eg. "My Figma Layer Name")
- **#&lcub;collection&rcub;** The size preset collection name (eg. "facebook")
- **#&lcub;label&rcub;** The size preset collection label (eg. "profile")
- **#&lcub;width&rcub;** The resized image width (eg. "1024")
- **#&lcub;height&rcub;** The resized image height (eg. "768")

> **Tip:** **Creating Sub Folders**. To create a subfolder, you can add a "**/**" anywhere in your custom filename format. For example **#&lcub;collection&rcub;-crops/#&lcub;width&rcub;x#&lcub;height&rcub;/#&lcub;name&rcub;** would create a dynamic folder structure like **facebook-crops/1024x768/my_figma_layer_name.jpg** (where the variables get swapped out for each collection, and width/height combo).

## Downloading your batch crop images to your computer

[Video](/assets/videos/hypercrop/crop/batch-crop-download.mp4)

After you configured all of the options and your filename format the way you want them, you can click on the **Crop & Export Images** button to begin the "HyperCrop" batch image cropping/resize process.

Please note, this will go process _all_ of your selected sizes for _every_ image that you've selected, so the more images and sizes you have, the longer this will take.

Once the batch crop process has completed, you'll see a confirmation screen letting you know that your images are ready to download. To download the `.zip` file from Figma to your computer, you can click the **Download your .zip file** button in the HyperCrop plugin.

> **Tip:** **Saving file downloads from Figma** If you're using the Figma **desktop app**, you'll see a prompt appear to download your file. However, if you're using Figma in a **web browser**, your file will automatically be downloaded to your computer by default (usually to the **Downloads** directory on your computer).

### Opening your exported .zip file

After you've downloaded your `.zip` file from Figma to your computer, you can open your file explorer to the directory where it was saved. **Double clicking** on the exported `.zip` file will unzip the images to a folder containing all of the images and subfolders (as per your specified subfolder/filename pattern from the HyperCrop export settings).

## Inserting your batch crop images into your current Figma file

[Video](/assets/videos/hypercrop/crop/batch-crop-insert.mp4)

Alternatively, after you configured all of the options and your filename format the way you want them, you can insert your cropped images directly into Figma by clicking on the **Crop & Insert to Figma** button, which will create a brand new page in your current Figma file and insert all of the cropped image layers onto the page.

---

---
url: "/hypercrop/faq/plans.md"
description: "To get unlimited usage of all of the HyperCrop Pro features, you will need to purchase a license from the [Hypermatic website](https://hypermatic.com/hypercrop#pro)."
---

# HyperCrop Free vs HyperCrop Pro

> To get unlimited usage of all of the HyperCrop Pro features, you will need to purchase a license from the [Hypermatic website](https://hypermatic.com/hypercrop#pro).

HyperCrop includes 10 free trials of the _Pro_ version. Once these trials have been used up, the Figma plugin will revert to their _Free_ version, which will have limited functionality.

  - **HyperCrop Free**: ### Manual Cropping Unlimited Usage       ### Batch Cropping Try during 10 Pro Trials       ### Image Exports Try during 10 Pro Trials
  - **HyperCrop Pro**: ### Manual Cropping Unlimited Usage       ### Batch Cropping Unlimited Usage       ### Image Exports Unlimited Usage

---

---
url: "/hypercrop/faq/security.md"
description: "HyperCrop runs as an official plugin inside of Figma's own app, which are reviewed and approved by the Figma team."
---

# HyperCrop Security

> HyperCrop runs as an official plugin inside of Figma's own app, which are reviewed and approved by the Figma team.

The Figma plugin is run directly from Figma's own servers, and runs inside of a your Figma file, which means that it inherits all of the [security](https://www.figma.com/security/) and infrastructure of the Figma platform, which exceed industry standards for data protection and security:

- SOC 2 Type 2
- SOC 3
- Cloud Security Alliance (CSA) STAR: Level 1
- ISO/IEC 27001:2013
- ISO/IEC 27018:2019
- EU Cloud Code of Conduct (COC): Level 2

There's **no additional software** that needs to be installed to use the Figma plugin, as Figma plugins run as a built-in part of Figma's own native functionality, and all Figma plugins easily accessibile and can be instantly run from inside any Figma file, or via the official [Figma Community](https://www.figma.com/community) ecosystem inside of the Figma app.

If your organization is already approved to use Figma, then you _already have access_ to Figma plugins.

## How HyperCrop works

The [HyperCrop Figma plugin](https://www.figma.com/community/plugin/818960915730257192) helps users easily export cropped images from their Figma layers.

HyperCrop is designed to be privacy and security focused, so nothing _ever_ leaves your Figma file.

All functionality, cropping and file exports are handled client-side directly in the Figma plugin using the [Figma Plugins API](https://www.figma.com/plugin-docs/), and are _never_ uploaded, processed or stored anywhere in the cloud or outside of Figma.

## What HyperCrop does and doesn't do

HyperCrop uses the [Figma Plugins API](https://www.figma.com/plugin-docs/) to help users crop their images, and download them _directly_ to their computer.

HyperCrop doesn't rely on _any_ external servers to handle cropping and processing image data, which means that nothing in your Figma file ever leaves the Figma plugin or Figma itself.

Any files that are exported via the plugin are done so entirely locally to the user's own computer.

### HyperCrop does

- Allow users to crop their image layers from Figma.
- Render any cropped images _directly_ to the Figma canvas in the current file.
- Download any exported cropped image files _directly_ to the user's computer.

### HyperCrop does _not_

- Upload _any_ data from your Figma file.
- Store _any_ data from your Figma file.
- Use _any_ servers or cloud storage to process or store your Figma data.
- Collect or store _any_ personal information (Figma plugins *cannot* access any private information about Figma projects, Figma teams or Figma users).

## How Figma plugins work

Figma plugins are written in HTML/CSS/Javascript, and are run in a tightly controlled [sandbox environment](https://www.figma.com/plugin-docs/how-plugins-run/) inside of the main Figma application.

Figma plugins can only do whatever Figma allows them to do inside the permissions of the [Figma Plugins API](https://www.figma.com/plugin-docs/), and importantly, **plugins don't have any access to personal information** about the Figma user running the plugin.

## What Figma plugins can and can't do

As per the article on [Figma plugin security](https://www.figma.com/blog/how-we-built-the-figma-plugin-system/), there are a limited number of things that Figma plugins can do, and many more things that they can't do:

### Figma plugins can

- Only be run by an explicit user action
- Show UI in a single plugin-specific dialog
- Read any data in your Figma document (e.g. a “find layer by name” plugin)
- Modify any data in your Figma document (e.g. a “rename selected layers” plugin)
- Communicate with any server over the internet (e.g. an “import from service X” plugin)

### Figma plugins _cannot_

- Run by themselves
- Get information about the project or team that owns the file
- Access anything when they aren’t running
- Access data from any files other than the file they were run in
- Change Figma’s UI outside of the plugin UI dialog

> **Tip:** Figma account administrators at your company can [configure an allowlist of plugins](https://help.figma.com/hc/en-us/articles/4404228724759-Manage-plugins-and-widgets-in-an-organization) that are allowed inside the organization. This can be used to prevent untrusted Figma plugins from being run in any file in that organization.

---

---
url: "/hypercrop/faq/troubleshooting.md"
description: "Troubleshooting guide for HyperCrop covering export settings, image issues, and common errors."
---

# Troubleshooting HyperCrop

> Troubleshooting guide for HyperCrop covering export settings, image issues, and common errors.

### You can't add duplicate custom crop sizes

If you try to add a custom size to your available crop sizes list that you've already added before, HyperCrop will pop-up a notification to let you know that you've already added that size before.

  ### Images must have export settings to appear in HyperCrop

To make your images/layers from Figma show up in HyperCrop, please ensure that you've added at least one export setting to the layer by clicking the **+** icon in the right-hand side column of Figma, under the **Export** heading.

  ### Blank file extensions using Figma desktop app on Windows

There's a known issue with the Figma desktop app (only on Windows), which also happens for normal file exports from Figma. When you go to save your file, you may see an "all files" label. If you ignore this and continue by clicking "Save", it should still save the file with the correct extension and allow you to open it as expected after it has downloaded to your computer. If it still saves the file with a blank extension, you should be able to rename the file to manually append the correct extension to the file name.

  ### Thin white line around image exports

Occassionally some images will contain a faint, thin white line around the edges. Figma [does this](https://twitter.com/Skcrub/status/1255544876701270017) if a layer isn't positioned on a rounded pixel value (eg. Y: 156.76 or X: 56.3) will automatically result in this sub-pixel line getting included in the export. To resolve the issue, please ensure that your layer positions are all rounded pixel values.

  ### Pixelated image exports

If you're exporting images while the image assets in Figma are still progressively loading, they may be exported looking pixelated, as the image wasn't fully loaded in the Figma file before it was exported. To resolve this, please ensure that all of the images have loaded 100% and are looking sharp inside the Figma file before exporting your images with the HyperCrop plugin.

    To help further with solving this issue, you can use the ["Downsizer" feature](https://docs.hypermatic.com/tinyimage/usage.html#downsizing-your-figma-layer-fills) in our [TinyImage Figma plugin](https://www.figma.com/community/plugin/789009980664807964/TinyImage-Compressor) to shrink down your image fills to match their layer size, which will shrink their file size and ensure they load much faster in your Figma file.

  ### VPN may be required in China

Please note, if you're in China, the accounts server _may_ be blocked by "The Great Firewall of China". If you're seeing an activation error, despite using a valid key, you will likely need to use a [VPN](https://protonvpn.com/free-vpn/) to resolve the issue.

  ### 'An error occurred while loading the plugin environment'

This may happen in the Figma desktop app if [the Use Developer VM](https://www.figma.com/plugin-docs/debugging/#developer-vm) debug setting in Figma is enabled by mistake; you can make sure it's turned off by **right-clicking** anywhere on your Figma canvas, hovering over **Plugins**, then hovering over **Development**, and making sure that the **Use Developer VM** is _unchecked_; after it is unchecked (and does _not_ have a tick icon next to it), re-running the Figma plugin should work as expected.

---

---
url: "/hypercrop/manual-cropping.md"
description: "Use the HyperCrop manual crop tool to crop a single image and download the result."
---

# Manually cropping single images

> Use the HyperCrop manual crop tool to crop a single image and download the result.

[Video](/assets/videos/hypercrop/crop/manual-crop.mp4)

If you don't need to batch crop multiple images to one or more different sizes, you can use the manual crop tool built-in to the HyperCrop plugin. To use this tool, move your mouse over to the image you would like to crop in the image selection panel of HyperCrop, and click the **Manual Crop** button. This will open the manual crop tool overlay.

When you've finished tweaking your image crop and resize settings, you can click on the **Crop & Download** button to download the cropped image to your computer from Figma.

> **Tip:** **Saving file downloads from Figma** If you're using the Figma **desktop app**, you'll see a prompt appear to download your file. However, if you're using Figma in a **web browser**, your file will automatically be downloaded to your computer by default (usually to the **Downloads** directory on your computer).

> **Note:** **Browser Support**. Due to browser compatibility issues, the **Manual Crop** feature in HyperCrop _isn't_ supported in **Safari**. Please run the plugin in another browser (like [Chrome](https://www.google.com/intl/en_us/chrome/)) or the [Figma Desktop App](https://www.figma.com/downloads/) instead.

---

---
url: "/hypercrop/overview/install.md"
description: "Ensure you're logged into your Figma account, then follow the steps below to install and run the [HyperCrop Figma Plugin](https://www.figma.com/community/plugin/818960915730257192/hypercrop-batch-image-resizer)."
---

# Install and run the HyperCrop Figma Plugin

> Ensure you're logged into your Figma account, then follow the steps below to install and run the [HyperCrop Figma Plugin](https://www.figma.com/community/plugin/818960915730257192/hypercrop-batch-image-resizer).

### Video Tutorial: How to install (and remove) Figma plugins

This video tutorial is a complete step-by-step guide showing you the new process of how to install (and remove) Figma plugins after the mid-2024 "UI3" update to the Figma app
[Embedded media](https://www.youtube.com/embed/CzjxF2Jv6PM)

## Installing the HyperCrop Figma Plugin

1. Open any Figma file.
2. Click on the **Actions** icon in the bottom Figma toolbar.
3. Click the **Plugins & Widgets** tab to filter results to Figma plugins.
4. Search for **HyperCrop** in the search bar.
5. Click on the **HyperCrop** search result.
6. Click the **Save** button to install the HyperCrop plugin.

> **Note:** Figma users in a **Figma Organization** may only be able to install approved plugins. Please contact your Figma Org admin at your company to [approve the HyperCrop plugin](https://help.figma.com/hc/en-us/articles/4404228724759-Manage-plugins-and-widgets-in-an-organization) if you're unable to install certain Figma plugins.

## Running the HyperCrop Figma Plugin

Once you've [installed](#installing-the-figma-plugin) the **HyperCrop** Figma plugin, to run the plugin in your Figma file:

  1. **Right-click** anywhere on your Figma file's page canvas
  2. Hover your mouse over the **Plugins** ▶ menu item
  3. Hover your mouse over the **Saved plugins** ▶ menu item
  4. Click on the **HyperCrop** plugin menu item

> **Tip:** After you've run the **HyperCrop** plugin once in a Figma file, you'll be able to quickly re-launch it by clicking the **HyperCrop** icon in the right-hand side Figma column (under the **Plugin** subheading).

> **Warning:** Only Figma users with **Edit** access to a Figma file can run a Figma plugin in that Figma file; if you only have **View** permissions, you won't be able to run any Figma plugins in that file.

## Uninstalling the HyperCrop Figma plugin

1. Open any Figma file.
2. Click on the **Actions** icon in the bottom Figma toolbar.
3. Click the **Plugins & Widgets** tab to filter results to Figma plugins.
4. Search for **HyperCrop** in the search bar.
5. Click on the **HyperCrop** search result.
6. Click the **Remove** button to uninstall the HyperCrop plugin.

> **Note:** This will remove the plugin from your **Saved Plugins** list, however, the Figma plugin may still show up under your **Recents** list (if it has been recently run), as Figma saves this list of recent plugins in your browser's/app's local storage. The plugin will vanish from the Recents menu after other plugins are run to take its place.

---

---
url: "/hypercrop/overview/pro.md"
description: "After trying out all the Pro features of HyperCrop **10 times**, you can optionally upgrade to continue using all the extra features that are only available in the Pro version; or if you're a casual user, you can continue using the Free version forever."
---

# Activating HyperCrop Pro

> After trying out all the Pro features of HyperCrop **10 times**, you can optionally upgrade to continue using all the extra features that are only available in the Pro version; or if you're a casual user, you can continue using the Free version forever.

> **Tip:** Need a HyperCrop Pro account? You can purchase a Pro account for you or your team by visiting the [HyperCrop](https://www.hypermatic.com/hypercrop/#pro) product page on the Hypermatic website.

## Activating the Figma plugin with an HyperCrop Pro license key

1. **Purchase a Pro license** for you or your team by visiting the [HyperCrop](https://www.hypermatic.com/hypercrop/#pro) product page on the Hypermatic website.
2. **Run the HyperCrop Plugin**, then click on the **Upgrade Now** button at the bottom of the Figma plugin window.
3. **Paste in your Pro key**, then click the **Unlock** button.

This will unlock the Pro version of HyperCrop and give you unlimited use all of the Figma plugin features.

> **Warning:** Please note, if you're in China, the accounts server _may_ be blocked by "The Great Firewall of China". If you're seeing a activation error, despite using a valid key, you will likely need to use a [VPN](https://protonvpn.com/free-vpn/) to resolve the issue.

> **Info:** If you ever need to use a different license key at any time (eg. you were using your own personal Pro license key, but now your employer is buying you a Pro license to use instead), you can press **CTRL + K** while your plugin window is open in Figma, and this will bring up the license key prompt again, where you can enter a different license key.

---

---
url: "/hypercrop/overview/quickstart.md"
description: "Batch crop/resize multiple images into multiple sizes with presets, smart cropping and face detection."
---

# Get Started with HyperCrop

> Batch crop/resize multiple images into multiple sizes with presets, smart cropping and face detection.

[![HyperCrop Figma Plugin](https://www.hypermatic.com/hypercrop.jpg)](https://www.figma.com/community/plugin/818960915730257192/hypercrop-batch-image-resizer)

## Install & Activate HyperCrop

- [Install & Run the Figma plugin](/hypercrop/overview/install.md): How to run HyperCrop inside of Figma
- [Activate HyperCrop Pro](/hypercrop/overview/pro.md): How to buy and use a Pro license key

## Using HyperCrop

  - [HyperCrop Documentation](/hypercrop/batch-cropping.md): Detailed docs with short screencaps
  - [HyperCrop Video Tutorials](/hypercrop/tutorials.md): Full step-by-step video walkthroughs

## Frequently Asked Questions

- [Troubleshooting HyperCrop](/hypercrop/faq/troubleshooting.md): Common issues issues you may run into
- [HyperCrop Security](/hypercrop/faq/security.md): Details about how HyperCrop works
- [Receipts](/faq/receipts.md): Find email receipts and PDF invoices
- [Billing](/faq/billing.md): Manage your Pro subscription
- [License Seat Management](/faq/seats.md): Manage the Figma users on your key
- [HyperCrop Free vs Pro](/hypercrop/faq/plans.md): Compare Free vs Pro features

[Video](https://www.hypermatic.com/assets/videos/hypercrop/HYPERCROP_DEMO.mp4)

## HyperCrop Features

- Insanely simple batch cropping multiple images to multiple sizes.
- High precision manual crop tool for individual image cropping.
- Automatic content aware and face detection smart crop features.
- Specify the anchor focal point per image (eg. "Bottom/Center")
- Includes quick size presets for social networks, platforms and devices.
- Add your own custom crop sizes to the crop presets library, per Figma page.
- Crop sizes, selections and options automatically saved in between uses.
- Export to JPG/PNG with optional image compression for smaller file sizes.
- Custom, dynamic filenames and subfolders (eg. "#name/#width_x_#height).

---

---
url: "/hypercrop/tutorials.md"
description: "The best free Figma tutorial videos for beginners (or power users) to level up."
---

# HyperCrop Video Tutorials

> The best free Figma tutorial videos for beginners (or power users) to level up.

### Crop and resize images

This video tutorial is a complete step-by-step guide showing you how to batch crop and resize images from Figma using the HyperCrop plugin.
[Embedded media](https://www.youtube.com/embed/ysRuuEJvvYE)

---

---
url: "/index.md"
description: "Hypermatic documentation landing page with links to all plugin guides, billing, and security."
---

# Hypermatic Figma Plugin Docs

> Hypermatic documentation landing page with links to all plugin guides, billing, and security.

## Documentation Sections

- [TinyImage Docs](/tinyimage/overview/quickstart.md): Export compressed JPG, PNG, SVG, WebP, AVIF, GIF and PDF files from Figma, reducing sizes by up to 95%.
- [Pitchdeck Docs](/pitchdeck/overview/quickstart.md): Magically turn your Figma designs into animated presentable slide decks, or export them to PowerPoint.
- [Convertify Docs](/convertify/overview/quickstart.md): Export Figma to Sketch, XD, After Effects or import XD, Illustrator, PowerPoint, Word Docs, Google Docs, and PDF to Figma.
- [Emailify Docs](/emailify/overview/quickstart.md): Easily create and export responsive, production ready HTML emails (eDMs) from Figma.
- [CopyDoc Docs](/copydoc/overview/quickstart.md): Everything you need to easily export, import, localize and update text in your Figma designs.
- [Bannerify Docs](/bannerify/overview/quickstart.md): Animate and export production ready banners from Figma to HTML, GIFs and Videos.
- [Crypto Docs](/crypto/overview/quickstart.md): Securely share your Figma designs and prototypes as password protected URLs or PDF files.
- [Favvy Docs](/favvy/overview/quickstart.md): Export production ready favicons (with code) for your website or PWA from Figma in seconds.
- [Pixelay Docs](/pixelay/overview/quickstart.md): Compare your Figma designs with live or local website URLs using smart browser overlays.
- [HyperCrop Docs](/hypercrop/overview/quickstart.md): Batch crop/resize multiple images into multiple sizes with presets, smart cropping and face detection.
- [Commentful Docs](/commentful/overview/quickstart.md): Supercharge your Figma comments and gather external feedback from stakeholders.
- [Weblify Docs](/weblify/overview/quickstart.md): Inspect your Figma layers as clean HTML, React or Vue code with one click.

---

---
url: "/pitchdeck/design/animations.md"
description: "You can animate any direct child layer in the parent Figma Frame, Figma Component or Figma Instance in your slides by applying keyframe presets, speeds and timing offets to them. "
---

# Animating your slides

> You can animate any direct child layer in the parent Figma Frame, Figma Component or Figma Instance in your slides by applying keyframe presets, speeds and timing offets to them. 

> **Note:** **Animations are only used for web presentations**. Please note that any animations you add will only be used in a presentation uploaded to the Pitchdeck web app; this means that **animations will not be included** in your PowerPoint/Keynote/Google Slides exports or PDF file exports.

[Video](/assets/videos/pitchdeck/design/adding-layer-animations.mp4)

## Choosing a preset animation style

Pitchdeck comes with dozens of pre-defined keyframe based animations, which are grouped into 3 categories:

- Entrances
- Transforms
- Advanced

To set an animation, ensure that the **Animations** tab is selected, then hover over the layer you would like to animate in the Pitchdeck layers list and click on the **select box**. Scroll through the list of animations and **click** on an animation name to apply it to your layer. You'll see the slide preview update instantly with the new animation applied.

## Changing the animation speed

You can adjust the speed and delay of your animations by **clicking down** on the left/right **edges** of the timeline bar for your layer, then **holding and dragging** with your mouse to adjust the length of your animation and it's start/end point.

You can shift the location of your animation on the timeline by **clicking down** on the **middle** of the timeline bar for your layer, then **holding and dragging** with your mouse; moving it either left or right to change where it is placed in your timeline.

## Copy/pasting animations between layers

If you already have an animation and timings that you like, you can click the **Copy** button on that layer in the plugin, then click **Paste** on any other layer to apply the same animation and timings there automatically.

> **Tip:** **Animations are carried over when copy/pasting Figma layers**. Any animations that you apply to a layer in a slide via the plugin will be attached to that Figma layer, so you can also copy/paste the Figma layer into other slide(s), and the animation will still be there when you refresh the slides in your plugin.

---

---
url: "/pitchdeck/design/charts.md"
description: "If you'd like to automatically generate Figma slide charts using data from your CSV files, you can click the **Add Slides/Charts** button at the bottom of your slides list, make sure the **Chart Builder** tab is selected, then follow the three steps below."
---

# Importing charts from spreadsheet data

> If you'd like to automatically generate Figma slide charts using data from your CSV files, you can click the **Add Slides/Charts** button at the bottom of your slides list, make sure the **Chart Builder** tab is selected, then follow the three steps below.

[Video](/assets/videos/pitchdeck/design/create-chart-from-csv.mp4)

## 1. Select Chart Type

You can select one of the chart options below:

- Bar Chart
- Column Chart
- Line Chart
- Area Chart
- Combo Chart
- Donut Chart
- Pie Chart
- Scatter Chart
- Stepped Area Chart

## 2. Add Chart Data from CSV

After you've selected your chart type, the data will be pre-populated with "sample data"; to use your own data, you can drag and drop your own `.csv` file into the dropzone area, which will automatically populate the chart preview with data. You can also make small edits to the data that was loaded into the plugin from your CSV file by clicking on any of the input fields in your rows/columns under the `.csv` upload dropzone area.

> **Tip:** **Download sample CSV files for each chart type**. You can download a `.csv` file containing sample data for any chart type by clicking on your chart type, then clicking on the **chart-type-name-sample-data.csv** link (right next to the _2. Add Chart Data_ heading in the Chart Builder window), which will download the CSV file to your computer. Then you can edit/update the CSV file and drop it into the plugin's dropzone to apply the data to your chart.

## 3. Add Chart Slide to Figma

Once you've chosen your chart type and dropped your CSV file into the dropzone, click the **Add Chart Slide to Figma** button to instantly add your chart to Figma as a new editable slide in your presentation.

You can then optionally customize the colors, text content or any other elements of the chart design by editing the vector/text layers that are automatically added to your page when the chart is inserted from the plugin.

---

---
url: "/pitchdeck/design/import-pptx.md"
description: "If you already have a presentation designed in PowerPoint, Google Slides or Keynote, you can automatically import the slides from your .pptx file as editable Figma layers with one click."
---

# Importing slides from a PPTX file into your Figma file as editable layers

> If you already have a presentation designed in PowerPoint, Google Slides or Keynote, you can automatically import the slides from your .pptx file as editable Figma layers with one click.

### Video Tutorial: Import slides from PowerPoint to Figma in one click

This video tutorial is a complete step-by-step guide showing you how to import slides from PowerPoint (.pptx files) into Figma using the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/CpMNE8U_kJ8)
### Video Tutorial: Import Google Slides to Figma in one click

This video tutorial is a complete step-by-step guide showing you how to import slides from Google Slides (downloaded as .pptx files) into Figma using the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/phr2bzBcrO4)

> **Note:** **The PPTX Import feature is in BETA**. Please note that this feature is still in BETA, so it works best for presentations that contain simpler designs (eg. mostly consisting of text, images and shapes). See below for a list of [supported](#supported-in-pptx-to-figma-imports) and [unsupported](#not-supported-in-pptx-figma-imports) content.

[Video](/assets/videos/pitchdeck/design/import-pptx.mp4)

To import a PPTX file that you've exported from the PowerPoint app, Kenote app, or Google Slides, you can drag and drop (or click and browse) a `.pptx` file from your computer into the **Import .pptx** dropzone area underneath the slide list in the Pitchdeck plugin; then please wait for the editable slides to be imported into a new page in your current Figma file.

> **Tip:** **If your .pptx file won't open in the plugin**. If you've dropped in a `.pptx` file and the plugin says it can't read it, please try opening the file in your PowerPoint desktop app again, then re-saving the presentation as a brand new `.pptx` file and then try using this new `.pptx` file to drag into the Pitchdeck plugin.

### Supported in PPTX to Figma Imports

- Slides
- Images
- Text
- Shapes
- Tables (Supports text content, but not any other styles)
- Speaker Notes

### _Unsupported_ in PPTX to Figma Imports

- Charts
- SmartArt
- Headers and Footers
- Embedded Videos
- Vertical Text
- Preset Layouts/Themes
- Some custom fonts may not carry over

## Importing your PPTX slides into a Figma Slides file

### Video Tutorial: Import PowerPoint (.pptx) to Figma Slides

This video tutorial is a complete step-by-step guide showing you how to import PowerPoint (.pptx) to Figma Slides using the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/h2cAnTxI1yM)
### Video Tutorial: Import Google Slides to Figma Slides

This video tutorial is a complete step-by-step guide showing you how to import Google Slides to Figma Slides using the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/twFlJ81u4qE)

[Video](/assets/videos/pitchdeck/design/figma-slides-import.mp4)

If you'd like to use your imported PPTX slides in [Figma Slides](https://www.figma.com/slides/) (instead of a regular Figma file), you can drag and drop (or click and browse) a `.pptx` file from your computer into the **Import .pptx** dropzone area underneath the slide list in the Pitchdeck plugin; then after the slides have finished importing, you can select the slide(s) on your Figma canvas, then right-click and click **Copy**, then open a new Figma Slides file and right-click anywhere in the slides list (on the left hand side) and click **Paste** to insert your slides into your Figma Slides file.

> **Note:** **The PPTX Import feature is in BETA**. Please note that this feature is still in BETA, so it works best for presentations that contain simpler designs (eg. mostly consisting of text, images and shapes). See above for a list of [supported](#supported-in-pptx-to-figma-imports) and [unsupported](#not-supported-in-pptx-figma-imports) content.

---

---
url: "/pitchdeck/design/keyframes.md"
description: "If you need a specific animation that isn't available in the animation presets included in Pitchdeck by default, you can create your own custom timeline animation by adding custom keyframes with your own *x*, *y*, *scale*, *rotation* and *opacity* properties."
---

# Creating custom keyframe animations

> If you need a specific animation that isn't available in the animation presets included in Pitchdeck by default, you can create your own custom timeline animation by adding custom keyframes with your own *x*, *y*, *scale*, *rotation* and *opacity* properties.

## Creating a new custom animation

[Video](/assets/videos/pitchdeck/design/custom-animation-create.mp4)

To open the custom animations panel, click on the **Animations** button in the main Pitchdeck header. This will open up the custom animation panel, where you'll be able to start adding your own keyframe animation.

When you open the animations panel, you'll see 2 keyframes; the first keyframe (0%) and the final keyframe (100%). These are added by default and can't be removed, as a keyframe animation needs at least one frame to start the animation from and a keyframe to show where it ends.

### Selecting a keyframe to edit

You can instantly swap between any keyframes by clicking on a keyframe under the **Animation Timeline** near the top of the custom animations panel. Clicking on a keyframe will allow you to edit the properties for that specific keyframe.

### Inserting new keyframes

You can easily add more keyframes in between the default start/end (0%/100%) keyfarmes to create more complex keyframe animations. To add a new keyframe to your timeline, enter your new **keyframe percentage** (eg. **50**) in the input field, then click on the **Insert New Keyframe** button to insert a brand new keyframe at that percentage in the timeline.

Any new keyframe that you add will automatically be created with the same properties that your currently selected keyframe contains; this allows you to easily adjust properties based on other keyframes you've already added. Your newly added keyframe will also be automatically selected after you click the **Insert New Keyframe** button.

### Editing keyframe properties

You can edit 5 different properties for any of your animation keyframes. Any differences in properties between your keyframes will automatically be animated; for example, setting scale to 2x on the 0% keyframe, and setting scale to 1x on the 100% keyframe will automatically create a "shrinking" animation.

- The **X** property will animate your element's left/right pixel position.
- The **Y** property will animate your element's top/bottom pixel position.
- The **Opacity** property will animate your element's transparency percentage.
- The **Rotate** property will animate your element's rotation degrees.
- The **Scale** property will animate your element's size.

### Copying and pasting keyframe properties

You can copy/paste properties from one keyframe to another by first selecting the keyframe you would like to copy the properties from, clicking the **Copy Properties** button, then selecting the keyframe you would like to paste the copied properties to, then clicking the **Paste Properties** button to paste the copied properties onto the selected keyframe.

> **Note:** **Copied properties are only available until the panel is closed** You can copy and paste properties from/to any keyframes in your animations while the custom animations panel is open, any copied properties will be not be available to paste after you close the custom animations panel.

### Deleting keyframes

To delete an keyframe, click any keyframe under the **Animation Timeline** to select it, then click on the **Delete Keyframe** button to delete your keyframe from the timeline. Please note, that you _can't_ delete the **0%** or **100%** keyframes, as these are default keyframes required for your animation timeline.

After you delete any keyframe, the **0%** keyframe will automatically be re-selected as the active keyframe to edit.

> **Warning:** **Deleting a keyframe animation will permanently delete it**. When you delete any of your keyframes, it will be permanently removed from your timeline and you won't be able to undo the deletion. However, you are able to **Copy Properties** of a keyframe, delete it, then paste your deleted properties in a different keyframe while you're still editing your animation timeline.

### Using the live preview to see your animation

To easily see how your animation is looking based on the keyframes and their properties that you've updated, you can look at the **Live Preview** area, which sits right next to your keyframe properties, and directly underneath the animation timeline. Any changes you make to your keyframes, properties or easing will automatically be shown in the live preview.

> **Note:** **You can adjust the playback speed of the live preview**. If you want to see how your custom animation looks at different speeds, you can change the playback speed in the live preview by dragging the **Preview Speed** slider left and right to increase and decrease the playback speed.

### Setting the animation easing

You can choose what kind of easing you need your animation to have by choosing an option from the **Easing** select box. Easing is automatically applied to your entire timeline, and will update the **Live Preview** area so you can see how your selected easing changes how your keyframe animation moves.

You can choose from the following easing options:

- Ease (Default)
- Linear
- Ease In
- Ease Out
- Ease In Out

### Saving your new custom animation

To save your new animation, give your animation a name by filling in the **New Custom Animation Name** input text field, then click the **Add New Animation**

> **Note:** **Custom animations will only be saved/available to the _current Figma file_** Saving an animation makes it available to any _page_ inside your _current_ Figma file; however, your saved animations _won't_ show up if you run Pitchdeck inside a completely different/new Figma file, as the animations are saved directly to the Figma file and can't be transferred to another file. You will need to re-create any new animations in any new Figma files; alternatively, you could setup a new _page_ in the _current_ Figma file, where your saved custom animations from this Figma file will still be available to use.

### Using your saved custom animations

Once you've saved at least one custom animation, you will be able to use them in your slides by clicking on the **entry animations** and **exit animations** select boxes in your layers timelines; you will see a new group in the select box options called **Custom Animations**, where you'll be able to see all of the custom animations that you've saved.

As with other preset animations, you can also apply your custom animation in bulk by using the [bulk apply](/bannerify/animation/animating-banners#applying-bulk-animations) feature.

## Updating your saved animations

[Video](/assets/videos/pitchdeck/design/custom-animation-update.mp4)

To update a custom animation that you've previously saved, choose the animation you'd like to update from the **Your Saved Animations** select box; this will load up your saved animation and its keyframes into the custom animation panel.

Once you've chosen the saved animation, you can edit your keyframes and properties as needed. Once you're happy with the updates, click the **Update Saved Animations** button to save the changes and _override_ the previous animation keyframes.

Please note, updating a saved animation will automatically apply the updated keyframes to any layers in your slides that was already using the custom animation you've just updated.

> **Tip:** **Create a new animation based on a saved animation**. If you want to load in a saved animation and modify it, but not "override" the saved version, you can create a new animation from it by entering in a **New Custom Animation Name** and clicking the **Add New Animation** button.

## Deleting your saved animations

[Video](/assets/videos/pitchdeck/design/custom-animation-delete.mp4)

To delete an animation, select any option under **Your Saved Animations** to load in the animation, then click on the **Delete Saved Animation** button to delete your saved animation.

> **Warning:** **Deleting a saved animation will permanently delete it and remove it from your layers**. When you delete any of your saved animations, it will be permanently removed from **Your Saved Animations** list. Any layers in your slides that were using the deleted custom animation will be changed back to having **no animation** applied.

---

---
url: "/pitchdeck/design/links.md"
description: "You can add clickable links to other slides or external URLs to layers inside of your slides, which will be included in any export options from the plugin."
---

# Adding links to your slide layers

> You can add clickable links to other slides or external URLs to layers inside of your slides, which will be included in any export options from the plugin.

## Adding clickable links via the Pitchdeck plugin interface

[Video](/assets/videos/pitchdeck/design/adding-links-via-plugin.mp4)

### Adding links to other slides

To add a link to another slide on any child layer in a slide, you can click the **URL/Slide Links** tab, then hover over the child layer where you would like to attach a clickable link; then select the slide you would like to link to from the drop down menu.

To **remove** a slide link from any layer, ensure the dropdown option selected is set back to **Link to an external website URL**, and then ensure the URL text input field for that layer is also empty.

### Adding links to external URLs

To add external clickable URL to any child layer in a slide, you can click the **URL/Slide Links** tab, then hover over the child layer where you would like to attach a clickable link; ensure the dropdown option selected is **Link to an external website URL**, then paste any valid URL into the text input field.

To **remove** a URL link from any layer, you can delete the URL from the text input field for that layer.

> **Note:** **Email mailto: links are supported**. If you need to link to an email address (instead of a website URL), you can enter the format of **mailto:your@email.com** in the text input field, which will open an email link instead of a website.

## Adding clickable links for Interactive PDFs via native Figma Prototype links

[Video](/assets/videos/pitchdeck/design/adding-links-via-prototype.mp4)

As an alternative to using the built-in "Links" tab in Pitchdeck, you can also add links to elements in your slides via Figma's "Protoype" tab, where "On Click" links to another slide or a URL are supported in PDF exports from the Pitchdeck plugin.

---

---
url: "/pitchdeck/design/media.md"
description: "You can embed media to any direct child layer in the parent frames in your slides by pasting a URL (linking to to a **.gif** file, **.mp4** file or a YouTube/Vimeo video) or using the built-in search options (powered by [GIPHY](https://giphy.com/) and [Pixabay](https://pixabay.com/))."
---

# Embedding GIFs/video to your slides

> You can embed media to any direct child layer in the parent frames in your slides by pasting a URL (linking to to a **.gif** file, **.mp4** file or a YouTube/Vimeo video) or using the built-in search options (powered by [GIPHY](https://giphy.com/) and [Pixabay](https://pixabay.com/)).

### Video Tutorial: Embed videos and GIFs

This video tutorial is a complete step-by-step guide showing you how to embed GIF and videos from YouTube/Vimeo into your Figma slide deck designs, that you can use in real presentations using the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/sT8Rt1DLnCM)

[Video](/assets/videos/pitchdeck/design/embed-videos-gifs.mp4)

## Searching/inserting GIFs to your slides

To add GIFs using the built-in GIPHY search integration, you can click the **GIFs/Videos** tab, then hover over the child layer where you would like to embed the GIF; then click on the **GIPHY** button to open the search panel. Type a keyword in the search field, then click the **Search** button to load the list of GIF results for your keyword search.

To **insert** a GIF result into your selected layer, you can click on any of the GIF thumbnails in the GIPHY search results list.

To **remove** a GIF from any layer, you can delete the URL from the text input field for that layer.

> **Tip:** **You can embed your own .gif URLs**. If you have a GIF hosted on your own website or another website that you would like to embed, you can manually paste the valid direct link to the `.gif` file into the embed text input.

> **Note:** **Native GIF layer fills inside the Figma document are supported**. Any GIFs added "directly" inside your Figma designs will be included automatically during export.

## Searching/inserting stock videos to your slides

To add stock videos using the built-in Pixabay search integration, you can click the **GIFs/Videos** tab, then hover over the child layer where you would like to embed the video; then click on the **Pixabay** button to open the search panel. Type a keyword in the search field, then click the **Search** button to load the list of stock video results for your keyword search.

To **insert** a video result into your selected layer, you can click on any of the video thumbnails in the Pixabay search results list.

To **remove** a stock video URL embed from any layer, you can delete the URL from the text input field for that layer.

You can also add your own .mp4 video, by hosting it on something like [Backblaze B2/Dropbox](https://docs.hypermatic.com/pitchdeck/troubleshooting.html#where-to-host-mp4-video-files) and copy/pasting the URL into Pitchdeck.

> **Warning:** **Videos are only used for web presentations**. Please note that any video embeds that you add will only be used in a presentation uploaded to the Pitchdeck web app; this means that no videos will be included in your Keynote or Google Slides exports.

> **Info:** If you have MP4 Video URL (linking directly to an `.mp4`) embeds in your layers, you can optionally enable the **Include MP4 Video URL Embeds** toggle in your PowerPoint export settings, which will ensure your MP4 video is embedded as a playable video layer that's supported in the PowerPoint app.

## Embedding external video URLs to your slides

To add external video URLs from [YouTube](https://youtube.com) and [Vimeo](https://vimeo.com), you can click the **GIFs/Videos** tab, then hover over the child layer where you would like to embed the video; then paste any valid video URL from **YouTube** or **Vimeo** into the text field to embed it.

You can also add your own .mp4 video, by hosting it on something like [Backblaze B2/Dropbox](https://docs.hypermatic.com/pitchdeck/troubleshooting.html#where-to-host-mp4-video-files) and copy/pasting the URL into Pitchdeck.

To **remove** an external video URL embed from any layer, you can delete the URL from the text input field for that layer.

> **Warning:** **Videos are only used for web presentations**. Please note that any external video embeds that you add will only be used in a presentation uploaded to the Pitchdeck web app; this means that no videos will be included in your PowerPoint/Keynote/Google Slides exports.

> **Info:** If you have MP4 Video URL (linking directly to an `.mp4`) embeds in your layers, you can optionally enable the **Include MP4 Video URL Embeds** toggle in your PowerPoint export settings, which will ensure your MP4 video is embedded as a playable video layer that's supported in the PowerPoint app.

> **Note:** **Toggle autoplay for YouTube/Vimeo embeds**. By default, YouTube and Vimeo video embeds will be set to autoplay when the slide it's on loads; you can toggle this by clicking on the **Autoplay (YouTube/Vimeo)** toggle switch under the embed URL. Please note, that this setting will be ignored if you're presenting a web presentation via the remote control; in this case, videos will always autoplay, as you're likely away from the computer/mouse.

## Scaling your GIF and MP4 video embeds

You can select the way your GIF embed is scaled by using the **Scale** select box located directly underneath the URL input.

- Selecting the **Fill GIF/MP4** option will ensure the GIF covers your entire layer, with some possible outer cropping.
- Selecting the **Fit GIF/MP4** option will ensure the entire GIF is included inside your layer, with some possible blank space either on the left/right or top/bottom.

## Embedding MP4 video URLs into your PPTX exports for PowerPoint (Optional)

### Video Tutorial: Export PowerPoint files with MP4 video embeds from Figma

This video tutorial is a complete step-by-step guide showing you how to export PowerPoint (.pptx) files with MP4 video embeds from Figma using the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/z8dUH4tDdFg)

[Video](/assets/videos/pitchdeck/design/export-pptx-video.mp4)

If you have MP4 Video URL (linking directly to an `.mp4`) embeds in your layers, you can optionally enable the **Include MP4 Video URL Embeds** toggle in your PowerPoint export settings, which will ensure your MP4 video is embedded as a playable video layer that's supported in the PowerPoint app.

You can also customize the video thumbnails from the plugin dropdown options below:

- **Automatic Video Thumbnails from MP4**: Automatically use a frame from your video embeds for thumbnails (from the start, middle or end of your videos)
- **Use Figma Layer for Video Thumbnails**: Use the content of your Figma layer (that the .mp4 file embed is on) as a totally custom thumbnail
- **No Custom Video Thumbnails**: Don't set any thumbnail (which is what it was previously doing, where PowerPoint sets its own default play button thumbnail)

> **Note:** Please note that the "Fill" sizing property isn't supported in PowerPoint, so the video will "Fit" into your Figma layer size, regardless of aspect ratio.

---

---
url: "/pitchdeck/design/notes.md"
description: "Your slide notes will be included in any PowerPoint, Keynote or Google Slides export, and will also be viewable from the presenter mode in the Pitchdeck web app."
---

# Adding speaker notes to your slides

> Your slide notes will be included in any PowerPoint, Keynote or Google Slides export, and will also be viewable from the presenter mode in the Pitchdeck web app.

[Video](/assets/videos/pitchdeck/design/add-speaker-notes-to-slide.mp4)

You can add speaker notes to each slide by clicking on the **Speaker Notes** text area and typing or pasting your notes for that slide in the field.

## Exporting your speaker notes to a text file

[Video](/assets/videos/pitchdeck/design/saving-speaker-notes-to-text-file.mp4)

You can instantly export all of the speaker notes you've added to your slides in the Pitchdeck plugin by clicking on the **export** icon button in the **Speaker Notes** area at the bottom of the plugin window. This will let you save a `.txt` file containing all of your notes to your computer.

> **Tip:** **Saving file downloads from Figma** If you're using the Figma **desktop app**, you'll see a prompt appear to download your file. However, if you're using Figma in a **web browser**, your file will automatically be downloaded to your computer by default (usually to the **Downloads** directory on your computer).

---

---
url: "/pitchdeck/design/presets.md"
description: "You can use the Pitchdeck layouts feature to automatically create re-useable Figma Component based slides for you to easily style populate with your own content."
---

# Adding preset layout slides to your deck

> You can use the Pitchdeck layouts feature to automatically create re-useable Figma Component based slides for you to easily style populate with your own content.

[Video](/assets/videos/pitchdeck/design/adding-slide-layouts.mp4)

If you'd like to quickly add slide layouts without needing to design them, you can click the **Add Slides/Charts** button at the bottom of your slides list, make sure the **Slide Layouts** tab is selected, and then click on any slide layout thumbnail to add it to your Figma page as a Figma Component automatically.

## Setting global text and color styles for your layout components

[Video](/assets/videos/pitchdeck/design/styling-slide-layouts.mp4)

When you use the slide layout feature, the plugin will automatically create a _Pitchdeck_ folder under your Figma _Text styles_ and _Color styles_ menus, where you can tweak the typography and color styles for the slides and text layers added via the slide layouts feature in one go.

## Adding new Instances of your Master Slide components

[Video](/assets/videos/pitchdeck/design/adding-layout-instances.mp4)

Under the same **Add Slides/Charts** panel, clicking on the **Master Slides** tab will allow you quickly see all of the Master Slides (Figma _Component_ Layers) on your page as thumbnails, and click on any to add it as a new Figma _Instance_ slide layer on your page.

## Converting existing slide Frames in Figma to re-useable Slide Components

[Video](/assets/videos/pitchdeck/design/convert-slides-into-components.mp4)

The **Master Slides** tab also supports any slide Figma Components that you've added to the page yourself; to convert any existing Figma Frames into Figma Components that can be re-used as instances from the plugin, right-click on your Figma Frame, then click **Create Component** in the context menu.

If you then click the **Refresh Component Slides** in the plugin under the **Master Slides** tab, you'll be able to quickly add new instances of your slide components to the page.

---

---
url: "/pitchdeck/design/slides.md"
description: "Pitchdeck works by loading the top level parent Figma Frames, Figma Components or Figma Instances from the current Figma page via the Pitchdeck Figma plugin, and treating each frame as a 'slide' for your presentation."
---

# Designing your presentation slides

> Pitchdeck works by loading the top level parent Figma Frames, Figma Components or Figma Instances from the current Figma page via the Pitchdeck Figma plugin, and treating each frame as a 'slide' for your presentation.

## Adding slides to your deck

[Video](/assets/videos/pitchdeck/design/pitchdeck-create-frame.mp4)

Any top level Figma Frames, Figma Components or Figma Instances that you add to your Figma page will be treated as slides in the Pitchdeck plugin.

For the best results, please ensure that all of the Figma Frames, Figma Components or Figma Instances you want to use for slides are all the same size.

Using a consistent frame size at a 16:9 ratio (eg. **1280x720** or **1920x1080**) tends to work best for presenting on most screens.

> **Tip:** **Adding longer scrollable frames** Including any Figma Frames, Figma Components or Figma Instances that are taller than they are wide (eg. 1920x2600) will automatically be turned into "scrollable" slides when presenting in the Pitchdeck Web App; this can be helpful for presenting things like website mockups or other longform "pages" in your deck.

> **Note:** If you want to use portrait orientation frames (eg. 1080x1920) and not have them scrollable (which is the default behavior), you can add `&contain=true` to your passwordless Pitchdeck presenatation URL, or `?contain=true` to your Pitchdeck URL that doesn't have a token, and this will ensure the slide is contained within your screen size and doesn't scroll.

> **Warning:** **Rotated parent frames will affect element positioning**. Please note that using a parent frame that has rotation (any non-zero value), will affect the x/y positions of its children. This can sometimes happen by accident if you initially created a portrait frame, then rotated it to landscape. To ensure that everything is positioned correctly, please ensure that your parent Figma Frames, Figma Components or Figma Instances don't have any rotation on them.

## Loading slides from Figma

[Video](/assets/videos/pitchdeck/design/pitchdeck-select-slides.mp4)

If you select a subset of your top level Figma Frames, Figma Components or Figma Instances on the canvas before opening Pitchdeck, or before refreshing the slide loader, Pitchdeck will focus on those selected items so you can load just that subset.

This temporary canvas selection does not change the include or exclude checkboxes for your other slides. You can refresh again later to load additional slides without losing the saved checkbox state for slides that were not part of the current Figma selection.

## Selecting a slide to edit

[Video](/assets/videos/pitchdeck/design/selecting-slides.mp4)

You can switch between your slides in the plugin by clicking on the image thumbnail for each frame in the left hand side of the Pitchdeck plugin.

> **Note:** **Parent level Figma frames required**. To load any slides into Pitchdeck, your Figma page must contain at least one parent Figma Frame, Figma Component or Figma Instance. This means, any Figma Frames, Figma Components or Figma Instances that are located _directly_ underneath your page.

## Inlcuding or excluding slides to include

[Video](/assets/videos/pitchdeck/design/excluding-slides-from-exports.mp4)

You can include (or exclude) any Figma Frames, Figma Components or Figma Instances from being used in your presentation by clicking on the checkbox next to the frames in the left hand side of the Pitchdeck plugin.

## Refreshing your slides from Figma frames

[Video](/assets/videos/pitchdeck/design/refresh-slides-list.mp4)

If the Pitchdeck plugin is already running and you need to add or remove any parent Figma Frames, Figma Components or Figma Instances on your current Figma page, you can make those updates as needed and then click on the **Refresh** icon button in the Pitchdeck plugin toolbar.

## Auto-scrolling slides into view

[Video](/assets/videos/pitchdeck/design/selecting-slides.mp4)

To easily switch between editing slides, Pitchdeck automatically scrolls a slide into view in the preview window when it's corresponding layer (or child layer) is clicked on the Figma page.

This also works the other way around, where if you click on the **frame**, **component** or **instance** icon button (depending on the slide layer type) next to the title of your slide in the preview window, the corresponding Figma Frame, Figma Component or Figma Instance will be automatically scrolled and zoomed into view on your Figma page.

## Resizing the plugin window

[Video](/assets/videos/pitchdeck/overview/resize-plugin-window.mp4)

If you're using a bigger (or smaller) computer monitor, Pitchdeck allows you to resize the plugin window to make it easier to use and view the timeline depending on the size of your screen. You can resize the window from smaller to larger (4K) sizes by clicking on the size dropdown in the main plugin header menu.

---

---
url: "/pitchdeck/embeds/audio.md"
description: "Embed MP3 or OGG audio in Pitchdeck using direct file URLs."
---

# Embedding MP3/OGG audio files

> Embed MP3 or OGG audio in Pitchdeck using direct file URLs.

You can embed a MP3 or OGG audio file by finding an `.mp3` or `.ogg` audio file URL online, or uploading your own audio file to a [storage bucket](https://www.backblaze.com/b2/cloud-storage.html) online, then pasting the URL into a Pitchdeck layer's _Embed_ input field.

## Example MP3/OGG URL

`https://cdn.pixabay.com/download/audio/2024/10/18/audio_883a8b2ed8.mp3`

---

---
url: "/pitchdeck/embeds/canva.md"
description: "Embed Canva designs in Pitchdeck by pasting the Canva share URL."
---

# Embedding Canva

> Embed Canva designs in Pitchdeck by pasting the Canva share URL.

### Video Tutorial: Embed Canva designs in Figma presentations

This video tutorial is a complete step-by-step guide showing you how to embed Canva designs into Figma presentations created with the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/W1_Xagat5mI)

You can embed a [Canva](https://www.canva.com) design by copying your Canva "Share" URL, then pasting the URL into a Pitchdeck layer's _Embed_ input field.

## Example Canva URL
`https://www.canva.com/design/DACHZTlgWkU/view`

---

---
url: "/pitchdeck/embeds/figma-design.md"
description: "Embed live Figma design files in Pitchdeck by sharing a viewable Figma URL."
---

# Embedding Figma Design

> Embed live Figma design files in Pitchdeck by sharing a viewable Figma URL.

### Video Tutorial: Embed live Figma designs in Figma presentations

This video tutorial is a complete step-by-step guide showing you how to embed live Figma designs into Figma presentations created with the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/g-XCydF9cWg)

You can embed a [Figma](https://www.figma.com/) design by clicking the **Share** button in Figma, with **Anyone with the link** set to **can view**, and then click the **Copy link** button to get your Figma URL, then pasting the URL into a Pitchdeck layer's _Embed_ input field.

## Example Figma Design URL

`https://www.figma.com/file/g4gs9PlrdqPsHzX3n1cTg5/Dieter-Rams-Deck`

---

---
url: "/pitchdeck/embeds/figma-prototype.md"
description: "Embed Figma prototypes in Pitchdeck using share URLs and recommended scaling."
---

# Embedding Figma Prototype

> Embed Figma prototypes in Pitchdeck using share URLs and recommended scaling.

You can embed a [Figma](https://www.figma.com/) prototype by clicking the **Play** icon button in your Figma file, then clicking the **Share prototype** button, with **Anyone with the link** set to **can view**, and then click the **Copy link** button to get your Figma Prototype URL, then pasting the URL into a Pitchdeck layer's _Embed_ input field.

## Example Figma Prototype URL

`https://www.figma.com/proto/g4gs9PlrdqPsHzX3n1cTg5/Dieter-Rams-Deck`

## Scaling your Figma Prototype

For the best results, please ensure that the aspect ratio of the Figma layer you're embedding the prototype into matches the aspect ratio of your Figma Prototype, and ensure that the scaling mode is set to: **scaling=scale-down-width**

eg. `https://www.figma.com/proto/g4gs9PlrdqPsHzX3n1cTg5/Dieter-Rams-Deck?type=design&scaling=scale-down-width`

---

---
url: "/pitchdeck/embeds/gif.md"
description: "Embed GIF files in Pitchdeck by pasting a direct .gif URL."
---

# Embedding GIFs

> Embed GIF files in Pitchdeck by pasting a direct .gif URL.

### Video Tutorial: Embed GIFs

This video tutorial is a complete step-by-step guide showing you how to embed GIF and videos from YouTube/Vimeo into your Figma slide deck designs, that you can use in real presentations using the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/sT8Rt1DLnCM)

You can embed a GIF image file by finding a `.gif` URL online, or uploading your own video to a [storage bucket](https://www.backblaze.com/b2/cloud-storage.html) online, then pasting the URL into a Pitchdeck layer's _Embed_ input field.

## Example GIF URL

`https://i.giphy.com/media/bF3y2QS0U0sdgtz8sZ/giphy.gif`

---

---
url: "/pitchdeck/embeds/google-docs.md"
description: "Embed Google Docs in Pitchdeck by publishing to web and using the public URL."
---

# Embedding Google Docs

> Embed Google Docs in Pitchdeck by publishing to web and using the public URL.

### Video Tutorial: Embed Google Docs in Figma presentations

This video tutorial is a complete step-by-step guide showing you how to embed Google Docs into Figma presentations created with the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/ubAKEKWojEM)

You can embed a Google [Docs](https://www.google.com.au/docs/about/) file by logging into your Google account, finding the Google Doc file you want to embed, and [follow the instructions to **pubish to web**](https://support.google.com/docs/answer/183965?hl=en&co=GENIE.Platform%3DDesktop#embed_files), then pasting the public share URL into a Pitchdeck layer's _Embed_ input field.

## Example Google Docs URL

`https://docs.google.com/document/d/e/2PIXC-1vS1GlcB45xzzQdQ1UFlTwypmyhjalTTYOXTkz4GFsD73C-9iezt61hKsbFzB16HDy4o_DOUIJHimKyy/pub`

---

---
url: "/pitchdeck/embeds/google-forms.md"
description: "Embed Google Forms in Pitchdeck by publishing to web and pasting the public URL."
---

# Embedding Google Forms

> Embed Google Forms in Pitchdeck by publishing to web and pasting the public URL.

### Video Tutorial: Embed Google Forms in Figma presentations

This video tutorial is a complete step-by-step guide showing you how to embed Google Forms into Figma presentations created with the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/au1QyrdhMbI)

You can embed a Google [Forms](https://www.google.com/forms/about/) file by logging into your Google account, finding the Google Doc file you want to embed, and [follow the instructions to **pubish to web**](https://support.google.com/docs/answer/183965?hl=en&co=GENIE.Platform%3DDesktop#embed_files), then pasting the public share URL into a Pitchdeck layer's _Embed_ input field.

## Example Google Forms URL

`https://docs.google.com/forms/d/e/1FAIpQLSf9Ip2ADUsubqrXsoguy9UG8jBqzSpY7_kkChuK4uR-TVxFug/viewform?usp=sf_link`

---

---
url: "/pitchdeck/embeds/google-sheets.md"
description: "Embed Google Sheets in Pitchdeck by publishing to web and using the share URL."
---

# Embedding Google Sheets

> Embed Google Sheets in Pitchdeck by publishing to web and using the share URL.

### Video Tutorail: Embed Google Sheets in Figma presentations

This video tutorial is a complete step-by-step guide showing you how to embed Google Sheets into Figma presentations created with the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/LiA711c8pcs)

You can embed a Google [Sheets](https://www.google.com.au/sheets/about/) file by logging into your Google account, finding the Google Doc file you want to embed, and [follow the instructions to **pubish to web**](https://support.google.com/docs/answer/183965?hl=en&co=GENIE.Platform%3DDesktop#embed_files), then pasting the public share URL into a Pitchdeck layer's _Embed_ input field.

## Example Google Sheets URL

`https://docs.google.com/spreadsheets/d/e/2PACX-1vR13sGdAtE2t-j7YZ4b395HphwimwR4enNJMxGHxEy_cH_ZYaaF4Vk-eXe_FbyBBqJqkv-tRY9pRQoU/pubhtml`

---

---
url: "/pitchdeck/embeds/google-slides.md"
description: "Embed published Google Slides in Pitchdeck using a public share URL."
---

# Embedding Google Slides

> Embed published Google Slides in Pitchdeck using a public share URL.

### Video Tutorial: Embed Google Slides in Figma presentations

This video tutorial is a complete step-by-step guide showing you how to embed Google Slides into Figma presentations created with the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/U2mklU0Dcpo)

You can embed a Google [Slides](https://www.google.com/slides/about/) file by logging into your Google account, finding the Google Doc file you want to embed, and [follow the instructions to **pubish to web**](https://support.google.com/docs/answer/183965?hl=en&co=GENIE.Platform%3DDesktop#embed_files), then pasting the public share URL into a Pitchdeck layer's _Embed_ input field.

## Example Google Slides URL

`https://docs.google.com/presentation/d/e/2PACX-1vTxJhs1SMd4q3t78e-n8-cwAYEVgOrEHMDl-xCkTUCJJbObv6syRsuYjjIWYPGmiTTk8944Uz_6RzB8/pub?start=false&loop=false&delayms=3000`

---

---
url: "/pitchdeck/embeds/loom.md"
description: "Embed Loom videos in Pitchdeck by pasting the share URL."
---

# Embedding Loom

> Embed Loom videos in Pitchdeck by pasting the share URL.

### Video Tutorial: Embed Loom videos in Figma presentations

This video tutorial is a complete step-by-step guide showing you how to embed Loom videos into Figma presentations created with the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/3Bn1N_f0XhA)

You can embed a [Loom](https://www.loom.com) video by copying your Loom video share URL, then pasting the URL into a Pitchdeck layer's _Embed_ input field.

## Example Loom URL

`https://www.loom.com/share/e5b8c04bca094dd8a5507925ab887002`

---

---
url: "/pitchdeck/embeds/lottie.md"
description: "Embed Lottie animations in Pitchdeck by pasting the Lottie JSON URL."
---

# Embedding Lottie

> Embed Lottie animations in Pitchdeck by pasting the Lottie JSON URL.

### Video Tutorial: Embed Lottie animations in Figma presentations

This video tutorial is a complete step-by-step guide showing you how to embed Lottie animations into Figma presentations created with the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/h1ZjJpFkd2M)

You can embed a [Lottie](https://lottiefiles.com/featured) file animation by logging into LottieFiles, finding a Lottie animation you like and copying the **Lottie Animation URL**, then pasting the URL into a Pitchdeck layer's _Embed_ input field.

## Example Lottie URL

`https://assets8.lottiefiles.com/packages/lf20_uUiMgkSnl3.json`

---

---
url: "/pitchdeck/embeds/soundcloud.md"
description: "Embed SoundCloud tracks in Pitchdeck by pasting the track URL."
---

# Embedding SoundCloud

> Embed SoundCloud tracks in Pitchdeck by pasting the track URL.

### Video Tutorial: Embed SoundCloud audio in Figma presentations

This video tutorial is a complete step-by-step guide showing you how to embed SoundCloud audio into Figma presentations created with the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/2pg7esHsnEI)

You can embed a [SoundCloud](https://www.soundcloud.com) audio track by copying a SoundCloud track's URL, then pasting the URL into a Pitchdeck layer's _Embed_ input field.

## Example SoundCloud URL

`https://soundcloud.com/drunkenkongjp/sets/drunken-kong-sense-ep-tronic`

---

---
url: "/pitchdeck/embeds/spotify.md"
description: "Embed Spotify tracks, playlists, or podcasts in Pitchdeck with share URLs."
---

# Embedding Spotify

> Embed Spotify tracks, playlists, or podcasts in Pitchdeck with share URLs.

### Video Tutorial: Embed Spotify audio in Figma presentations

This video tutorial is a complete step-by-step guide showing you how to embed Spotify audio into Figma presentations created with the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/J7c2fXboTOE)

You can embed a [Spotify](https://www.spotify.com) audio track, playlist or podcast by copying a Spotify track/playlist URL, then pasting the URL into a Pitchdeck layer's _Embed_ input field.

## Example Spotify Track URL

`https://open.spotify.com/track/7nYvUtkQMx1v80S2FH2s9J`

## Example Spotify Playlist URL

`https://open.spotify.com/playlist/37i9dQZF1EQnqst5TRi17F`

## Example Spotify Podcast Episode URL

`https://open.spotify.com/episode/51NknhV063ZtV87mOIoPjB`

---

---
url: "/pitchdeck/embeds/video.md"
description: "Embed MP4 or WebM videos in Pitchdeck using direct file URLs and export options."
---

# Embedding MP4/WebM videos

> Embed MP4 or WebM videos in Pitchdeck using direct file URLs and export options.

### Video Tutorial: Embed videos

This video tutorial is a complete step-by-step guide showing you how to embed GIF and videos from YouTube/Vimeo into your Figma slide deck designs, that you can use in real presentations using the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/sT8Rt1DLnCM)
### Video Tutorial: Export PowerPoint files with MP4 video embeds from Figma

This video tutorial is a complete step-by-step guide showing you how to export PowerPoint (.pptx) files with MP4 video embeds from Figma using the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/z8dUH4tDdFg)

While the Figma Plugin API doesn't support reading video files directly from your Figma file layers, you can embed a MP4 or WebM video file by finding an `.mp4` or `.webm` video URL online, or uploading your own video to a [storage bucket](https://www.backblaze.com/b2/cloud-storage.html) online, then pasting the URL into a Pitchdeck layer's _Embed_ input field.

> **Info:** If you have MP4 Video URL (linking directly to an `.mp4`) embeds in your layers, you can optionally enable the **Include MP4 Video URL Embeds** toggle in your PowerPoint export settings, which will ensure your MP4 video is embedded as a playable video layer that's supported in the PowerPoint app.

## Example MP4/WebM URL

`http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerBlazes.mp4`

---

---
url: "/pitchdeck/embeds/vimeo.md"
description: "Embed Vimeo videos in Pitchdeck by pasting a Vimeo video URL."
---

# Embedding Vimeo

> Embed Vimeo videos in Pitchdeck by pasting a Vimeo video URL.

### Video Tutorial: Embed Vimeo videos in Figma presentations

This video tutorial is a complete step-by-step guide showing you how to embed Vimeo videos into Figma presentations created with the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/C3F4HunFlY8)

You can embed a [Vimeo](https://www.vimeo.com) video by copying a Vimeo video URL, then pasting the URL into a Pitchdeck layer's _Embed_ input field.

## Example Vimeo URL

`https://vimeo.com/304626830`

---

---
url: "/pitchdeck/embeds/websites.md"
description: "Embed websites as iframes in Pitchdeck using a URL that allows cross-origin embedding."
---

# Embedding other Websites as iFrames

> Embed websites as iframes in Pitchdeck using a URL that allows cross-origin embedding.

### Video Tutorial: Embed website iFrames in Figma presentations

This video tutorial is a complete step-by-step guide showing you how to embed website iFrames into Figma presentations created with the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/78AmQvoXwwM)

You can embed a normal website as an `` by copying the website's URL, then pasting the URL into a Pitchdeck layer's _Embed_ input field.

## Example Website URL

`https://www.newyorker.com/culture/cultural-comment/what-weve-learned-from-dieter-rams-and-what-weve-ignored`

> **Warning:** **Websites that don't allow cross-origin embeds won't load**. Please note that the website you're embedding will need to allow other websites to embed it (via a [Access-Control-Allow-Origin](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS/Errors/CORSMissingAllowOrigin) CORS policy), otherwise the iFrame won't load and a blank screen will appear instead.

---

---
url: "/pitchdeck/embeds/youtube.md"
description: "Embed YouTube videos or Shorts in Pitchdeck by pasting the YouTube URL."
---

# Embedding YouTube

> Embed YouTube videos or Shorts in Pitchdeck by pasting the YouTube URL.

### Video Tutorial: Embed YouTube videos in Figma presentations

This video tutorial is a complete step-by-step guide showing you how to embed YouTube videos into Figma presentations created with the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/u-3keAn4bTQ)

You can embed a [YouTube](https://www.youtube.com) video by copying a Vimeo video URL, then pasting the URL into a Pitchdeck layer's _Embed_ input field.

## Example YouTube URL

`https://www.youtube.com/watch?v=dQw4w9WgXcQ`

## Example YouTube Shorts URL

`https://www.youtube.com/shorts/R29NcLluuJY`

---

---
url: "/pitchdeck/export/google-slides.md"
description: "This export option will export your slides from Figma to a `.pptx` file that you can open with [Google Slides](https://docs.google.com/presentation/)."
---

# Exporting your slides to Google Slides

> This export option will export your slides from Figma to a `.pptx` file that you can open with [Google Slides](https://docs.google.com/presentation/).

### Video Tutorial: Export presentations to Google Slides

This video tutorial is a complete step-by-step guide showing you how to export your slide deck presentation designs from Figma to Google Slides using the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/BkMRUL5SvmE)
### Video Tutorial: Add Master Slides to PowerPoint exports from Figma

This video tutorial is a complete step-by-step guide showing you how to export a PowerPoint file from Figma (with Master Slides) using the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/vR7ocT4YO6s)
### Video Tutorial: Export Figma Slides to Google Slides

This video tutorial is a complete step-by-step guide showing you how to export your deck from Figma Slides to Google Slides using the Pitchdeck plugin
[Embedded media](https://www.youtube.com/embed/2pQAiL7mlDQ)

[Video](/assets/videos/pitchdeck/export/export-google-slides.mp4)

To use this option, click the **Export Presentation** button in the Pitchdeck toolbar, then ensure that either the  **Gooogle Slides (.pptx file)** option is selected as the presentation export format. Once you've configured your export settings, you can click the **Export** button to begin exporting your slides.

> **Warning:** **Animations and videos won't be included in the exported Google Slides .pptx file**. Please note that any animations or video embeds included in the Pitchdeck plugin won't be included in your PowerPoint export. These are only used for a presentation uploaded to the Pitchdeck web app.

### Using Retina @2x Images

Enabling the **2x Retina Images** toggle option will automatically export any **JPG** and **PNG** images at retina (@2x) resolution. This will give you sharper looking images in your presentation, but will also increase the file sizes of any **JPG** and **PNG** images.

### Compressing images

Enabling the **Compress Images** toggle option will compress any **JPG** and **PNG** images used in your presentation.

### Downsizing your Figma layer fills

Enabling the **Downsize Large Figma Image Fills** toggle will automatically resize (and lightly compress) any Figma image fills on your layers to their actual layer size. This is useful if you've originally imported high resolution images to your Figma file, but then shrunk the layer dimensions down to be much smaller (with the original large image file still being used).

One common case of this would be adding a large image from Unsplash (or another stock photo site/plugin), the resizing that layer to be used as a much smaller "card" or "avatar" image. This can cause the performance of your Figma file to slow down and potentially crash when exporting these layers via the Pitchdeck export options; so using this feature will help save file size and improve page performance in your Figma file.

### Using editable text

Enabling the **Use Editable Text** option will export your `.pptx` file with text that can be edited in PowerPoint/Keynote/Google Slides. When this option is not enabled, all text will be exported as text. Please note that there may be some minor visual differences between editable text in PowerPoint/Keynote/Google Slides and Figma.

> **Warning:** **Ensure that any custom fonts are installed/replaced**. Please note that opening the exported `.pptx` file on a computer which doesn't have the fonts used in Figma installed will cause the text to look different than it does in the Figma design. Please ensure you install any required fonts or replace/substitute any missing fonts in PowerPoint/Keynote/Google Slides where needed.

> **Tip:** If you would like to _exclude_ any layers from being rendered as rich text in your `.pptx` file exports, you can include **[PNG]** anywhere in the layer name of a parent layer (eg. Frame, Group, Component, Instance) that contains your text layers; this will automatically skip over any nested text layers inside that parent layer from being exported as rich text in your PowerPoint exports, and will render that entire layer as a static image instead.

### Rendering bullet/number lists

Enabling the **Render Bullet/Number Lists** option will export your `.pptx` file with lists created in Figma text layers carried over.

> **Warning:** **Please ensure each Figma layer only contains its own list**. One thing to be mindful of of using this feature is that the entire text layer will be rendered as a list in the `.pptx` file export, so having a Figma text layer with mixed bullet/number/normal text content will all be rendered with whichever the first list type detected is.

> **Tip:** The best approach if you'd like to use this lists feature is to ensure that any list in Figma is its own text layer (and move any other text content into a different layer).

### Including slide numbers

Enabling the **Include Slide Number** option will export your `.pptx` file with page numbering included. This will automatically add a page number to each of your slides in the position you've specified. To change the position of your slide numbers, you can click on the select boxes for **horizontal** (to select from _Left_, _Center_ or _Right_) and **vertical** (to select from _Top_, _Center_ or _Bottom_) positioning.

## Using Figma Components as Master Slides

### Video Tutorial: Add Master Slides to PowerPoint exports from Figma

This video tutorial is a complete step-by-step guide showing you how to export a PowerPoint file from Figma (with Master Slides) using the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/vR7ocT4YO6s)

Enabling the **Create Master Slides from Components** option will export your `.pptx` file with any slides created as a Figma Component automatically used as "Master Slides" that can be re-used as templates to create new slides from in PowerPoint, Keynote or Google Slides.

> **Warning:** **Image placeholders are only supported in PowerPoint** Please note that images (that aren't locked; see the tip below) will be turned into placeholders for master slides when the **PowerPoint** export option is selected. Unfortunately, the **Google Slides** and **Keynote** export options _don't support image placeholders_, so any image content will be static in your master slide templates.

> **Tip:** **Preventing certain image layers from becoming placeholder boxes**. By default, any images (besides the slide background) will be turned into placeholder slots in your master slides. If you'd like to keep any of these image elements static, you can **Lock** any of those Figma layers (in the main Figma layers panel), and this will ensure that any locked image layers are kept "as-is" in your master slide.

> **Tip:** **Refreshing slides after editing a master slide in PowerPoint**. If you update a master slide in PowerPoint and those changes don't immediately show up on slides already using that layout, select the affected slides and click **Home > Reset** (next to **New Slide**) to reapply the layout and refresh the inherited formatting. Here's a short [video walkthrough](https://www.youtube.com/watch?v=1wivFDz2Nko).

## Downloading your .pptx file

After clicking the **Export** button, you'll see a confirmation screen letting you know that your `.pptx` file is ready to download. To download the `.pptx` file from Figma to your computer, you can click the **Download your .pptx file** button in the Pitchdeck plugin.

> **Tip:** **Saving file downloads from Figma** If you're using the Figma **desktop app**, you'll see a prompt appear to download your file. However, if you're using Figma in a **web browser**, your file will automatically be downloaded to your computer by default (usually to the **Downloads** directory on your computer).

## Opening your .pptx file with Google Slides

You can open your `.pptx` file in [Google Slides](https://docs.google.com/presentation/) by going to File, Open, then Upload and drag and drop the `.pptx` file.

Click All to select all your slides, then ensure you uncheck the Keep original theme checkbox, and then click Import slides.

## Replacing custom fonts in your Google Slides PPTX file

[Video](/assets/videos/pitchdeck/export/replace-google-fonts.mp4)

If you're exporting your Figma frames to a PPTX file for Google Slides that contains some custom fonts (which aren't supported in Google Slides), you can substitute these fonts by using native Figma text styles and using the **Description** input field to define the font you'd like to replace the font with when the designs are exported to PPTX.

You'll need to set the **Description** field of your text style (that your target Figma text layers are using) to this specific JSON string format below:

`{ "family": "Inter", "style": "Bold Italic" }`

You can replace the `family` value (eg. `Inter`) with your desired font family, and set the `style` value to the desired font style of your font family (eg. `Regular`, `Bold`, etc); please note that you'll need to ensure the font style you use is supported by the font family you've specified; also ensure that the font is a Google Font (which are automatically supported/loaded in Google Slides).

You can also _optionally_ add an extra `size` (pixels) number property to the JSON string if you'd like to override the font size as well, like in the example below (which would set the font size to `64px` in your PPTX file export):

`{ "family": "Inter", "style": "Bold", "size": 64 }`

---

---
url: "/pitchdeck/export/jpg.md"
description: "Export slides from Figma design files or Figma Slides files to static JPG or PNG images in one click using Pitchdeck."
---

# Exporting your slides to JPG/PNG images

> Export slides from Figma design files or Figma Slides files to static JPG or PNG images in one click using Pitchdeck.

### Video Tutorial: Export Figma slides to JPG/PNG images

This video tutorial is a complete step-by-step guide showing you how to export Figma slides to JPG/PNG images using the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/Dy2LWEZwXTI)

To export your slides as static images, click the **Export** button in the top-right corner of the Pitchdeck plugin and set the presentation export format to either **JPG images** or **PNG images**.

After choosing a format, click **Export to JPG** or **Export to PNG**. Pitchdeck will process all slides in order, then generate a `.zip` file that you can download by clicking **Download Your Zip File**.

## Exporting from a Figma design file

In standard Figma design files, Pitchdeck treats your top-level frames as slides.
The exported image order follows your slide order in the plugin, so you can quickly re-order slides before exporting if needed.

## Exporting from a Figma Slides file

You can use the same export flow inside Figma Slides files:

1. Run the Pitchdeck plugin in your Figma Slides file.
2. Click **Export** in the top-right corner.
3. Choose **JPG images** or **PNG images**.
4. Click the matching export button and download the generated `.zip`.

In Figma Slides files, Pitchdeck mirrors the slide order from the native Figma Slides interface.

## Output quality and file details

- Exports are generated at **2x retina resolution** for sharp full-screen viewing.
- PNG exports include **light compression** for a strong quality-to-file-size balance.
- Files are automatically named and ordered so they are easy to review or present.

> **Tip:** JPG/PNG exports are useful for sharing presentation slides quickly over email, Slack, or review tools when you need static images instead of a deck file.

---

---
url: "/pitchdeck/export/keynote.md"
description: "This export option will export your slides from Figma to a `.pptx` file that you can open with [Apple Keynote](https://www.apple.com/keynote/)."
---

# Exporting your slides to Keynote

> This export option will export your slides from Figma to a `.pptx` file that you can open with [Apple Keynote](https://www.apple.com/keynote/).

### Video Tutorial: Export presentations to Keynote

This video tutorial is a complete step-by-step guide showing you how to export your slide deck presentation designs from Figma to Keynote using the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/yJ3W1pjS0LI)
### Video Tutorial: Add Master Slides to PowerPoint exports from Figma

This video tutorial is a complete step-by-step guide showing you how to export a PowerPoint file from Figma (with Master Slides) using the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/vR7ocT4YO6s)
### Video Tutorial: Export Figma Slides to Keynote

This video tutorial is a complete step-by-step guide showing you how to export your deck from Figma Slides to Apple Keynote using the Pitchdeck plugin
[Embedded media](https://www.youtube.com/embed/irxm3p-mZ6o)

[Video](/assets/videos/pitchdeck/export/export-keynote-file.mp4)

To use this option, click the **Export Presentation** button in the Pitchdeck toolbar, then ensure that the **Keynote (.pptx file)** option is selected as the presentation export format. Once you've configured your export settings, you can click the **Export** button to begin exporting your slides.

> **Warning:** **Animations and videos won't be included in the exported Keynote .pptx file**. Please note that any animations or video embeds included in the Pitchdeck plugin won't be included in your PowerPoint export. These are only used for a presentation uploaded to the Pitchdeck web app.

### Using Retina @2x Images

Enabling the **2x Retina Images** toggle option will automatically export any **JPG** and **PNG** images at retina (@2x) resolution. This will give you sharper looking images in your presentation, but will also increase the file sizes of any **JPG** and **PNG** images.

### Compressing images

Enabling the **Compress Images** toggle option will compress any **JPG** and **PNG** images used in your presentation.

### Downsizing your Figma layer fills

Enabling the **Downsize Large Figma Image Fills** toggle will automatically resize (and lightly compress) any Figma image fills on your layers to their actual layer size. This is useful if you've originally imported high resolution images to your Figma file, but then shrunk the layer dimensions down to be much smaller (with the original large image file still being used).

One common case of this would be adding a large image from Unsplash (or another stock photo site/plugin), the resizing that layer to be used as a much smaller "card" or "avatar" image. This can cause the performance of your Figma file to slow down and potentially crash when exporting these layers via the Pitchdeck export options; so using this feature will help save file size and improve page performance in your Figma file.

### Using editable text

Enabling the **Use Editable Text** option will export your `.pptx` file with text that can be edited in PowerPoint/Keynote/Google Slides. When this option is not enabled, all text will be exported as text. Please note that there may be some minor visual differences between editable text in PowerPoint/Keynote/Google Slides and Figma.

> **Warning:** **Ensure that any custom fonts are installed/replaced**. Please note that opening the exported `.pptx` file on a computer which doesn't have the fonts used in Figma installed will cause the text to look different than it does in the Figma design. Please ensure you install any required fonts or replace/substitute any missing fonts in PowerPoint/Keynote/Google Slides where needed.

> **Tip:** If you would like to _exclude_ any layers from being rendered as rich text in your `.pptx` file exports, you can include **[PNG]** anywhere in the layer name of a parent layer (eg. Frame, Group, Component, Instance) that contains your text layers; this will automatically skip over any nested text layers inside that parent layer from being exported as rich text in your PowerPoint exports, and will render that entire layer as a static image instead.

### Rendering bullet/number lists

Enabling the **Render Bullet/Number Lists** option will export your `.pptx` file with lists created in Figma text layers carried over.

> **Warning:** **Please ensure each Figma layer only contains its own list**. One thing to be mindful of of using this feature is that the entire text layer will be rendered as a list in the `.pptx` file export, so having a Figma text layer with mixed bullet/number/normal text content will all be rendered with whichever the first list type detected is.

> **Tip:** The best approach if you'd like to use this lists feature is to ensure that any list in Figma is its own text layer (and move any other text content into a different layer).

### Including slide numbers

Enabling the **Include Slide Number** option will export your `.pptx` file with page numbering included. This will automatically add a page number to each of your slides in the position you've specified. To change the position of your slide numbers, you can click on the select boxes for **horizontal** (to select from _Left_, _Center_ or _Right_) and **vertical** (to select from _Top_, _Center_ or _Bottom_) positioning.

## Using Figma Components as Master Slides

### Video Tutorial: Add Master Slides to PowerPoint exports from Figma

This video tutorial is a complete step-by-step guide showing you how to export a PowerPoint file from Figma (with Master Slides) using the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/vR7ocT4YO6s)

Enabling the **Create Master Slides from Components** option will export your `.pptx` file with any slides created as a Figma Component automatically used as "Master Slides" that can be re-used as templates to create new slides from in PowerPoint, Keynote or Google Slides.

> **Warning:** **Image placeholders are only supported in PowerPoint** Please note that images (that aren't locked; see the tip below) will be turned into placeholders for master slides when the **PowerPoint** export option is selected. Unfortunately, the **Google Slides** and **Keynote** export options _don't support image placeholders_, so any image content will be static in your master slide templates.

> **Tip:** **Preventing certain image layers from becoming placeholder boxes**. By default, any images (besides the slide background) will be turned into placeholder slots in your master slides. If you'd like to keep any of these image elements static, you can **Lock** any of those Figma layers (in the main Figma layers panel), and this will ensure that any locked image layers are kept "as-is" in your master slide.

> **Tip:** **Refreshing slides after editing a master slide in PowerPoint**. If you update a master slide in PowerPoint and those changes don't immediately show up on slides already using that layout, select the affected slides and click **Home > Reset** (next to **New Slide**) to reapply the layout and refresh the inherited formatting. Here's a short [video walkthrough](https://www.youtube.com/watch?v=1wivFDz2Nko).

## Downloading your .pptx file

After clicking the **Export** button, you'll see a confirmation screen letting you know that your `.pptx` file is ready to download. To download the `.pptx` file from Figma to your computer, you can click the **Download your .pptx file** button in the Pitchdeck plugin.

> **Tip:** **Saving file downloads from Figma** If you're using the Figma **desktop app**, you'll see a prompt appear to download your file. However, if you're using Figma in a **web browser**, your file will automatically be downloaded to your computer by default (usually to the **Downloads** directory on your computer).

## Opening your .pptx file with Keynote

Once you've downloaded your `.pptx` file, you can open it using your Keynote app installed on your Mac computer by **right-clicking the file**, going to **Open With** and clicking the **Keynote** app.

---

---
url: "/pitchdeck/export/pdf.md"
description: "This export option will export your slides from Figma to a PDF file, which can also include any links between slides or to external URLs that you've specified in the plugin, or in the native Figma Prototype links."
---

# Exporting your slides to a PDF file

> This export option will export your slides from Figma to a PDF file, which can also include any links between slides or to external URLs that you've specified in the plugin, or in the native Figma Prototype links.

### Video Tutorial: Export presentations to PDF

This video tutorial is a complete step-by-step guide showing you how to export your slide deck presentation designs from Figma to PDF using the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/W_W8aYQvg28)

### Video Tutorial: Export presentation to clickable interactive PDF

This video tutorial is a complete step-by-step guide showing you how to export clickable interactive PDFs from Figma using the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/jKFlguRXiAA)

### Video Tutorial: Compress large PDF presentation exports from Figma

This video tutorial is a complete step-by-step guide showing you how to compress large PDF presentation exports from Figma using the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/5E4glTwnnZw)

[Video](/assets/videos/pitchdeck/export/export-pdf-file.mp4)

You can export your presentation to a static PDF file by clicking the **Export Presentation** button in the Pitchdeck plugin toolbar, and ensuring the **PDF Deck (.pdf file)** option is selected, then clicking the **Export to PDF** button. Once the PDF export has completed and the confirmation message appears, click the **Download your .pdf file** button to save the file to your computer.

If you've specified a password, you'll also be able to copy it to your clipboard by clicking on the **Copy** icon button next to the password field.

> **Note:** **Gradient fills in PDF exports**. If you're exporting slides to PDF that contain gradient fills inside any vector paths, you can enable the **Vector Path Gradients** setting to ensure the gradient is rendered as expected. If you don't need this option, there's no need to enable it.

> **Warning:** **Browser Support**. Due to browser compatibility issues, the **Export to PDF** feature in Pitchdeck _isn't_ supported in **Safari**. Please run the plugin in another browser (like [Chrome](https://www.google.com/intl/en_us/chrome/)) or the [Figma Desktop App](https://www.figma.com/downloads/) instead.

> **Tip:** **Saving file downloads from Figma** If you're using the Figma **desktop app**, you'll see a prompt appear to download your file. However, if you're using Figma in a **web browser**, your file will automatically be downloaded to your computer by default (usually to the **Downloads** directory on your computer).

## Adding interactive links to your PDF file exports

To make your PDFs interactive with clickable links to other pages or external URLs, please see the [Adding links to your slide layers](/pitchdeck/design/links) page in the Pitchdeck documentation.

## Adding optional metadata to PDF files

When exporting PDF files from Figma using Pitchdeck, you can also optoinally add metadata to your exported PDF file under the **PDF File Metadata** section, by filling out the _Title_, _Description_, _Author_, _Keywords_ input fields.

## Downsizing your Figma layer fills

Enabling the **Downsize Large Figma Image Fills** toggle will automatically resize (and lightly compress) any Figma image fills on your layers to their actual layer size. This is useful if you've originally imported high resolution images to your Figma file, but then shrunk the layer dimensions down to be much smaller (with the original large image file still being used).

One common case of this would be adding a large image from Unsplash (or another stock photo site/plugin), the resizing that layer to be used as a much smaller "card" or "avatar" image. This can cause the performance of your Figma file to slow down and potentially crash when exporting these layers via the Pitchdeck export options; so using this feature will help save file size and improve page performance in your Figma file.

## Adding password protection to your PDF

If you would like your exported PDF file to require a password before it can be opened, you can enable the **Require a password to open the PDF file** setting, then set your own password in the **password input** field. Ensure that you give this password to anyone you're sending the exported merged PDF file to, or they won't be able to open the file to view its contents.

---

---
url: "/pitchdeck/export/powerpoint.md"
description: "This export option will export your slides from Figma to a `.pptx` file that you can open with [Microsoft PowerPoint](https://www.microsoft.com/en-au/microsoft-365/powerpoint)."
---

# Exporting your slides to PowerPoint

> This export option will export your slides from Figma to a `.pptx` file that you can open with [Microsoft PowerPoint](https://www.microsoft.com/en-au/microsoft-365/powerpoint).

### Video Tutorial: Export .pptx files with editable text

This video tutorial is a complete step-by-step guide showing you how to export a presentation file for PowerPoint, Keynote or Google Slides, containing editable text layers, from your Figma slide deck designs using the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/lBP5nxrWlWk)
### Video Tutorial: Add Master Slides to PowerPoint exports from Figma

This video tutorial is a complete step-by-step guide showing you how to export a PowerPoint file from Figma (with Master Slides) using the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/vR7ocT4YO6s)
### Video Tutorial: Export Figma Slides to PowerPoint (.pptx)

This video tutorial is a complete step-by-step guide showing you how to export your deck from Figma Slides to PowerPoint using the Pitchdeck plugin
[Embedded media](https://www.youtube.com/embed/jpXYIvHFwp8)
### Video Tutorial: Export PowerPoint files with MP4 video embeds from Figma

This video tutorial is a complete step-by-step guide showing you how to export PowerPoint (.pptx) files with MP4 video embeds from Figma using the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/z8dUH4tDdFg)

[Video](/assets/videos/pitchdeck/export/export-powerpoint-file.mp4)

To use this option, click the **Export Presentation** button in the Pitchdeck toolbar, then ensure that the **PowerPoint (.pptx file)** option is selected as the presentation export format. Once you've configured your export settings, you can click the **Export** button to begin exporting your slides.

> **Warning:** **Animations and iFrame embeds won't be included in the exported PowerPoint .pptx file**. Please note that any animations or iFrame embeds included in the Pitchdeck plugin won't be included in your PowerPoint export. These are only used for a presentation uploaded to the Pitchdeck web app.

### Embedding MP4 video URLs into your PPTX exports for PowerPoint (Optional)

### Video Tutorial: Export PowerPoint files with MP4 video embeds from Figma

This video tutorial is a complete step-by-step guide showing you how to export PowerPoint (.pptx) files with MP4 video embeds from Figma using the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/z8dUH4tDdFg)

[Video](/assets/videos/pitchdeck/design/export-pptx-video.mp4)

If you have MP4 Video URL (linking directly to an `.mp4`) embeds in your layers, you can optionally enable the **Include MP4 Video URL Embeds** toggle in your PowerPoint export settings, which will ensure your MP4 video is embedded as a playable video layer that's supported in the PowerPoint app.

You can also customize the video thumbnails from the plugin dropdown options below:

- **Automatic Video Thumbnails from MP4**: Automatically use a frame from your video embeds for thumbnails (from the start, middle or end of your videos)
- **Use Figma Layer for Video Thumbnails**: Use the content of your Figma layer (that the .mp4 file embed is on) as a totally custom thumbnail
- **No Custom Video Thumbnails**: Don't set any thumbnail (which is what it was previously doing, where PowerPoint sets its own default play button thumbnail)

> **Note:** Please note that the "Fill" sizing property isn't supported in PowerPoint, so the video will "Fit" into your Figma layer size, regardless of aspect ratio.

### Using Retina @2x Images

Enabling the **2x Retina Images** toggle option will automatically export any **JPG** and **PNG** images at retina (@2x) resolution. This will give you sharper looking images in your presentation, but will also increase the file sizes of any **JPG** and **PNG** images.

### Compressing images

Enabling the **Compress Images** toggle option will compress any **JPG** and **PNG** images used in your presentation.

### Downsizing your Figma layer fills

Enabling the **Downsize Large Figma Image Fills** toggle will automatically resize (and lightly compress) any Figma image fills on your layers to their actual layer size. This is useful if you've originally imported high resolution images to your Figma file, but then shrunk the layer dimensions down to be much smaller (with the original large image file still being used).

One common case of this would be adding a large image from Unsplash (or another stock photo site/plugin), the resizing that layer to be used as a much smaller "card" or "avatar" image. This can cause the performance of your Figma file to slow down and potentially crash when exporting these layers via the Pitchdeck export options; so using this feature will help save file size and improve page performance in your Figma file.

### Using editable text

Enabling the **Use Editable Text** option will export your `.pptx` file with text that can be edited in PowerPoint/Keynote/Google Slides. When this option is not enabled, all text will be exported as text. Please note that there may be some minor visual differences between editable text in PowerPoint/Keynote/Google Slides and Figma.

> **Warning:** **Ensure that any custom fonts are installed/replaced**. Please note that opening the exported `.pptx` file on a computer which doesn't have the fonts used in Figma installed will cause the text to look different than it does in the Figma design. Please ensure you install any required fonts or replace/substitute any missing fonts in PowerPoint/Keynote/Google Slides where needed.

> **Tip:** If you would like to _exclude_ any layers from being rendered as rich text in your `.pptx` file exports, you can include **[PNG]** anywhere in the layer name of a parent layer (eg. Frame, Group, Component, Instance) that contains your text layers; this will automatically skip over any nested text layers inside that parent layer from being exported as rich text in your PowerPoint exports, and will render that entire layer as a static image instead.

### Rendering bullet/number lists

Enabling the **Render Bullet/Number Lists** option will export your `.pptx` file with lists created in Figma text layers carried over.

> **Warning:** **Please ensure each Figma layer only contains its own list**. One thing to be mindful of of using this feature is that the entire text layer will be rendered as a list in the `.pptx` file export, so having a Figma text layer with mixed bullet/number/normal text content will all be rendered with whichever the first list type detected is.

> **Tip:** The best approach if you'd like to use this lists feature is to ensure that any list in Figma is its own text layer (and move any other text content into a different layer).

### Including slide numbers

Enabling the **Include Slide Number** option will export your `.pptx` file with page numbering included. This will automatically add a page number to each of your slides in the position you've specified. To change the position of your slide numbers, you can click on the select boxes for **horizontal** (to select from _Left_, _Center_ or _Right_) and **vertical** (to select from _Top_, _Center_ or _Bottom_) positioning.

## Using Figma Components as Master Slides

### Video Tutorial: Add Master Slides to PowerPoint exports from Figma

This video tutorial is a complete step-by-step guide showing you how to export a PowerPoint file from Figma (with Master Slides) using the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/vR7ocT4YO6s)

Enabling the **Create Master Slides from Components** option will export your `.pptx` file with any slides created as a Figma Component automatically used as "Master Slides" that can be re-used as templates to create new slides from in PowerPoint, Keynote or Google Slides.

> **Warning:** **Image placeholders are only supported in PowerPoint** Please note that images (that aren't locked; see the tip below) will be turned into placeholders for master slides when the **PowerPoint** export option is selected. Unfortunately, the **Google Slides** and **Keynote** export options _don't support image placeholders_, so any image content will be static in your master slide templates.

> **Tip:** **Preventing certain image layers from becoming placeholder boxes**. By default, any images (besides the slide background) will be turned into placeholder slots in your master slides. If you'd like to keep any of these image elements static, you can **Lock** any of those Figma layers (in the main Figma layers panel), and this will ensure that any locked image layers are kept "as-is" in your master slide.

> **Tip:** **Refreshing slides after editing a master slide in PowerPoint**. If you update a master slide in PowerPoint and those changes don't immediately show up on slides already using that layout, select the affected slides and click **Home > Reset** (next to **New Slide**) to reapply the layout and refresh the inherited formatting. Here's a short [video walkthrough](https://www.youtube.com/watch?v=1wivFDz2Nko).

## Downloading your .pptx file

After clicking the **Export** button, you'll see a confirmation screen letting you know that your `.pptx` file is ready to download. To download the `.pptx` file from Figma to your computer, you can click the **Download your .pptx file** button in the Pitchdeck plugin.

> **Tip:** **Saving file downloads from Figma** If you're using the Figma **desktop app**, you'll see a prompt appear to download your file. However, if you're using Figma in a **web browser**, your file will automatically be downloaded to your computer by default (usually to the **Downloads** directory on your computer).

## Opening your .pptx file with PowerPoint

Once you've downloaded your `.pptx` file, you can open it using your Microsoft PowerPoint app installed on your computer.

---

---
url: "/pitchdeck/faq/plans.md"
description: "To get unlimited usage of all of the Pitchdeck Pro features, you will need to purchase a license from the [Hypermatic website](https://hypermatic.com/pitchdeck#pro)."
---

# Pitchdeck Free vs Pitchdeck Pro

> To get unlimited usage of all of the Pitchdeck Pro features, you will need to purchase a license from the [Hypermatic website](https://hypermatic.com/pitchdeck#pro).

Pitchdeck includes 10 free trials of the _Pro_ version. Once these trials have been used up, the Figma plugin will revert to their _Free_ version, which will have limited functionality.

  - **Pitchdeck Free**: ### PDF Exports Unlimited Usage       ### Web Presentations Try during 10 Pro Trials       ### Web Analytics Try during 10 Pro Trials       ### PPTX Exports Try during 10 Pro Trials       ### PPTX Imports Try during 10 Pro Trials       ### CSV Chart Imports Try during 10 Pro Trials       ### Spell Checking Try during 10 Pro Trials       ### Interactive PDFs Try during 10 Pro Trials
  - **Pitchdeck Pro**: ### PDF Exports Unlimited Usage       ### Web Presentations Unlimited Usage       ### Web Analytics Unlimited Usage       ### PPTX Exports Unlimited Usage       ### PPTX Imports Unlimited Usage       ### CSV Chart Imports Unlimited Usage       ### Spell Checking Unlimited Usage       ### Interactive PDFs Unlimited Usage

---

---
url: "/pitchdeck/faq/security.md"
description: "Pitchdeck runs as an official plugin inside of Figma's own app, which are reviewed and approved by the Figma team."
---

# Pitchdeck Security

> Pitchdeck runs as an official plugin inside of Figma's own app, which are reviewed and approved by the Figma team.

The Figma plugin is run directly from Figma's own servers, and runs inside of a your Figma file, which means that it inherits all of the [security](https://www.figma.com/security/) and infrastructure of the Figma platform, which exceed industry standards for data protection and security:

- SOC 2 Type 2
- SOC 3
- Cloud Security Alliance (CSA) STAR: Level 1
- ISO/IEC 27001:2013
- ISO/IEC 27018:2019
- EU Cloud Code of Conduct (COC): Level 2

There's **no additional software** that needs to be installed to use the Figma plugin, as Figma plugins run as a built-in part of Figma's own native functionality, and all Figma plugins easily accessibile and can be instantly run from inside any Figma file, or via the official [Figma Community](https://www.figma.com/community) ecosystem inside of the Figma app.

If your organization is already approved to use Figma, then you _already have access_ to Figma plugins.

## How Pitchdeck works

The [Pitchdeck Figma plugin](https://www.figma.com/community/plugin/838925615018625519) helps users turn their Figma frames into a slide deck.

Pitchdeck is designed to be privacy and security focused, so any "Share" URLs that are generated are password protected by default, and encrypt image uploads with AES-256.

Any uploads and cloud storage services used by the Pitchdeck Plugin and Pitchdeck Web App are hosted on [Google Cloud](https://cloud.google.com/) (the same infrastructure that Google hosts all of its own products with), via [Google Firebase](https://firebase.google.com/).

As per the [Privacy and Security in Firebase](https://firebase.google.com/support/privacy), all Firebase services (aside from App Indexing) have successfully completed the **ISO 27001** and **SOC 1**, **SOC 2**, and **SOC 3** evaluation process, and some have also completed the **ISO 27017** and **ISO 27018** certification process.

## What Pitchdeck does and doesn't do

Pitchdeck uses the [Figma Plugins API](https://www.figma.com/plugin-docs/) to export Figma design to presentations and create a password-protected URL that you can share with any stakeholders for viewing outside of the Figma app, or you can also download the presentation _directly_ to your computer as PPTX or PDF file.

### Pitchdeck does

- Allow users to optionally generate password protected URLs to share presentations with their stakeholders (without needing a Figma account).
- Encrypt image uploads with AES-256.
- Log anonymous visit analytics (for your own use) for presentations uploaded to the Pitchdeck Web App, and analytics can optionally be turned off per custom share link if needed.
- Allow users to export their presentation designs from Figma to a PDF file.
- Allow users to export their presentation designs from Figma to a PPTX file.
- Automatically deletes URL/uploads if not accessed for 180 days.
- Download any exported PDF and PPTX files _directly_ to the user's computer.

### Pitchdeck does _not_

- Make _any_ password-protected "Uploaded" URLs created via the plugin publicly accessible or indexed by any search engines.
- Collect or store _any_ personal information (Figma plugins *cannot* access any private information about Figma projects, Figma teams or Figma users).

## How Figma plugins work

Figma plugins are written in HTML/CSS/Javascript, and are run in a tightly controlled [sandbox environment](https://www.figma.com/plugin-docs/how-plugins-run/) inside of the main Figma application.

Figma plugins can only do whatever Figma allows them to do inside the permissions of the [Figma Plugins API](https://www.figma.com/plugin-docs/), and importantly, **plugins don't have any access to personal information** about the Figma user running the plugin.

## What Figma plugins can and can't do

As per the article on [Figma plugin security](https://www.figma.com/blog/how-we-built-the-figma-plugin-system/), there are a limited number of things that Figma plugins can do, and many more things that they can't do:

### Figma plugins can

- Only be run by an explicit user action
- Show UI in a single plugin-specific dialog
- Read any data in your Figma document (e.g. a “find layer by name” plugin)
- Modify any data in your Figma document (e.g. a “rename selected layers” plugin)
- Communicate with any server over the internet (e.g. an “import from service X” plugin)

### Figma plugins _cannot_

- Run by themselves
- Get information about the project or team that owns the file
- Access anything when they aren’t running
- Access data from any files other than the file they were run in
- Change Figma’s UI outside of the plugin UI dialog

> **Tip:** Figma account administrators at your company can [configure an allowlist of plugins](https://help.figma.com/hc/en-us/articles/4404228724759-Manage-plugins-and-widgets-in-an-organization) that are allowed inside the organization. This can be used to prevent untrusted Figma plugins from being run in any file in that organization.

---

---
url: "/pitchdeck/faq/troubleshooting.md"
description: "Troubleshooting guide for Pitchdeck exports, embeds, and common presentation issues."
---

# Troubleshooting Pitchdeck

> Troubleshooting guide for Pitchdeck exports, embeds, and common presentation issues.

### Layers missing and turning into Purple Rectangles when exporting PDF from Figma

This is a known, [long-standing Figma bug](https://forum.figma.com/t/pdf-export-consistently-missing-elements/3547) where purple boxes are shown instead of the image, and becuase Pitchdeck is using the native PDF export function from Figma behind the scenes, the plugin will inherit these bugs when exporting PDFs if they occur in Figma as well.

    One suggestion that can help is to ensure the problematic layer is actually nested _inside_ of the main Figma frame, as sometimes a Figma layer is "visually" positioned on top of your frame on the canvas, but the layer itself is still sitting outside of the frame; this seems to be related to why the problem occurs sometimes.

  ### Frames used as slides should all be the same size

Please ensure all your frames are the same size; 16:9 ratio frames are recommended (eg. **1280x720** or **1920x1080**) for the best presentation results across most monitors and TV screens.

  ### Duplicating a Figma file or Figma page will duplicate its URL/password

Please note that "duplicating" a Figma file (or "page" inside a Figma file) will also carry over its URL/password from the original once, so it's always best to create a blank one if you need a new URL.

    This allows you to maintain a separate presentation deck per page within a Figma file (or just use entirely separate Figma files to do this). You can have an unlimited amount of presentation URLs this way.

  ### Google Slides only supports 'custom' Google Fonts

If you're using third party fonts to design your slides in Figma, and exporting your presentation for Google Slides, please note that Google Slides won't be able to render the font (even if it's installed on your computer), as it only supports any font that is available via [Google Fonts](https://fonts.google.com/).

  ### Clicking the download button for an exported PDF or PPTX file not working

If you're clicking on the **Download** button in the plugin confirmation export screen, but the file isn't downloading; restarting the Figma app (or closing/re-opening your Figma tab if you're using the browser version) should resolve the issue when you re-run the plugin and export your file again.

  ### Misaligned editable text in PPTX file exports

This is often caused by text layers having a fixed width/height in Figma on the text layer's bounding box which is smaller than the size of the text content itself, which causes an incorrect position offset. Setting the text layer resize option in Figma to "Auto Height" should resolve this.

    The other cause of this is usually a text layer in Figma that contains multiple line-height or font size values in the same block of text. Unlike Figma, unfortunately PPTX files only support a single/overriding line-height value per text layer, and having multiple font sizes per text block will also throw out the vertical flow in your PPTX file.

    To resolve this issue, you can split out the text content inside of your Figma text layer with a different line-height or font size into its own layer, and position that where you need it to be in relation to the other text layer(s); this way each text block will have its own single line-height and font size value.

  ### Pixelated image exports

If you're exporting a presentation while the image assets in Figma are still progressively loading, they may be exported looking pixelated, as the image wasn't fully loaded in the Figma file before it was exported. To resolve this, please ensure that all of the images have loaded 100% and are looking sharp inside the Figma file before exporting your presentation with the Pitchdeck plugin.

    To help further with solving this issue, you can use the ["Downsizer" feature](https://docs.hypermatic.com/tinyimage/usage.html#downsizing-your-figma-layer-fills) in our [TinyImage Figma plugin](https://www.figma.com/community/plugin/789009980664807964/TinyImage-Compressor) to shrink down your image fills to match their layer size, which will shrink their file size and ensure they load much faster in your Figma file.

  ### Google Slides will downscale any image over 1600x1600 pixels

If you're exporting your designs to use in Google Slides, please note that Google Slides will automatically "downscale" any images in your deck that are bigger than 1600 pixels; this can cause them to lose some visual quality if you're exporting them to a .pptx file with larger images than the upper limit.

    To help avoid this, if you select the **Google Slides** option in the export settings, Pitchdeck will automatically ensure your images sizes are capped at 1600px to avoid them getting compressed when imported into Google Slides.

  ### Scaling your Figma Prototype embeds to fill the layer

Depending on the aspect ratio of your Figma layer/embed in Pitchdeck, you may need to change the Figma Prototype scaling option before copying the Prototype URL to paste into the Pitchdeck plugin to embed it into your layer.

    When you open your Figma Prototype, if you click on the **Options** dropdown (in the top right of the header), then select the **Fit Width** scaling option before copying your Prototype URL to use in Pitchdeck as a layer embed, that should ensure the Figma Prototype embed scales up/down to the size of your Figma layer (as long as the aspect ratio of the Figma layer matches the aspect ratio of your Figma Prototype).

    If you can't see the **Fit Width** option, you can also try manually updating your Figma Prototype embed's `scaling=` parameter in the URL to be `scaling=scale-down-width`, and this should ensure the **Fit Width** scale option is used to display your Figma Prototype.

  ### Slides not uploading from the plugin, or images not loading in the web app

One reason this might be happening is if your ISP (internet service provider) is blocking the QUIC protocol. You can confirm this by opening up your developer console in the browser or in Figma and see the error message `ERR_QUIC_PROTOCOL_ERROR`.

    There are a couple of workarounds for this issue:

    1. Switching to your mobile phone's Wi-Fi hotspot/tether for your computer's internet connection
    2. [Disabling QUIC](https://kinsta.com/knowledgebase/err_quic_protocol_error/) in your browser

  ### The '100% of memory used' Figma memory leak issue

There's a rare/known bug where Figma will run out of memory while trying to extract SVG image data from certain complex layers; these usually include groups that contain multiple text layers or single complex text layers (often using a custom font, which requires more memory in Figma).

    If you run into this error, the Pitchdeck plugin will display a notification at the bottom of the screen telling you which frame, and which layer specifically is causing the memory issue.

    It will also tell you to click the "reload page" in the Figma warning dialog, and then once the page reloads, to add `[PNG]` to the start of the problematic layer name (eg. "[PNG] My original layer name"). This will let the Pitchdeck plugin know to fetch PNG image data for that specific layer instead of SVG image data, which resolves the memory issue.

  ### Thin white line around image exports

Occasionally some images will contain a faint, thin white line around the edges. Figma [does this](https://twitter.com/Skcrub/status/1255544876701270017) if a layer isn't positioned on a rounded pixel value (eg. Y: 156.76 or X: 56.3) will automatically result in this sub-pixel line getting included in the export. To resolve the issue, please ensure that your layer positions are all rounded pixel values.

  ### Gradients not supported for editable text in .pptx exports

If you're using a gradient fill(s) for a text layer in your Figma design, Pitchdeck will automatically take the first gradient fill and use the first color of that gradient as the "solid" color in your `.pttx` export.

  ### Where to host .mp4 video files

One good option for hosting videos is [Backblaze B2](https://www.backblaze.com/b2/cloud-storage.html); you can sign up for a free account that gives you 10gb of free storage, and if you create a public storage bucket, you should be able to copy/paste the links for any video files you upload to it and drop that link to the `.mp4` into Pitchdeck.

    Another popular file hosting option is [Dropbox](https://www.dropbox.com/), which will let you upload your `.mp4` file, and use that link in the Pitchdeck plugin; Pitchdeck will automatically handle changing the `?dl=0` to `?raw=1` to ensure the link points directly to the video file (rather than the Dropbox website player).

  ### GIFs embedded in Figma documents

Due to GIF export not being natively supported in Figma, any GIFs added "directly" inside your Figma designs won't be animated; to use animated GIFs, please add them as URLs inside the Pitchdeck plugin.

  ### Blank file extensions using Figma desktop app on Windows

There's a known issue with the Figma desktop app (only on Windows), which also happens for normal file exports from Figma. When you go to save your file, you may see an "all files" label. If you ignore this and continue by clicking "Save", it should still save the file with the correct extension and allow you to open it as expected after it has downloaded to your computer. If it still saves the file with a blank extension, you should be able to rename the file to manually append the correct extension to the file name.

  ### Google Slides 100mb file size limit

Google Slides has a 100mb limit per PPTX file getting imported; one workaround for this is to split up the PPTX file you'd like to import into smaller files (using [a tool like this](https://products.aspose.app/slides/splitter)) and then upload them into your Google Slides file one at a time (which gets around the upload size limit issue, and still lets you have all the slides in one file).

  ### Slow (or frozen) PDF exports

If your PDF exports are going really slow, it's likely due to having high-res/large image fills in some of the content _and/or_ it can be related to having lots of large "Layer Blur" effects on your layers, which can both cause Figma to take a much longer time generating PDFs.

    To help with the image fills issue, you can use the ["Downsizer" feature](https://docs.hypermatic.com/tinyimage/usage.html#downsizing-your-figma-layer-fills) in [TinyImage](https://www.figma.com/community/plugin/789009980664807964/TinyImage-Compressor) to shrink down your image fills to match their layer size, which will shrink their file size and ensure they load much faster in your Figma file.

    To help with the "Layer Blur" issue, you can convert these into flat image layers instead by right-clicking your layer in Figma -> **Copy/Paste As** -> **Copy as PNG** -> paste the layer onto the Figma canvas (**CTRL + V** on Mac, or **CMD + V** on Windows); then you can position the layer inside of your Figma frame/slide in the same spot, before hiding or deleting the original layer that you copied/pasted as a flat PNG.

    Once you've finished downsizing the image fills in your Figma page and/or swapping out your Figma layers with "Blur" effects for flat images instead, re-running Pitchdeck and exporting your PDF again via the plugin should be much faster.

  ### Editing PDFs in Adobe Acrobat shows dotted lines

This can be resolved by un-checking the "Show bounding boxes" toggle in the Acrobat Acrobat app sidebar while editing your PDF. Showing the dotted bounding box lines is something that [Adobe enables by default](https://archive.md/Uhdbk) while enter "Edit" mode when you have a PDF open in the app, but turning off the "Show bounding boxes" toggle will turn hide those from being displayed with one click.

  ### PNG images and forcing background transparency

Pitchdeck will try to automatically detect if a layer contains areas of full transparency and set PNG as the default export format, otherwise it will be set to JPG. You can override this by adding **[PNG]** to the Figma layer name, or by setting the export setting format of any layer to JPG or PNG in Figma's right-hand column.

  ### Install custom fonts that are missing in .pptx exports

Please note that opening the exported `.pptx` file on a computer which doesn't have the fonts used in Figma installed will cause the text to look different than it does in the Figma design. Please ensure you install any required fonts or replace/substitute any missing fonts where needed.

  ### Presentation URL expiry after 180 days

Presentation URLs will automatically expire after a 180 day period of inactivity (180 days after the link was last accessed and viewed); if you would like to re-activate the URL after it has expired, simply run Pitchdeck in the Figma file and click Upload Web Presentation.

  ### Netskope blocking the Pitchdeck web app from loading

There is a known issue with [Netskope](https://www.netskope.com/) blocking access to Firebase databases; to resolve this, please ensure you allow `firestore.googleapis.com:443` (as per [this thread](https://stackoverflow.com/questions/52441316/firestore-grpc-behind-a-corporate-firewall-proxy)).

  ### VPN may be required in China

Please note, if you're in China, the accounts server _may_ be blocked by "The Great Firewall of China". If you're seeing an activation error, despite using a valid key, you will likely need to use a [VPN](https://protonvpn.com/free-vpn/) to resolve the issue.

  ### 'An error occurred while loading the plugin environment'

This may happen in the Figma desktop app if [the Use Developer VM](https://www.figma.com/plugin-docs/debugging/#developer-vm) debug setting in Figma is enabled by mistake; you can make sure it's turned off by **right-clicking** anywhere on your Figma canvas, hovering over **Plugins**, then hovering over **Development**, and making sure that the **Use Developer VM** is _unchecked_; after it is unchecked (and does _not_ have a tick icon next to it), re-running the Figma plugin should work as expected.

---

---
url: "/pitchdeck/overview/install.md"
description: "Ensure you're logged into your Figma account, then follow the steps below to install and run the [Pitchdeck Figma Plugin](https://www.figma.com/community/plugin/838925615018625519/pitchdeck-presentation-studio)."
---

# Install and run the Pitchdeck Figma Plugin

> Ensure you're logged into your Figma account, then follow the steps below to install and run the [Pitchdeck Figma Plugin](https://www.figma.com/community/plugin/838925615018625519/pitchdeck-presentation-studio).

### Video Tutorial: How to install (and remove) Figma plugins

This video tutorial is a complete step-by-step guide showing you the new process of how to install (and remove) Figma plugins after the mid-2024 "UI3" update to the Figma app
[Embedded media](https://www.youtube.com/embed/CzjxF2Jv6PM)

## Installing the Pitchdeck Figma Plugin

1. Open any Figma file.
2. Click on the **Actions** icon in the bottom Figma toolbar.
3. Click the **Plugins & Widgets** tab to filter results to Figma plugins.
4. Search for **Pitchdeck** in the search bar.
5. Click on the **Pitchdeck** search result.
6. Click the **Save** button to install the Pitchdeck plugin.

> **Note:** Figma users in a **Figma Organization** may only be able to install approved plugins. Please contact your Figma Org admin at your company to [approve the Pitchdeck plugin](https://help.figma.com/hc/en-us/articles/4404228724759-Manage-plugins-and-widgets-in-an-organization) if you're unable to install certain Figma plugins.

## Running the Pitchdeck Figma Plugin

Once you've [installed](#installing-the-figma-plugin) the **Pitchdeck** Figma plugin, to run the plugin in your Figma file:

  1. **Right-click** anywhere on your Figma file's page canvas
  2. Hover your mouse over the **Plugins** ▶ menu item
  3. Hover your mouse over the **Saved plugins** ▶ menu item
  4. Click on the **Pitchdeck** plugin menu item

> **Tip:** After you've run the **Pitchdeck** plugin once in a Figma file, you'll be able to quickly re-launch it by clicking the **Pitchdeck** icon in the right-hand side Figma column (under the **Plugin** subheading).

> **Warning:** Only Figma users with **Edit** access to a Figma file can run a Figma plugin in that Figma file; if you only have **View** permissions, you won't be able to run any Figma plugins in that file.

## Uninstalling the Pitchdeck Figma plugin

1. Open any Figma file.
2. Click on the **Actions** icon in the bottom Figma toolbar.
3. Click the **Plugins & Widgets** tab to filter results to Figma plugins.
4. Search for **Pitchdeck** in the search bar.
5. Click on the **Pitchdeck** search result.
6. Click the **Remove** button to uninstall the Pitchdeck plugin.

> **Note:** This will remove the plugin from your **Saved Plugins** list, however, the Figma plugin may still show up under your **Recents** list (if it has been recently run), as Figma saves this list of recent plugins in your browser's/app's local storage. The plugin will vanish from the Recents menu after other plugins are run to take its place.

---

---
url: "/pitchdeck/overview/pro.md"
description: "After trying out all the Pro features of Pitchdeck **10 times**, you can optionally upgrade to continue using all the extra features that are only available in the Pro version; or if you're a casual user, you can continue using the Free version forever."
---

# Activating Pitchdeck Pro

> After trying out all the Pro features of Pitchdeck **10 times**, you can optionally upgrade to continue using all the extra features that are only available in the Pro version; or if you're a casual user, you can continue using the Free version forever.

> **Tip:** Need a Pitchdeck Pro account? You can purchase a Pro account for you or your team by visiting the [Pitchdeck](https://www.hypermatic.com/pitchdeck/#pro) product page on the Hypermatic website.

## Activating the Figma plugin with an Pitchdeck Pro license key

1. **Purchase a Pro license** for you or your team by visiting the [Pitchdeck](https://www.hypermatic.com/pitchdeck/#pro) product page on the Hypermatic website.
2. **Run the Pitchdeck Plugin**, then click on the **Upgrade Now** button at the bottom of the Figma plugin window.
3. **Paste in your Pro key**, then click the **Unlock** button.

This will unlock the Pro version of Pitchdeck and give you unlimited use all of the Figma plugin features.

> **Warning:** Please note, if you're in China, the accounts server _may_ be blocked by "The Great Firewall of China". If you're seeing a activation error, despite using a valid key, you will likely need to use a [VPN](https://protonvpn.com/free-vpn/) to resolve the issue.

> **Info:** If you ever need to use a different license key at any time (eg. you were using your own personal Pro license key, but now your employer is buying you a Pro license to use instead), you can press **CTRL + K** while your plugin window is open in Figma, and this will bring up the license key prompt again, where you can enter a different license key.

---

---
url: "/pitchdeck/overview/quickstart.md"
description: "Magically turn your Figma designs into animated presentable slide decks, or export them to PowerPoint."
---

# Get Started with Pitchdeck

> Magically turn your Figma designs into animated presentable slide decks, or export them to PowerPoint.

[![Pitchdeck Figma Plugin](https://www.hypermatic.com/pitchdeck.jpg)](https://www.figma.com/community/plugin/838925615018625519/pitchdeck-presentation-studio)

## Install & Activate Pitchdeck

- [Install & Run the Figma plugin](/pitchdeck/overview/install.md): How to run Pitchdeck inside of Figma
- [Activate Pitchdeck Pro](/pitchdeck/overview/pro.md): How to buy and use a Pro license key

## Using Pitchdeck

  - [Pitchdeck Documentation](/pitchdeck/design/slides.md): Detailed docs with short screencaps
  - [Pitchdeck Video Tutorials](/pitchdeck/tutorials.md): Full step-by-step video walkthroughs

## Frequently Asked Questions

- [Troubleshooting Pitchdeck](/pitchdeck/faq/troubleshooting.md): Common issues issues you may run into
- [Pitchdeck Security](/pitchdeck/faq/security.md): Details about how Pitchdeck works
- [Receipts](/faq/receipts.md): Find email receipts and PDF invoices
- [Billing](/faq/billing.md): Manage your Pro subscription
- [License Seat Management](/faq/seats.md): Manage the Figma users on your key
- [Pitchdeck Free vs Pro](/pitchdeck/faq/plans.md): Compare Free vs Pro features

[Video](https://www.hypermatic.com/assets/videos/pitchdeck/PITCHDECK_DEMO.mp4)

## Pitchdeck features

- Super easy animations and real-time previews inside Figma.
- Export slides to an interactive shareable URL to present in the browser.
- Export files for PowerPoint/Keynote/Google Slides, with editable text.
- Export to a PDF file (with optional password protection).
- Import slides from PowerPoint, Google Slides or Keynote (as exported .pptx files) into Figma automatically
- Add GIFs and YouTube/Vimeo/MP4 video embeds to layers in your slides.
- Built-in presentation analytics data and custom share link URLs.
- Embed content from Figma, Loom, Canva, Lottie, Google Docs/Sheets/Slides, SoundCloud or Spotify.
- Add slide links or website URL links to layers in your slides.
- Built-in GIPHY and Pixabay search integrations.
- Quickly re-order slides by visual position, Figma layer order or drag and drop.
- Automatically generate Charts by adding your own CSV data.
- Optional automatic page numbering Figma component for your slides.
- Set approval workflow statuses to keep track of which slides are ready.
- Automatically generates password protected presentation URLs.
- Simple, seamless and easy to use presentations in the browser.
- Includes speaker notes, timer, laser pointer, and slide controls.
- Control your presentation from your phone/tablet by scanning a QR code.
- Present in fullscreen with notes and controls on a second screen.
- Spell check your Figma slides in dozens of languages.
- The Pitchdeck plugin can be run in both Figma and Figma Slides.

---

---
url: "/pitchdeck/tutorials.md"
description: "The best free Figma tutorial videos for beginners (or power users) to level up."
---

# Pitchdeck Video Tutorials

> The best free Figma tutorial videos for beginners (or power users) to level up.

## Creating Presentations

### Create and present a Pitchdeck

This video tutorial is a complete step-by-step guide showing you how to turn your Figma slide deck designs into real presentations using the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/CgHfcrm3oXw)

### Embed videos and GIFs

This video tutorial is a complete step-by-step guide showing you how to embed GIF and videos from YouTube/Vimeo into your Figma slide deck designs, that you can use in real presentations using the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/sT8Rt1DLnCM)

### Add links to presentations

This video tutorial is a complete step-by-step guide showing you how to add clickable links into your Figma slide deck designs, that you can use in real presentations using the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/vyqGdJy8Hdw)

### Import slides from PowerPoint to Figma in one click

This video tutorial is a complete step-by-step guide showing you how to import slides from PowerPoint (.pptx files) into Figma using the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/CpMNE8U_kJ8)

### Import Google Slides to Figma in one click

This video tutorial is a complete step-by-step guide showing you how to import slides from Google Slides (downloaded as .pptx files) into Figma using the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/phr2bzBcrO4)

### Import PowerPoint (.pptx) to Figma Slides

This video tutorial is a complete step-by-step guide showing you how to import PowerPoint (.pptx) to Figma Slides using the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/h2cAnTxI1yM)

### Import Google Slides to Figma Slides

This video tutorial is a complete step-by-step guide showing you how to import Google Slides to Figma Slides using the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/twFlJ81u4qE)

### Add slide layouts to Figma presentations with one click

This video tutorial is a complete step-by-step guide showing you how to add slide layouts to your Figma presentation using the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/POTDGUtsC-s)

### Automatically create Charts in Figma from CSV file data

This video tutorial is a complete step-by-step guide showing you how to automatically create Charts in Figma from CSV file data using the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/iMg2ACBolPI)

### Add custom animations to your Figma presentations

This video tutorial is a complete step-by-step guide showing you how to add custom keyframe animations to your presentations using the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/Gm2i5ZLYOIQ)

### Spell check Figma presentation slides

This video tutorial is a complete step-by-step guide showing you how to spell check text in your Figma presentation slides using the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/HAgOx4bharc)

### Add scrollable mockup slides to Figma presentations

This video tutorial is a complete step-by-step guide showing you how to add scrollable slides into Figma presentations created with the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/L9hEM-qLgFk)

### Add page numbers to Figma slides automatically

This video tutorial is a complete step-by-step guide showing you how to add page numbers to Figma slides automatically with the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/Z7DpTBaudLw)

### Re-order and tidy Figma slides into a grid with one click

This video tutorial is a complete step-by-step guide showing you how to automatically re-order and tidy Figma slides into a grid using the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/9ED4z7rE70k)

### Analytics dashboard and link tracking for Figma presentations

This video tutorial is a complete step-by-step guide showing you how to use the analytics dashboard and add link tracking for Figma presentations created with the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/3IWyzOZorjs)

## Exporting Presentations

### Export presentations to PowerPoint

This video tutorial is a complete step-by-step guide showing you how to export your slide deck presentation designs from Figma to PowerPoint using the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/IkiG4PWJZEM)

### Export presentations to Keynote

This video tutorial is a complete step-by-step guide showing you how to export your slide deck presentation designs from Figma to Keynote using the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/yJ3W1pjS0LI)

### Export presentations to Google Slides

This video tutorial is a complete step-by-step guide showing you how to export your slide deck presentation designs from Figma to Google Slides using the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/BkMRUL5SvmE)

### Export .pptx files with editable text

This video tutorial is a complete step-by-step guide showing you how to export a presentation file for PowerPoint, Keynote or Google Slides, containing editable text layers, from your Figma slide deck designs using the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/lBP5nxrWlWk)

### Add Master Slides to PowerPoint exports from Figma

This video tutorial is a complete step-by-step guide showing you how to export a PowerPoint file from Figma (with Master Slides) using the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/vR7ocT4YO6s)

### Export compressed .pptx files

This video tutorial is a complete step-by-step guide showing you how to export a compressed presentation file for PowerPoint, Keynote or Google Slides from your Figma slide deck designs using the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/BkMRUL5SvmE)

### Export presentations to PDF

This video tutorial is a complete step-by-step guide showing you how to export your slide deck presentation designs from Figma to PDF using the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/W_W8aYQvg28)

### Export presentation to clickable interactive PDF

This video tutorial is a complete step-by-step guide showing you how to export clickable interactive PDFs from Figma using the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/jKFlguRXiAA)

### Export Figma slides to JPG/PNG images

This video tutorial is a complete step-by-step guide showing you how to export Figma slides to JPG/PNG images using the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/Dy2LWEZwXTI)

### Compress large PDF presentation exports from Figma

This video tutorial is a complete step-by-step guide showing you how to compress large PDF presentation exports from Figma using the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/5E4glTwnnZw)
### Export Figma Slides to PowerPoint (.pptx)

This video tutorial is a complete step-by-step guide showing you how to export your deck from Figma Slides to PowerPoint using the Pitchdeck plugin
[Embedded media](https://www.youtube.com/embed/jpXYIvHFwp8)
### Export Figma Slides to Google Slides

This video tutorial is a complete step-by-step guide showing you how to export your deck from Figma Slides to Google Slides using the Pitchdeck plugin
[Embedded media](https://www.youtube.com/embed/2pQAiL7mlDQ)
### Export Figma Slides to Keynote

This video tutorial is a complete step-by-step guide showing you how to export your deck from Figma Slides to Apple Keynote using the Pitchdeck plugin
[Embedded media](https://www.youtube.com/embed/irxm3p-mZ6o)

### Self-hosting your Figma presentation on a custom domain

This video tutorial is a complete step-by-step guide showing you how to self-host your Figma presentation on a custom domain with the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/Dx07nBslRz8)

## Slide Layer Embeds

### Embed YouTube videos in Figma presentations

This video tutorial is a complete step-by-step guide showing you how to embed YouTube videos into Figma presentations created with the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/u-3keAn4bTQ)

### Embed live Figma designs in Figma presentations

This video tutorial is a complete step-by-step guide showing you how to embed live Figma designs into Figma presentations created with the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/g-XCydF9cWg)

### Embed live Figma prototypes in Figma presentations

This video tutorial is a complete step-by-step guide showing you how to embed live Figma prototypes into Figma presentations created with the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/UxOvqHjcLMY)

### Embed Google Docs in Figma presentations

This video tutorial is a complete step-by-step guide showing you how to embed Google Docs into Figma presentations created with the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/ubAKEKWojEM)

### Embed Google Forms in Figma presentations

This video tutorial is a complete step-by-step guide showing you how to embed Google Forms into Figma presentations created with the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/au1QyrdhMbI)

### Embed Google Sheets in Figma presentations

This video tutorial is a complete step-by-step guide showing you how to embed Google Sheets into Figma presentations created with the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/LiA711c8pcs)

### Embed Google Slides in Figma presentations

This video tutorial is a complete step-by-step guide showing you how to embed Google Slides into Figma presentations created with the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/U2mklU0Dcpo)

### Embed Loom videos in Figma presentations

This video tutorial is a complete step-by-step guide showing you how to embed Loom videos into Figma presentations created with the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/3Bn1N_f0XhA)

### Embed Lottie animations in Figma presentations

This video tutorial is a complete step-by-step guide showing you how to embed Lottie animations into Figma presentations created with the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/h1ZjJpFkd2M)

### Embed SoundCloud audio in Figma presentations

This video tutorial is a complete step-by-step guide showing you how to embed SoundCloud audio into Figma presentations created with the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/2pg7esHsnEI)

### Embed Spotify audio in Figma presentations

This video tutorial is a complete step-by-step guide showing you how to embed Spotify audio into Figma presentations created with the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/J7c2fXboTOE)

### Embed Vimeo videos in Figma presentations

This video tutorial is a complete step-by-step guide showing you how to embed Vimeo videos into Figma presentations created with the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/C3F4HunFlY8)

### Embed website iFrames in Figma presentations

This video tutorial is a complete step-by-step guide showing you how to embed website iFrames into Figma presentations created with the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/78AmQvoXwwM)

### Embed Canva designs in Figma presentations

This video tutorial is a complete step-by-step guide showing you how to embed Canva designs into Figma presentations created with the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/W1_Xagat5mI)

---

---
url: "/pitchdeck/web/analytics.md"
description: "If you've uploaded your slides to the Pitchdeck Web App, you'll be able to view analytics for your slides, and also create custom share URLs to send to different viewers of the presentation to see what interactions they have with your slides."
---

# Using analytics for your presentation

> If you've uploaded your slides to the Pitchdeck Web App, you'll be able to view analytics for your slides, and also create custom share URLs to send to different viewers of the presentation to see what interactions they have with your slides.

[Video](/assets/videos/pitchdeck/web/analytics-view.mp4)

## Viewing your presentation analytics

You can view stats for your presentation by clicking the **Analytics** button in the main header menu of the Pitchdeck plugin, which will open up the analytics panel for the presentation uploaded to the Pitchdeck Web App from the current Figma page.

> **Note:** **Refreshing your presentation data**. Clicking on the **Refresh** icon button in the top left of the Analytics panel will refresh all of your analytics data for the current presentation.

There are a few tabs you can click through to manage and view your analytics; _Overview_, _Activity_, _Views_ and _Duration_:

### "Overview" Tab

The _Overview_ tab contains a quick summary and key metrics from your presentation analytics:

- Last Presentation Activity
- Total Presentation Opens
- Unique Presentation Visitors
- Average Presentation Completion Rate %
- Total Slide Views
- Total Time Viewed
- Average Slides Viewed Per Visit
- Average Total Duration Per Visit

This tab also also allows you to create and view [custom share links](/pitchdeck/web/share) for your presentation.

### "Activity" Tab

The _Activity_ tab provides a complete overview of all link views and slide interactions with your presentation. You'll be able to see a list (from newest to oldest) of every time someone has opened your presentation, what slides they interacted with, and for how long.

- Share Link
- Opened
- Location
- Device/OS/Browser
- Total Slide Views
- Total Time Spent
- Completion Rate %

Clicking on any session row will expand it with more details to reveal exactly which slides were viewed, in the order they were viewed in, and for how long. Clicking on the thumbnail for any slide will also zoom and scroll to that slide on your Figma canvas.

> **Tip:** **Downloading your sessions to a CSV**. You can instantly download the sessions you're viewing on the _Activity_ tab to a .csv file by clicking the **Download CSV** button in the top/right of the tab.

### "Views" Tab

The _Views_ tab displays a bar chart of the total views per slide number, which gives a quick high-level overview of which slides have been viewed the most.

> **Tip:** **Downloading your views chart to a JPG**. You can instantly download the chart as it currently appears on the _Views_ tab to a .jpg file by clicking the **Download Chart** button in the top/right of the tab.

### "Durations" Tab

The _Durations_ tab displays a line chart of the total time spent per slide number, which gives a quick high-level overview of which slides have been viewed for the longest and shorest amounts of time.

> **Tip:** **Downloading your views chart to a JPG**. You can instantly download the chart as it currently appears on the _Durations_ tab to a .jpg file by clicking the **Download Chart** button in the top/right of the tab.

## Filtering your analytics data

You can easily filter the data showing in across all tabs in the Analyics panel by adjusting the options and toggles in the top menu bar of the Analyics panel.

### Filter by share link

Filtering by share link allows you to only show data from a certain link at once; this lets you quickly isolate statistics for a certain viewer or link. To change the share link filter option, click on the dropdown select menu at the top of the Analyics panel.

### Filter by time period

Filtering by time period allows you restrict the data to certain windows of time:

- All Time (since the first view your presentation received)
- Last 24 Hours
- Last 7 Days
- Last 14 Days
- Last 30 Days
- Last 90 Days

To change the time period filter option, click on the dropdown select menu at the top of the Analyics panel.

### Excluding your own views

By default, any views from yourself (eg. you've opened a Pitchdeck link to the current presentation in the browser on your own computer) will be included in the analytics data; you can optionally enable the *Exclude Your Views** toggle, which will exclude any link views that you've made on this computer.

---

---
url: "/pitchdeck/web/app.md"
description: "The Pitchdeck web app allows you to present your uploaded slides in the browser, using the URL and password generated in the Figma plugin."
---

# Using the Pitchdeck web app to present your slides

> The Pitchdeck web app allows you to present your uploaded slides in the browser, using the URL and password generated in the Figma plugin.

## Sharing/opening your presentation URL

[Video](/assets/videos/pitchdeck/web/open-presentation.mp4)

Once the upload has completed, you'll be able to copy the secure URL and password to view your presentation in the browser, using the Pitchdeck web app.

> **Tip:** **URL and password details can be accessed in the plugin later**. If you need to copy these URL and password details again later, you can do this by clicking the **Export Presentation** button in the Pitchdeck plugin toolbar, and ensuring the **Pitchdeck Presentation (Web URL)** option is selected. You will be able to copy/paste your URL and password details under the **Active Pitchdeck Presentation** section.

### Using a passwordless URL (auto login)

If you don't want to use a URL/password combo for your presentation, you can copy the **Passwordless URL (Auto Login)** link, which will automatically log you in upon visiting the page in your browser.

> **Note:** **QR code version can be found on the upload confirmation screen**. If you would like to easily open up the presentation link on your phone/tablet, you can scan the **Passwordless URL (Auto Login)** QR code on the upload confirmation screen, which will automatically log you in upon visiting the page in your browser.

### Showing and hiding the bottom toolbar/menu

The Pitchdeck web app toolbar will automatically be shown for **10 seconds** before fading away; you can access it again at any time by hovering over the bottom of the screen, which will reveal the toolbar, and then automatically fade away instantly by hovering the mouse outside it again.

## Navigating the slides in your presentation

[Video](/assets/videos/pitchdeck/web/navigating-slides.mp4)

You can navigate between your slides in the Pitchdeck web app by clicking on the **Prev** and **Next** buttons in the Pitchdeck web app toolbar at the bottom of the page, or by pressing the **Left Arrow** or **Right Arrow** keys on your keyboard. Pressing the **Space** key on your keyboard will also move to the next slide.

### Jumping between slides in your presentation

If you need to jump directly to a certain slide in your uploaded presentation, you can use the slide selector in the Pitchdeck web app toolbar at the bottom of the page. Clicking on any of the slides in the select box options will instantly jump to viewing that specific slide.

## Toggling slide numbers

[Video](/assets/videos/pitchdeck/web/toggle-numbers.mp4)

You can show visible slide numbers in your presentation by clicking the **Numbers** button in the Pitchdeck web app toolbar at the bottom of the page.

> **Tip:** **Automatically enable page numbers via the share URL**. To automatically enable numbers when sharing a link, you can add a "numbers=1" query string parameter to the end of your Pitchdeck URL (eg. "slides/xxxxxx?numbers=1" or "slides/xxxxxx?token=xxxxxx&numbers=1", if you're using an auto-login URL).

## Using the pointer overlay

[Video](/assets/videos/pitchdeck/web/pointer-cursor.mp4)

You can enable a pointer overlay by clicking the **Pointer** button in the Pitchdeck web app toolbar at the bottom of the page. This will show a pointer overlay on your presentation. You can change the default pointer (the red laser) to something else by clicking on another pointer in the list of pointer options available above the Pitchdeck web app toolbar while the pointer is active.

When the pointer is active, you can move your mouse around the screen normally to act as the pointer, displaying the pointer cursor you've selected.

Clicking the **Pointer** button again, while the pointer is active, will hide the pointer and the cursor options from your presentation.

## Downloading your speaker notes

[Video](/assets/videos/pitchdeck/web/download-notes.mp4)

You can download all of the speaker notes from your presentation to a `.txt` file by clicking on the **Download Notes** button in the Pitchdeck web app toolbar at the bottom of the page.

> **Tip:** **Notes also viewable in Speaker Mode in the Pitchdeck Web App**. Besides using the **Downdload Notes** option, you can also view your speaker notes by using the **Speaker Mode** (or **Remote**) option.

## Toggling fullscreen mode

[Video](/assets/videos/pitchdeck/web/toggle-full-screen.mp4)

If you would prefer to view your presentation in full screen mode (instead of the windowed browser), you can click on the **Fullscreen** button in the Pitchdeck web app toolbar at the bottom of the page. You can exit fullscreen mode at any time by pressing the **esc** button on your keyboard, or clicking on the **Fullscreen** icon button again.

## Minimize or expand the navigation toolbar

[Video](/assets/videos/pitchdeck/web/toggle-toolbar.mp4)

If the toolbar at the bottom of the screen is getting in the way of interacting with something in your slides, you can quickly toggle its visibility on and off by clicking on the **Minimize Toolbar** and **Expand** icon buttons in the Pitchdeck web app the bottom of the page.

## Recording your designs to a video file

[Video](/assets/videos/pitchdeck/web/record-screen.mp4)

You can record your presentation in the Pitchdeck web app by clicking on the **Record** button in the Pitchdeck web app toolbar at the bottom of the page. This will prompt you to allow the page to access screen sharing and audio. Once you've done this, you'll be able to select the browser tab as the source that you would like to share and record.

To stop the video recording, you can click on the **Stop** button in your browser or click the **Record** icon button again.

Stopping the recording will automatically download your `.webm` video to your computer's default download folder.

> **Note:** **Video will be auto downloaded if the tab is closed**. Just in case you accidentally close the tab while the screen is being recorded, the Pitchdeck web app will automatically stop the recording and download the video file, recorded up until the time that the tab was closed.

### Opening and viewing your recorded video file

After the `.webm` file save been downloaded, you'll be able to upload it to your own website, send it to someone via Slack (or another method) or edit/convert it to another video. The easiest way to open the downloaded video file is to drag the downloaded file into your web browser, and using that to play it back.

## Activating the webcam overlay

[Video](/assets/videos/pitchdeck/web/webcam-overlay.mp4)

You can use your webcam as a draggable/resizable overlay to sit over your presentation in the Pitchdeck web app by clicking the **Webcam** button in the Pitchdeck web app toolbar at the bottom of the page. This will prompt you to allow the page to access your webcam. Once you've done this, you'll be able to see your webcam sitting over the presentation area.

To change the position of the webcam overlay, you can click and drag your mouse on the overlay and move it to a new position anywhere on the screen. To resize the overlay, click on the overlay, then click and drag your mouse on the square anchor points around the square.

---

---
url: "/pitchdeck/web/embed.md"
description: "You can optionally self-host your Pitchdeck web presentation as an iFrame embed on your own server/domain by deploying the downloadable `index.html` file from the plugin to your platform of your choice."
---

# Self-hosting a Pitchdeck web presentation on your own domain as an iFrame embed

> You can optionally self-host your Pitchdeck web presentation as an iFrame embed on your own server/domain by deploying the downloadable `index.html` file from the plugin to your platform of your choice.

### Video Tutorial: Self-hosting your Figma presentation on a custom domain

This video tutorial is a complete step-by-step guide showing you how to self-host your Figma presentation on a custom domain with the Pitchdeck plugin.
[Embedded media](https://www.youtube.com/embed/Dx07nBslRz8)

[Video](/assets/videos/pitchdeck/web/iframe-embed.mp4)

To download the HTML file, click the **Export Presentation** button in the Pitchdeck toolbar, then ensure the **Pitchdeck Presentation (Web URL)** option is selected as the presentation export format. Once you've configured your export settings, you can click the **Upload Web Presentation** button to begin [uploading your slides](/pitchdeck/web/upload).

Once the upload has completed, click on the **Get Embed Code (Self-Hosted)** accordion option at the bottom of the upload the confirmation window, then click the **Download HTML File** button to download an `index.html` file directly to your computer.

The single `index.html` file that's downloaded from the Pitchdeck plugin is pre-configured with your Pitchdeck presentation URL, and will automatically load a responsive `` embed onto the page when it's deployed (please see below for [some simple hosting platform options](#platforms-where-you-can-self-host-your-pitchdeck-html-file) to upload your HTML file) and opened in the browser.

> **Tip:** By default, the embed is password protected, but you can optionally _enable_ the **Auto Login** toggle to automatically login when the page (hosted on your own custom URL) is loaded.

## Platforms where you can self-host your Pitchdeck HTML file

The `index.html` file that's downloaded from the Pitchdeck plugin can be hosted anywhere you like (eg. an [Amazon S3](https://aws.amazon.com/s3/) bucket or any web server you already have access to).

If you're looking for an easy way to host the file and also add a custom domain name (usually included as an optional plan upgrade), you can find some easy to use platforms and services below:

- [Tiiny Host](https://tiiny.host/)
- [Static.app](https://static.app/)
- [Pages Drop](https://edgeone.ai/pages/drop)
- [StaticHost](https://statichost.host/)
- [Cloudflare Pages](https://pages.cloudflare.com/)
- [Static.run](https://static.run/)
- [Netlify Drop](https://app.netlify.com/drop)

---

---
url: "/pitchdeck/web/login.md"
description: "You can optionally customize the look of your login page for any Pitchdeck Web URL by by changing colors and background settings."
---

# Customize your Pitchdeck web app login page

> You can optionally customize the look of your login page for any Pitchdeck Web URL by by changing colors and background settings.

[Video](/assets/videos/pitchdeck/web/login-customizer.mp4)

You can optionally customize the look of your Pitchdeck web presentation login page by changing colors and backgrounds when the **Pitchdeck Presentation (Web URL)** option is selected in the **Export** panel.

> **Tip:** Please note that **you will need to re-copy your customized login page URL** when you make a change to any colors or backgrounds, as the URL parameters will change and be used to set the customizations when the URL is pasted into the browser.

---

---
url: "/pitchdeck/web/multiple-presentation-urls.md"
description: "You can create new Pitchdeck web URLs at any time by creating a brand new Page in your Figma file (or create a brand new Figma file) and re-run the Pitchdeck plugin on the new page to get a fresh web URL."
---

# Creating multiple/new Pitchdeck presentation URLs in the same Figma file

> You can create new Pitchdeck web URLs at any time by creating a brand new Page in your Figma file (or create a brand new Figma file) and re-run the Pitchdeck plugin on the new page to get a fresh web URL.

[Video](/assets/videos/pitchdeck/export/create-new-page-and-web-presentation-url.mp4)

Each "Page" in a Figma file is assigned a unique presentation URL by the Pitchdeck plugin, so updates made to the deck and re-uploaded within that page will update the presentation on that page's URL.

To have multiple URLs, creating a new "page" via the left hand column in Figma inside your file (or just creating a new Figma file) will create a brand new URL/password specific to that page once it's uploaded for the first time via the plugin.

> **Warning:** **Duplicating a Figma file will duplicate its URL/password**. Please note that "duplicating" a Figma file will also carry over its URL/password from the original once, so it's always best to create a blank one if you need a new URL. This allows you to maintain a separate presentation deck per page within a Figma file (or just use entirely separate Figma files to do this). You can have an unlimited amount of presentation URLs this way.

---

---
url: "/pitchdeck/web/observer.md"
description: "Observer mode allows you to share a link with your audience that lets them view your presentation on their own screen while staying in sync with your slides."
---

# Sharing an observer mode URL

> Observer mode allows you to share a link with your audience that lets them view your presentation on their own screen while staying in sync with your slides.

[Video](/assets/videos/pitchdeck/web/copy-observer-link.mp4)

If you're presenting your deck to a remote audience and would like each of them to follow along with you while you present (_without_ having to share your entire screen via video conferencing software), you can use the "Observer Mode" feature in the web app.

You can copy the shareable observer mode URL for your presentation by clicking the **Observer Mode** button in the speaker mode toolbar at the bottom of the window, then clicking on the **Copy URL to Share** button to copy the URL to your clipboard. If you're viewing a Pitchdeck password-less URL, you'll have the option of copying a password-less observer mode URL; otherwise you can copy the URL that requires your presentation password to access it.

---

---
url: "/pitchdeck/web/remote.md"
description: "Speaker mode allows you to control your presentation from a different screen with a pop-out browser window, or by scanning a QR code with your phone/tablet."
---

# Using speaker mode remote to present from another screen

> Speaker mode allows you to control your presentation from a different screen with a pop-out browser window, or by scanning a QR code with your phone/tablet.

## Opening your speaker mode window

[Video](/assets/videos/pitchdeck/web/open-speaker-window.mp4)

To open speaker mode in a new window from your main presentation window, you can click the **Speaker Mode** button in the Pitchdeck web app toolbar at the bottom of the page. This will pop-out a new window that you can drag onto a second screen, allowing you to control your presentation from one screen, while having the main presentation on a different screen.

## Navigating between slides

[Video](/assets/videos/pitchdeck/web/speaker-mode-navigation.mp4)

You can navigate between your slides in speaker mode by clicking on the **Prev** and **Next** buttons in the speaker mode toolbar at the bottom of the page, or by pressing the **Left Arrow** or **Right Arrow** keys on your keyboard. Pressing the **Space** key on your keyboard will also move to the next slide in the main presentation window.

If you need to jump directly to a certain slide in your presentation, you can use the slide selector left hand side of the page. Scrolling through your slides and clicking on any of them will instantly jump to viewing that specific slide in the main presentation window.

## Changing the font size of your speaker notes

[Video](/assets/videos/pitchdeck/web/speaker-font-size.mp4)

To toggle between different font sizes for your speaker notes, you can click the **Font Size** button in the speaker mode window; clicking the button will cycle through **18px**, **22px**, **26px** and **30px** font sizes. This can be useful if you're standing further away or closer to the screen while presenting.

## Using the presentation timer

[Video](/assets/videos/pitchdeck/web/speaker-timer.mp4)

To keep track of how long you've been speaking, you can use the presentation timer built-in to the speaker mode window. The timer will start automatically upon opening the speaker window, but you can click **Pause** at anytime to pause the timer; clicking **Reset** will restart the timer back to **00:00:00**; clicking **Start** will resume the presentation timer.

## Toggling slide numbers

[Video](/assets/videos/pitchdeck/web/speaker-slide-numbers.mp4)

You can show visible slide numbers in your presentation by clicking the **Numbers** button in the speaker mode toolbar at the bottom of the window.

## Controlling the pointer

[Video](/assets/videos/pitchdeck/web/speaker-pointer-cursors.mp4)

You can enable a pointer overlay by clicking the **Pointer** button in the speaker mode toolbar at the bottom of the window. This will show a pointer overlay on your main presentation window. You can change the default pointer (the red laser) to something else by clicking on another pointer in the list of pointer options available above the speaker mode toolbar while the pointer is active.

When the pointer is active, you can click/hold and drag your mouse around the pointer pop-up area in the speaker mode window to act as the pointer, which will control the position of the pointer on the main presentation window.

Clicking the **Pointer** button again, while the pointer is active, will hide the pointer and the cursor options in your main presentation window.

## Using your phone or tablet as the speaker mode remote control

[Video](/assets/videos/pitchdeck/web/speaker-qr-code.mp4)

To use your phone or tablet as a remote control for your presentation, you can click the **Remote** button in the Pitchdeck web app toolbar at the bottom of the page. This will open an overlay showing a QR code; scanning the QR code with the camera on your phone/tablet will open a new page in the web browser on your phone/tablet, allowing you to control your main presentation window wirelessly.

> **Note:** **Controls in the phone/tablet are the same as the speaker mode window**. Using the **Remote** option will load up the same remote control as the **Speaker Mode** option on your computer, with an optimized interface for smaller screens. For help using these controls, please see the documentation above.

---

---
url: "/pitchdeck/web/share.md"
description: "You can create unique share links for your web presentations, which allows you to view analytics for links you've shared with different people."
---

# Creating and managing custom share link URLs

> You can create unique share links for your web presentations, which allows you to view analytics for links you've shared with different people.

[Video](/assets/videos/pitchdeck/web/create-custom-urls.mp4)

When you export your presentation to the Pitchdeck Web App, it will automatically generate a default share link URL that you can use to present your slides or share with another person to view.

However, in the **Analytics** _Overview_ tab, you can also create custom share URLs for specific people or groups, which then allows you to [filter by share link](/pitchdeck/web/analytics#filter-by-share-link) when viewing your presentation data, so you can reliably see analytics just for certain links.

## Creating a custom link

To create a new custom share link, go to the _Overview_ tab in your **Analytics** panel, and under the _Create Custom Shareable URL_ section, input a label for the share link (eg. the viewer's name or company) and then click the **Create New Custom Share URL** button; this will create a brand new share URL and you'll see it added under the _Custom Share Link URLs_ list.

Please note, that label you give your custom link will _never_ be shown outside of the plugin, so the person or group that you're sharing the custom link with will never see it; it's just to help you identify which data is for which link in your analytics stats later.

## Sharing a custom link

Clicking on the **Custom Share URL & Settings** accordion item in _Custom Share Link URLs_ list will expand it to reveal the URL and password for that custom link; clicking on the **Copy** icon button will copy the link/password to your clipboard, which you can then share with the person or group that the custom link was created for.

## Managing a custom link

You can rename any share link by clicking **Edit Label** next to your share link name in the _Custom Share Link URLs_ list.

You also have a few other options that you can toggle, per custom link:

- **Enable All Toolbar Buttons** - By default, only the thumbnails for each slide will be shown for custom links; optionally enabling this toggle will include all of the Pitchdeck web app's toolbar buttons and options.
- **Turn Off Activity Tracking** - By default, custom links will have their activity tracked (for you to see in your **Analytics** panel); you can optionally enable this toggle to _prevent_ any activity being logged for a certain custom share link.
- **Disable This Link** - You can optionally disable a custom link at any time by enabling this toggle; this will ensure that the presentation cannot be viewed by anyone with that custom link. You can re-enable the link at any time, if needed, by turning off this toggle again, which will allow the presentation to be viewed with this link.

---

---
url: "/pitchdeck/web/upload.md"
description: "This export option will upload your slides from Figma to the Pitchdeck web app, automatically generating a URL and password that will allow you to present your slides online using your web browser."
---

# Uploading your slides to the Pitchdeck web app

> This export option will upload your slides from Figma to the Pitchdeck web app, automatically generating a URL and password that will allow you to present your slides online using your web browser.

[Video](/assets/videos/pitchdeck/export/export-web-presentation-url.mp4)

To use this option, click the **Export Presentation** button in the Pitchdeck toolbar, then ensure the **Pitchdeck Presentation (Web URL)** option is selected as the presentation export format. Once you've configured your export settings, you can click the **Upload Web Presentation** button to begin uploading your slides.

> **Info:** **URLs will expire after 180 days of not being viewed**. Presentation URLs will automatically expire after a 180 day period of inactivity (180 days after the link was last accessed and viewed); if you would like to re-activate the URL after it has expired, simply run Pitchdeck in the Figma file and use the **Upload Web Presentation** button again.

### Using Retina @2x Images

Enabling the **2x Retina Images** toggle option will automatically export any **JPG** and **PNG** images at retina (@2x) resolution. This will give you sharper looking images in your presentation, but will also increase the file sizes of any **JPG** and **PNG** images.

### Compressing images

Enabling the **Compress Images** toggle option will compress any **JPG** and **PNG** images used in your presentation.

### Downsizing your Figma layer fills

Enabling the **Downsize Large Figma Image Fills** toggle will automatically resize (and lightly compress) any Figma image fills on your layers to their actual layer size. This is useful if you've originally imported high resolution images to your Figma file, but then shrunk the layer dimensions down to be much smaller (with the original large image file still being used).

One common case of this would be adding a large image from Unsplash (or another stock photo site/plugin), the resizing that layer to be used as a much smaller "card" or "avatar" image. This can cause the performance of your Figma file to slow down and potentially crash when exporting these layers via the Pitchdeck export options; so using this feature will help save file size and improve page performance in your Figma file.

### Copying your presentation URL and password

Once the upload has completed, you'll be able to copy the secure URL and password to view your presentation in the browser, using the Pitchdeck web app.

> **Tip:** **URL and password details can be accessed in the plugin later**. If you need to copy these URL and password details again later, you can do this by clicking the **Export Presentation** button in the Pitchdeck plugin toolbar, and ensuring the **Pitchdeck Presentation (Web URL)** option is selected. You will be able to copy/paste your URL and password details under the **Active Pitchdeck Presentation** section.

### Using a passwordless URL (auto login)

If you don't want to use a URL/password combo for your presentation, you can copy the **Passwordless URL (Auto Login)** link, which will automatically log you in upon visiting the page in your browser.

> **Note:** **QR code version can be found on the upload confirmation screen**. If you would like to easily open up the presentation link on your phone/tablet, you can scan the **Passwordless URL (Auto Login)** QR code on the upload confirmation screen, which will automatically log you in upon visiting the page in your browser.

### Changing your Pitchdeck URL password

By default, the Pitchdeck plugin generates a secure random password for you, but if you would like to change this to a custom password of your own, you can do this by enabling the **I want to change the URL password** toggle in the upload settings panel, then entering your new password in the input field (a minimum 6 characters is required) and clicking the **Set Password** button, which will update the password for your Pitchdeck URL for this Figma page.

> **Warning:** **Updating the password will lock out anyone who had the previous password**. Updating the password will prevent anyone who may have had the previous password from looking at your URL; if you need them to still have access, please re-share the new password with them.

### Deleting your uploaded presentation URL

You can delete your uploaded presentation URL that you've generated using the Pitchdeck plugin by clicking the **Export Presentation** button in the Pitchdeck plugin toolbar, then enabling the toggle option: **I would like to delete the active URL**; enabling this toggle will allow you to click the **Delete Presentation URL** button.

You will see a confirmation message letting you know that the presentation URL was deleted.

> **Warning:** **Deleting the URL means anyone with the link won't be able to see it anymore**. Clicking the **Delete Presentation URL** button will delete the uploaded presentation URL. Anyone with that URL won't be able to view the presentation anymore. However, you can always re-upload the presentation at anytime by clicking the **Upload Web Presentation** button again, if needed.

### Self-hosting your presentation as a custom iFrame embed (optional)

If you'd prefer to [self-host the web presentation on your own server/domain](/pitchdeck/web/embed), you can optionally download and deploy an `index.html` file that will automatically display an iFrame with your presentation embedded.

---

---
url: "/pitchdeck/workflow/numbers.md"
description: "You can optionally have Pitchdeck automatically add and sync your page numbers whenever the slides are added/removed or re-ordered using the Pitchdeck sorting options."
---

# Automatically adding page numbers to slides

> You can optionally have Pitchdeck automatically add and sync your page numbers whenever the slides are added/removed or re-ordered using the Pitchdeck sorting options.

[Video](/assets/videos/pitchdeck/design/add-auto-page-numbers.mp4)

To enable this feature, click on the **Page** icon button in the top left header of the plugin, then click the **Enable Auto Slide Numbers** to add the Figma component, which you can customize, and the instances of the component will be added to your slides automatically.

You can also change the color scheme; by default, the **Auto Text Layer** option is selected, where the text color will automatically be determined based on each frame's solid background fill in Figma.

Changing the position of the page numbers can be updated by changing the Vertical (**Top/Center/Bottom**) and Horizontal (**Left/Center/Right**) select box options.

---

---
url: "/pitchdeck/workflow/sort.md"
description: "The order of the slides in your exports is determined by the order of the slides you set in the plugin by using the ordering options below."
---

# Ordering your slides inside of the plugin

> The order of the slides in your exports is determined by the order of the slides you set in the plugin by using the ordering options below.

## Automatically ordering your slides using the Quick Sort options

[Video](/assets/videos/pitchdeck/design/reorder-automatic-dropdown.mp4)

There are a number of different ways to autoamtically sort the order of your frames for your presentation slides:

### Sort frames by Figma Layer Order

Selecting the **Sort frames by Figma Layer Order** option will automatically sort your the order of your frames to match their order in your Figma layers.

### Sort frames by Figma Layer Name

Selecting the **Sort frames by Figma Layer Name** option will automatically sort your the order of your frames to match their alphabetical order in your Figma layers.

### Sort frames visually by Columns

Selecting the **Sort frames visually by Columns** option will automatically sort your the order of your frames to match their visual positioning order by columns in your Figma design.

### Sort frames visually by Rows

Selecting the **Sort frames visually by Rows** option will automatically sort your the order of your frames to match their visual positioning order by rows in your Figma design.

## Manually ordering your slides using drag and drop

[Video](/assets/videos/pitchdeck/design/reorder-manually-drag-and-drop.mp4)

You can manually sort the order of your slides using drag and drop, by **clicking/holding** your mouse on the drag icon (next to any of your slides), and **dragging it up or down** to shift its order in your uploaded frames, then **dropping** it to confirm that order. This custom ordering will be saved if you want to switch between ordering options, so you can get it back by clicking the **Sort frames by Custom Order** option in the sorting select box.

---

---
url: "/pitchdeck/workflow/spellcheck.md"
description: "You can use the built-in spellcheck feature to automatically find any typos (for dozens of languages) in your slides and then quickly apply fixes with one click."
---

# Spell checking your slides

> You can use the built-in spellcheck feature to automatically find any typos (for dozens of languages) in your slides and then quickly apply fixes with one click.

[Video](/assets/videos/pitchdeck/design/spellcheck-slide-text.mp4)

To get started with this feature, click on the **Spell Check** icon button in the plugin subheader. When the settings panel opens, you can select the language of the text you would like to spell check by clicking on the **Language** select box and changing the language that matches your Figma text content.

## Finding spelling mistakes in your text layers

Once you've selected your language, you can click the **Find Spelling Mistakes** button to begin searching _every_ text layer on the current Figma page for spelling mistakes.

> **Info:** **More Figma text layers will take longer**. The more text layers in your Figma file, the longer it will take to find spelling mistakes.

## Zooming in on text layers that contain spelling mistakes

Once the search is complete, you will see a list of words that contain spelling mistakes.

To instantly see where each text layer is in your Figma file, you can click on any word in the results list to expand it and show the frame(s) where the text is located in your page; clicking on the **Search** icon next to any of these frames will instantly move the focus of your Figma page to show where the text layer is located.

## Applying spelling corrections to text layers

To apply a correction to a word that contains a spelling mistake, you can click on any of the **suggestion** buttons underneath each word; clicking on any of the buttons will instantly change the word to the new suggested word in each of the locations where it exists.

## Undoing spelling corrections to text layers

To undo a correction you made to a word, you can click the **Undo** button besides the "corrected to" notification after a suggestion was applied; clicking on the **Undo** button will instantly change the corrected word back to the original word in each of the locations where it exists.

---

---
url: "/pitchdeck/workflow/statuses.md"
description: "To make it easier to track which slides are approved, in progress or still need attention, you can optionally set statuses to any of your slides."
---

# Adding workflow statuses to your slides

> To make it easier to track which slides are approved, in progress or still need attention, you can optionally set statuses to any of your slides.

[Video](/assets/videos/pitchdeck/design/set-workflow-statuses.mp4)

You can use this feature by clicking on the **status dropdown selector** next to the name of your slide, and select a status from:

- No Status
- Todo
- In Progress
- Ready For Review
- Approved

This will show a status indicator icon in your list of slides inside of the plugin; statuses don't do anything else that will affect your slides other than showing this small visual indicator.

---

---
url: "/pitchdeck/workflow/tidy.md"
description: "You can optionally automatically sort the slides on your Figma canvas into a grid, based on the order of your slides in the Pitchdeck plugin."
---

# Automatically tidying your slides into an ordered grid

> You can optionally automatically sort the slides on your Figma canvas into a grid, based on the order of your slides in the Pitchdeck plugin.

[Video](/assets/videos/pitchdeck/design/auto-tidy-arrange-slide-canvas.mp4)

To use this feature, click on the **Page** icon button in the top left header of the plugin, then click the **Re-Order & Tidy Figma Slide Layers** button to instantly tidy up the slides on your Figma page into an ordered grid.

You can also tweak the number of **Slides Per Row** by using the select dropdown input, and also toggle the **Add Fade to Unchecked Slides** option, which will ensure that the layer opacity is set to 30% for any slides in the Pitchdeck plugin that have been _unchecked_ (to exclude them from any exports).

---

---
url: "/pixelay/browser-extension.md"
description: "How to install the Pixelay Chrome extension to enable URL comparisons in the browser."
---

# Installing the Pixelay Chrome Extension

> How to install the Pixelay Chrome extension to enable URL comparisons in the browser.

[Video](/assets/videos/pixelay/extension/install-extension.mp4)

To compare your designs with your website URLs, you'll need to [Install the Pixelay Chrome Extension](https://chrome.google.com/webstore/detail/pixelay-for-figma/gnbafbeabkbkecmbedfgebgboicpnkpp) first; this will allow you to compare websites that are live, in development (eg. localhost) or require authentication.

---

---
url: "/pixelay/compare-designs.md"
description: "Guide to using the Pixelay web app to compare Figma designs with live URLs using overlays, modes, and tools."
---

# Comparing Figma designs with real website URLs in the browser

> Guide to using the Pixelay web app to compare Figma designs with live URLs using overlays, modes, and tools.

Once you've generated your URL in the Pixelay Figma plugin, you can open it in your web browser to start using the Pixelay web app. The web app is what allows you to compare the designs you uploaded via the Figma plugin with the URLs of your website development build.

The web app works by loading each URL to compare as an [iFrame](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe), and overlays your Figma designs on top of them. The size of each uploaded image is used to set the width and height of each iFrame, which allows you to test out "responsiveness" of your website build against their intended designs from Figma.

> **Note:** **Install the Pixelay Chrome Extension**. To enable comparing your designs with URLs via Pixelay, please install the [Pixelay Chrome Plugin](https://chrome.google.com/webstore/detail/pixelay-for-figma/gnbafbeabkbkecmbedfgebgboicpnkpp), which will run in the background and load up Pixelay when a URL from the plugin is detected in the browser.

## Scrolling the page to view all of your frames

[Video](/assets/videos/pixelay/compare/web-overview.mp4)

You can navigate the page completely via vertical and horizontal scrolling (either using your mousewheel or by clicking and dragging the scrollbars). Scrolling left and right will allow you to see all of the different frames you uploaded, and scrolling up and down will allow you to see all of the content for each of those frames.

> **Tip:** If your Pixelay project has more than 20 Figma frames, to avoid your page slowing down by loading all the URLs at once to scroll through, the Chrome extension will automatically swap into only showing one frame at a time to compare; you can swap between them by choosing any of your Figma frames from the controls panel in the bottom right of the screen.

## Toggling between the Figma design and website build modes

[Video](/assets/videos/pixelay/compare/toggler.mp4)

To quickly toggle between the original Figma design and your website build, you can click on the **Original Figma Design** and **Live Website Build** icon buttons in the Pixelay control panel.

Clicking on each of these will toggle the selected mode, and allow you to see each one in isolation from the other mode.

> **Tip:** **Interacting with the live website previews**. Toggling the overlay mode to **Live Website Build** will allow you to interact with the page. This can be useful if you need to use form fields or click anything that help bring your live website more visually in sync with the original Figma designs you're comparing.

## Using the transparent overlay mode

[Video](/assets/videos/pixelay/compare/opacity-slide.mp4)

To compare your Figma designs and website build using different levels of opacity, you can click the **Transparent Overlay** icon button to enable this comparison mode. This will activate the transparent overlay mode.

By clicking/holding and dragging the **Overlay Opacity** slider, you can specify the amount of transparency between the original design and the live URL.

## Using the split screen overlay mode

[Video](/assets/videos/pixelay/compare/swiper.mp4)

To compare your Figma designs and website build using a split screen approach, you can click the **Split Screen Overlay** icon button to enable this comparison mode. This will activate the split screen overlay mode.

By clicking/holding and dragging the blue **Split Line** in the middle of each design, you can specify the amount of the original design and the live URL to be visual revealed at the same time.

## Using the blend-diff overlay mode

[Video](/assets/videos/pixelay/compare/diff.mp4)

To compare your Figma designs and website build using a blend-diff approach, you can click the **Blend-Diff Overlay** icon button to enable this comparison mode. This will activate the blend-diff overlay mode.

By clicking/holding and dragging the **Overlay Opacity** slider, you can specify the amount of transparency between the original design and the live URL.

## Using the draggable overlay mode

[Video](/assets/videos/pixelay/compare/draggable.mp4)

To manually adjust the positioning of the overlay for all of your designs, you can click the **Draggable Overlay** icon button to enable this comparison mode. This will activate the draggable overlay overlay mode.

By clicking/holding and dragging the **Overlay Opacity** slider, you can specify the amount of transparency between the original design and the live URL.

## Using the measure pixels ruler

[Video](/assets/videos/pixelay/compare/measure.mp4)

To measure the distance between any elements on your page with a pixel ruler, you can click the **Measure Pixels** icon button to enable this measurement mode. This will activate the measure pixels mode.

While this mode is active, you can measure the pixel distance on the page by by clicking/holding and dragging your mouse cursor between any two points on the page.

By clicking/holding and dragging the **Overlay Opacity** slider, you can specify the amount of transparency between the original design and the live URL.

## Toggling Between Environment URLs

[Video](/assets/videos/pixelay/compare/select-environment-url.mp4)

If you've [added any extra environment URLs](/pixelay/upload-designs#adding-multiple-environment-website-urls-optional) via the Pixelay Figma plugin before uploading your designs to compare, you'll be able to toggle between these from the **Change Environment Base URL** dropdown selector in the Pixelay web app controls panel.

This will automatically swap the base URL for any frames in your Pixelay previews; for example, selecting `https://dev.yoursite.com` would change all `https://www.yoursite.com` URLs to have a base URL of `dev.yoursite.com`, including any page specific URLs (eg. a Figma frame set to have a page URL of `https://www.yoursite.com/about` would load `https://dev.yoursite.com/about` instead).

## Using with a hot reload enabled development environment

[Video](/assets/videos/pixelay/compare/hot-reload.mp4)

If your local development URLs are running on an implmentation of [Hot Module Replacement (HMR)](https://webpack.js.org/concepts/hot-module-replacement/) you will see the frames in the Pixelay web app update automatically in real time (as they're pointing to your development URLs in iFrames) without needing to refresh the Pixelay web app URL itself.

Any changes that you make locally in your code editor will be reflected in the Pixelay web app when you save those files and HMR kicks-in to inject those changes to your URLs.

---

---
url: "/pixelay/faq/plans.md"
description: "To get unlimited usage of all of the Pixelay Pro features, you will need to purchase a license from the [Hypermatic website](https://hypermatic.com/pixelay#pro)."
---

# Pixelay Free vs Pixelay Pro

> To get unlimited usage of all of the Pixelay Pro features, you will need to purchase a license from the [Hypermatic website](https://hypermatic.com/pixelay#pro).

Pixelay includes 10 free trials of the _Pro_ version. Once these trials have been used up, the Figma plugin will revert to their _Free_ version, which will have limited functionality.

  - **Pixelay Free**: ### Mobile Design Comparisons Unlimited Usage       ### Desktop Design Comparisons Try during 10 Pro Trials
  - **Pixelay Pro**: ### Mobile Design Comparisons Unlimited Usage       ### Desktop Design Comparisons Unlimited Usage

---

---
url: "/pixelay/faq/security.md"
description: "Pixelay runs as an official plugin inside of Figma's own app, which are reviewed and approved by the Figma team."
---

# Pixelay Security

> Pixelay runs as an official plugin inside of Figma's own app, which are reviewed and approved by the Figma team.

The Figma plugin is run directly from Figma's own servers, and runs inside of a your Figma file, which means that it inherits all of the [security](https://www.figma.com/security/) and infrastructure of the Figma platform, which exceed industry standards for data protection and security:

- SOC 2 Type 2
- SOC 3
- Cloud Security Alliance (CSA) STAR: Level 1
- ISO/IEC 27001:2013
- ISO/IEC 27018:2019
- EU Cloud Code of Conduct (COC): Level 2

There's **no additional software** that needs to be installed to use the Figma plugin, as Figma plugins run as a built-in part of Figma's own native functionality, and all Figma plugins easily accessibile and can be instantly run from inside any Figma file, or via the official [Figma Community](https://www.figma.com/community) ecosystem inside of the Figma app.

If your organization is already approved to use Figma, then you _already have access_ to Figma plugins.

## How Pixelay works

The [Pixelay Figma plugin](https://www.figma.com/community/plugin/816424186244407164) helps users compare their Figma design mockups with their real website URLs.

Pixelay is designed to be privacy and security focused, so any comparisons happen by using _your own domain_ via the [Pixelay Browser Extension](https://chrome.google.com/webstore/detail/pixelay-for-figma/gnbafbeabkbkecmbedfgebgboicpnkpp), and any image uploads are encrypted with AES-256.

The Pixelay Web App loads up _your own domain URLs_ that you've specified to compare as `` tags, which allows you to compare multiple pages and designs on the same web page in the browser at the same time; nothing from your website is ever uploaded/processed/used/read by anything, it's just in a "read only" state by being embedded into an `` via the [Pixelay Browser Extension](https://chrome.google.com/webstore/detail/pixelay-for-figma/gnbafbeabkbkecmbedfgebgboicpnkpp).

Any uploads and cloud storage services used by the Pixelay Plugin and Pixelay Web App are hosted on [Google Cloud](https://cloud.google.com/) (the same infrastructure that Google hosts all of its own products with), via [Google Firebase](https://firebase.google.com/).

As per the [Privacy and Security in Firebase](https://firebase.google.com/support/privacy), all Firebase services (aside from App Indexing) have successfully completed the **ISO 27001** and **SOC 1**, **SOC 2**, and **SOC 3** evaluation process, and some have also completed the **ISO 27017** and **ISO 27018** certification process.

## What Pixelay does and doesn't do

Pixelay uses the [Figma Plugins API](https://www.figma.com/plugin-docs/) to export Figma designs that can be compared with your own website URLs via the [Pixelay Browser Extension](https://chrome.google.com/webstore/detail/pixelay-for-figma/gnbafbeabkbkecmbedfgebgboicpnkpp) in the browser.

### Pixelay does

- Allow users to generate links to compare your designs with your own real website URLs (without needing a Figma account)..
- Allow you to use the [Pixelay Browser Extension](https://chrome.google.com/webstore/detail/pixelay-for-figma/gnbafbeabkbkecmbedfgebgboicpnkpp) to view your unique ID (on your _own_ domain).
- Encrypt image uploads with AES-256.
- Automatically deletes URL/uploads if not accessed for 180 days.

### Pixelay does _not_

- Make _any_ designs via the plugin publicly accessible or indexed by any search engines.
- Create any public URLs (the browser extension only runs on your _own_ domain).
- Collect or store _any_ personal information (Figma plugins *cannot* access any private information about Figma projects, Figma teams or Figma users).

## How Figma plugins work

Figma plugins are written in HTML/CSS/Javascript, and are run in a tightly controlled [sandbox environment](https://www.figma.com/plugin-docs/how-plugins-run/) inside of the main Figma application.

Figma plugins can only do whatever Figma allows them to do inside the permissions of the [Figma Plugins API](https://www.figma.com/plugin-docs/), and importantly, **plugins don't have any access to personal information** about the Figma user running the plugin.

## What Figma plugins can and can't do

As per the article on [Figma plugin security](https://www.figma.com/blog/how-we-built-the-figma-plugin-system/), there are a limited number of things that Figma plugins can do, and many more things that they can't do:

### Figma plugins can

- Only be run by an explicit user action
- Show UI in a single plugin-specific dialog
- Read any data in your Figma document (e.g. a “find layer by name” plugin)
- Modify any data in your Figma document (e.g. a “rename selected layers” plugin)
- Communicate with any server over the internet (e.g. an “import from service X” plugin)

### Figma plugins _cannot_

- Run by themselves
- Get information about the project or team that owns the file
- Access anything when they aren’t running
- Access data from any files other than the file they were run in
- Change Figma’s UI outside of the plugin UI dialog

> **Tip:** Figma account administrators at your company can [configure an allowlist of plugins](https://help.figma.com/hc/en-us/articles/4404228724759-Manage-plugins-and-widgets-in-an-organization) that are allowed inside the organization. This can be used to prevent untrusted Figma plugins from being run in any file in that organization.

---

---
url: "/pixelay/faq/troubleshooting.md"
description: "Troubleshooting guide for Pixelay covering extension setup, URL issues, export quirks, and network limitations."
---

# Troubleshooting Pixelay

> Troubleshooting guide for Pixelay covering extension setup, URL issues, export quirks, and network limitations.

### Pixelay not loading on URLs (Chrome Extension is required)

To enable comparing your designs with URLs via Pixelay, please install the [Pixelay Chrome Plugin](https://chrome.google.com/webstore/detail/pixelay-for-figma/gnbafbeabkbkecmbedfgebgboicpnkpp), which will run in the background and load up Pixelay when a URL from the plugin is detected in the browser.

  ### Next.js (Vercel) app not loading

If you're trying to compare a Next.js app via Pixelay, this can sometimes give an "Application error: a client-side exception has occurred" message and not load the page. If this happens, you can try using the non-Chrome extension based link below and insert your Pixelay ID: https://pixelay.hypermatic.com/YOUR_PIXELAY_PROJECT_ID_HERE (eg. https://pixelay.hypermatic.com/n4ok457201973)

  ### URL expiration

Your secure links and images will automatically be removed after a 180 day period of inactivity (180 days after the link was last accessed and viewed) to ensure they are not accidentally laying around after they've served their purpose.

  ### Thin white line around image exports

Occasionally some images will contain a faint, thin white line around the edges. Figma [does this](https://twitter.com/Skcrub/status/1255544876701270017) if a layer isn't positioned on a rounded pixel value (eg. Y: 156.76 or X: 56.3) will automatically result in this sub-pixel line getting included in the export. To resolve the issue, please ensure that your layer positions are all rounded pixel values.

  ### Websites using 'vh' CSS units

If your website CSS uses "vh" units for any elements, please note that these may appear much taller than they normally would at a reasonable browser height due to Pixelay setting the viewport height to be the same as your full Figma mockup.

  ### Create a brand new URL for your Figma file

Due to it being a fairly sensitive feature, instead of adding a button/icon to click, we've made this feature activate only by entering the "Konami Code" on your keyboard while the plugin is running:

    `Up, Up, Down, Down, Left, Right, Left, Right, B, A`

    Typing that sequence of keys on your keyboard will trigger the Pixelay plugin to create a brand new URL for your Figma file, so you could enter it in a duplicated Figma file to give it a different brand new URL than the original one.

  ### Pixelated image exports

If you're uploading your designs while the image assets in Figma are still progressively loading, they may be exported looking pixelated, as the image wasn't fully loaded in the Figma file before it was exported. To resolve this, please ensure that all of the images have loaded 100% and are looking sharp inside the Figma file before uploading your images with the Pixelay plugin.

    To help further with solving this issue, you can use the ["Downsizer" feature](https://docs.hypermatic.com/tinyimage/usage.html#downsizing-your-figma-layer-fills) to shrink down your image fills to match their layer size, which will shrink their file size and ensure they load much faster in your Figma file.

  ### Designs not uploading from the plugin, or images not loading in the web app

One reason this might be happening is if your ISP (internet service provider) is blocking the QUIC protocol. You can confirm this by opening up your developer console in the browser or in Figma and see the error message `ERR_QUIC_PROTOCOL_ERROR`.

    There are a couple of workarounds for this issue:

    1. Switching to your mobile phone's Wi-Fi hotspot/tether for your computer's internet connection
    2. [Disabling QUIC](https://kinsta.com/knowledgebase/err_quic_protocol_error/) in your browser

  ### Netskope blocking the Pixelay frames from loading

There is a known issue with [Netskope](https://www.netskope.com/) blocking access to Firebase databases; to resolve this, please ensure you allow `firestore.googleapis.com:443` (as per [this thread](https://stackoverflow.com/questions/52441316/firestore-grpc-behind-a-corporate-firewall-proxy)).

  ### VPN may be required in China

Please note, if you're in China, the accounts server _may_ be blocked by "The Great Firewall of China". If you're seeing an activation error, despite using a valid key, you will likely need to use a [VPN](https://protonvpn.com/free-vpn/) to resolve the issue.

  ### 'An error occurred while loading the plugin environment'

This may happen in the Figma desktop app if [the Use Developer VM](https://www.figma.com/plugin-docs/debugging/#developer-vm) debug setting in Figma is enabled by mistake; you can make sure it's turned off by **right-clicking** anywhere on your Figma canvas, hovering over **Plugins**, then hovering over **Development**, and making sure that the **Use Developer VM** is _unchecked_; after it is unchecked (and does _not_ have a tick icon next to it), re-running the Figma plugin should work as expected.

---

---
url: "/pixelay/overview/install.md"
description: "Ensure you're logged into your Figma account, then follow the steps below to install and run the [Pixelay Figma Plugin](https://www.figma.com/community/plugin/816424186244407164/pixelay-compare-design-to-web)."
---

# Install and run the Pixelay Figma Plugin

> Ensure you're logged into your Figma account, then follow the steps below to install and run the [Pixelay Figma Plugin](https://www.figma.com/community/plugin/816424186244407164/pixelay-compare-design-to-web).

### Video Tutorial: How to install (and remove) Figma plugins

This video tutorial is a complete step-by-step guide showing you the new process of how to install (and remove) Figma plugins after the mid-2024 "UI3" update to the Figma app
[Embedded media](https://www.youtube.com/embed/CzjxF2Jv6PM)

## Installing the Pixelay Figma Plugin

1. Open any Figma file.
2. Click on the **Actions** icon in the bottom Figma toolbar.
3. Click the **Plugins & Widgets** tab to filter results to Figma plugins.
4. Search for **Pixelay** in the search bar.
5. Click on the **Pixelay** search result.
6. Click the **Save** button to install the Pixelay plugin.

> **Note:** Figma users in a **Figma Organization** may only be able to install approved plugins. Please contact your Figma Org admin at your company to [approve the Pixelay plugin](https://help.figma.com/hc/en-us/articles/4404228724759-Manage-plugins-and-widgets-in-an-organization) if you're unable to install certain Figma plugins.

## Running the Pixelay Figma Plugin

Once you've [installed](#installing-the-figma-plugin) the **Pixelay** Figma plugin, to run the plugin in your Figma file:

  1. **Right-click** anywhere on your Figma file's page canvas
  2. Hover your mouse over the **Plugins** ▶ menu item
  3. Hover your mouse over the **Saved plugins** ▶ menu item
  4. Click on the **Pixelay** plugin menu item

> **Tip:** After you've run the **Pixelay** plugin once in a Figma file, you'll be able to quickly re-launch it by clicking the **Pixelay** icon in the right-hand side Figma column (under the **Plugin** subheading).

> **Warning:** Only Figma users with **Edit** access to a Figma file can run a Figma plugin in that Figma file; if you only have **View** permissions, you won't be able to run any Figma plugins in that file.

> **Note:** Pixelay supports Figma Dev Mode. If your QA or engineering team uses a Dev seat without edit access to the design file, switch the file into Dev Mode and run Pixelay from the Plugins section in the Inspect panel.

## Uninstalling the Pixelay Figma plugin

1. Open any Figma file.
2. Click on the **Actions** icon in the bottom Figma toolbar.
3. Click the **Plugins & Widgets** tab to filter results to Figma plugins.
4. Search for **Pixelay** in the search bar.
5. Click on the **Pixelay** search result.
6. Click the **Remove** button to uninstall the Pixelay plugin.

> **Note:** This will remove the plugin from your **Saved Plugins** list, however, the Figma plugin may still show up under your **Recents** list (if it has been recently run), as Figma saves this list of recent plugins in your browser's/app's local storage. The plugin will vanish from the Recents menu after other plugins are run to take its place.

---

---
url: "/pixelay/overview/pro.md"
description: "After trying out all the Pro features of Pixelay **10 times**, you can optionally upgrade to continue using all the extra features that are only available in the Pro version; or if you're a casual user, you can continue using the Free version forever."
---

# Activating Pixelay Pro

> After trying out all the Pro features of Pixelay **10 times**, you can optionally upgrade to continue using all the extra features that are only available in the Pro version; or if you're a casual user, you can continue using the Free version forever.

> **Tip:** Need a Pixelay Pro account? You can purchase a Pro account for you or your team by visiting the [Pixelay](https://www.hypermatic.com/pixelay/#pro) product page on the Hypermatic website.

## Activating the Figma plugin with an Pixelay Pro license key

1. **Purchase a Pro license** for you or your team by visiting the [Pixelay](https://www.hypermatic.com/pixelay/#pro) product page on the Hypermatic website.
2. **Run the Pixelay Plugin**, then click on the **Upgrade Now** button at the bottom of the Figma plugin window.
3. **Paste in your Pro key**, then click the **Unlock** button.

This will unlock the Pro version of Pixelay and give you unlimited use all of the Figma plugin features.

> **Warning:** Please note, if you're in China, the accounts server _may_ be blocked by "The Great Firewall of China". If you're seeing a activation error, despite using a valid key, you will likely need to use a [VPN](https://protonvpn.com/free-vpn/) to resolve the issue.

> **Info:** If you ever need to use a different license key at any time (eg. you were using your own personal Pro license key, but now your employer is buying you a Pro license to use instead), you can press **CTRL + K** while your plugin window is open in Figma, and this will bring up the license key prompt again, where you can enter a different license key.

---

---
url: "/pixelay/overview/quickstart.md"
description: "Compare and visually QA your Figma designs against real website URLs using smart overlays."
---

# Get Started with Pixelay

> Compare and visually QA your Figma designs against real website URLs using smart overlays.

[![Pixelay Figma Plugin](https://www.hypermatic.com/pixelay.jpg)](https://www.figma.com/community/plugin/816424186244407164/pixelay-compare-design-to-web)

## Install & Activate Pixelay

- [Install & Run the Figma plugin](/pixelay/overview/install.md): How to run Pixelay inside of Figma
- [Activate Pixelay Pro](/pixelay/overview/pro.md): How to buy and use a Pro license key

## Using Pixelay

  - [Pixelay Documentation](/pixelay/upload-designs.md): Detailed docs with short screencaps
  - [Pixelay Video Tutorials](/pixelay/tutorials.md): Full step-by-step video walkthroughs

## Frequently Asked Questions

- [Troubleshooting Pixelay](/pixelay/faq/troubleshooting.md): Common issues issues you may run into
- [Pixelay Security](/pixelay/faq/security.md): Details about how Pixelay works
- [Receipts](/faq/receipts.md): Find email receipts and PDF invoices
- [Billing](/faq/billing.md): Manage your Pro subscription
- [License Seat Management](/faq/seats.md): Manage the Figma users on your key
- [Pixelay Free vs Pro](/pixelay/faq/plans.md): Compare Free vs Pro features

[Video](https://www.hypermatic.com/assets/videos/pixelay/PIXELAY_DEMO.mp4)

## Pixelay Features

- Compare multiple Figma designs and URLs at the same time.
- Runs in both Figma Design Mode and Dev Mode, including Dev-seat QA workflows.
- Light-weight [Chrome Extension](https://chrome.google.com/webstore/detail/pixelay-for-figma/gnbafbeabkbkecmbedfgebgboicpnkpp) required to compare multiple pages at once.
- Easily perform visual QA of your designs against the real build.
- Test your responsive designs, with support for multiple screen sizes (eg. desktop/mobile/tablet).
- Instantly switch between multiple test/dev environment website URLs.
- Transparency, split-screen, toggle, drag and diff overlays.
- Optionally specify different website page URLs per Figma frame.
- Supports localhost using BrowerSync or Hot Module Reloading.
- Built-in pixel ruler for measuring space differences in comparisons.
- Get perfect web builds that match your Figma designs, every time.

---

---
url: "/pixelay/tutorials.md"
description: "The best free Figma tutorial videos for beginners (or power users) to level up."
---

# Pixelay Video Tutorials

> The best free Figma tutorial videos for beginners (or power users) to level up.

### Compare live website builds

This video tutorial is a complete step-by-step guide showing you how to compare your live website builds with Figma designs using the Pixelay plugin.
    [Embedded media](https://www.youtube.com/embed/fMwBgIggbg4)

  ### Compare websites behind a login with Figma designs

This video tutorial is a complete step-by-step guide showing you how to compare any websites behind a login with Figma designs using the Pixelay plugin.
    [Embedded media](https://www.youtube.com/embed/yAj8qWD3Xzs)

  ### Compare local website development builds

This video tutorial is a complete step-by-step guide showing you how to compare your local website builds with Figma designs using the Pixelay plugin.
    [Embedded media](https://www.youtube.com/embed/vOU3gGrgv4c)

  ### Compare Webflow builds

This video tutorial is a complete step-by-step guide showing you how to compare your Webflow builds with Figma designs using the Pixelay plugin.
    [Embedded media](https://www.youtube.com/embed/XlT_QTu1eEg)

---

---
url: "/pixelay/upload-designs.md"
description: "Steps to select Figma parent frames, set URLs, upload designs, and manage Pixelay comparison links."
---

# Uploading designs to compare from Figma

> Steps to select Figma parent frames, set URLs, upload designs, and manage Pixelay comparison links.

## Preparing designs in the Figma plugin

Pixelay works by uploading images of your top level parent frames from the current Figma page via the Pixelay Figma plugin, and overlaying them with the URLs of their pages in your website build in the Pixelay web app.

> **Note:** **Parent level Figma frames are required**. To compare your designs, your Figma page must contain at least one "Parent Frame". This means, any "frames" that are located _directly_ underneath your page.

### Selecting Figma frames to compare

[Video](/assets/videos/pixelay/upload/selecting-frames.mp4)

To get started, you'll need to select the frames from your Figma design that you would like to compare with URLs in your website build.

Pixelay will load all of your "parent frames" into the plugin as a list of designs that you can use to compare with your website build you can click on any frame's checkbox or image thumbnail to select it (clicking it again will deselect it).

> **Tip:** **Highlighting Figma parent frames to select them**. To make it easier to select the Figma parent frames that you want to compare, clicking or highlighting any frame(s) on your Figma page will automatically filter them down in the available frames list in the Pixelay plugin.

### Refreshing Figma parent frames

[Video](/assets/videos/pixelay/upload/refreshing-layers.mp4)

If the Pixelay plugin is already running and you need to add or remove any parent frames on your current Figma page, you can make those updates as needed and then click on the **Refresh** icon button in the Pixelay plugin toolbar.

### Entering your website URL

[Video](/assets/videos/pixelay/upload/entering-url.mp4)

You can enter the default URL that you would like to compare your designs with by entering a valid URL into the **URL** input field in the Pixelay toolbar. This URL will be used as the default page that will be loaded to compare you selected designs against.

> **Note:** **Install the Pixelay Chrome Extension**. To enable comparing your designs with URLs via Pixelay, please install the [Pixelay Chrome Plugin](https://chrome.google.com/webstore/detail/pixelay-for-figma/gnbafbeabkbkecmbedfgebgboicpnkpp), which will run in the background and load up Pixelay when a URL from the plugin is detected in the browser.

> **Tip:** **Ensure you're using SSL `https://` URLs** In order to load external iFrames in the Pixelay web app, please ensure your live websites and local development URLs are `https://`.

#### Adding page specific website URLs

If you're comparing multiple frames at the same time, you can specify a URL _per frame_ to compare. For example, if you're comparing an "About" page design, you might put it a URL like _https://yoursite.com/about/_. This specific URL will override the default URL in the Pixelay toolbar.

### Adding multiple environment website URLs (Optional)

[Video](/assets/videos/pixelay/upload/add-environment-urls.mp4)

If you have more than one website environement (eg. a dev site, staging site, production site), you can optionally add extra base URLs to your Pixelay comparison link, which will allow you to [toggle between those environments](/pixelay/compare-designs#toggling-between-environment-urls) from a dropdown selector in the Pixelay web app.

To add any additional URLs, click on the **List** icon button next to your main base URL in the plugin header, then add your new URL (eg. `https://dev.yoursite.com` or `https://test.yoursite.com`) and click the **Add URL** button to add it to your additional environments base URL list. These will be visible as a dropdown list in the Pixelay web app after re-uploading your designs from the Plugin.

> **Tip:** To remove any environment URLs, select the URL from the dropdown list in the plugin and click on the **Trash*** icon button, which will remove it from your list. Please note that you'll need to re-upload your Pixelay designs from the plugin again to relect this change in the Pixelay web app for your current comparison link.

### Generating your comparison URL

[Video](/assets/videos/pixelay/upload/compare-upload.mp4)

Once you've selected the Figma frames you would like to compare, and assigned them their website build URLs, you can click on the **Compare Designs** button in the Pixelay toolbar. You can then click the **Upload Designs to Compare** button to confirm and start the upload. This will upload images of the Figma frames you've selected and generate a URL that will take you to the Pixelay web app.

> **Warning:** **Duplicating a Figma file will carry over the URL**. If you duplicate your Figma file, the URL plugin data will also be carried across to the new file. If you need to duplicate your file and need a different URL for it than the original Figma file, you can do this by typing the Komami code (**Up**, **Up**, **Down**, **Down**, **Left**, **Right**, **Left**, **Right**, **B**, **A**) while the plugin window is open. This will generate a brand new Pixelay URL for your new duplicated Figma file. Please note, this will **not** delete the previous URL.

### Opening your comparison URL

[Video](/assets/videos/pixelay/upload/copy-url.mp4)

After all of your frames have been uploaded, you'll see a confirmation message that will let you know the comparison page URL is ready to use.

You can either click on the **Copy** icon button to copy the URL and paste it into your web browser (or share it with someone else), or simply click on the **open the link** link in the confirmation message. This will open up the Pixelay web app in your browser and let you begin comparing your Figma designs and website development URLs.

Please note, to enable comparing your designs with URLs via Pixelay, please install the [Pixelay Chrome Plugin](https://chrome.google.com/webstore/detail/pixelay-for-figma/gnbafbeabkbkecmbedfgebgboicpnkpp), which is also linked to in the plugin's confirmation message.

#### Accessing your comparison URL from the plugin again

If you've already created your comparison URL using the plugin and want to copy the URL again (without re-uploading your designs), you can click on the **Compare Designs** button in the Pixelay toolbar, which will reveal your previously created comparison URL. To use the URLs again, you can either click on the **Copy** icon button to copy the URL and paste it into your web browser (or share it with someone else), or simply click on the **open the link** link in the confirmation message.

### Re-uploading your Figma designs to the comparison URL

[Video](/assets/videos/pixelay/upload/reupload-images.mp4)

If you've made some design updates or want to include/exclude some different Figma frames, or change any of the website/page links in your comparison URL, you can re-upload your selected designs to the comparison URL in the same way you originally uploaded your designs, by clicking on the **Compare Designs** button in the Pixelay toolbar, then this time clicking the **Update Designs** button.

> **Note:** **Your comparison URL stays the same when re-uploading designs**. Whenever you click the **Update Designs** button, it will replace any frames and website links that you had previously uploaded, and update the previously generated Pixelay comparison URL with your new designs and links.

---

---
url: "/security.md"
description: "Security landing page linking to each Hypermatic plugin's privacy and security details."
---

# Hypermatic Plugin Security

> Security landing page linking to each Hypermatic plugin's privacy and security details.

## Documentation Sections

- [TinyImage Security](/tinyimage/faq/security.md): Export compressed JPG, PNG, SVG, WebP, AVIF, GIF and PDF files from Figma, reducing sizes by up to 95%.
- [Pitchdeck Security](/pitchdeck/faq/security.md): Magically turn your Figma designs into animated presentable slide decks, or export them to PowerPoint.
- [Convertify Security](/convertify/faq/security.md): Export Figma to Sketch, XD, After Effects or import XD, Illustrator, PowerPoint, Word Docs, Google Docs, and PDF to Figma.
- [Emailify Security](/emailify/faq/security.md): Easily create and export responsive, production ready HTML emails (eDMs) from Figma.
- [CopyDoc Security](/copydoc/faq/security.md): Everything you need to easily export, import, localize and update text in your Figma designs.
- [Bannerify Security](/bannerify/faq/security.md): Animate and export production ready banners from Figma to HTML, GIFs and Videos.
- [Crypto Security](/crypto/faq/security.md): Securely share your Figma designs and prototypes as password protected URLs or PDF files.
- [Favvy Security](/favvy/faq/security.md): Export production ready favicons (with code) for your website or PWA from Figma in seconds.
- [Pixelay Security](/pixelay/faq/security.md): Compare your Figma designs with live or local website URLs using smart browser overlays.
- [HyperCrop Security](/hypercrop/faq/security.md): Batch crop/resize multiple images into multiple sizes with presets, smart cropping and face detection.
- [Commentful Security](/commentful/faq/security.md): Supercharge your Figma comments and gather external feedback from stakeholders.
- [Weblify Security](/weblify/faq/security.md): Inspect your Figma layers as clean HTML, React or Vue code with one click.

---

---
url: "/snippets/installing-figma-plugins.md"
---

## Installing the {plugin} Figma Plugin

1. Open any Figma file.
2. Click on the **Actions** icon in the bottom Figma toolbar.
3. Click the **Plugins & Widgets** tab to filter results to Figma plugins.
4. Search for **{plugin}** in the search bar.
5. Click on the **{plugin}** search result.
6. Click the **Save** button to install the {plugin} plugin.

> **Note:** Figma users in a **Figma Organization** may only be able to install approved plugins. Please contact your Figma Org admin at your company to [approve the {plugin} plugin](https://help.figma.com/hc/en-us/articles/4404228724759-Manage-plugins-and-widgets-in-an-organization) if you're unable to install certain Figma plugins.

## Running the {plugin} Figma Plugin

Once you've [installed](#installing-the-figma-plugin) the **{plugin}** Figma plugin, to run the plugin in your Figma file:

  1. **Right-click** anywhere on your Figma file's page canvas
  2. Hover your mouse over the **Plugins** ▶ menu item
  3. Hover your mouse over the **Saved plugins** ▶ menu item
  4. Click on the **{plugin}** plugin menu item

> **Tip:** After you've run the **{plugin}** plugin once in a Figma file, you'll be able to quickly re-launch it by clicking the **{plugin}** icon in the right-hand side Figma column (under the **Plugin** subheading).

> **Warning:** Only Figma users with **Edit** access to a Figma file can run a Figma plugin in that Figma file; if you only have **View** permissions, you won't be able to run any Figma plugins in that file.

---

---
url: "/snippets/uninstalling-figma-plugins.md"
---

1. Open any Figma file.
2. Click on the **Actions** icon in the bottom Figma toolbar.
3. Click the **Plugins & Widgets** tab to filter results to Figma plugins.
4. Search for **{plugin}** in the search bar.
5. Click on the **{plugin}** search result.
6. Click the **Remove** button to uninstall the {plugin} plugin.

> **Note:** This will remove the plugin from your **Saved Plugins** list, however, the Figma plugin may still show up under your **Recents** list (if it has been recently run), as Figma saves this list of recent plugins in your browser's/app's local storage. The plugin will vanish from the Recents menu after other plugins are run to take its place.

---

---
url: "/tinyimage/animated-webp.md"
description: "Export animated WebP files from selected Figma layers using the same animation editor workflow as GIF exports in TinyImage."
---

# Creating animated WebP images from layers

> Export animated WebP files from selected Figma layers using the same animation editor workflow as GIF exports in TinyImage.

### Export animated WebP images from Figma

This video tutorial is a complete step-by-step guide showing you how to export animated WebP images from your design's layers directly from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/e8EfMxu0oog)

TinyImage supports exporting animations as animated `.webp` files using the same animation editor UI and workflow as the GIF exporter.

## Using the same animation editor as GIF exports

The animated WebP workflow uses the same frame selection, ordering, timing, transition, and preview controls as the GIF workflow.

To configure those shared controls, follow the GIF animation editor guide:

- [Create animated GIFs from layers](/tinyimage/gif)

## Exporting to animated WebP format

Once your animation preview is ready:

1. Open the export format dropdown in the animation toolbar.
2. Select **Animated WebP**.
3. Click **Export** to render your animated `.webp` file.

After rendering finishes, TinyImage will automatically download the exported animated WebP file to your computer.

> **Tip:** **Saving file downloads from Figma** If you're using the Figma **desktop app**, you'll see a prompt appear to download your file. However, if you're using Figma in a **web browser**, your file will automatically be downloaded to your computer by default (usually to the **Downloads** directory on your computer).

---

---
url: "/tinyimage/apng.md"
description: "Export animated PNG (APNG) files from selected Figma layers using the same animation editor workflow as GIF exports in TinyImage."
---

# Creating animated PNG (APNG) images from layers

> Export animated PNG (APNG) files from selected Figma layers using the same animation editor workflow as GIF exports in TinyImage.

### Export animated PNG (APNG) images from Figma

This video tutorial is a complete step-by-step guide showing you how to export animated PNG (APNG) images from your design's layers directly from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/_XHr54EMOaU)

TinyImage supports exporting animations as animated `.png` (APNG) files using the same animation editor UI and workflow as the GIF exporter.

## Using the same animation editor as GIF exports

The APNG workflow uses the same frame selection, ordering, timing, transition, and preview controls as the GIF workflow.

To configure those shared controls, follow the GIF animation editor guide:

- [Create animated GIFs from layers](/tinyimage/gif)

## Exporting to animated PNG (APNG) format

Once your animation preview is ready:

1. Open the export format dropdown in the animation toolbar.
2. Select **Animated PNG**.
3. Click **Export** to render your animated `.png` file.

After rendering finishes, TinyImage will automatically download the exported APNG file to your computer.

> **Tip:** **Saving file downloads from Figma** If you're using the Figma **desktop app**, you'll see a prompt appear to download your file. However, if you're using Figma in a **web browser**, your file will automatically be downloaded to your computer by default (usually to the **Downloads** directory on your computer).

---

---
url: "/tinyimage/compress.md"
description: "How to select export settings and compress Figma image exports with TinyImage."
---

# Compressing your Figma image exports

> How to select export settings and compress Figma image exports with TinyImage.

TinyImage works by detecting the export settings/formats you've set on any layers in your Figma page and allows you to export them as compressed images using the TinyImage plugin.

For a comprehensive guide about the details of Figma export settings and how they work, please see the official [guide to exports in Figma](https://help.figma.com/hc/en-us/articles/360040028114-Guide-to-exports-in-Figma) in the Figma help docs.

> **Note:** **Any layers you want to compress require at least one export setting**. If a layer _doesn't_ contain any export settings, TinyImage won't know that you'd like to compress and export it, and it won't show up in the plugin's exportable images list.

## Adding and refreshing export settings

To get started with exporting compressed images from Figma, you'll first need to ensure you've set some image export settings on any layers you would like to compress.

### Adding export settings to Figma layers

[Video](/assets/videos/tinyimage/compress/export-settings.mp4)

To add export settings to a layer (or multiple layers), select the layer(s) in Figma, then in the Figma properties panel, click on the **+** icon next to **Export**. Clicking the **+** more than once will allow you to add as many export settings to that layer as you like. This means you can export a single layer to multiple formats and sizes at once (eg. SVG, JPG @1x, JPG @2x, PDF etc).

### Refreshing Figma layers after updating their export settings

[Video](/assets/videos/tinyimage/compress/refreshing-export-settings.mp4)

If you've already added exports settings to a layer, but would like to add or remove some while the TinyImage plugin is already running, you can do so as per the previous step; then, when you're happy with the new export settings on your layer, clicking the **Refresh** icon in the TinyImage toolbar will refresh your Figma layers and display the updated export options in the TinyImage exportable images list.

## Setting compression quality percentage or size target

TinyImage allows you to specify the compression percentage of quality from **1%-100%**, or setting a **maximum file size target** (in kilobytes) for your image exports. Setting a lower number will result in smaller filesizes, but also lower image quality images. Setting a higher number will result in larger filesizes, but also higher quality images.

- **0%-50%** Low Quality (**72dpi** for PDFs)
- **50%-75%** Good Quality (**150dpi** for PDFs)
- **75%-100%** Best Quality (**300dpi** for PDFs)

### Adjusting the compression quality percentage level

[Video](/assets/videos/tinyimage/compress/global-compression.mp4)

You can set the quality level for all of your image exports from **1%-100%** by using the compression slider in the TinyImage toolbar. **Clicking/holding** and **dragging** the slider will allow you to specify your desired quality level. This setting will be applied to all of your TinyImage exports.

### Setting a maximum file size (kb) compression target

[Video](/assets/videos/tinyimage/compress/global-target.mp4)

You can also set a maximum target file size limit (in kilobytes), by enabling the **Size Target** toggle, and then entering a kilobyte value in the size input box. This will tell TinyImage to try and get each of your images underneath that maximum file size.

Please note, this is often slower than using the quality percentage slider, as each image has to be progressively compressed to reach the desired limit.

> **Tip:** Prefer setting your TinyImage max file size via Figma instead of the UI? You can use Figma’s Export settings suffix on any exportable layer. Add an underscore followed by a number ending in kb (for example, _250kb), and TinyImage will use that value as the max size for that layer. Valid suffix examples: _250kb, @2x_500kb, @1x_300kb

> **Warning:** **Size targets don't apply to PDF or GIF exports**. Please note that using the file size target compression option doesn't have an effect on PDF or GIF exports from TinyImage; it will only apply to JPG, PNG, SVG, AVIF and WebP images.

### Overriding compression quality/size levels per export

[Video](/assets/videos/tinyimage/compress/compression-overrides.mp4)

In addition to setting the quality level using the slider, TinyImage allows you to specify different quality/size levels per image format, which overrides the _global_ value that is being set by the quality slider or the target size input in the plugin header.

To specify the quality for a certain image format, click on the quality **number input** next to the image you would like to update the quality for. You can enter any number between **1%-100%**, and this number will become the quality setting that your images is exported at.

If you're targeting a maximum file size, you can specify an override by clicking on the KB **number input** next to the image you would like to update the target size for. You can enter any number between **1-9999** (KB), and this number will become the target file size setting that your images is exported at.

## Selecting images to compress

Once you've added export settings to the layers you would like to compress, you'll see them show up in the TinyImage exportable images list. However, you don't need to export every single image on your Figma page (if you don't want to) at the same time. TinyImage allows you to select (and deselect) the exportable images you would like to compress by using checkboxes.

### Checking and unchecking exportable images

[Video](/assets/videos/tinyimage/compress/layer-selections.mp4)

To select (or deselect) an image for export, you can click on the checkbox next to the image thumbnail in the TinyImage exportable images list. Unchecking an image will exclude it from being compressed and exported, and conversely, checking it will include it in the export.

> **Tip:** **Quickly selecting/deselecting all layers**. To very quickly select or deselect all of your images in the list at the same time, you can click on the checkbox in the TinyImage toolbar, above the list of exportable images.

### Highlighting layers to filter image selection

[Video](/assets/videos/tinyimage/compress/filter-selection.mp4)

Another way to select the image(s) you would like to export is by highlighting them on your Figma page; this will automatically filter down your selection in the TinyImage exportable images list. Any highlighted layers that contain export settings will show up in the list, and any layers that haven't been highlighted will be excluded.

This is a great way to quickly make a selection of the layers you know you'd like to export without having to manually look for them in the list of _all_ exportable images.

### Refreshing image export settings to image selection

[Video](/assets/videos/tinyimage/compress/missing-selected-exports.mp4)

If you highlight a layer (or multiple layers) in Figma to filter down the selection, and one or more of those layers don't have any export settings yet, you can keep the layers selected; then in the Figma properties panel, click on the **+** icon next to **Export** to add one or more export settings to your selected layers.

When you're happy with the new export settings on your layer, click the **Refresh** icon in the TinyImage toolbar to refresh your Figma layers and display the updated export options for your highlighted layers in the TinyImage exportable images list.

## Exporting your compressed images

[Video](/assets/videos/tinyimage/compress/export-compressed.mp4)

Once you've selected the exportable images you would like to compress, you can click the **Export** in the TinyImage toolbar; this will begin the process of compressing your selected images one by one. You'll see a progress indicator showing which image is currently being compressed, along with file size savings after each compression has finished. Please wait for all of the images to finish compressing; the more the images you have, and the larger each of them are, the longer they will take.

> **Info:** **PNG/PDF compression speed**. Please note that compressing **PNG** and **PDF** exports can take longer than **JPG** and **SVG** exports, especially if they're very detailed or have large dimensions. TinyImage will warn you if an image is too large to compress.

### Saving the exported zip file

After all of the images have been processed, you'll see a confirmation notification letting you know that your images have been compressed, and the your `.zip` file download will automatically be triggered.

> **Note:** **Single Image Exports** If you're only exporting a single compressed image, TinyImage won't zip that image into a `.zip` file; you'll be able to save the single image file to your computer, as is.

> **Tip:** **Saving file downloads from Figma** If you're using the Figma **desktop app**, you'll see a prompt appear to download your file. However, if you're using Figma in a **web browser**, your file will automatically be downloaded to your computer by default (usually to the **Downloads** directory on your computer).

### Opening the exported zip file

[Video](/assets/videos/tinyimage/compress/opening-zip.mp4)

After the `.zip` file has been saved from Figma to your computer, you can open your file explorer to the directory where it was saved. **Double clicking** on the exported `.zip` file will unzip the contents and let you to use all of your compressed images.

---

---
url: "/tinyimage/downsize.md"
description: "Use the Downsizer to resize large image fills to layer size for smaller, faster Figma files."
---

# Downsizing your Figma layer fills

> Use the Downsizer to resize large image fills to layer size for smaller, faster Figma files.

TinyImage includes a **Downsizer** feature which allows you to automatically resize (and lightly compress) any Figma image fills on your layers to their actual layer size. This is useful if you've originally imported high resolution images to your Figma file, but then shrunk the layer dimensions down to be much smaller (with the original large image file still being used).

One common case of this would be adding a large image from Unsplash (or another stock photo site/plugin), the resizing that layer to be used as a much smaller "card" or "avatar" image. This can cause the performance of your Figma file to slow down; so using something like this downsizer feature will help save file size and improve page performance in your Figma file.

## Using the Downsizer feature to optimise image fills on your page

[Video](/assets/videos/tinyimage/compress/fills-downsizer.mp4)

To get started with downsizing your Figma fills, you can click on the **Downsizer** button in the TinyImage header.

If you didn't have any layers selected when opening the downsizer feature, it will automatically scan every layer on the current page in your Figma file for any that contain image fills.

> **Tip:** **Selecting certain layers to load**. If you're running the downsizer feature in a Figma page that contains many images, it may take a while to load. You can ease this load time by optionally pre-selecting the layers you'd like to search for image fills to downsize _before_ clicking on the **Downsizer** button, this will ensure the plugin only loads fills from any layers and child layers from the Figma layers you've selected.

### Selecting the image fills to downsize

Once the image fills have loaded, you can select which you would like to downsize by checking/unchecking them in the list. You can also quickly narrow down the images included in the list by clicking on them in your Figma page.

If you're unsure which fill relates to which layer, you can click on the **Image** icon button in the list, which will instantly zoom and scroll to that layer on your Figma page.

### Downsize your fills

When you're happy with your fill selection, you can toggle the resolution that you would like your Figma image fills to be downsized to; by default this is set to **@2x**, which means your image fills will be proportionally downsized to be exactly twice the size of the Figma layer that they're being used in. You can toggle this down to **@1x**, which will resize the image fills to be exactly the same size as their Figma layer, but won't be as sharp as the @2x option.

When you're ready, click on the **Downsize Figma Image Fills** button to start the downsize process. TinyImage will automatically detect if an image needs to be downscaled or not; any that require downsizing will be resized (and lightly compressed), then automatically replaced in your Figma layers. Once every image has been processed, you'll be able to see the total amount of size you've saved in your Figma file.

> **Note:** **Undoing image downsizing in Figma**. If you've used the Downsizer function accidentally, or selected some image fills by mistake, you can use the normal **Undo** function in Figma to rollback the image fill updates to your original image fills. Alternatively, if you need to go further back, you can use the **File** -> **Show Version History** in Figma to roll-back your file to a previous version.

---

---
url: "/tinyimage/faq/plans.md"
description: "To get unlimited usage of all of the TinyImage Pro features, you will need to purchase a license from the [Hypermatic website](https://hypermatic.com/tinyimage#pro)."
---

# TinyImage Free vs TinyImage Pro

> To get unlimited usage of all of the TinyImage Pro features, you will need to purchase a license from the [Hypermatic website](https://hypermatic.com/tinyimage#pro).

TinyImage includes 10 free trials of the _Pro_ version. Once these trials have been used up, the Figma plugin will revert to their _Free_ version, which will have limited functionality.

  - **TinyImage Free**: ### Figma Layer Downsizes Unlimited Usage       ### Image Compressions Try during 10 Pro Trials       ### GIF/MP4 Exports Try during 10 Pro Trials       ### PDF Exports Try during 10 Pro Trials
  - **TinyImage Pro**: ### Figma Layer Downsizes Unlimited Usage       ### Image Compressions Unlimited Usage       ### GIF/MP4 Exports Unlimited Usage       ### PDF Exports Unlimited Usage

---

---
url: "/tinyimage/faq/security.md"
description: "TinyImage runs as an official plugin inside of Figma's own app, which are reviewed and approved by the Figma team."
---

# TinyImage Security

> TinyImage runs as an official plugin inside of Figma's own app, which are reviewed and approved by the Figma team.

The Figma plugin is run directly from Figma's own servers, and runs inside of a your Figma file, which means that it inherits all of the [security](https://www.figma.com/security/) and infrastructure of the Figma platform, which exceed industry standards for data protection and security:

- SOC 2 Type 2
- SOC 3
- Cloud Security Alliance (CSA) STAR: Level 1
- ISO/IEC 27001:2013
- ISO/IEC 27018:2019
- EU Cloud Code of Conduct (COC): Level 2

There's **no additional software** that needs to be installed to use the Figma plugin, as Figma plugins run as a built-in part of Figma's own native functionality, and all Figma plugins easily accessibile and can be instantly run from inside any Figma file, or via the official [Figma Community](https://www.figma.com/community) ecosystem inside of the Figma app.

If your organization is already approved to use Figma, then you _already have access_ to Figma plugins.

## How TinyImage works

The [TinyImage Figma plugin](https://www.figma.com/community/plugin/789009980664807964) helps users easily export compressed images from their Figma layers.

TinyImage is designed to be privacy and security focused, so nothing _ever_ leaves your Figma file.

All functionality, compression and file exports are handled client-side directly in the Figma plugin using the [Figma Plugins API](https://www.figma.com/plugin-docs/), and are _never_ uploaded, processed or stored anywhere in the cloud or outside of Figma.

## What TinyImage does and doesn't do

TinyImage uses the [Figma Plugins API](https://www.figma.com/plugin-docs/) to help users compress their images, and download them _directly_ to their computer.

TinyImage doesn't rely on _any_ external servers to handle compressing image data, which means that nothing in your Figma file ever leaves the Figma plugin or Figma itself.

Any files that are exported via the plugin are done so entirely locally to the user's own computer.

### TinyImage does

- Allow users to compress their JPG/PNG/SVG layers from Figma.
- Allow users to create animated GIF files from their Figma layers.
- Allow users to generate PDFs from their Figma frames.
- Allow users to downsize the image layer fills in their Figma page.
- Download any exported files _directly_ to the user's computer.

### TinyImage does _not_

- Upload _any_ data from your Figma file.
- Store _any_ data from your Figma file.
- Use _any_ servers or cloud storage to process or store your Figma data.
- Collect or store _any_ personal information (Figma plugins *cannot* access any private information about Figma projects, Figma teams or Figma users).

## How Figma plugins work

Figma plugins are written in HTML/CSS/Javascript, and are run in a tightly controlled [sandbox environment](https://www.figma.com/plugin-docs/how-plugins-run/) inside of the main Figma application.

Figma plugins can only do whatever Figma allows them to do inside the permissions of the [Figma Plugins API](https://www.figma.com/plugin-docs/), and importantly, **plugins don't have any access to personal information** about the Figma user running the plugin.

## What Figma plugins can and can't do

As per the article on [Figma plugin security](https://www.figma.com/blog/how-we-built-the-figma-plugin-system/), there are a limited number of things that Figma plugins can do, and many more things that they can't do:

### Figma plugins can

- Only be run by an explicit user action
- Show UI in a single plugin-specific dialog
- Read any data in your Figma document (e.g. a “find layer by name” plugin)
- Modify any data in your Figma document (e.g. a “rename selected layers” plugin)
- Communicate with any server over the internet (e.g. an “import from service X” plugin)

### Figma plugins _cannot_

- Run by themselves
- Get information about the project or team that owns the file
- Access anything when they aren’t running
- Access data from any files other than the file they were run in
- Change Figma’s UI outside of the plugin UI dialog

> **Tip:** Figma account administrators at your company can [configure an allowlist of plugins](https://help.figma.com/hc/en-us/articles/4404228724759-Manage-plugins-and-widgets-in-an-organization) that are allowed inside the organization. This can be used to prevent untrusted Figma plugins from being run in any file in that organization.

---

---
url: "/tinyimage/faq/troubleshooting.md"
description: "Troubleshooting guide for TinyImage covering export issues, PDFs, GIFs, and known limitations."
---

# Troubleshooting TinyImage

> Troubleshooting guide for TinyImage covering export issues, PDFs, GIFs, and known limitations.

### Layers must have export settings to be compressed

TinyImage works by detecting the export settings/formats you've set on any layers in your Figma page and allows you to export them as compressed images using the TinyImage plugin. For more details about the fundamentals of Figma export settings and how they work, please see the official Figma [guide to exports in Figma](https://help.figma.com/hc/en-us/articles/360040028114-Guide-to-exports-in-Figma). Please ensure you've added export settings (by clicking **Export +** in the right hand Figma column) to any layers you would like to compress, otherwise they won't show up when you open TinyImage, just like the standard Figma exports work.

  ### PNGs and PDFs take longer to compress

Compressing PNG and PDF exports can take a bit longer than JPG and SVG exports, especially if they're very detailed or have large dimensions. TinyImage will warn you if an image is too large to compress.

  ### Colors/gradients in GIFs look a bit grainy

GIFs are a bit different from normal JPG/PNG images, as they can only contain a maximum of 256 colors. If you're using highly detailed images or gradients with lots of color variation, it's expected that it won't look as sharp or have the same color accuracy as the original images used as the source of the GIF due to this limitation of the GIF format.

  ### Some elements are missing and turning into purple rectangles when exporting PDF from Figma

This is a known, [long-standing Figma bug](https://forum.figma.com/t/pdf-export-consistently-missing-elements/3547) where purple boxes are shown instead of the image, and becuase TinyImage is using the native PDF export function from Figma behind the scenes, the plugin will inherit these bugs when exporting PDFs if they occur in Figma as well.

    One suggestion that can help is to ensure the problematic layer is actually nested _inside_ of the main Figma frame, as sometimes a Figma layer is "visually" positioned on top of your frame on the canvas, but the layer itself is still sitting outside of the frame; this seems to be related to why the problem occurs sometimes.

  ### Transparency isn't showing in GIFs

The GIF file format supports either 0% opacity or 100% opacity, but nothing in between. This means that you can have an animated GIF with a completely transparent background behind elements that are completely opaque and visible. This means that layers either need to be completely transparent or not; any layers with lower than 50% opacity will be transparent, while any layers with opacity greater than 50% will be opaque.

  ### Initial 'refreshing/loading exportable layers' taking a while to finish loading

Unfortunately, this is a known issue that's caused by a Figma update that shipped recently where it now requires every image on the current page to finish loading before a plugin can use/export any image (even if it's just one). Due to that new behavior, it tends to happen more in larger Figma files, if the plugin is run soon after it has been opened, before all the images have had a chance to load. The two options here are to wait a bit longer for the images to finish loading in the Figma file, or if you only need to export a few layers and the page is huge, copying those selected layers into a new Figma page and re-running TinyImage there will be much faster.

  ### Images exported 1px bigger/smaller than their size in Figma

There's a strange bug in Figma related to using "sub-pixels" in your frames/image properties, which can cause your exported images to be "rounded" up or down to a different size. The solution to this is to ensure that the frame or parent frame (artboard) that you're exporting doesn't contain any sub-pixel values (eg. 1000.08) by removing them from the property (eg. 1000). This should export the image in the dimensions you expected. For more details, there's [a thread on the Figma forums](https://spectrum.chat/figma/general/wrong-size-when-export-png~35016cd4-85c2-45fd-9446-cd0648a6cb7d) discussing the issue.

  ### Blank file extensions using Figma desktop app on Windows

There's a known issue with the Figma desktop app (only on Windows), which also happens for normal file exports from Figma. When you go to save your file, you may see an "all files" label. If you ignore this and continue by clicking "Save", it should still save the file with the correct extension and allow you to open it as expected after it has downloaded to your computer. If it still saves the file with a blank extension, you should be able to rename the file to manually append the correct extension to the file name.

  ### Slow PDF exports

If your PDF exports are going really slow, it's likely due to having high-res/large image fills in some of the content, which causes Figma to take a much longer time generating PDFs. To help with this issue, you can use the ["Downsizer" feature](https://docs.hypermatic.com/tinyimage/usage.html#downsizing-your-figma-layer-fills) in [TinyImage](https://www.figma.com/community/plugin/789009980664807964/TinyImage-Compressor) to shrink down your image fills to match their layer size, which will shrink their file size and ensure they load much faster in your Figma file. Once you've finished downsizing the image fills in your Figma page, re-running TinyImage and exporting your PDF again via the plugin should be much faster.

  ### Safari isn't supported

Due to browser compatibility issues, **TinyImage** _isn't_ supported in **Safari**. Please run the plugin in another browser (like [Chrome](https://www.google.com/intl/en_us/chrome/)) or the [Figma Desktop App](https://www.figma.com/downloads/) instead.

  ### Thin white line around image exports

Occasionally some images will contain a faint, thin white line around the edges. Figma [does this](https://twitter.com/Skcrub/status/1255544876701270017) if a layer isn't positioned on a rounded pixel value (eg. Y: 156.76 or X: 56.3) will automatically result in this sub-pixel line getting included in the export. To resolve the issue, please ensure that your layer positions are all rounded pixel values.

  ### Pixelated image exports

If you're exporting your images or a PDF while the image assets in Figma are still progressively loading, they may be exported looking pixelated, as the image wasn't fully loaded in the Figma file before it was exported. To resolve this, please ensure that all of the images have loaded 100% and are looking sharp inside the Figma file before exporting your images or PDFs with the TinyImage plugin. To help further with solving this issue, you can use the ["Downsizer" feature](https://docs.hypermatic.com/tinyimage/usage.html#downsizing-your-figma-layer-fills) to shrink down your image fills to match their layer size, which will shrink their file size and ensure they load much faster in your Figma file.

  ### Editing PDFs in Adobe Acrobat shows dotted lines

This can be resolved by un-checking the "Show bounding boxes" toggle in the Acrobat Acrobat app sidebar while editing your PDF. Showing the dotted bounding box lines is something that [Adobe enables by default](https://archive.md/Uhdbk) while enter "Edit" mode when you have a PDF open in the app, but turning off the "Show bounding boxes" toggle will turn hide those from being displayed with one click.

  ### Tiled images not rendering in PDF exports

There's currently a bug where some "Tile" image fills won't be included in compressed PDFs; the workaround is currently changing the fill in Figma to either "Fit" or "Fill".

  ### VPN may be required in China

Please note, if you're in China, the accounts server _may_ be blocked by "The Great Firewall of China". If you're seeing an activation error, despite using a valid key, you will likely need to use a [VPN](https://protonvpn.com/free-vpn/) to resolve the issue.

  ### 'An error occurred while loading the plugin environment'

This may happen in the Figma desktop app if [the Use Developer VM](https://www.figma.com/plugin-docs/debugging/#developer-vm) debug setting in Figma is enabled by mistake; you can make sure it's turned off by **right-clicking** anywhere on your Figma canvas, hovering over **Plugins**, then hovering over **Development**, and making sure that the **Use Developer VM** is _unchecked_; after it is unchecked (and does _not_ have a tick icon next to it), re-running the Figma plugin should work as expected.

---

---
url: "/tinyimage/fills.md"
description: "Export original image files from Figma layer fills using TinyImage."
---

# Exporting the original image files from Figma layer fills

> Export original image files from Figma layer fills using TinyImage.

Along with "downsizing" your Figma image fills, you can also optionally export the existing image fills; this will automatically download all of the original image files being used inside of your layer image fills (and will _not_ downsize them in Figma).

[Video](/assets/videos/tinyimage/compress/fills-export.mp4)

To get started with exporting your original images from your Figma layer image fills, you can click on the **Downsizer** button in the TinyImage header.

If you didn't have any layers selected when opening the downsizer feature, it will automatically scan every layer on the current page in your Figma file for any that contain image fills.

> **Note:** **Selecting certain layers to load**. If you're running the downsizer feature in a Figma page that contains many images, it may take a while to load. You can ease this load time by optionally pre-selecting the layers you'd like to search for image fills to export _before_ clicking on the **Downsizer** button, this will ensure the plugin only loads fills from any layers and child layers from the Figma layers you've selected.

## Selecting the image fills to export

Once the image fills have loaded, you can select which you would like to export by checking/unchecking them in the list. You can also quickly narrow down the images included in the list by clicking on them in your Figma page.

If you're unsure which fill relates to which layer, you can click on the **Image** icon button in the list, which will instantly zoom and scroll to that layer on your Figma page.

## Export your fills

When you're ready, click on the **Export Figma Image Fills** button to start the export process. TinyImage will automatically download the original image files being used for each image fill you've selected. Once every image has been downloaded, you'll be able to download them all as a `.zip` file, which you can unzip anywhere on your computer to view all of your exported image files.

---

---
url: "/tinyimage/gif-export.md"
description: "Render and download final animated GIF files from TinyImage after frame processing is complete."
---

# Exporting GIF Files

> Render and download final animated GIF files from TinyImage after frame processing is complete.

### Video Tutorial: Create animated GIFs

This video tutorial is a complete step-by-step guide showing you how to animate and export GIFs from your own designs directly from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/FYlk5a69Ewc)
### Video Tutorial: Add transition effects to animated GIF exports in Figma

This video tutorial is a complete step-by-step guide showing you how to add fade/slide/wipe transition effects to animated GIF exports in Figma using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/GwfVWRAS1qk)

[Video](/assets/videos/tinyimage/compress/gif-export.mp4)

When your animation preview is ready:

1. Click **Export GIF** in the toolbar.
2. TinyImage will process frames and render the final file.
3. The `.gif` file download will start automatically when rendering is complete.

> **Info:** Exports with many frames or large dimensions can take longer to finish rendering.

---

---
url: "/tinyimage/gif-layers.md"
description: "Select Figma layers as GIF animation frames and refresh the active frame set in TinyImage."
---

# Selecting and Refreshing GIF Layers

> Select Figma layers as GIF animation frames and refresh the active frame set in TinyImage.

### Video Tutorial: Create animated GIFs

This video tutorial is a complete step-by-step guide showing you how to animate and export GIFs from your own designs directly from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/FYlk5a69Ewc)
### Video Tutorial: Add transition effects to animated GIF exports in Figma

This video tutorial is a complete step-by-step guide showing you how to add fade/slide/wipe transition effects to animated GIF exports in Figma using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/GwfVWRAS1qk)

The GIF feature in TinyImage works by taking selected layers in your Figma page and using each layer as an individual frame in the animation.

## Selecting Layers to Use as Frames

[Video](/assets/videos/tinyimage/compress/gif-selection.mp4)

To get started creating a GIF:

1. Click **Create GIF** in the TinyImage header.
2. Select layers in your Figma page to use as animation frames.
3. Click **Use Selected Layers** to load them into the preview.

> **Note:** You can pre-select layers before clicking **Create GIF** and TinyImage will load them automatically.

## Refreshing Selected Layers

[Video](/assets/videos/tinyimage/compress/gif-refreshing.mp4)

If you want to replace the current frame set:

1. Select a new set of layers in Figma.
2. Click **Refresh** next to the **Selected Layers** label in the GIF toolbar.

TinyImage will reload the preview using the new selection.

---

---
url: "/tinyimage/gif-ordering.md"
description: "Control GIF frame order using custom sorting, Figma layer order, visual row/column sorting, and layer names."
---

# Ordering GIF Frames

> Control GIF frame order using custom sorting, Figma layer order, visual row/column sorting, and layer names.

### Video Tutorial: Create animated GIFs

This video tutorial is a complete step-by-step guide showing you how to animate and export GIFs from your own designs directly from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/FYlk5a69Ewc)
### Video Tutorial: Add transition effects to animated GIF exports in Figma

This video tutorial is a complete step-by-step guide showing you how to add fade/slide/wipe transition effects to animated GIF exports in Figma using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/GwfVWRAS1qk)

[Video](/assets/videos/tinyimage/compress/gif-ordering.mp4)

TinyImage includes multiple sorting options for GIF frame ordering.

## Sort Frames by Custom Order

Drag and drop any thumbnail left or right to set a manual frame order.

> **Note:** Your custom ordering is saved and can be restored by selecting **Sort frames by Custom Order**.

## Sort Frames by Figma Layer Order

Use **Sort frames by Figma Layer Order** to match the order in your Figma layer list.

## Sort Frames Visually by Columns

Use **Sort frames visually by Columns** to sort by visual position column-first.

## Sort Frames Visually by Rows

Use **Sort frames visually by Rows** to sort by visual position row-first.

## Sort Frames by Figma Layer Name

Use **Sort frames by Figma Layer Name** to sort alphabetically by layer names.

---

---
url: "/tinyimage/gif-settings.md"
description: "Configure dimensions, fit mode, background, quality, global palette, and dithering for GIF exports."
---

# GIF Export Settings

> Configure dimensions, fit mode, background, quality, global palette, and dithering for GIF exports.

### Video Tutorial: Create animated GIFs

This video tutorial is a complete step-by-step guide showing you how to animate and export GIFs from your own designs directly from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/FYlk5a69Ewc)
### Video Tutorial: Add transition effects to animated GIF exports in Figma

This video tutorial is a complete step-by-step guide showing you how to add fade/slide/wipe transition effects to animated GIF exports in Figma using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/GwfVWRAS1qk)

[Video](/assets/videos/tinyimage/compress/gif-settings.mp4)

## Set Dimensions

By default, GIF dimensions match the first frame. You can override **width** and **height** manually.

## Set Scale

Use the **scale** dropdown to export at scaled sizes (for example `@2x` or `@0.5x`).

## Choose Image Fit

Choose between:

- **Cover Images**
- **Contain Images** (default)

## Set Background Color

Set a solid background using a HEX color value.

> **Tip:** If your input frames include transparency, enable **Transparent Background** when you need a transparent GIF.

## Configure Compression and Quality

Use the quality slider (`1-100`) to control lossy compression.

> **Note:** Enable **Lossless** if you want GIF compression without quality loss.

## Configure Global Color Palette

Enable **All frames have the same color palette** to reuse frame-one palette across all frames.

> **Warning:** Use this only when needed for artifact/banding fixes. It can cause color issues when later frames use colors not present in the first frame.

## Choose Image Dithering

Choose a dithering algorithm from the **Image Dithering** dropdown.

---

---
url: "/tinyimage/gif-timing.md"
description: "Configure frame delays, loop counts, and preview playback controls for animated GIF exports."
---

# GIF Timing and Playback Controls

> Configure frame delays, loop counts, and preview playback controls for animated GIF exports.

### Video Tutorial: Create animated GIFs

This video tutorial is a complete step-by-step guide showing you how to animate and export GIFs from your own designs directly from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/FYlk5a69Ewc)
### Video Tutorial: Add transition effects to animated GIF exports in Figma

This video tutorial is a complete step-by-step guide showing you how to add fade/slide/wipe transition effects to animated GIF exports in Figma using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/GwfVWRAS1qk)

## Set Delay for All Frames

[Video](/assets/videos/tinyimage/compress/gif-adjust-speeds.mp4)

Use the **delay** slider to set frame delay in milliseconds for all frames.

## Override Delay per Frame

[Video](/assets/videos/tinyimage/compress/gif-overrides.mp4)

Use the delay number input under any frame thumbnail to override delay for that frame only.

## Set Play Count

[Video](/assets/videos/tinyimage/compress/gif-repeat.mp4)

To control loop count:

1. Disable the **Infinite** toggle.
2. Enter the number of play-throughs.

> **Note:** Enable **Infinite** if you want the GIF to loop forever.

## Control Preview Playback

[Video](/assets/videos/tinyimage/compress/gif-controls.mp4)

Preview controls let you:

- Play/pause preview playback.
- Move to previous/next frame (when paused).
- Restart from frame one.

---

---
url: "/tinyimage/gif-transitions.md"
description: "Add and configure transition effects between GIF frames, including speed and transparency limitations."
---

# GIF Frame Transitions

> Add and configure transition effects between GIF frames, including speed and transparency limitations.

### Video Tutorial: Add transition effects to animated GIF exports in Figma

This video tutorial is a complete step-by-step guide showing you how to add fade/slide/wipe transition effects to animated GIF exports in Figma using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/GwfVWRAS1qk)

[Video](/assets/videos/tinyimage/compress/gif-transitions.mp4)

By default, frames switch instantly. You can choose a transition type:

- Instant
- Fade
- Slide left
- Slide right
- Slide up
- Slide down
- Wipe right
- Wipe down

## Transition Speed

Use **Transition Speed** to set effect duration from `200ms` to `1000ms`.

> **Info:** Longer transition speeds increase the rendered frame count and can increase file size.

## Transparent Background Limitation

> **Warning:** When **Transparent Background** is enabled, **Fade** and **Wipe** transitions are not available.

---

---
url: "/tinyimage/gif.md"
description: "Create animated GIFs from selected Figma layers with ordering, timing, and export settings."
---

# Creating animated GIFs from layers

> Create animated GIFs from selected Figma layers with ordering, timing, and export settings.

### Video Tutorial: Create animated GIFs

This video tutorial is a complete step-by-step guide showing you how to animate and export GIFs from your own designs directly from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/FYlk5a69Ewc)
### Video Tutorial: Add transition effects to animated GIF exports in Figma

This video tutorial is a complete step-by-step guide showing you how to add fade/slide/wipe transition effects to animated GIF exports in Figma using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/GwfVWRAS1qk)

TinyImage includes a **Create GIF** feature which allows you to animate and export GIF files from selected Figma layers.

## Get Started with Creating GIFs in Figma

Use the pages below to configure each part of your GIF creation workflow:

  - [Select and Refresh GIF Frames](/tinyimage/gif-layers.md): Select Figma layers to use as frames and refresh the frame set at any time
  - [Order GIF Frames](/tinyimage/gif-ordering.md): Sort frames by custom order, layer order, rows, columns, or layer names
  - [Configure GIF Timing and Playback](/tinyimage/gif-timing.md): Control frame delays, loop counts, and preview playback interactions
  - [Add GIF Frame Transitions](/tinyimage/gif-transitions.md): Apply and fine-tune fade, slide, and wipe transitions between frames
  - [Set GIF Export Options](/tinyimage/gif-settings.md): Configure dimensions, fit, quality, color palette handling, and dithering
  - [Export and Download GIF Files](/tinyimage/gif-export.md): Render the final GIF and download it once processing is complete

---

---
url: "/tinyimage/overview/install.md"
description: "Ensure you're logged into your Figma account, then follow the steps below to install and run the [TinyImage Figma Plugin](https://www.figma.com/community/plugin/789009980664807964/tinyimage-compressor)."
---

# Install and run the TinyImage Figma Plugin

> Ensure you're logged into your Figma account, then follow the steps below to install and run the [TinyImage Figma Plugin](https://www.figma.com/community/plugin/789009980664807964/tinyimage-compressor).

### Video Tutorial: How to install (and remove) Figma plugins

This video tutorial is a complete step-by-step guide showing you the new process of how to install (and remove) Figma plugins after the mid-2024 "UI3" update to the Figma app
[Embedded media](https://www.youtube.com/embed/CzjxF2Jv6PM)

## Installing the TinyImage Figma Plugin

1. Open any Figma file.
2. Click on the **Actions** icon in the bottom Figma toolbar.
3. Click the **Plugins & Widgets** tab to filter results to Figma plugins.
4. Search for **TinyImage** in the search bar.
5. Click on the **TinyImage** search result.
6. Click the **Save** button to install the TinyImage plugin.

> **Note:** Figma users in a **Figma Organization** may only be able to install approved plugins. Please contact your Figma Org admin at your company to [approve the TinyImage plugin](https://help.figma.com/hc/en-us/articles/4404228724759-Manage-plugins-and-widgets-in-an-organization) if you're unable to install certain Figma plugins.

## Running the TinyImage Figma Plugin

Once you've [installed](#installing-the-figma-plugin) the **TinyImage** Figma plugin, to run the plugin in your Figma file:

  1. **Right-click** anywhere on your Figma file's page canvas
  2. Hover your mouse over the **Plugins** ▶ menu item
  3. Hover your mouse over the **Saved plugins** ▶ menu item
  4. Click on the **TinyImage** plugin menu item

> **Tip:** After you've run the **TinyImage** plugin once in a Figma file, you'll be able to quickly re-launch it by clicking the **TinyImage** icon in the right-hand side Figma column (under the **Plugin** subheading).

> **Warning:** Only Figma users with **Edit** access to a Figma file can run a Figma plugin in that Figma file; if you only have **View** permissions, you won't be able to run any Figma plugins in that file.

## Uninstalling the TinyImage Figma plugin

1. Open any Figma file.
2. Click on the **Actions** icon in the bottom Figma toolbar.
3. Click the **Plugins & Widgets** tab to filter results to Figma plugins.
4. Search for **TinyImage** in the search bar.
5. Click on the **TinyImage** search result.
6. Click the **Remove** button to uninstall the TinyImage plugin.

> **Note:** This will remove the plugin from your **Saved Plugins** list, however, the Figma plugin may still show up under your **Recents** list (if it has been recently run), as Figma saves this list of recent plugins in your browser's/app's local storage. The plugin will vanish from the Recents menu after other plugins are run to take its place.

---

---
url: "/tinyimage/overview/pro.md"
description: "After trying out all the Pro features of TinyImage **10 times**, you can optionally upgrade to continue using all the extra features that are only available in the Pro version; or if you're a casual user, you can continue using the Free version forever."
---

# Activating TinyImage Pro

> After trying out all the Pro features of TinyImage **10 times**, you can optionally upgrade to continue using all the extra features that are only available in the Pro version; or if you're a casual user, you can continue using the Free version forever.

> **Tip:** Need a TinyImage Pro account? You can purchase a Pro account for you or your team by visiting the [TinyImage](https://www.hypermatic.com/tinyimage/#pro) product page on the Hypermatic website.

## Activating the Figma plugin with an TinyImage Pro license key

1. **Purchase a Pro license** for you or your team by visiting the [TinyImage](https://www.hypermatic.com/tinyimage/#pro) product page on the Hypermatic website.
2. **Run the TinyImage Plugin**, then click on the **Upgrade Now** button at the bottom of the Figma plugin window.
3. **Paste in your Pro key**, then click the **Unlock** button.

This will unlock the Pro version of TinyImage and give you unlimited use all of the Figma plugin features.

> **Warning:** Please note, if you're in China, the accounts server _may_ be blocked by "The Great Firewall of China". If you're seeing a activation error, despite using a valid key, you will likely need to use a [VPN](https://protonvpn.com/free-vpn/) to resolve the issue.

> **Info:** If you ever need to use a different license key at any time (eg. you were using your own personal Pro license key, but now your employer is buying you a Pro license to use instead), you can press **CTRL + K** while your plugin window is open in Figma, and this will bring up the license key prompt again, where you can enter a different license key.

---

---
url: "/tinyimage/overview/quickstart.md"
description: "Export compressed JPG, PNG, SVG, WebP, AVIF, GIF and PDF files from Figma, reducing sizes by up to 95%."
---

# Get Started with TinyImage

> Export compressed JPG, PNG, SVG, WebP, AVIF, GIF and PDF files from Figma, reducing sizes by up to 95%.

[![TinyImage Figma Plugin](https://www.hypermatic.com/tinyimage.jpg)](https://www.figma.com/community/plugin/789009980664807964/tinyimage-compressor)

## Install & Activate TinyImage

- [Install & Run the Figma plugin](/tinyimage/overview/install.md): How to run TinyImage inside of Figma
- [Activate TinyImage Pro](/tinyimage/overview/pro.md): How to buy and use a Pro license key

## Using TinyImage

  - [TinyImage Documentation](/tinyimage/compress.md): Detailed docs with short screencaps
  - [TinyImage Video Tutorials](/tinyimage/tutorials.md): Full step-by-step video walkthroughs

## Frequently Asked Questions

- [Troubleshooting TinyImage](/tinyimage/faq/troubleshooting.md): Common issues issues you may run into
- [TinyImage Security](/tinyimage/faq/security.md): Details about how TinyImage works
- [Receipts](/faq/receipts.md): Find email receipts and PDF invoices
- [Billing](/faq/billing.md): Manage your Pro subscription
- [License Seat Management](/faq/seats.md): Manage the Figma users on your key
- [TinyImage Free vs Pro](/tinyimage/faq/plans.md): Compare Free vs Pro features

[Video](https://www.hypermatic.com/assets/videos/tinyimage/TINYIMAGE_DEMO.mp4)

## TinyImage Features

- Exports images up to 95% smaller than the default exports from Figma.
- Privacy focused — no image data ever leaves your Figma file.
- Create and export animated GIF, animated PNG (APNG), animated WebP, WebMs or MP4 videos from selected layers (with optional transition effects).
- Optionally add .mp3 audio files to MP4 video exports.
- Downsize and compress your Figma image fills to their layer size.
- Built-in ICC color profile support for PNG exports.
- Convert JPG and PNGs to WebP, AVIF, Progressive JPEG, or SVG to Tiny 1.2 format.
- Use percentage based compression, or maximum KB file size targets.
- Set specific compression level overrides per image.
- Merge Figma frames into a single compressed PDF file.
- Add custom password protection to exported PDF files.
- Export PDFs as RGB, CMYK or Greyscale (with optional Bleed and Crop Marks).
- Supports compressing/exporting multiple sizes and formats per layer.
- Advanced custom filenames (eg. "#name_#width_x_#height_#date").
- Automatically saves multiple images as a .zip file.

---

---
url: "/tinyimage/pdf-export.md"
description: "Merge and compress selected frames into a PDF, then download the final exported file from TinyImage."
---

# Exporting and Downloading PDF Files

> Merge and compress selected frames into a PDF, then download the final exported file from TinyImage.

### Video Tutorial: Merge frames to a compressed PDF

This video tutorial is a complete step-by-step guide showing you how to export merged frames from Figma as compressed PDF files directly from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/P5PJhwtYrkM)

[Video](/assets/videos/tinyimage/compress/pdf-save.mp4)

When your frame selection, ordering, and PDF settings are ready:

1. Click **Export PDF** in the toolbar.
2. TinyImage merges and compresses pages one by one.
3. The `.pdf` file download starts automatically after export completes.

> **Info:** PDF exports can take longer than JPG or SVG exports, especially for detailed pages or image-heavy content.

> **Warning:** If your downloaded file is missing the `.pdf` extension and opens as plain text, manually rename it to include `.pdf`.

> **Tip:** **Saving file downloads from Figma** If you're using the Figma **desktop app**, you'll see a prompt appear to download your file. However, if you're using Figma in a **web browser**, your file will automatically be downloaded to your computer by default (usually to the **Downloads** directory on your computer).

---

---
url: "/tinyimage/pdf-frames.md"
description: "Open the PDF feature, refresh parent frames from your page, and select which frames to include in the merged PDF."
---

# Loading and Selecting Parent Frames for PDF Exports

> Open the PDF feature, refresh parent frames from your page, and select which frames to include in the merged PDF.

### Video Tutorial: Merge frames to a compressed PDF

This video tutorial is a complete step-by-step guide showing you how to export merged frames from Figma as compressed PDF files directly from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/P5PJhwtYrkM)

## Opening the PDF Feature with Parent Frames

[Video](/assets/videos/tinyimage/compress/opening-pdf.mp4)

Click **Create PDF** in the TinyImage toolbar to load all parent frames from your current Figma page.

> **Note:** Your page must contain at least one parent-level frame (a frame at the root level of the page) to create a merged PDF.

## Refreshing Parent Frames

If you add, remove, or rename parent frames while the PDF view is open, click **Refresh** in the toolbar to reload the frame list.

> **Tip:** You can use **Refresh Parent Frames** after creating new parent frames to instantly add them to the available list.

## Selecting Frames to Merge into PDF

[Video](/assets/videos/tinyimage/compress/pdf-selecting.mp4)

Use the frame selection controls to choose exactly which pages are included in your merged PDF export.

---

---
url: "/tinyimage/pdf-ordering.md"
description: "Control merged PDF page order with custom sorting, Figma layer order, visual row/column sorting, and layer names."
---

# Ordering PDF Pages

> Control merged PDF page order with custom sorting, Figma layer order, visual row/column sorting, and layer names.

### Video Tutorial: Merge frames to a compressed PDF

This video tutorial is a complete step-by-step guide showing you how to export merged frames from Figma as compressed PDF files directly from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/P5PJhwtYrkM)

[Video](/assets/videos/tinyimage/compress/pdf-reorder.mp4)

TinyImage includes multiple sorting options for merged PDF page ordering.

## Sort Pages by Custom Order

Drag and drop frame thumbnails up or down to set manual page order.

> **Note:** Your custom ordering is saved and can be restored by selecting **Sort frames by Custom Order**.

## Sort Pages by Figma Layer Order

Use **Sort frames by Figma Layer Order** to match the order in your Figma layer list.

## Sort Pages Visually by Columns

Use **Sort frames visually by Columns** to sort by visual position column-first.

## Sort Pages Visually by Rows

Use **Sort frames visually by Rows** to sort by visual position row-first.

## Sort Pages by Figma Layer Name

Use **Sort frames by Figma Layer Name** to sort alphabetically by layer names.

---

---
url: "/tinyimage/pdf-print.md"
description: "Configure bleed size, crop marks, and measurement units for print-ready merged PDF exports."
---

# Adding Bleed and Crop Marks to PDF Exports

> Configure bleed size, crop marks, and measurement units for print-ready merged PDF exports.

### Video Tutorial: Add Bleed and Crop Marks to PDF exports from Figma

This video tutorial is a complete step-by-step guide showing you how to add bleed and crop marks to PDF exports from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/V7YaSzZP4-k)

[Video](/assets/videos/tinyimage/compress/pdf-bleed.mp4)

If you need print-ready output:

1. Enable **Add Bleed** in PDF settings.
2. Set bleed size in your preferred unit.
3. Enable **Add Crop Marks** (enabled by default).
4. Export with **Export PDF**.

## Choosing Unit Sizes

You can set bleed values in:

- Millimetres (Default)
- Inches
- Centimetres

Use the unit dropdown to switch units before entering bleed values.

---

---
url: "/tinyimage/pdf-security.md"
description: "Require a password to open merged PDF exports created with TinyImage."
---

# Password Protecting PDF Exports

> Require a password to open merged PDF exports created with TinyImage.

### Video Tutorial: Password protect PDF exports

This video tutorial is a complete step-by-step guide showing you how to export password-protected PDF files directly from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/RZGcAW-eIVw)

[Video](/assets/videos/tinyimage/compress/pdf-password.mp4)

To require a password before opening the exported PDF:

1. Enable **Require a password to open PDFs**.
2. Enter your password in the password input.
3. Export the PDF as usual.

> **Warning:** Share the password securely with recipients. Without the password, they cannot open the exported PDF.

---

---
url: "/tinyimage/pdf-settings.md"
description: "Configure PDF quality, image downscaling, and color profile options for merged PDF exports."
---

# Setting PDF Export Options

> Configure PDF quality, image downscaling, and color profile options for merged PDF exports.

### Video Tutorial: Merge frames to a compressed PDF

This video tutorial is a complete step-by-step guide showing you how to export merged frames from Figma as compressed PDF files directly from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/P5PJhwtYrkM)

## Choose PDF Quality

[Video](/assets/videos/tinyimage/compress/pdf-quality.mp4)

Use the quality slider to set output quality between **72dpi** and **300dpi**.

## Downscale Large Figma Image Fills

Enable **Downscale large Figma image fills** to resize oversized image fills to their actual layer size before export.

This can significantly reduce exported PDF size and improve export reliability for image-heavy files.

## Choose PDF Color Profile

[Video](/assets/videos/tinyimage/compress/pdf-profiles.mp4)

Select the **PDF Color Profile** that matches your output use case:

- RGB (Default, For Screens)
- CMYK (For Print)
- Greyscale (Black And White)

> **Tip:** If your export contains vector path gradients, enable **Vector Path Gradients** when needed to preserve expected gradient rendering.

---

---
url: "/tinyimage/pdf.md"
description: "Create and export merged PDFs from Figma parent frames with ordering, quality, color profile, print, and security options."
---

# Merging Figma Frames into a PDF

> Create and export merged PDFs from Figma parent frames with ordering, quality, color profile, print, and security options.

### Video Tutorial: Merge frames to a compressed PDF

This video tutorial is a complete step-by-step guide showing you how to export merged frames from Figma as compressed PDF files directly from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/P5PJhwtYrkM)
### Video Tutorial: Add Bleed and Crop Marks to PDF exports from Figma

This video tutorial is a complete step-by-step guide showing you how to add bleed and crop marks to PDF exports from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/V7YaSzZP4-k)

TinyImage includes a **Create PDF** feature that lets you merge parent frames from your Figma page into a compressed PDF export.

## Get Started with Creating PDF Exports

Use the pages below to configure each part of your PDF export workflow:

  - [Load and Select Parent Frames](/tinyimage/pdf-frames.md): Load parent frames from your page and choose which frames to include
  - [Order PDF Pages](/tinyimage/pdf-ordering.md): Reorder pages manually or sort by layers, rows, columns, and names
  - [Set PDF Export Options](/tinyimage/pdf-settings.md): Configure quality, downscaling, and color profile options
  - [Add Bleed and Crop Marks](/tinyimage/pdf-print.md): Configure print-focused settings including bleed size and crop marks
  - [Protect PDF Files with Passwords](/tinyimage/pdf-security.md): Require a password before the exported PDF can be opened
  - [Export and Download PDF Files](/tinyimage/pdf-export.md): Merge, compress, and download your final PDF file

---

---
url: "/tinyimage/settings.md"
description: "TinyImage has a settings panel that allows you to further customise your compressed image exports from the plugin."
---

# Configuring TinyImage advanced settings

> TinyImage has a settings panel that allows you to further customise your compressed image exports from the plugin.

[Video](/assets/videos/tinyimage/compress/open-settings-panel.mp4)

You can open the settings panel by clicking the **Settings** icon button in the TinyImage toolbar, and after you've opened the Settings panel, you can customize the TinyImage features below:

- [Converting image formats](/tinyimage/settings/convert)
- [Setting ICC color profiles for PNG exports](/tinyimage/settings/profiles)
- [Customising the filename/folder structure for your images](/tinyimage/settings/naming)
- [Specifying additional options for PDF file export](/tinyimage/settings/pdfs)

---

---
url: "/tinyimage/settings/convert.md"
description: "If you need to convert your images to formats that Figma doesn't support exporting to natively, you can select an **Image Conversion** option to export converted images."
---

# Converting images to other image formats

> If you need to convert your images to formats that Figma doesn't support exporting to natively, you can select an **Image Conversion** option to export converted images.

[Video](/assets/videos/tinyimage/compress/webp-conversion.mp4)

The TinyImage image conversion setting allows you to convert images to either Google's **[WebP](https://en.wikipedia.org/wiki/WebP)** format, the **[AVIF]()** (AV1) format, the **[Progressive JPEG](https://www.liquidweb.com/kb/what-is-a-progressive-jpeg/)** format, or the [Tiny 1.2 SVG](https://www.w3.org/TR/SVGTiny12/) format.

> **Tip:** **Adding PNG and JPG fallbacks for WebP or AVIF conversions**. By default, converting your JPG and PNG images to WebP or AVIF will automatically substitute the original formats in your export. If you'd like to convert your images to WebP or AVIF and _also_ include compressed versions of the original JPG and PNG formats in your export, you can enable the **Include PNG/JPG fallbacks** toggle.

---

---
url: "/tinyimage/settings/naming.md"
description: "TinyImage lets you specify a custom filename format that will be applied to all of your exported images. This can be really useful for giving a consistent naming convention to all of your exports."
---

# Setting custom filename/subfolder naming format

> TinyImage lets you specify a custom filename format that will be applied to all of your exported images. This can be really useful for giving a consistent naming convention to all of your exports.

### Video Tutorial: Export images with custom folder path names from Figma

This video tutorial is a complete step-by-step guide showing you how to export images with custom folder path names from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/OyclTDvvo64)

[Video](/assets/videos/tinyimage/compress/custom-filenames.mp4)

The **Filename Format** field is optional, and if you leave this field empty/blank, it will default to **#&lcub;name&rcub;#&lcub;suffix&rcub;**.

## Available variables for your filenames

You can **mix and match** _any_ of the variables below into your custom subfolder/filename pattern, including regular text and characters (like underscores or letters/numbers).

- **#&lcub;name&rcub;** The name of the Figma layer (eg. "My Figma Layer Name")
- **#&lcub;scale&rcub;** The scale from the export setting (eg. "2x")
- **#&lcub;width&rcub;** The width of the image (eg. "1024")
- **#&lcub;height&rcub;** The layer height (eg. "768")
- **#&lcub;suffix&rcub;** The suffix from the export setting (eg. "\_example")
- **#&lcub;date&rcub;** Timestamp at the time of export (eg. "28-Sep-2020")
- **#&lcub;section&rcub;** The parent Figma Section layer name, if it exists (eg. "Section 1")
- **#&lcub;frame&rcub;** The parent Figma Frame layer name, if it exists (eg. "Frame 1")

> **Note:** **Creating Sub Folders**. To create a subfolder, you can add a "**/**" anywhere in your custom filename format. For example **#&lcub;date&rcub;/#&lcub;width&rcub;x#&lcub;height&rcub;/#&lcub;name&rcub;** would create a dynamic folder structure like **28-Sep-2020/1024x768/my_figma_layer_name.jpg** (where the variables get swapped out for the real values related to each exported image).

---

---
url: "/tinyimage/settings/pdfs.md"
description: "You can customize how any PDF files are exported from TinyImage by setting custom options in the Settings panel, including password protection, removing Figma's black link borders, color profiles (eg. CMYK) and downsizing image fills."
---

# Setting options for PDF exports

> You can customize how any PDF files are exported from TinyImage by setting custom options in the Settings panel, including password protection, removing Figma's black link borders, color profiles (eg. CMYK) and downsizing image fills.

[Video](/assets/videos/tinyimage/compress/settings-pdf.mp4)

## Setting a password for your PDF exports

If you would like your exported PDF files to require a password before they can be opened, you can enable the **Require a password to open PDFs** setting, then set your own password in the **password input** field. Ensure that you give this password to anyone you're sending your exported PDF files to, or they won't be able to open the file to view its contents.

## Toggle black borders around links in PDF exports

By default, TinyImage automatically removes the black outlines around links that normal PDF exports from Figma includes. If you would like to override this behavior and include a 1px black border around links inside your PDF exports, you can enable the **Outline Links** toggle (which is turned off by default).

## Choosing a color profile for your PDF exports

Depending on how your exported PDFs are going to be used, you may need to change the colour profile setting, which you can do by choosing an option from the **PDF Color Profile** select box.

- RGB (Default/For Screens)
- CMYK (For Print)
- Greyscale (Black & White)

> **Tip:** **Gradient fills in PDF exports**. If you're exporting layers to PDF that contain gradient fills inside any vector paths, you can enable the **Vector Path Gradients** setting to ensure the gradient is rendered as expected. If you don't need this option, there's no need to enable it.

## Downsizing your Figma layer fills for your PDF exports

Enabling the **Downscale large Figma image fills** toggle will automatically resize (and lightly compress) any Figma image fills on your layers to their actual layer size. This is useful if you've originally imported high resolution images to your Figma file, but then shrunk the layer dimensions down to be much smaller (with the original large image file still being used).

One common case of this would be adding a large image from Unsplash (or another stock photo site/plugin), the resizing that layer to be used as a much smaller "card" or "avatar" image. This can cause the performance of your Figma file to slow down and potentially crash when exporting these layers via the TinyImage PDF export options; so using this feature will help save file size and improve page performance in your Figma file.

---

---
url: "/tinyimage/settings/profiles.md"
description: "You can customize the color profile of your PNG exports from Figma based on your own needs by selecting an ICC profile in the advanced settings panel."
---

# Setting custom ICC color profile for PNG exports

> You can customize the color profile of your PNG exports from Figma based on your own needs by selecting an ICC profile in the advanced settings panel.

[Video](/assets/videos/tinyimage/compress/icc-profiles.mp4)

Depending on how your exported PNGs are going to be used, you may need to change the colour profile setting, which you can do by choosing an option from the **PNG Color Profile** select box:

- Display P3 (Max Compatibility)
- Display P3 (Max Correctness)
- DCI-P3
- Adobe RGB (1998)
- Apple RGB
- ColorMatch RGB
- Wide Gamut RGB
- CMYK
- sRGB
- sGrey
- ProPhoto RGB

> **Note:** **Toggling the ICC Version**. By default, ICC Version 4 (v4) is selected, but if you need your color profiles to be  ICC Version 2 (v2) instead, you can _uncheck_ the **Use ICC Version 4** toggle.

---

---
url: "/tinyimage/settings/window-size.md"
description: "You can toggle the width of the TinyImage plugin window in Figma by pressing the 'Shift + W' keyboard combo shortcut while the plugin is running (and focused)."
---

# Expanding/toggling the size of the plugin window

> You can toggle the width of the TinyImage plugin window in Figma by pressing the 'Shift + W' keyboard combo shortcut while the plugin is running (and focused).

[Video](/assets/videos/tinyimage/compress/resize-window.mp4)

If you have longer layer names that you'd like to see more easily in the plugin exportable image list, you can toggle the width of the Figma plugin window by by pressing the **Shift + W** keyboard combo shortcut while the plugin is running (and focused).

> **Tip:** Your expanded window size setting will be automatically saved between plugin runs inside the Figma file, so the plugin window will either be normal width or the expanded width based on the last time you toggled it in the current Figma page.

---

---
url: "/tinyimage/tutorials.md"
description: "The best free Figma tutorial videos for beginners (or power users) to level up."
---

# TinyImage Video Tutorials

> The best free Figma tutorial videos for beginners (or power users) to level up.

## Compressing Images

### Compress JPG/PNG images

This video tutorial is a complete step-by-step guide showing you how to export compressed JPG/PNG/SVG/PDF images directly from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/NEXtO-RKlLs)

### Compress Figma image exports to file size targets

This video tutorial is a complete step-by-step guide showing you how to compress your image exports to a maximum file size target using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/vPV8JhZ8cq4)

### Compress SVG images

This video tutorial is a complete step-by-step guide showing you how to export compressed SVG images directly from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/LHaPsRtY71s)

### Export WebP images

This video tutorial is a complete step-by-step guide showing you how to export compressed WebP images directly from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/khpzcbBWqHk)

### Export PNGs with custom ICC color space profiles from Figma

This video tutorial is a complete step-by-step guide showing you how to export PNG images with custom ICC color space profiles from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/HJ2D-Rk-MmI)

### Export images with custom folder path names from Figma

This video tutorial is a complete step-by-step guide showing you how to export images with custom folder path names from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/OyclTDvvo64)

### Export Progressive JPEG images

This video tutorial is a complete step-by-step guide showing you how to export Progressive JPEG images directly from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/eG3-iG-7KyE)

### Export AVIF images

This video tutorial is a complete step-by-step guide showing you how to export AVIF images (AV1 Image File Format) directly from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/r4cfVy9H1ac)

## PDFs

### Merge frames to a compressed PDF

This video tutorial is a complete step-by-step guide showing you how to export merged frames from Figma as compressed PDF files directly from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/P5PJhwtYrkM)

### Export compressed PDFs in CMYK

This video tutorial is a complete step-by-step guide showing you how to export compressed PDF files in CMYK and Greyscale directly from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/YUjWSBkl24A)

### Add Bleed and Crop Marks to PDF exports from Figma

This video tutorial is a complete step-by-step guide showing you how to add bleed and crop marks to PDF exports from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/V7YaSzZP4-k)

### Reduce large file sizes for heavy PDF exports from Figma

This video tutorial is a complete step-by-step guide showing you how to reduce large file sizes for heavy PDF exports from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/VY5EJyuP2nk)

### Password protect PDF exports

This video tutorial is a complete step-by-step guide showing you how to export password-protected PDF files directly from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/RZGcAW-eIVw)

### Remove black borders from links in Figma PDF exports

This video tutorial is a complete step-by-step guide showing you how to remove black box border outlines from links in Figma PDF exports using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/RNxesGuYnrU)

## GIFs & Videos

### Create animated GIFs

This video tutorial is a complete step-by-step guide showing you how to animate and export GIFs from your own designs directly from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/FYlk5a69Ewc)

### Add transition effects to animated GIF exports in Figma

This video tutorial is a complete step-by-step guide showing you how to add fade/slide/wipe transition effects to animated GIF exports in Figma using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/GwfVWRAS1qk)

### Export WebM videos from your Figma layers

This video tutorial is a complete step-by-step guide showing you how to animate and export WebM videos from your design's layers directly from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/XBIx2895HZg)

### Export animated PNG (APNG) images from Figma

This video tutorial is a complete step-by-step guide showing you how to export animated PNG (APNG) images from your design's layers directly from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/_XHr54EMOaU)

### Export animated WebP images from Figma

This video tutorial is a complete step-by-step guide showing you how to export animated WebP images from your design's layers directly from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/e8EfMxu0oog)

### Export animated MP4 videos from Figma

This video tutorial is a complete step-by-step guide showing you how to export animated MP4 videos from your design's layers directly from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/sCARTYdqIrQ)

### Add audio to Figma animated MP4 video exports

This video tutorial is a complete step-by-step guide showing you how to add audio to Figma animated MP4 video exports from your design's layers directly from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/bJI_BKzSvJU)

## Figma Image Fills

### Bulk export original image files from any Figma layer fills

This video tutorial is a complete step-by-step guide showing you how to bulk export original image files from any Figma layer fills using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/hQ5Lwtzm7NI)

### Downsize Figma image fills to their layer size

This video tutorial is a complete step-by-step guide showing you how to downscale and optimize your image fills in Figma to their layer size (and speed up file performance) using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/N-GtTpEZy_A)

---

---
url: "/tinyimage/video.md"
description: "Export animated MP4 videos from selected Figma layers using the same animation editor workflow as GIF exports in TinyImage."
---

# Creating animated MP4 videos from layers

> Export animated MP4 videos from selected Figma layers using the same animation editor workflow as GIF exports in TinyImage.

### Export animated MP4 videos from Figma

This video tutorial is a complete step-by-step guide showing you how to export animated MP4 videos from your design's layers directly from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/sCARTYdqIrQ)

### Add audio to Figma animated MP4 video exports

This video tutorial is a complete step-by-step guide showing you how to add audio to Figma animated MP4 video exports from your design's layers directly from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/bJI_BKzSvJU)

TinyImage supports exporting animations as `.mp4` videos using the same animation editor UI and workflow as the GIF exporter.

## Using the same animation editor as GIF exports

The MP4 workflow uses the same frame selection, ordering, timing, transition, and preview controls as the GIF workflow.

To configure those shared controls, follow the GIF animation editor guide:

- [Create animated GIFs from layers](/tinyimage/gif)

## Exporting to MP4 format

Once your animation preview is ready:

1. Open the export format dropdown in the animation toolbar.
2. Select **MP4 Video**.
3. Click **Export** to render your `.mp4` file.

After rendering finishes, TinyImage will automatically download the exported MP4 file to your computer.

## Adding audio to MP4 exports

MP4 exports can include optional audio:

1. Add an `.mp3` audio track in the MP4 export options.
2. Confirm your animation timing and preview.
3. Export as **MP4 Video**.

> **Note:** Audio tracks are only supported for MP4 exports.

> **Tip:** **Saving file downloads from Figma** If you're using the Figma **desktop app**, you'll see a prompt appear to download your file. However, if you're using Figma in a **web browser**, your file will automatically be downloaded to your computer by default (usually to the **Downloads** directory on your computer).

---

---
url: "/tinyimage/webm.md"
description: "Export animated WebM videos from selected Figma layers using the same animation editor workflow as GIF exports in TinyImage."
---

# Creating WebM videos from layers

> Export animated WebM videos from selected Figma layers using the same animation editor workflow as GIF exports in TinyImage.

### Export WebM videos from your Figma layers

This video tutorial is a complete step-by-step guide showing you how to animate and export WebM videos from your design's layers directly from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube.com/embed/XBIx2895HZg)

TinyImage supports exporting animations as `.webm` videos using the same animation editor UI and workflow as the GIF exporter.

## Using the same animation editor as GIF exports

The WebM workflow uses the same frame selection, ordering, timing, transition, and preview controls as the GIF workflow.

To configure those shared controls, follow the GIF animation editor guide:

- [Create animated GIFs from layers](/tinyimage/gif)

## Exporting to WebM format

Once your animation preview is ready:

1. Open the export format dropdown in the animation toolbar.
2. Select **WebM Video**.
3. Click **Export** to render your `.webm` file.

After rendering finishes, TinyImage will automatically download the exported WebM file to your computer.

> **Tip:** **Saving file downloads from Figma** If you're using the Figma **desktop app**, you'll see a prompt appear to download your file. However, if you're using Figma in a **web browser**, your file will automatically be downloaded to your computer by default (usually to the **Downloads** directory on your computer).

---

---
url: "/weblify/faq/plans.md"
description: "To get unlimited usage of all of the Weblify Pro features, you will need to purchase a license from the [Hypermatic website](https://hypermatic.com/weblify#pro)."
---

# Weblify Free vs Weblify Pro

> To get unlimited usage of all of the Weblify Pro features, you will need to purchase a license from the [Hypermatic website](https://hypermatic.com/weblify#pro).

Weblify includes 10 free trials of the _Pro_ version. Once these trials have been used up, the Figma plugin will revert to their _Free_ version, which will have limited functionality.

  - **Weblify Free**: ### HTML/CSS Inspections Unlimited Usage       ### React Inpections Try during 10 Pro Trials       ### Tailwind Inpections Try during 10 Pro Trials       ### Vue Inpections Try during 10 Pro Trials       ### Copy Code to Clipboard Try during 10 Pro Trials       ### Component Downloads Try during 10 Pro Trials
  - **Weblify Pro**: ### HTML/CSS Inspections Unlimited Usage       ### React Inpections Unlimited Usage       ### Tailwind Inpections Unlimited Usage       ### Vue Inpections Unlimited Usage       ### Copy Code to Clipboard Unlimited Usage       ### Component Downloads Unlimited Usage

---

---
url: "/weblify/faq/security.md"
description: "Weblify runs as an official plugin inside of Figma's own app, which are reviewed and approved by the Figma team."
---

# Weblify Security

> Weblify runs as an official plugin inside of Figma's own app, which are reviewed and approved by the Figma team.

The Figma plugin is run directly from Figma's own servers, and runs inside of a your Figma file, which means that it inherits all of the [security](https://www.figma.com/security/) and infrastructure of the Figma platform, which exceed industry standards for data protection and security:

- SOC 2 Type 2
- SOC 3
- Cloud Security Alliance (CSA) STAR: Level 1
- ISO/IEC 27001:2013
- ISO/IEC 27018:2019
- EU Cloud Code of Conduct (COC): Level 2

There's **no additional software** that needs to be installed to use the Figma plugin, as Figma plugins run as a built-in part of Figma's own native functionality, and all Figma plugins easily accessibile and can be instantly run from inside any Figma file, or via the official [Figma Community](https://www.figma.com/community) ecosystem inside of the Figma app.

If your organization is already approved to use Figma, then you _already have access_ to Figma plugins.

## How Weblify works

The [Weblify Figma plugin](https://www.figma.com/community/plugin/927336249307137996) helps users easily inspect their Figma layers as HTML, React or Vue code.

Weblify is designed to be privacy and security focused, so nothing _ever_ leaves your Figma file.

All functionality and file exports are handled client-side directly in the Figma plugin using the [Figma Plugins API](https://www.figma.com/plugin-docs/), and are _never_ uploaded, processed or stored anywhere in the cloud or outside of Figma.

## What Weblify does and doesn't do

Weblify uses the [Figma Plugins API](https://www.figma.com/plugin-docs/) to help users inspect their Figma layers as code, and download them as code components _directly_ to their computer.

Weblify doesn't rely on _any_ external servers to handle inspecting Figma layers as code, which means that nothing in your Figma file ever leaves the Figma plugin or Figma itself; any files that are exported via the plugin are done so entirely locally to the user's own computer.

### Weblify does

- Allow users to click on a Figma layer to inspect it as code.
- Allow users to optionally download their selected layer as a component file.
- Download any component files _directly_ to the user's computer.

### Weblify does _not_

- Upload _any_ data from your Figma file.
- Store _any_ data from your Figma file.
- Use _any_ servers or cloud storage to process or store your Figma data.
- Collect or store _any_ personal information (Figma plugins *cannot* access any private information about Figma projects, Figma teams or Figma users).

## How Figma plugins work

Figma plugins are written in HTML/CSS/Javascript, and are run in a tightly controlled [sandbox environment](https://www.figma.com/plugin-docs/how-plugins-run/) inside of the main Figma application.

Figma plugins can only do whatever Figma allows them to do inside the permissions of the [Figma Plugins API](https://www.figma.com/plugin-docs/), and importantly, **plugins don't have any access to personal information** about the Figma user running the plugin.

## What Figma plugins can and can't do

As per the article on [Figma plugin security](https://www.figma.com/blog/how-we-built-the-figma-plugin-system/), there are a limited number of things that Figma plugins can do, and many more things that they can't do:

### Figma plugins can

- Only be run by an explicit user action
- Show UI in a single plugin-specific dialog
- Read any data in your Figma document (e.g. a “find layer by name” plugin)
- Modify any data in your Figma document (e.g. a “rename selected layers” plugin)
- Communicate with any server over the internet (e.g. an “import from service X” plugin)

### Figma plugins _cannot_

- Run by themselves
- Get information about the project or team that owns the file
- Access anything when they aren’t running
- Access data from any files other than the file they were run in
- Change Figma’s UI outside of the plugin UI dialog

> **Tip:** Figma account administrators at your company can [configure an allowlist of plugins](https://help.figma.com/hc/en-us/articles/4404228724759-Manage-plugins-and-widgets-in-an-organization) that are allowed inside the organization. This can be used to prevent untrusted Figma plugins from being run in any file in that organization.

---

---
url: "/weblify/faq/troubleshooting.md"
description: "Troubleshooting guide for Weblify beta limitations and common plugin errors."
---

# Troubleshooting Weblify

> Troubleshooting guide for Weblify beta limitations and common plugin errors.

### Missing HTML attributes, styles or frontend frameworks

Weblify is currently still in **BETA**, and support for more HTML attributes, styles and frameworks will be released in upcoming versions.

  ### VPN may be required in China

Please note, if you're in China, the accounts server _may_ be blocked by "The Great Firewall of China". If you're seeing an activation error, despite using a valid key, you will likely need to use a [VPN](https://protonvpn.com/free-vpn/) to resolve the issue.

  ### 'An error occurred while loading the plugin environment'

This may happen in the Figma desktop app if [the Use Developer VM](https://www.figma.com/plugin-docs/debugging/#developer-vm) debug setting in Figma is enabled by mistake; you can make sure it's turned off by **right-clicking** anywhere on your Figma canvas, hovering over **Plugins**, then hovering over **Development**, and making sure that the **Use Developer VM** is _unchecked_; after it is unchecked (and does _not_ have a tick icon next to it), re-running the Figma plugin should work as expected.

---

---
url: "/weblify/inspect/frameworks.md"
description: "Inspect your Figma layers as either HTML, Tailwind, React or Vue code."
---

# Selecting the code output format

> Inspect your Figma layers as either HTML, Tailwind, React or Vue code.

[Video](/assets/videos/weblify/inspect/select-framework.mp4)

> **Note:** Please note that Weblify is currently still in **BETA** and the code output will continually improve with upcoming plugin updates.

After running the Weblify Figma plugin, ensure that the **Inspect Code** tab is selected, then you can instantly change the format of the code output in the Weblify inspector window by clicking on the code format drop down selector, which will render the code output in the selected framework of your choice.

### Supported Code Formats in Weblify

Weblify currently supports selecting the web framework options below:

- HTML/CSS
- Tailwind
- Tailwind (with `@apply`)
- React
- Vue

---

---
url: "/weblify/inspect/layers.md"
description: "Using the Weblify plugin, you can select any Figma layer on the current page and inspect it as code."
---

# Inspecting Figma layers as code

> Using the Weblify plugin, you can select any Figma layer on the current page and inspect it as code.

[Video](/assets/videos/weblify/inspect/select-layer.mp4)

> **Note:** Please note that Weblify is currently still in **BETA** and the code output will continually improve with upcoming plugin updates.

After running the Weblify Figma plugin, ensure that the **Inspect Code** tab is selected, and then click on any Figma layer on your current page, which will automatically generate the HTML markup and CSS styles for the selected Figma layer. You can also [choose a code output option](/weblify/inspect/frameworks) to match your own codebase.

---

---
url: "/weblify/inspect/preview.md"
description: "The **Preview HTML** tab in Weblify allows you to see a live preview of how your generated code looks at different viewport sizes."
---

# Visually previewing your selelected Figma layer's generated code

> The **Preview HTML** tab in Weblify allows you to see a live preview of how your generated code looks at different viewport sizes.

[Video](/assets/videos/weblify/inspect/preview-code.mp4)

> **Note:** Please note that Weblify is currently still in **BETA** and the code output will continually improve with upcoming plugin updates.

After running the Weblify Figma plugin, ensure that the **Preview HTML** tab is selected, and then click on any Figma layer on your current page, which will automatically generate a live visually rendered preview of the HTML/CSS code that was generated. You can select another layer while the HTML preview is open, which will refresh the preview automatically to reflect the newly selected Figma layer.

### Changing the preview viewport width

By default, the preview window width will be automatically sized to match the width of the Figma layer that's selected, but you can optionally change this width by clicking on the viewport drop down selector, and choose a preset viewport/device width to see how it looks at that size.

---

---
url: "/weblify/inspect/save.md"
description: "You can either copy code to your clipboard with one click, or download all of your code and any image assets to a .zip file directly to your computer."
---

# Copying or downloading your code

> You can either copy code to your clipboard with one click, or download all of your code and any image assets to a .zip file directly to your computer.

[Video](/assets/videos/weblify/inspect/download-code.mp4)

> **Note:** Please note that Weblify is currently still in **BETA** and the code output will continually improve with upcoming plugin updates.

### Copy the code to your clipboard

After you've [selected a Figma layer](/weblify/inspect/layers) to inspect, you can copy the code to your clipboard by clicking on the **Copy** button next to any block of code under the **Inspect Code** tab.

### Download code and images to a .zip file

If you'd prefer to download all of the code files for the selected Figma layer in one go, you can click on the **Download .zip** button to download all of the code files and any image assets for your selected Figma layer directly to your computer.

---

---
url: "/weblify/overview/install.md"
description: "Ensure you're logged into your Figma account, then follow the steps below to install and run the [Weblify Figma Plugin](https://www.figma.com/community/plugin/927336249307137996/weblify-code-inspector-beta)."
---

# Install and run the Weblify Figma Plugin

> Ensure you're logged into your Figma account, then follow the steps below to install and run the [Weblify Figma Plugin](https://www.figma.com/community/plugin/927336249307137996/weblify-code-inspector-beta).

### Video Tutorial: How to install (and remove) Figma plugins

This video tutorial is a complete step-by-step guide showing you the new process of how to install (and remove) Figma plugins after the mid-2024 "UI3" update to the Figma app
[Embedded media](https://www.youtube.com/embed/CzjxF2Jv6PM)

## Installing the Weblify Figma Plugin

1. Open any Figma file.
2. Click on the **Actions** icon in the bottom Figma toolbar.
3. Click the **Plugins & Widgets** tab to filter results to Figma plugins.
4. Search for **Weblify** in the search bar.
5. Click on the **Weblify** search result.
6. Click the **Save** button to install the Weblify plugin.

> **Note:** Figma users in a **Figma Organization** may only be able to install approved plugins. Please contact your Figma Org admin at your company to [approve the Weblify plugin](https://help.figma.com/hc/en-us/articles/4404228724759-Manage-plugins-and-widgets-in-an-organization) if you're unable to install certain Figma plugins.

## Running the Weblify Figma Plugin

Once you've [installed](#installing-the-figma-plugin) the **Weblify** Figma plugin, to run the plugin in your Figma file:

  1. **Right-click** anywhere on your Figma file's page canvas
  2. Hover your mouse over the **Plugins** ▶ menu item
  3. Hover your mouse over the **Saved plugins** ▶ menu item
  4. Click on the **Weblify** plugin menu item

> **Tip:** After you've run the **Weblify** plugin once in a Figma file, you'll be able to quickly re-launch it by clicking the **Weblify** icon in the right-hand side Figma column (under the **Plugin** subheading).

> **Warning:** Only Figma users with **Edit** access to a Figma file can run a Figma plugin in that Figma file; if you only have **View** permissions, you won't be able to run any Figma plugins in that file.

## Uninstalling the Weblify Figma plugin

1. Open any Figma file.
2. Click on the **Actions** icon in the bottom Figma toolbar.
3. Click the **Plugins & Widgets** tab to filter results to Figma plugins.
4. Search for **Weblify** in the search bar.
5. Click on the **Weblify** search result.
6. Click the **Remove** button to uninstall the Weblify plugin.

> **Note:** This will remove the plugin from your **Saved Plugins** list, however, the Figma plugin may still show up under your **Recents** list (if it has been recently run), as Figma saves this list of recent plugins in your browser's/app's local storage. The plugin will vanish from the Recents menu after other plugins are run to take its place.

---

---
url: "/weblify/overview/pro.md"
description: "After trying out all the Pro features of Weblify **10 times**, you can optionally upgrade to continue using all the extra features that are only available in the Pro version; or if you're a casual user, you can continue using the Free version forever."
---

# Activating Weblify Pro

> After trying out all the Pro features of Weblify **10 times**, you can optionally upgrade to continue using all the extra features that are only available in the Pro version; or if you're a casual user, you can continue using the Free version forever.

> **Tip:** Need a Weblify Pro account? You can purchase a Pro account for you or your team by visiting the [Weblify](https://www.hypermatic.com/weblify/#pro) product page on the Hypermatic website.

## Activating the Figma plugin with an Weblify Pro license key

1. **Purchase a Pro license** for you or your team by visiting the [Weblify](https://www.hypermatic.com/weblify/#pro) product page on the Hypermatic website.
2. **Run the Weblify Plugin**, then click on the **Upgrade Now** button at the bottom of the Figma plugin window.
3. **Paste in your Pro key**, then click the **Unlock** button.

This will unlock the Pro version of Weblify and give you unlimited use all of the Figma plugin features.

> **Warning:** Please note, if you're in China, the accounts server _may_ be blocked by "The Great Firewall of China". If you're seeing a activation error, despite using a valid key, you will likely need to use a [VPN](https://protonvpn.com/free-vpn/) to resolve the issue.

> **Info:** If you ever need to use a different license key at any time (eg. you were using your own personal Pro license key, but now your employer is buying you a Pro license to use instead), you can press **CTRL + K** while your plugin window is open in Figma, and this will bring up the license key prompt again, where you can enter a different license key.

---

---
url: "/weblify/overview/quickstart.md"
description: "Inspect your Figma layers as clean HTML, Tailwind, React or Vue code in one click."
---

# Get Started with Weblify

> Inspect your Figma layers as clean HTML, Tailwind, React or Vue code in one click.

[![Weblify Figma Plugin](https://www.hypermatic.com/weblify.jpg)](https://www.figma.com/community/plugin/927336249307137996/weblify-code-inspector-beta)

## Installing the Weblify Figma Plugin

1. Open any Figma file.
2. Click on the **Actions** icon in the bottom Figma toolbar.
3. Click the **Plugins & Widgets** tab to filter results to Figma plugins.
4. Search for **Weblify** in the search bar.
5. Click on the **Weblify** search result.
6. Click the **Save** button to install the Weblify plugin.

> **Note:** Figma users in a **Figma Organization** may only be able to install approved plugins. Please contact your Figma Org admin at your company to [approve the Weblify plugin](https://help.figma.com/hc/en-us/articles/4404228724759-Manage-plugins-and-widgets-in-an-organization) if you're unable to install certain Figma plugins.

## Running the Weblify Figma Plugin

Once you've [installed](#installing-the-figma-plugin) the **Weblify** Figma plugin, to run the plugin in your Figma file:

  1. **Right-click** anywhere on your Figma file's page canvas
  2. Hover your mouse over the **Plugins** ▶ menu item
  3. Hover your mouse over the **Saved plugins** ▶ menu item
  4. Click on the **Weblify** plugin menu item

> **Tip:** After you've run the **Weblify** plugin once in a Figma file, you'll be able to quickly re-launch it by clicking the **Weblify** icon in the right-hand side Figma column (under the **Plugin** subheading).

> **Warning:** Only Figma users with **Edit** access to a Figma file can run a Figma plugin in that Figma file; if you only have **View** permissions, you won't be able to run any Figma plugins in that file.

## Install & Activate Weblify

- [Install & Run the Figma plugin](/weblify/overview/install.md): How to run Weblify inside of Figma
- [Activate Weblify Pro](/weblify/overview/pro.md): How to buy and use a Pro license key

## Using Weblify

  - [Weblify Documentation](/weblify/inspect/layers.md): Detailed docs with short screencaps
  - [Weblify Video Tutorials](/weblify/tutorials.md): Full step-by-step video walkthroughs

## Frequently Asked Questions

- [Troubleshooting Weblify](/weblify/faq/troubleshooting.md): Common issues issues you may run into
- [Weblify Security](/weblify/faq/security.md): Details about how Weblify works
- [Receipts](/faq/receipts.md): Find email receipts and PDF invoices
- [Billing](/faq/billing.md): Manage your Pro subscription
- [License Seat Management](/faq/seats.md): Manage the Figma users on your key
- [Weblify Free vs Pro](/weblify/faq/plans.md): Compare Free vs Pro features

[Video](https://www.hypermatic.com/assets/videos/weblify/WEBLIFY_DEMO.mp4)

## Weblify Features

- Inspect a Figma layer's markup and styles with one click.
- Toggle between HTML/CSS, Tailwind, React or Vue code output.
- Integrates with Figma's native "Dev Mode" inspector panel.
- Supports auto-layout, wrapping and min/max Figma properties.
- View a live HTML preview of your HTML in the plugin.
- Instantly copy code directly to your clipboard.
- Download your code component as a .zip file.
- Includes assets folder if your layers contain images.
- No external APIs or logins required.

---

---
url: "/weblify/tutorials.md"
description: "The best free Figma tutorial videos for beginners (or power users) to level up."
---

# Weblify Video Tutorials

> The best free Figma tutorial videos for beginners (or power users) to level up.

Coming Soon!
