# 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/ai-agents.md"
description: "Install the Hypermatic Agent Skill for Bannerify and give Codex, Claude Code, Grok, and compatible agents the correct banner workflows."
---

# Use Bannerify with AI agents

> Install the Hypermatic Agent Skill for Bannerify and give Codex, Claude Code, Grok, and compatible agents the correct banner workflows.

Hypermatic Agent Skills give your AI agent a concise Bannerify playbook. The Bannerify skill links to the relevant documentation, follows supported workflows, and requires evidence before the agent reports that a design or export succeeded.

- [Install Hypermatic Agent Skills](https://hypermatic.ai/): Copy the terminal installer or the no-terminal prompt. One install includes all 12 Hypermatic plugin skills.

## Install the Bannerify skill

1. Open [Hypermatic Agent Skills](https://hypermatic.ai/).
2. Copy the terminal command, or copy the no-terminal prompt into your agent.
3. Confirm that `hypermatic-bannerify` appears in the installed skills.
4. Ask the agent to use the Bannerify skill for your task.

## What the skill can help with

- Prepare Figma banner frames and animation timelines.
- Choose the correct HTML, GIF, video, image, or advertising-platform export.
- Check destination-specific size, format, fallback, and packaging requirements.
- Inspect the exported files and report what was actually verified.

## Keyboard Shortcuts

Use [Bannerify Keyboard Shortcuts](/bannerify/automation/parameters) for supported repeatable tasks with a hidden plugin panel. The reference includes plain-field examples, selection requirements and a machine-readable registry. Choose a supported action from the installed plugin’s Quick Actions list; results use normal notifications, document changes and saved files.

## Example prompts

- `Use the Bannerify skill to animate these banner variants and prepare Google Ads exports.`
- `Use the Bannerify skill to review this timeline before I export it.`
- `Use the Bannerify skill to diagnose why this banner export was rejected.`

## Approval and verification

The agent can guide the workflow, or use available Figma and computer-control tools after you approve the requested changes. It must ask before publishing, uploading, overwriting, or performing another consequential action. If it cannot observe the result, it should give you exact validation steps instead of claiming success.

## Trial limits

If Bannerify reports that its trial allowance is exhausted, the agent should stop retrying and send you to [Bannerify pricing and purchase options](https://www.hypermatic.com/bannerify/#pro). Complete checkout and license activation yourself, then tell the agent when Bannerify is active.

## Keep the skill current

Return to [Hypermatic Agent Skills](https://hypermatic.ai/) and use the **Update** command to install the latest stable Bannerify instructions.

---

---
url: "/bannerify/animation/ai-animation-timelines.md"
description: "Copy a Bannerify timeline prompt into your preferred AI assistant, validate its JSON plan, and safely apply the recommended animations and timings."
---

# Creating AI animation timelines

> Copy a Bannerify timeline prompt into your preferred AI assistant, validate its JSON plan, and safely apply the recommended animations and timings.

Bannerify can turn the layers and current timings from one banner into a structured prompt for ChatGPT, Claude, Gemini, or another AI assistant. Paste the returned JSON into Bannerify to validate and review the proposed entry, exit, and hover animations before applying anything.

Bannerify does not contact an AI service or change the timeline when you copy the prompt. You choose where to paste it, and the timeline is only updated after its JSON response passes validation and you click **Apply AI Timeline**.

## Create an AI timeline

1. Load your banner frames or sections into Bannerify.
2. Click the **Create AI Animation Timeline** prompt icon in the header of the banner you want to animate.
3. Describe the direction you want. Include the intended mood, visual hierarchy, important layer order, or elements that should remain subtle.
4. Click **Copy AI Prompt**.
5. After Bannerify confirms that the prompt was copied, paste it into your preferred AI assistant and send it without removing the included timeline data or rules. The generated prompt is copied directly to your clipboard rather than displayed in the plugin.
6. Copy the JSON object from the AI response.
7. Return to Bannerify and paste the response into **Paste and validate the JSON response**. Bannerify automatically validates pasted JSON, or you can click **Validate JSON**.
8. If Bannerify reports an issue, click **Copy JSON Fix Prompt**, paste that prompt into the same AI conversation, then copy and validate its corrected JSON response.
9. Review every proposed change, including the previous and recommended animation and timing.
10. Click **Apply AI Timeline** to update only this banner. If you loaded more than one banner and their layer structure is consistent, click **Apply to All Matching Banners** instead.

The preview updates immediately and Bannerify saves the new animation settings to the Figma layers.

> **Tip:** For more useful results, describe the viewing sequence instead of naming animation presets. For example: _Introduce the headline first, bring the product in from the right, then reveal the CTA. Keep the motion restrained and add a subtle CTA hover._ The copied prompt already supplies the supported Bannerify animation names.

## Review and undo the result

The review panel opens in the right-hand column and shows only the tracks that will change. Its layer list scrolls independently so the review title and apply buttons remain available. Each changed track compares the current entry, exit, and hover settings with the validated recommendation for the affected layer.

**Apply to All Matching Banners** safely reuses the validated plan across the banners currently loaded in Bannerify. A banner only matches when every editable source layer has one unique layer with the same normalized name, layer type, and section scene position, and the banner uses the same source mode and timeline length. Bannerify validates the remapped plan against that banner's animation compatibility and timing windows before applying it. Ambiguous or incompatible banners are skipped, and the confirmation message reports how many banners matched or were skipped.

Applying an AI timeline creates one Bannerify history step, even when several layers or matching banners change. Use the **Undo** button or Command + Z on macOS / Ctrl + Z on Windows to restore the complete previous timeline. You can then redo the same AI plan or generate a fresh one. See [Undoing and redoing timeline changes](/bannerify/animation/undo-redo) for all shortcuts and history behavior.

## What Bannerify includes in the prompt

Each copied prompt contains the information the AI needs to create a valid plan:

- A temporary reference such as `L1` for every editable timeline layer
- Layer names, types, stack order, and bounds
- The banner dimensions and timeline length
- Current entry, exit, and hover settings
- The allowed timing window for each layer or section scene
- Split Text and SVG Draw compatibility
- A catalog of supported Bannerify animation IDs, including saved custom animations that can be used for entry or exit tracks
- Your animation direction

Bannerify does not include raw Figma banner or layer IDs, exported image data, SVG markup, or other layer asset bytes. The copied prompt does include layer names and layout/timeline metadata, so review it before sharing designs that contain confidential naming or structure.

## How the JSON is validated

Bannerify validates the complete response before changing any layer. It checks that:

- The response uses the current Bannerify timeline schema and matches the copied prompt
- Every supplied layer reference appears exactly once
- No unknown layer references or animation IDs were invented
- Split Text and SVG Draw animations are only used on compatible layers
- Entry and exit animations fit inside the layer's allowed timeline or scene window
- Entry and exit ranges do not overlap
- Durations are at least 0.1 seconds
- Timing values can be normalized to Bannerify's 0.1-second timeline increments

The original prompt asks the AI to self-check strict JSON before responding and explicitly excludes prose, URLs, comments, trailing commas, and JSON wrapped inside another string. If the response still fails validation, **Copy JSON Fix Prompt** creates a new prompt containing the exact errors, the rejected response, and the original sanitized timeline instructions so the AI can correct it without starting again.

If the timeline, layer settings, custom animation catalog, or scene timing changes after you copy a prompt, Bannerify rejects the old response. Click **Copy Fresh Prompt** and ask the AI again so its plan is based on the current timeline.

## JSON response format

The copied prompt asks the AI to return a single JSON object in this format:

```json
{
  "schemaVersion": "bannerify.timeline-plan.v1",
  "snapshotId": "ai-example-snapshot",
  "timelineSeconds": 5,
  "layers": [
    {
      "layerRef": "L1",
      "entry": {
        "animationId": "fade-in-bottom",
        "startSeconds": 0.2,
        "durationSeconds": 0.6,
        "loop": false
      },
      "exit": {
        "animationId": "fade-out",
        "startSeconds": 4.3,
        "durationSeconds": 0.5,
        "loop": false
      },
      "hover": null
    }
  ]
}
```

Each `entry`, `exit`, or `hover` value can be:

- An animation object to replace that track
- `null` to remove its animation
- `"keep"` to leave its current value unchanged

Do not edit the `schemaVersion`, `snapshotId`, `timelineSeconds`, layer references, or animation IDs. If an AI wraps the response in a single `json` code block, Bannerify can still read it.

## Working with section scenes and special animations

For banners loaded from Figma sections, the prompt contains the current timing window for each scene. The AI can change layer timings inside that window, but it cannot move a layer into another scene. Adjust scene timing in Bannerify first, then copy a fresh prompt if you want the AI to use the new window.

Split Text animations are only available when the text layer is eligible. SVG Draw animations are only available for compatible SVG layers. Saved custom keyframe animations are included as entry and exit choices. Existing animations that are not in the supplied AI catalog can still be preserved by returning `"keep"` for that track.

Layers beginning with `locked-` are intentionally omitted. If a nested layer is missing, [expand it into the Bannerify timeline](/bannerify/design/nested), refresh the banner, and copy a fresh prompt.

## Troubleshooting

### The response is not valid JSON

Click **Copy JSON Fix Prompt** in the validation warning, paste it into the same AI conversation, and send it without editing the included errors or timeline instructions. Replace the rejected response in Bannerify with the corrected JSON, then click **Validate JSON** again.

### The response says the timeline changed

The prompt is no longer based on the current banner state. Click **Copy Fresh Prompt**, replace the previous prompt in your AI assistant, and use its new JSON response.

### An animation ID is not in the catalog

Ask the AI to use only the exact `animationCatalog` IDs supplied in the copied prompt. Do not substitute a display name or invent a new animation name.

### A layer is missing or duplicated

The AI response must include every supplied `layerRef` exactly once, even when every track for that layer is set to `"keep"`.

### The entry and exit animations overlap

Ask the AI to finish the entry before the exit starts. Both ranges must also remain inside that layer's `timeWindowSeconds`.

### The JSON is valid but shows no changes

The response preserved the current values or recommended the settings already on the timeline. Adjust your direction and copy a fresh prompt if you want a different result.

> **Warning:** Always preview the complete banner before exporting. JSON validation confirms that the plan is structurally safe and compatible with the current timeline, but the creative result still needs a visual review.

---

---
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 walks through how to animate and export production-ready HTML banners from Figma in seconds.
[Embedded media](https://www.youtube-nocookie.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 walks through how to animate and export production-ready HTML banners from Figma in seconds.
[Embedded media](https://www.youtube-nocookie.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-** (for example, _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 the **Play** icon button, and pause the timeline at any point by clicking the **Pause** icon button. You can also restart the animation playback from the beginning by clicking the **Restart** icon button.

Click or drag the time ruler above the banners to scrub through the animation. The shared playhead stays aligned with the timing tracks across banners. You can also scrub from a banner header wherever its ruler is shown.

Use **+**, **−**, the zoom slider, or a two-finger trackpad pinch over the ruler or timing tracks to zoom from **100% to 1000%**. When zoomed in, drag the rounded blue scrollbar handle below the ruler to move left or right. Click **Fit** to show the entire timeline again. These controls change the view without changing animation timings or export duration. See [zooming and scrolling the timeline](/bannerify/animation/animation-speed-timing#zoom-and-scroll-the-timeline) for the full navigation controls.

For more precise editing, use [snapping, layer filters, markers and reusable motion sequences](/bannerify/animation/animation-speed-timing#snap-and-organise-your-timeline), or [loop a work area](/bannerify/animation/previewing-animations#loop-a-work-area) while adjusting a transition.

## Timeline Settings

Click **Timeline Settings** in the header. The panel opens on **General** and contains four tabs:

| Tab | Controls |
| --- | --- |
| **General** | Timeline length, Magic Delays and Magic Speeds |
| **Timeline tools** | [Loop a preview range](/bannerify/animation/previewing-animations#loop-a-work-area) and [add named markers](/bannerify/animation/animation-speed-timing#snap-and-organise-your-timeline) |
| **Motion sequences** | [Save and reuse coordinated animations](/bannerify/animation/animation-speed-timing#save-and-reuse-a-motion-sequence) |
| **Sync timings** | [Copy timings between banner sizes](/bannerify/animation/animation-speed-timing#synchronise-timings-across-banner-sizes) |

**Snap**, the layer filter, **Zoom to selection** and group collapse controls are in **Timeline Settings → Timeline tools**.

## Review and restore edits

Click **History** beside the undo/redo arrows to [browse your timeline edits](/bannerify/animation/undo-redo). Choose a step to jump backward or forward; **Current** identifies the active state. New edits made after moving backward replace later history.

## Adjusting the timeline length

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

Open **Timeline Settings → General**, choose a duration under **Total Timeline Length**, then click **Update Timeline Length**. Available durations range from 1 second to 3 minutes. The change applies across your banners; timing ranges that exceed a shorter timeline are adjusted to fit.

You can restore the previous length and timings with **Undo**, or choose an earlier step in **History**. See [adjusting timeline length](/bannerify/animation/timeline-length).

## 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 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 its 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 timing bar, you can also set your speed and delay values by clicking the second value in your timeline layer, and entering a new number with your keyboard (for example, *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 (for example, "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 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 can 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)

Open **Timeline Settings → General** and choose a value under **Magic Delays** or **Magic Speeds**. Click **Apply To All Entry Animations** or **Apply To All Exit Animations** to apply it across your banners.

### Magic Delays

Choose a staggered delay from 0.1 to 0.5 seconds. Layers receive successive delay offsets while retaining their animation durations.

### Magic Speeds

Choose a duration from 0.1 to 1 second. Start times stay the same unless they must move earlier to fit within the timeline.

Each application is one history step. Use **Undo**, **Redo**, or the **History** panel to move between changes. See [Magic Delays and Magic Speeds](/bannerify/animation/magic-delays-speeds).

---

---
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 walks through how to add custom keyframe animations to your banners using the Bannerify plugin.
[Embedded media](https://www.youtube-nocookie.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 walks through how to add custom cubic-bezier easing to banner animations in Figma using the Bannerify plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/uS2TRRQiYzw)

If you select the **Cubic Bezier** easing option, you need to paste in a valid CSS cubic-bezier value (for example, `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 walks through how to add custom keyframe animations to your banners using the Bannerify plugin.
[Embedded media](https://www.youtube-nocookie.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 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 its start/end point.

When a bar is too narrow to grab comfortably, hover over it or focus it with the keyboard to reveal circular left and right handles and a small move grip below the bar when the bar is 28px wide or narrower. Drag a dot to adjust that edge, or drag the lower grip to move the animation. The controls have larger grab areas and stay inside the timeline column. Hover-duration bars show only the right handle. These controls use the same snapping, keyboard shortcuts and undo history as the normal bar.

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 timing bar, you can also set your speed and delay values by clicking the second value in your timeline layer, and entering a new number with your keyboard (for example, *1.5*) to set the amount of seconds.

## Adjust timings on multiple layers

Select two or more layers, then drag the entry, exit, or hover timing bar on one of the selected layers. Bannerify applies the same movement to the matching active timing track on the other selected layers while preserving their relative offsets.

If the earliest or latest selected timing reaches the edge of the timeline, Bannerify stops the group at that boundary. Locked layers, inactive timing tracks, and entry timings controlled by mirrored Figma Motion animations are left unchanged.

Each completed drag is saved as one [undoable history step](/bannerify/animation/undo-redo).

## Zoom and scroll the timeline

Use the **+** and **−** buttons or the zoom slider above the layer list to see more or less detail. The percentage beside the slider shows the current zoom level. Click **Fit** to return to 100% and show the entire timeline again. Zooming changes the view without changing animation timings or the exported duration.

Pinch in or out with two fingers on a trackpad while the pointer is over the ruler or timing tracks. The time under your pointer stays anchored as you zoom, within the 100–1000% zoom range. Pinching changes only the view and is ignored while you are dragging a timing bar. You can also use **Ctrl** while scrolling with a mouse wheel.

When zoomed in, click and hold the rounded **blue scrollbar handle** directly below the ruler, then drag it left or right to move along the timeline. The handle highlights on hover and while pressed. You can also scroll horizontally with a trackpad, or hold **Shift** while scrolling over a timing track. The ruler and timing bars stay aligned across banners.

Entrance and exit bars show the time spent playing each animation. The end of an entrance bar marks when the entrance finishes; the layer can remain visible afterward. Hover bars control hover duration, with their start fixed.

## Adjust bars with the keyboard

Focus a bar or one of its edge handles, then use the arrow keys to move it in **0.1-second** steps. Hold **Shift** for **1-second** steps. Moving a bar preserves its duration; moving an edge changes its start or end.

Press **Escape** during a drag to restore the timings from before the drag, including any selected layers moving with it. Scene bars move the scene's editable animations together while preserving their individual durations.

## Snap and organise your timeline

Open **Timeline Settings → Timeline tools** and enable **Snap** to align dragged entrance/exit bars, scene bars and their editable edges with the playhead, markers, work-area boundaries and nearby animation edges. Hold **Alt** (or **Option** on macOS) while dragging to bypass snapping. A guide shows the alignment. Snapping uses the current zoom level, so zoom in for finer adjustments.

In the same tab, use the layer filter to show **All layers**, **Selected layers** or **Animated layers**. Filtering only changes the timeline list; hidden rows still play and export normally. In the same settings panel, **Collapse groups** folds the scene layer lists, and **Expand groups** opens them again. Select layers and click **Zoom to selection** to frame their active timing ranges, up to the 1000% zoom limit.

Open **Timeline Settings → Timeline tools** to add a named marker at the playhead. Enter a **Marker name** and click **Add at playhead**. Click a marker diamond on the ruler, or its time in the panel, to seek there. You can rename or remove markers in the panel. Markers are kept for the current editing session and do not affect exported animations.

## Save and reuse a motion sequence

A motion sequence stores the coordinated entrance, exit and hover animations of several layers. It can be applied to differently named layers using explicit mappings.

1. Open **Timeline Settings → Motion sequences** and choose a **Source banner**.
2. Optionally enable **Selected source layers only** to use just the selected layers within that banner.
3. Enter a sequence name and click **Save sequence**. Saved sequences are kept in your Bannerify settings; the library holds up to 50 sequences. Saving selects the new sequence and refreshes the suggested target mappings, so review them again before applying.
4. Choose the saved sequence and select one or more target banners. A saved sequence supplies the animations instead of the source banner; **Selected source layers only** applies when capturing or applying directly from the source. You can also apply directly from the source banner without saving it first.
5. Review the suggested layer mappings. Unique matching names are filled in automatically; duplicate or unmatched names require you to choose a target layer. Uncheck a mapping or choose **Skip / choose a layer** to leave that target unchanged.
6. Optionally enter a **Offset (seconds)** in seconds to shift entrance and exit timings. Hover duration is unchanged by the offset.
7. The review panel explains any missing source, target or layer mapping. If the mapped tracks already match, there is nothing to apply. Review the before/after timings and click **Apply motion sequence**. The whole application is one undoable edit. Use **Undo**, **Redo**, or the [History panel](/bannerify/animation/undo-redo) to return to another step.

Locked and non-renderable layers are excluded. Figma Motion tracks remain tied to their original nodes and are not copied or overwritten. Text-specific animations require text layers. Tracks that would extend outside the timeline are skipped and reported in the preview; Bannerify does not silently shorten them. Existing inactive tracks are left unchanged unless the sequence explicitly supplies an animation for that track.

To remove a saved sequence, select it under **Saved Sequence**, then click the trash icon. Removing a library entry does not remove animations already applied to your banners.

Sequences reuse animation definitions already available in Bannerify, including your existing custom-animation library. Missing custom animations and incompatible tracks are reported and skipped. Draw animations require an SVG layer, and Split Text requires an eligible text layer, matching the animation picker. Timing-only sync keeps the target animation and does not apply these source-animation restrictions. Sequences do not package artwork or custom-animation definitions for transfer to another user's installation.

## Synchronise timings across banner sizes

Use **Timeline Settings → Sync timings** to copy timing ranges from a source banner to corresponding layers in other loaded banners.

1. Choose the source banner and, optionally, restrict it to selected source layers.
2. Select the target banners and review each layer mapping.
3. Uncheck mappings that should retain their current timings. Choose explicit targets for ambiguous or unmatched layer names.
4. Review the before/after timing ranges, then click **Apply timing sync**.

Timing sync preserves each target's animation choices, loop settings and other layer settings. Inactive target tracks, locked layers and Figma Motion tracks are skipped. Each apply is one undoable edit available in the [History panel](/bannerify/animation/undo-redo). This is a one-time copy: later source edits do not automatically change the targets. Apply again when you want to synchronise another update.

---

---
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 the **Quick Select Layers** menu), 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.

After a successful animation, layer-setting, or popup-link action, Bannerify closes the Batch Actions panel and clears the selected layers so you can immediately choose the next group. Validation errors and actions that do not update any layers keep the current selection available for correction or retry. If you close the panel manually without applying an action, Bannerify retains the selection and shows **Show Batch Actions** so you can reopen it.

You can also drag an entry, exit, or hover timing bar on any selected layer to adjust that timing track on the other compatible selected layers. Bannerify preserves the layers' relative timing offsets and keeps the group within the timeline bounds.

> **Tip:** You can [undo or redo timeline changes](/bannerify/animation/undo-redo) if a batch change does not look right.

---

---
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 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 walks through how to add custom keyframe animations to your banners using the Bannerify plugin.
[Embedded media](https://www.youtube-nocookie.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 walks through how to add custom keyframe animations to your banners using the Bannerify plugin.
[Embedded media](https://www.youtube-nocookie.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 a keyframe under the **Animation Timeline** near the top of the custom animations panel. Clicking a keyframe will allow you to edit the properties for that specific keyframe.

## Inserting new keyframes

To add a keyframe between the default start and end points, enter its percentage (for example, **50**) and select **Insert New Keyframe**.

Any new keyframe that you add will automatically be created with the same properties that your currently selected keyframe contains; this lets you 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 walks through how to add custom keyframe animations to your banners using the Bannerify plugin.
[Embedded media](https://www.youtube-nocookie.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 a keyframe under the **Animation Timeline** near the top of the custom animations panel. Clicking a keyframe will allow you to edit the properties for that specific keyframe.

### Inserting new keyframes

To add a keyframe between the default start and end points, enter its percentage (for example, **50**) and select **Insert New Keyframe**.

Any new keyframe that you add will automatically be created with the same properties that your currently selected keyframe contains; this lets you 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 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. 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 walks through how to add custom cubic-bezier easing to banner animations in Figma using the Bannerify plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/uS2TRRQiYzw)

If you select the **Cubic Bezier** easing option, you need to paste in a valid CSS cubic-bezier value (for example, `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 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 can use them in your banners by clicking 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.

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 walks through how to add custom keyframe animations to your banners using the Bannerify plugin.
[Embedded media](https://www.youtube-nocookie.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. 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 walks through how to add custom keyframe animations to your banners using the Bannerify plugin.
[Embedded media](https://www.youtube-nocookie.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 walks through how to add custom keyframe animations to your banners using the Bannerify plugin.
[Embedded media](https://www.youtube-nocookie.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/figma-motion.md"
description: "Opt in to detected Figma Motion keyframes and control how their properties, timing, and easing are reproduced in Bannerify."
---

# Using Figma Motion animations

> Opt in to detected Figma Motion keyframes and control how their properties, timing, and easing are reproduced in Bannerify.

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

### Video Tutorial: Export animated Figma Motion banners to HTML, MP4 video, or GIF

[Embedded media](https://www.youtube-nocookie.com/embed/QKvJ2YVTUyU)

Bannerify can detect supported animations created with Figma Motion and make them available as a **Figma Motion** entry animation. You decide which layers use it, just like any other Bannerify animation.

Detection never replaces an existing Bannerify entry animation automatically. Apply Figma Motion to individual layers or use Bannerify's existing batch layer actions to apply it to several layers at once.

> **Warning:** **Figma Motion is currently a Beta API.** Figma may change its Motion data model while the API is in beta. See the [Figma Motion API documentation](https://developers.figma.com/docs/plugins/api/figma-motion/) for Figma's current API status.

## Before you start

- Add a Motion animation to a layer inside your banner frame in Figma.
- Make sure the layer appears in the Bannerify timeline. If it is inside a group, component, or other layer, [include the nested layer first](/bannerify/design/nested).
- Load or refresh the banner in Bannerify after changing Motion keyframes in Figma.

## Apply detected Motion in one click

When Bannerify finds supported Motion on layers that are not using it yet, a **Figma Motion detected** message appears above the banner timelines.

Click **Apply to All Banners (_n_ Layers)** to apply each eligible layer's own supported Motion tracks across every banner frame currently loaded in Bannerify. The count includes all eligible Motion layers across the loaded timelines. Bannerify also enables **Mirror Figma Motion Timings** so the native offsets are used immediately. Existing exit and hover animations are unchanged, and you can turn mirroring off afterward to restore editable Bannerify timing ranges.

## Apply Motion to nested groups and pulse layers

Expand each group containing animated children in the [nested-layer panel](/bannerify/design/nested). If the outer group also has its own Motion, enable **Keep Parent Animatable** for that group so its animation remains available alongside the child animations.

After closing the panel, click **Apply to All Banners** in the **Figma Motion detected** notice. Newly exposed children need this step even if **Mirror Figma Motion Timings** is already enabled. For example, pulse layers can appear in the timeline but remain static until their detected scale and opacity tracks are applied.

## Apply Figma Motion to several layers

1. Open the banner frame in Bannerify and refresh it if needed.
2. Select the checkboxes for the layers you want to update, or use **Quick Select Layers**.
3. In **Batch Layer Actions**, open the **Entry** animation menu.
4. Choose **Apply Each Layer's Figma Motion** from the **Figma Motion** group.
5. Set the Bannerify entry timing you want and click **Apply Animations to Selected Layers**.

Bannerify applies each layer's own detected Motion keyframes. If your selection also contains layers without supported Motion values, those layers keep their current entry animation and Bannerify shows how many selected layers are eligible before you apply.

## Apply Figma Motion to one layer

1. Find the animated layer in the Bannerify timeline.
2. Open its **Entry Animation** menu.
3. Select the detected animation from the **Figma Motion** group.

Bannerify combines all supported Motion tracks on the layer into a single entry animation. For example, position, opacity, scale, and rotation can animate together while keeping their own keyframes and easing.

## Mirror the Figma Motion timeline

After at least one layer is using its Figma Motion entry animation, Bannerify shows **Mirror Figma Motion Timings** above the timeline. The label includes the number of Motion layers it will update, such as **Mirror Figma Motion Timings (5 Layers)**.

- The one-click **Apply to All Banners** action enables it automatically.
- Leave it off to position or resize Motion animation bars using normal Bannerify timing controls.
- Turn it on to use each selected Motion animation's native Figma start and end offsets. Bannerify also adjusts the overall timeline to fit the longest selected Motion timeline.
- Turn it off again to restore the editable Bannerify timing ranges you were using before mirroring.

The Mirror toggle itself only synchronizes timeline timing. It does not apply Figma Motion to additional layers or replace any other entry animations. The one-click action applies eligible layers before enabling it; for a more selective opt-in, use the per-layer or batch workflow and then control mirroring separately.

> **Tip:** **For banners that are already animated in Figma**, use **Apply to All Banners** for the closest match to Figma's native timeline in one step. Bannerify applies every eligible loaded layer and enables **Mirror Figma Motion Timings** automatically. Its overall timeline setting uses whole seconds, so the longest native timeline is rounded up to the next whole second when needed.

You can still add a separate Bannerify exit animation. For a clean handoff, place the exit animation after the Figma Motion entry animation ends.

## Supported Motion properties

Bannerify currently reproduces these native Motion properties:

- Position on the X and Y axes
- Opacity
- Scale on the X and Y axes
- Rotation
- Uniform or individual corner radii on solid-fill rectangle layers aligned to the horizontal and vertical axes, including 90-degree rotations without visible strokes, effects, masks, or corner smoothing

Animated corner radii are reproduced in the preview, HTML, GIF, and video exports. Image-filled rectangles, frames, groups, and rectangles with strokes, effects, or corner smoothing still show a corner-radius compatibility warning.

Each property keeps its own keyframes, timing, and easing inside the combined Bannerify animation. Bannerify converts supported cubic-bezier and spring easing into the format used by its preview and exports. Very small visual differences can occur, especially with spring motion.

If an animation mixes supported and unsupported properties, Bannerify reproduces the supported properties and identifies the properties it cannot currently export. A layer with no supported Motion properties will not show a **Figma Motion** option.

The timeline notice identifies unsupported properties, including size, corner radius on unsupported layer types or appearances, auto layout spacing and padding, stroke or border weight, path trim, fills, strokes, or effects. The listed properties will not be animated in the exported file.

## Reuse Motion in a rotated banner

You can rotate a portrait banner frame by 90 degrees to use it in landscape. Bannerify follows the rotated direction of its Motion position tracks and the corner order of supported rectangles. Refresh the banner after rotating it so the artwork and Motion tracks are reloaded together.

Rotating the frame also rotates its artwork. Adjust text and images in Figma if they need to stay upright, then check the animation in Bannerify's preview and your exported file. Corner-radius animation still requires a supported rectangle aligned to the horizontal and vertical axes; diagonally rotated rectangles show a compatibility warning.

## Refresh after editing in Figma

After changing a Motion animation in Figma, click **Refresh All Banners** in Bannerify, or use **Refresh Banner Layers** for the affected banner. Bannerify detects the latest keyframes. Layers already using Figma Motion stay opted in, while newly animated layers remain unchanged until you apply Figma Motion to them.

## Preview and export

Figma Motion animations work with Bannerify's Play and Replay controls and can be scrubbed at any point in the timeline. Bannerify captures supported Motion artwork independently of Figma's current playhead, including layers that start at zero scale or opacity. Scale and rotation keep the original Figma layer's centre when the exported artwork has different bounds, such as text or artwork with shadows.

They are also included when exporting to:

- CSS or GSAP HTML
- GIF
- MP4

Before exporting, review the **Figma Motion detected** notice above the timeline. It identifies when:

- Supported Motion was detected but has not been applied as the layer's Bannerify entry animation.
- A Motion layer contains properties Bannerify does not currently export.
- A Motion layer contains only unsupported properties and cannot be applied yet.

You can apply all supported, unapplied Motion directly from the timeline notice.

## Troubleshooting

### Some Figma Motion animations are missing from the export

1. Check the **Figma Motion detected** notice above the timeline for unapplied layers.
2. Click **Apply to All Banners**, or select Figma Motion from each affected layer's **Entry Animation** menu.
3. Review any unsupported property names listed in the warning.
4. Expand nested animated layers into the Bannerify timeline, then refresh the banner.
5. Confirm **Mirror Figma Motion Timings** remains enabled if the exported offsets should match Figma's Motion timeline.

### Figma Motion does not appear in the animation menu

- Check that the layer has at least one supported Motion property.
- If the layer is nested, make sure it is included in the Bannerify timeline.
- Refresh the banner after adding or editing the Motion animation in Figma.
- For batch actions, make sure the current selection contains at least one layer with detected Motion values.

### The timing does not match Figma Motion

First apply Figma Motion to the layers you want to use. Then enable **Mirror Figma Motion Timings** above the timeline to use their native start and end offsets instead of the custom Bannerify animation-bar positions.

### The animation looks slightly different

Check that every animated property is supported. Cubic-bezier easing is reproduced directly where possible, while spring and independently eased tracks are converted for Bannerify's preview and export formats and may have very small differences.

---

---
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 walks through how to add hover animations to your banners using the Bannerify plugin.
[Embedded media](https://www.youtube-nocookie.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 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 end of its hover timing bar.

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 want 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 walks through how to add custom keyframe animations to your banners using the Bannerify plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/Js4uSQ855uo)

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

To 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 (for example, "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)

Open **Timeline Settings → General** to apply Magic Delays or Magic Speeds across your banners. Choose a value, then apply it to all entry or all exit animations.

## Magic Delays
Choose a delay from 0.1 to 0.5 seconds, then click **Apply To All Entry Animations** or **Apply To All Exit Animations**. Each banner's layers receive a staggered delay while retaining their existing animation durations.

## Magic Speeds
Choose a duration from 0.1 to 1 second, then click **Apply To All Entry Animations** or **Apply To All Exit Animations**. The selected animations receive the same duration. Start times are retained unless they need to move earlier to fit within the timeline.

> **Tip:** Magic speed and delay changes are saved as a single history step. Use Bannerify's [Undo and Redo buttons](/bannerify/animation/undo-redo) to restore the previous timings or reapply the change while the current timeline is open. You can also choose a step in the **History** panel to jump across several edits.

---

---
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 walks through how to add custom keyframe animations to your banners using the Bannerify plugin.
[Embedded media](https://www.youtube-nocookie.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 the **Play** icon button, and pause the timeline at any point by clicking the **Pause** icon button. You can also restart the animation playback from the beginning by clicking the **Restart** icon button.

Click or drag the time ruler above the banners to scrub through the animation. The shared playhead lines up with the timing tracks across banners. You can also scrub from a banner header wherever its time ruler is shown.

Use the zoom controls to inspect a shorter time range, then drag the blue scrollbar handle below the ruler to reach another part of the animation. Click **Fit** to return to the whole timeline. See [adjusting animation speeds and timings](/bannerify/animation/animation-speed-timing#zoom-and-scroll-the-timeline) for navigation and editing controls.

With the ruler focused, use **Left** or **Right** to seek in **0.1-second** steps, or hold **Shift** for **1-second** steps. **Home** jumps to the beginning and **End** jumps to the end.

## Loop a work area

Open **Timeline Settings → Timeline tools** to repeatedly preview one part of the animation.

1. Enter the **In (seconds)** and **Out (seconds)** values for the section.
2. Enable **Loop preview**.
3. Close Timeline Settings and click **Play**. Playback returns to In whenever it reaches Out. If the playhead is outside the work area, Play starts at In.

To set a boundary visually, close the settings panel, move the playhead, then reopen **Timeline tools** and click **Set In at playhead** or **Set Out at playhead**.

The ruler highlights the work area. **Restart** returns to In while loop preview is enabled. Disable **Loop preview** to resume normal playback, or click **Reset** to clear the range. Scrubbing remains available across the whole timeline.

The work area is kept for the current editing session. It only changes preview playback; exports still use the full configured timeline. Work-area-only export is not part of this feature.

---

---
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** menu in the Bannerify header to select similar layers across all of your banners. Search for a layer name, then use its checkbox to add or remove every match without closing the menu.

> **Tip:** **Example of using Quick Select Layers** For example, if all of your banners contain a layer called **CTA Button**, you can 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.

Use **Select All** or **Clear** at the bottom of the menu to update the full selection. You can also build a selection directly in the timeline:

- Click a layer's checkbox, thumbnail, or name to add or remove it without dropping the other selected layers.
- To start again with only one layer, use **Clear** or press Esc, then click that layer.
- You can also hold Command on macOS or Ctrl on Windows while clicking to toggle an individual layer.
- Hold Shift while clicking to select a continuous range in the same banner or scene.

---

---
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 walks through how to add custom keyframe animations to your banners using the Bannerify plugin.
[Embedded media](https://www.youtube-nocookie.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 walks through how to animate and export production-ready HTML banners from Figma in seconds.
[Embedded media](https://www.youtube-nocookie.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:** **Using native Figma Motion animations**. Choose a detected animation from the **Figma Motion** group on an individual layer, or choose **Apply Each Layer's Figma Motion** from the **Batch Layer Actions** entry menu. After Motion is applied to at least one layer, enable **Mirror Figma Motion Timings** above the timeline if you also want native Figma timing offsets. See [Using Figma Motion animations](/bannerify/animation/figma-motion) for the complete opt-in steps and supported properties.

> **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-** (for example, _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 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 walks through how to add split text animations (by character, word, or line) to Figma banners using the Bannerify plugin.
[Embedded media](https://www.youtube-nocookie.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**, **Google Font**, or a custom font with a direct **.woff** / **.woff2** URL added in Bannerify's custom fonts panel
- 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.

## Custom font URLs

If your text layer uses a custom brand font that is not available as a web-safe font or Google Font, add a direct **.woff** or **.woff2** font file URL in Bannerify's custom fonts panel.

The URL must point directly to the font file itself, such as `https://example.com/fonts/client-font.woff2`. A normal font page, download page, CSS file, or ZIP file will not work in this field.

Bannerify detects the custom font styles used by Split Text layers and lists each font style once, so you can paste the URL for that font style instead of adding the same URL to every text layer.

To open the custom fonts panel:

1. Apply a Split Text animation to the custom-font text layer.
2. Click **Configure Fonts** in the warning under the banner preview, or hover over the text layer in the timeline and click **Fonts**.
3. Paste the direct **.woff** or **.woff2** URL for each listed font style.
4. Click **Done**, then preview or export again.

Bannerify uses those font URLs to render the Split Text preview, canvas/video exports, and HTML / GSAP exports. For HTML / GSAP exports, Bannerify also adds the matching `@font-face` rule automatically.

You can still choose Split Text animations on custom-font layers before adding the font URL. Bannerify will show a warning under the banner preview until a valid **.woff** or **.woff2** URL is added.

> **Note:** If you previously added a custom Split Text font URL directly on a text layer, Bannerify automatically moves that saved URL into the new custom fonts panel when you open it.

## 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**
- 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.

If the only issue is a custom font with no valid **.woff** / **.woff2** URL, Bannerify lets you select the Split Text animation and shows a warning instead of hiding the option.

## 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, or only need a custom **.woff** / **.woff2** font URL

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 1 second to 3 minutes."
---

# Adjusting the timeline length

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

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

1. Open **Timeline Settings → General**.
2. Choose a duration under **Total Timeline Length**, from 1 second to 3 minutes.
3. Click **Update Timeline Length** to apply it across your banners.

Timing ranges outside the new timeline are moved or shortened to fit. Increasing the length gives you more room without automatically stretching your existing animations.

> **Tip:** **Keeping your timeline length when copy/pasting banners**. If you need to copy/paste banners onto a new page in the same Figma file, keep Bannerify open, create the new page, and then paste your banners there. Bannerify will automatically copy your current page's timeline and export settings onto brand new pages while the plugin is running. If you paste into a completely separate Figma file, Figma may not carry over those page-level Bannerify settings, so you may need to set the timeline length again in the new file.

> **Tip:** The timeline length change is one history step. Use **Undo** to restore the previous length and timings, **Redo** to reapply the change, or choose a step in the [History panel](/bannerify/animation/undo-redo).

---

---
url: "/bannerify/animation/undo-redo.md"
description: "Restore recent animation, timing, and batch changes in the Bannerify timeline."
---

# Undoing and redoing timeline changes

> Restore recent animation, timing, and batch changes in the Bannerify timeline.

Bannerify keeps a history of timeline edits while the current plugin timeline is open. Use the left and right arrow buttons in the Bannerify header to undo or redo the most recent change. Hover over either button to see the action that will be restored.

## Jump between edits

Click **History** beside the undo/redo arrows to open the Timeline History panel. Choose any listed step to jump directly to it. **Current** marks the active step, and later steps remain available so you can move forward again. Eight states appear on each page. Use **Previous** and **Next** for longer histories. Close the panel with its close button, by clicking outside it, or with **Escape**.

The panel keeps up to 50 edits. **Earliest available state** is the state before the oldest retained edit. Making a new edit after moving backward replaces the later steps. Closing the panel does not clear history.

## Keyboard shortcuts

You can also use these keyboard shortcuts while focus is outside a text or number input:

- Command + Z on macOS or Ctrl + Z on Windows to undo.
- Command + Shift + Z on macOS, or Ctrl + Shift + Z / Ctrl + Y on Windows, to redo.

## What history includes

History steps include animation choices, completed timing drags, precise speed or delay edits, loop and hover toggles, pasted or batch-applied animations, Magic timing changes, motion-sequence applications, timing sync, Figma Motion timing changes, scene timing shifts, and timeline length changes.

Continuous interactions are grouped into useful steps. For example, dragging a timing bar creates one history step when you release it, and applying an animation to several selected layers creates one batch step.

Layer selection, timeline playback, preview seeking, zoom, scrolling, layer filtering, snapping, work-area settings, markers and scene expand or collapse controls do not create history steps. The History panel restores timeline edits rather than these session view controls.

> **Warning:** Timeline history is available for the current Bannerify session. Refreshing or reloading the banner data starts a new history.

---

---
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 walks through how to add custom keyframe animations to your banners using the Bannerify plugin.
[Embedded media](https://www.youtube-nocookie.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.

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 walks through how to add custom keyframe animations to your banners using the Bannerify plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/Js4uSQ855uo)

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

Once you've saved at least one custom animation, you can use them in your banners by clicking 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/automation/parameters.md"
description: "Run Bannerify Quick Actions with simple named inputs and current-selection shortcuts."
---

# Bannerify Keyboard Shortcuts

> Run Bannerify Quick Actions with simple named inputs and current-selection shortcuts.

Run common Bannerify tasks from Figma Quick Actions without opening the plugin panel. Choose a named shortcut below. Use the normal plugin panel for detailed settings and authoring.

## Run a keyboard shortcut

Every shortcut requires a verified valid license or remaining trials. If verification fails or your trials have expired, open the normal plugin panel to activate your license. Opening the panel remains available.

1. Select the layers you want to work with, if the shortcut uses a selection.
2. Open Figma Quick Actions with **Command + /** on Mac or **Ctrl + /** on Windows.
3. Search for the plugin and choose the named shortcut below.
4. Enter the fields shown. Optional fields may be skipped; use Tab to edit them. Run the shortcut and check the result or complete its save dialog.

Creation shortcuts ask for names or dimensions directly. Selected-layer shortcuts use the current selection automatically. These everyday shortcuts do not ask for Target or JSON. Choose **Open Bannerify** for the normal plugin panel.

| Shortcut | Inputs |
| --- | --- |
| **Export Selected Banners (Custom Settings…)** | Format (optional), Frames or sections (optional) |
| **Create Resized Copies (Custom Settings…)** | Name, Width (px), Height (px), Resize mode |

Fixed-choice fields use readable labels. Search by the displayed label or the underlying value; agent inputs continue to use the values shown in the command reference.

**Create Resized Copies** creates new banners and keeps the originals. Choose **Standard Resize** or **Smart Layout** explicitly; the saved layout mode cannot override that choice.

## Run from the context menu

Select the intended layers, right-click, and choose **Plugins → Bannerify** (development plugins appear under **Development**). Choose an action and its format or preset. A preset runs immediately when it needs no required input; finish the save dialog when one appears.

Each preset sets its named option. Omitted compatible options inherit the plugin’s saved settings; an explicit action or option takes priority over conflicting saved behavior. Only explicitly entered fields or the selected menu choice override them for that run. If a setting has never been saved, the normal setting or documented fallback applies. Export overrides are not saved back to your preferences. If a saved format is unavailable as a shortcut, choose a supported format explicitly or use the normal panel. To combine options, choose **Custom Settings…** within the action and enter the parameters. Actions needing text, URLs, names or dimensions still prompt for those required fields. **Open Bannerify** opens the normal panel.

| Menu choice | Next step |
| --- | --- |
| **Export Selected Banners → Use Saved Settings** | Runs immediately |
| **Export Selected Banners → HTML5 Banners** | Runs immediately |
| **Export Selected Banners → Google Ads** | Runs immediately |
| **Export Selected Banners → MP4 Video** | Runs immediately |
| **Export Selected Banners → WebM Video** | Runs immediately |
| **Export Selected Banners → Animated GIF** | Runs immediately |
| **Export Selected Banners → Animated WebP** | Runs immediately |
| **Export Selected Banners → Animated PNG** | Runs immediately |
| **Export Selected Banners → PNG Images** | Runs immediately |
| **Export Selected Banners → JPG Images** | Runs immediately |
| **Export Selected Banners → PDF Document** | Runs immediately |
| **Export Selected Banners → Export Selected Banners (Custom Settings…)** | Enter Format (optional), Frames or sections (optional) |
| **Create Resized Copies → Smart Layout** | Enter Name, Width (px), Height (px) |
| **Create Resized Copies → Standard Resize** | Enter Name, Width (px), Height (px) |
| **Create Resized Copies → Create Resized Copies (Custom Settings…)** | Enter Name, Width (px), Height (px), Resize mode |

## Detailed editing

Use the normal plugin panel for detailed settings, longer content, bulk authoring and browsing components or templates. The shortcut menu contains only the everyday commands listed above.

Keep each pasted field below 150 characters: Figma desktop can truncate pasted input at that boundary. Longer input belongs in the normal panel.

If an older plugin shows Action, Target and Options instead, update it to use these named shortcuts. A Target value is a layer ID or selection, never the name of a new item.

## Bannerify actions

| Action | What it does | Target |
| --- | --- | --- |
| [`export`](#export) | Export selected banners using saved animation settings without publishing | One or more eligible layers |
| [`layouts`](#layouts) | Generate resized or smart-layout copies from explicit banner frames (maximum 200 outputs) | One or more eligible layers |

### export

Export selected banners using saved animation settings without publishing. Select one or more eligible layers.

| Option | Type | Required / default | Meaning and accepted values |
| --- | --- | --- | --- |
| `format` | string | Fallback: `"html"` | HTML platform, animated format, or static PNG/JPG/PDF. `html`, `googleads`, `mp4`, `webm`, `gif`, `webp`, `apng`, `png`, `jpg`, `pdf` |
| `source` | string | Fallback: `"frames"` | Frame or Section/scene mode. `frames`, `sections` |

Nested required fields apply when their parent object or array item is supplied. Omitted optional values use the existing operation’s behavior unless a default is listed.

Choose **Export Selected Banners (Custom Settings…)**. Enter these plain fields; no JSON is required:

- **Format**: **MP4 Video**
- **Frames or sections**: **Frames**

Agent host input

```json
{"command":"shortcut-export","parameters":{"format":"mp4","source":"frames"}}
```

### layouts

Generate resized or smart-layout copies from explicit banner frames (maximum 200 outputs). Select one or more eligible layers.

| Option | Type | Required / default | Meaning and accepted values |
| --- | --- | --- | --- |
| `name` | string | Required | Name of the new item. Minimum 1 character; Maximum 120 characters |
| `width` | number | Required | Width in pixels. Minimum 1; Maximum 8192 |
| `height` | number | Required | Height in pixels. Minimum 1; Maximum 8192 |
| `relayoutLayers` | boolean | Required | Use the existing smart layout generator |

Nested required fields apply when their parent object or array item is supplied. Omitted optional values use the existing operation’s behavior unless a default is listed.

Choose **Create Resized Copies (Custom Settings…)**. Enter these plain fields; no JSON is required:

- **Name**: `Square`
- **Width (px)**: `300`
- **Height (px)**: `300`
- **Resize mode**: **Standard Resize**

Agent host input

```json
{"command":"shortcut-layouts","parameters":{"name":"Square","width":"300","height":"300","relayoutLayers":"false"}}
```

## Using shortcuts with an agent

Read the machine-readable registry linked below and choose an action offered by the installed plugin’s Quick Actions list. The registry uses Hypermatic option definitions rather than standard JSON Schema: `min` and `max` constrain string length, array length or numeric value according to the field type; nested definitions use `fields` and `item`. Unknown fields are rejected.

The agent needs a host that can invoke Figma Quick Actions and observe the normal plugin result. Parameters do not add a REST or MCP launcher. The expandable examples are input data for a compatible host, not executable API calls; shortcut inputs use plain strings in `parameters`, including numbers and format choices. Never claim that a shortcut ran from its prepared input alone.

Verify the visible outcome: the changed Figma layers, saved export, or published page. Read the normal success/error notification and any partial-export warning. Complete native save dialogs as needed; a download starting does not prove that the file was saved. Users do not need to open developer tools or read a console.

## Troubleshooting

| Symptom | Next step |
| --- | --- |
| Action is unavailable | Update the plugin and check its Quick Actions list; use the normal panel if the action is unavailable. |
| Options are invalid or may have been truncated | Use individual plain field values below 150 characters, with only fields accepted by that shortcut. |
| Target is missing or ineligible | Open the correct page, check the action’s layer requirements, and select the intended layers again. |
| A license or trial error appears | Complete the plugin’s normal activation flow before rerunning. |
| Download was requested but no saved file is visible | Check the native save dialog and download location. Inspect the actual file. |
| A command fails, times out or is cancelled | Check the document and remote destination before retrying; earlier changes or uploads may already exist. |

Commands have a five-minute deadline. Errors do not imply a full rollback. Automatically retrying a create, replacement or upload can duplicate or overwrite work.

[Machine-readable command registry](/automation/parameters/bannerify.json) contains the same action IDs and option definitions.

## Current limits

Export selected banners or create resized copies at one named size. Create new banners, bulk variants and detailed layouts in the normal panel. Choose Frames or Sections in export Custom Settings.

## Related documentation

- [Install and run Bannerify](/bannerify/overview/install)
- [Figma plugin parameters](https://developers.figma.com/docs/plugins/plugin-parameters/)
- [Figma hidden UI options](https://developers.figma.com/docs/plugins/api/properties/figma-showui/)

---

---
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 want 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-buzz.md"
description: "Learn how to load banner designs from a Figma Buzz file into Bannerify, open the full animation timeline, and export your banners."
---

# Using Bannerify with Figma Buzz

> Learn how to load banner designs from a Figma Buzz file into Bannerify, open the full animation timeline, and export your banners.

### Video Tutorial: Animate and export Figma Buzz banners to HTML, MP4 video, or GIF

[Embedded media](https://www.youtube-nocookie.com/embed/DlUogTWnheQ)

[Video](/assets/videos/bannerify/design/figma-buzz.mp4)

## Loading banners from a Figma Buzz file

Bannerify can load your existing banner designs directly from a Figma Buzz file:

1. Open the **Plugins** panel in your Buzz file and run **Bannerify Banner Studio**.
2. Check or uncheck the banner frames you want to use in the Bannerify sidebar.
3. Click **Load Checked Banners** to load your selection, or **Load All Banners** to include every listed frame.
4. When prompted, click Figma's **pop-out** icon in the top-right corner of the plugin header.
5. Use the full Bannerify workspace to animate layers, preview your banners, and access the export options.

## Why Bannerify uses the pop-out window

Figma Buzz initially opens plugins in a narrow sidebar. Bannerify keeps the banner checklist in this compact view, then asks you to open the wider pop-out window after your banners have loaded.

The pop-out window contains the standard Bannerify timeline, animation controls, previews, and export features. If you dock Bannerify back into the Buzz sidebar, you can use the pop-out icon again to return to the full workspace with the same loaded banners.

> **Tip:** After opening the full workspace, you can use Bannerify's normal [animation controls](/bannerify/animation/selecting-animations) and [export options](/bannerify/export/html) with your Buzz banner designs.

## Buzz sidebar options

The Buzz sidebar focuses on loading banner frames that already exist in your file. **Generate New Banners**, Figma Section multi-scene loading, and other setup controls remain available when using Bannerify in a standard Figma Design file.

---

---
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 walks through how to animate and export production-ready HTML banners from Figma in seconds.
[Embedded media](https://www.youtube-nocookie.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-** (for example, _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 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 lets you 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 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 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, 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, 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 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 want 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**. 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 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**. 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/design/nested) 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 a non-text Figma layer in your Bannerify timeline by clicking 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 a non-text Figma layer in your Bannerify timeline by clicking 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 walks through how to add Lottie file animations to your banners using the Bannerify plugin.
[Embedded media](https://www.youtube-nocookie.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 **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: "Move, scale, rotate, or fade a parent group while its nested child layers play their own Bannerify animations."
---

# Animate groups and nested layers independently

> Move, scale, rotate, or fade a parent group while its nested child layers play their own Bannerify animations.

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

### Video Tutorial: Animate groups and layers independently with Group Motion

[Embedded media](https://www.youtube-nocookie.com/embed/B_YTLpBfROg)

[Follow the step-by-step tutorial](/bannerify/tutorials/animate-groups-and-layers-independently).

Bannerify can animate a parent group and the layers inside it at the same time. For example, you can move a grouped car across the banner while independently rotating its wheel layers.

## Things you'll need

- A top-level Figma frame containing your banner design.
- A parent layer with one or more child layers inside it.
- Separate names for any child layers you want to animate individually.

## Steps

1. In Figma, place the related layers inside one parent group. For a car animation, you might create a `Car` group containing `Body`, `Wheel Left`, and `Wheel Right`.
2. Tell Bannerify to expand the parent group using either of these methods:
   - Add `[expand]` to the parent layer name, such as `Car [expand]`.
   - Open Bannerify, click the **List** icon at the top of the banner timeline, then click the **Arrow** beside the parent layer.
3. In the nested-layer panel, enable **Keep Parent Animatable** beside the expanded parent. This option is off by default, so existing nested-layer setups keep their previous child-only behaviour.
4. Close the nested-layer panel. Bannerify will refresh the banner and add the exposed child layers to the timeline.
5. Confirm that the timeline contains the child layers and a separate parent row labelled **(Group Motion)**. In this example, the parent row appears as `Car [expand] (Group Motion)`.
6. Apply the shared movement to the **Group Motion** row. For example, apply **Slide In Left** to move the complete car into the banner.
7. Apply independent animations to the child rows. For example, apply **Rotate 360°** to each wheel.
8. Click **Play All Banners** or use the timeline scrubber to preview the combined result.
9. Export the banner normally. The parent and child animations are composed in HTML, GIF, MP4, WebM, and other canvas-based media exports.

## Group Motion

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

When **Keep Parent Animatable** is enabled, Bannerify marks the parent as **Animatable** and adds a separate **Group Motion** row to the timeline. The parent row acts as a motion wrapper around its exposed child layers. Translation, scale, rotation, opacity, and clipping applied to the parent are combined with the animations applied to each child.

If **Keep Parent Animatable** is turned off, the child layers remain expanded and animatable, but Bannerify does not add the parent **Group Motion** row. Bannerify remembers this option for each parent layer.

> **Tip:** Use clear, consistent child-layer names when the same structure appears across several banner sizes. You can then use **Quick Select Layers** to select matching layers and apply their animations in bulk.

## Using Figma Sections

The same setup works when **Use Figma sections as multi-scene banners** is enabled. Each exposed row includes its scene number, while an opted-in parent remains available as a separate **Group Motion** row inside that scene.

## Figma Slot layers

Bannerify also supports Figma [slot layers](https://help.figma.com/hc/en-us/articles/38231200344599-Use-slots-to-build-flexible-components-in-Figma) inside banner frames. Slot containers are treated like nested layer groups and start expanded the first time Bannerify loads them, making their child layers immediately available in the timeline.

If you manually collapse a Slot layer, Bannerify remembers that preference when the banner is refreshed.

## If the group or child layers are missing

- Make sure the banner is a top-level Figma frame or is inside a Section loaded in multi-scene mode.
- Confirm the parent has child layers and is expanded in Bannerify.
- If the child layers appear without the parent **Group Motion** row, open the nested-layer panel and enable **Keep Parent Animatable** beside the parent.
- If you renamed the parent with `[expand]` after loading the banner, click **Refresh Banner Layers**.
- Keep the child layers visible in Figma and ensure they are inside the expanded parent.

## Useful links

- [Animate your banner layers](/bannerify/animation/animating-banners)
- [Select matching layers with Quick Select](/bannerify/animation/quick-select-layers)
- [Create multi-scene banners with Figma Sections](/bannerify/design/scenes)
- [Export animated banners to HTML](/bannerify/export/html)
- [Export banners to video](/bannerify/export/video)

---

---
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 want 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 want 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 (for example, 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 (for example, 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 walks through how to add rich text popup overlays to HTML Figma banners using the Bannerify plugin.
[Embedded media](https://www.youtube-nocookie.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 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:** 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 walks through how to create multi-scene animated banners in Figma (and export to HTML or video) using the Bannerify plugin.
[Embedded media](https://www.youtube-nocookie.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.

Changes to the timeline length apply immediately to the preview and GIF/video exports, including multi-scene banners. You do not need to reload the banners after changing the duration.

> **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 scrollable HTML text or auto-scrolling GIF and video text in Bannerify."
---

# Adding scrollable truncated text layers to your banners

> Use truncated text layers in Figma to export scrollable HTML text or auto-scrolling GIF and video text in Bannerify.

### Video Tutorial: Add scrollable text disclaimers to Figma banner exports

This video walks through how to add scrollable text disclaimers (with auto-scroll) to Figma banner exports using the Bannerify plugin.
[Embedded media](https://www.youtube-nocookie.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, and render auto-scrolling text into GIF/video outputs.

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).

In HTML exports, the visible text box size becomes the scroll container while the full text content is preserved inside it. In GIF/video exports, the same text box clips the rendered auto-scroll motion.

## Step 2. Enable scrollable text in Bannerify

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

- **Enable scrollable 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.

In GIF/video exports, both auto-scroll modes use the same scroll speed as HTML exports. If the scroll needs more time than the original banner timeline, the exported file is extended so the text can finish scrolling at that speed.

### 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

- In **HTML** outputs, manual mode remains user-scrollable. In either auto mode, wheel, touch, or scrollbar input stops the automatic motion at its current position so the user can continue scrolling manually.
- In **GIF/video** outputs, auto-scroll modes are rendered into the exported frames; manual mode remains static because exported files are not interactive.
- Native browser/device scrollbar styling is used.
- If that layer has an image format override applied, scrollable 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 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: "Choose whether Bannerify includes a layer's full unclipped artwork when exporting animations."
---

# Including a layer's unclipped image content

> Choose whether Bannerify includes a layer's full unclipped artwork when exporting animations.

[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 includes artwork outside the layer's own frame and its parent frames, so the full image can move into view during an animation.

When an animated layer crosses the banner edge, Bannerify automatically includes the artwork beyond that edge while preserving the layer's own clipping. Enable **Include full unclipped layer** if you also want to include content outside the layer's own frame.

> **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 walks through how to bulk export Figma banner variants from a spreadsheet to HTML or Video/GIF using the Bannerify plugin.
[Embedded media](https://www.youtube-nocookie.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 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.

If you enter only a name template, Bannerify uses that resolved value as the exported item path. For HTML exports, `#{Item_Name}` creates a folder like `summer-sale` with its `index.html` inside. For image or video exports, it creates a file like `summer-sale.png`, `summer-sale.gif`, or `summer-sale.mp4`.

### 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 a non-text Figma layer in your Bannerify timeline by clicking 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 a non-text Figma layer in your Bannerify timeline by clicking 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 walks through how to add video file embeds to your banners using the Bannerify plugin.
[Embedded media](https://www.youtube-nocookie.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.

> **Note:** **Hosted video URLs stay remote in HTML exports by default.** Bannerify keeps direct `.mp4`/`.webm` video embed URLs in the exported HTML instead of downloading the video into the ZIP. To package hosted video files into HTML export ZIPs, enable **Download videos into ZIP** beside the embed URL field. Google Ads HTML5 and Google App Campaign Playable uploads still leave video embed URLs unbundled because those ZIP uploads do not support packaged video files.

[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 lets you embed videos into your non-text 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 **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 walks through how to export production-ready animated banners from Figma to animated PNG (APNG) images using the Bannerify plugin.
[Embedded media](https://www.youtube-nocookie.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 want to exclude any banners from being included (without [re-loading the selected banners](/bannerify/design/figma-frames#refreshing-or-re-loading-multiple-all-banners) 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**. 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 walks through how to export production-ready animated banners from Figma to animated WebP images using the Bannerify plugin.
[Embedded media](https://www.youtube-nocookie.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 want to exclude any banners from being included (without [re-loading the selected banners](/bannerify/design/figma-frames#refreshing-or-re-loading-multiple-all-banners) 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**. 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 (for example, 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 (for example, 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 **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**. 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/choose-a-format.md"
description: "Compare Bannerify HTML, GIF, MP4, WebM, APNG, and animated WebP outputs before exporting a campaign."
---

# Choose a Bannerify export format

> Compare Bannerify HTML, GIF, MP4, WebM, APNG, and animated WebP outputs before exporting a campaign.

Choose the format requested by the destination, media team, or delivery specification. HTML packages and rendered media files solve different problems, and a successful export does not guarantee that a platform accepts that format.

## Compare the outputs

| Format | Use it when | Output and constraints |
| --- | --- | --- |
| [HTML](/bannerify/export/html) | The destination needs an interactive HTML creative, a platform-specific ZIP, responsive layouts, or custom-hosted code | Choose the exact [platform output](/bannerify/export/platforms/) because click handling, metadata, SDKs, manifests, and package structure can differ |
| [Animated GIF](/bannerify/export/gif) | The destination explicitly accepts an animated GIF | Supports lossless or lossy compression and one-time or infinite playback; advanced palette settings can affect the result |
| [MP4](/bannerify/export/video) | The destination needs an H.264 MP4 video or the export needs an optional audio track | Export using Chrome or the Figma desktop app |
| [WebM](/bannerify/export/webm-video) | The destination explicitly accepts a WebM video | Export using Chrome or the Figma desktop app |
| [Animated PNG (APNG)](/bannerify/export/animated-png) | The destination explicitly accepts an APNG image | Export using Chrome or the Figma desktop app |
| [Animated WebP](/bannerify/export/animated-webp) | The destination explicitly accepts an animated WebP image | Export using Chrome or the Figma desktop app |

## Choose by requirement

### You need ad-platform packaging or click handling

Choose **HTML**, then select the exact destination under [Bannerify HTML platform outputs](/bannerify/export/platforms/). Named outputs can add their own click wrapper, metadata, SDK, manifest, and ZIP structure.

### You need several responsive layouts in one HTML output

Choose the responsive HTML option that matches the destination. Bannerify selects between the supplied Figma layouts; it does not generate missing sizes, breakpoints, or orientations.

### You need a rendered file instead of code

Choose GIF, MP4, WebM, APNG, or animated WebP only after confirming that the destination accepts it. These exports render frames from the Bannerify timeline into the selected media format.

### You need audio

Use **MP4**. Bannerify can add an MP3 file or use audio from an embedded video in the MP4 export workflow.

### The HTML upload also needs a static fallback

Enable [`backup.jpg`](/bannerify/export/backup-image) for a 1x JPG fallback. You can hide selected layers from that fallback and set a target size for the file.

## Plan for file size and rendering time

- Higher frame rates take longer to render and produce more frames, which can increase media file size.
- The HTML [maximum file-size target](/bannerify/export/banner-size-optimization) compresses image assets toward the requested threshold, but a low target may still be exceeded when the creative contains many or large assets.
- Animated GIFs embedded inside an HTML banner are not included in Bannerify's HTML file-size target.
- Higher HTML [image scales](/bannerify/export/retina-images) can produce sharper JPG and PNG assets, but also increase their file sizes.

## Validate the deliverable

1. Confirm the required format, dimensions, duration, file-size limit, and playback behavior with the recipient.
2. Export a representative banner using the exact destination settings.
3. Preview the unzipped result. If a local HTML preview appears frozen, test without an ad blocker or privacy extension before re-exporting.
4. Validate or upload the package in the destination platform before producing the full campaign.

---

---
url: "/bannerify/export/cloudflare-pages.md"
description: "Use Bannerify's built-in Cloudflare Pages integration to publish an exported HTML banner preview page to a shareable URL."
---

# Upload a Bannerify preview page to Cloudflare Pages

> Use Bannerify's built-in Cloudflare Pages integration to publish an exported HTML banner preview page to a shareable URL.

Bannerify can publish the generated HTML preview page and all of its banner assets directly to Cloudflare Pages.

## Configure Cloudflare Pages

1. In Cloudflare, create an [API token](https://dash.cloudflare.com/profile/api-tokens) with **Cloudflare Pages: Edit** access for the account you want to use.
2. Copy the account ID from your Cloudflare dashboard.
3. In Bannerify, click **Export to HTML**, enable **Upload Preview Page**, and select **Cloudflare Pages**.
4. Paste the API token and account ID, then enter a lowercase Pages project name using letters, numbers or hyphens.

After you click **Export Banners**, Bannerify uploads the generated preview files and returns a Cloudflare Pages preview URL. If the named Pages project does not exist, Bannerify creates it with `main` as the production branch before uploading.

The API token is stored in your Figma user's private client storage. The account ID and project name are saved with the current Figma page so the same project can be reused for later exports.

Cloudflare Pages offers a free plan for static sites, subject to its current [Pages limits](https://developers.cloudflare.com/pages/platform/limits/).

---

---
url: "/bannerify/export/code-output.md"
description: "Choose the correct Bannerify HTML output for an ad platform, responsive layout, or custom hosting workflow."
---

# Ad Platform Options

> Choose the correct Bannerify HTML output for an ad platform, responsive layout, or custom hosting workflow.

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

Every option in Bannerify's **Code Output Settings** has a dedicated guide below. Choose the exact destination requested by the media team instead of selecting a similarly named Google, responsive, or legacy platform format.

## Standard HTML outputs

- [HTML/JS (CSS @keyframes)](/bannerify/export/platforms/html-keyframes)
- [HTML/JS (GSAP/GreenSock)](/bannerify/export/platforms/html-gsap)

## Advertising platform outputs

- [AdForm](/bannerify/export/platforms/adform)
- [AdForm Mobile (MRAID)](/bannerify/export/platforms/adform-mobile)
- [Adition](/bannerify/export/platforms/adition)
- [AdRoll](/bannerify/export/platforms/adroll)
- [Adobe Ad Cloud](/bannerify/export/platforms/adobe-ad-cloud)
- [Amazon Ads](/bannerify/export/platforms/amazon-ads)
- [AppLovin (Responsive HTML5)](/bannerify/export/platforms/applovin-responsive)
- [AppNexus](/bannerify/export/platforms/appnexus)
- [Basis](/bannerify/export/platforms/basis)
- [BidTheatre](/bannerify/export/platforms/bidtheatre)
- [Delta Projects](/bannerify/export/platforms/delta-projects)
- [DemandScience](/bannerify/export/platforms/demandscience)
- [DoubleClick (DCM)](/bannerify/export/platforms/doubleclick-dcm)
- [DoubleClick Studio](/bannerify/export/platforms/doubleclick-studio)
- [DV360](/bannerify/export/platforms/dv360)
- [Flashtalking](/bannerify/export/platforms/flashtalking)
- [Google Ad Manager (DFP)](/bannerify/export/platforms/google-ad-manager)
- [Google Ads](/bannerify/export/platforms/google-ads)
- [Google Ads (Responsive HTML5)](/bannerify/export/platforms/google-ads-responsive)
- [Google App Campaign (Playable)](/bannerify/export/platforms/google-app-campaign-playable)
- [Google App Campaign (Responsive)](/bannerify/export/platforms/google-app-campaign-responsive)
- [Google Display Network](/bannerify/export/platforms/google-display-network)
- [IAB](/bannerify/export/platforms/iab)
- [Jivox Dynamic Creative (GSAP)](/bannerify/export/platforms/jivox-gsap)
- [Jivox Dynamic Creative (CSS)](/bannerify/export/platforms/jivox-css)
- [Performance Max (PMAX)](/bannerify/export/platforms/performance-max)
- [Responsive HTML (Media Queries)](/bannerify/export/platforms/responsive-html-media-queries)
- [Simpli.fi](/bannerify/export/platforms/simplifi)
- [Seznam Sklik](/bannerify/export/platforms/seznam-sklik)
- [6sense Dynamic Creative](/bannerify/export/platforms/6sense)
- [Sizmek](/bannerify/export/platforms/sizmek)
- [StackAdapt](/bannerify/export/platforms/stackadapt)
- [The Trade Desk](/bannerify/export/platforms/the-trade-desk)
- [USSD (Tap to SMS)](/bannerify/export/platforms/ussd-sms)
- [USSD (Tap to Call)](/bannerify/export/platforms/ussd-call)
- [Yandex](/bannerify/export/platforms/yandex)
- [Xandr](/bannerify/export/platforms/xandr)

## Multi-platform and other HTML outputs

- [Multiple Ad Platforms](/bannerify/export/platforms/multiple-ad-platforms)
- [Scaleable HTML/JS (CSS @keyframes)](/bannerify/export/platforms/scaleable-html)
- [Responsive HTML/JS (CSS @keyframes)](/bannerify/export/platforms/responsive-html-keyframes)
- [Figma Sections (Separate .zip Files)](/bannerify/export/platforms/figma-sections)

---

---
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 walks through how to export production-ready animated banners from Figma to GIFs using the Bannerify plugin.
[Embedded media](https://www.youtube-nocookie.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 want 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 want to exclude any banners from being included (without [re-loading the selected banners](/bannerify/design/figma-frames#refreshing-or-re-loading-multiple-all-banners) 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**. 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.

GIF frame delays use 10-millisecond increments. Bannerify alternates frame delays where needed to preserve the overall playback speed. Individual frames may therefore have slightly different durations. When you select 60 FPS for a GIF, Bannerify samples and exports it at 50 FPS so browsers can play it at the correct speed. The export panel and ZIP filename show the effective 50 FPS rate. Your selected frame rate is retained for MP4 and other formats.

## 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, 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 walks through how to export production-ready animated banners from Figma to HTML/GreenSock (GSAP) in seconds using the Bannerify plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/SS2J6k5Wo7s)
### Video Tutorial: Export HTML banners from Figma to multiple ad platforms

This video walks through how to export animated HTML banners from Figma to multiple ad platforms with one click using the Bannerify plugin.
[Embedded media](https://www.youtube-nocookie.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.

Exported banner filenames preserve letters such as **Å, Ä, Ö, å, ä, ö** from your Figma frame names. Export folder names and the main ZIP filename also support accented letters. Path separators and unsupported punctuation are still removed from frame filenames.

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).

> **Warning:** **Browser ad blockers can stop local banner previews from playing correctly.** If an exported HTML banner looks frozen, does not animate, or behaves differently in your browser preview, temporarily disable ad blocker/privacy extensions for the local preview file or test in another browser before re-exporting.

Each HTML output format has its own setup and packaging requirements. Use the [Ad Platform Options](/bannerify/export/code-output) guide to choose the correct format before exporting.

> **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).

> **Tip:** **Reuse your export settings across Figma files:** While the Export to HTML settings panel is open and focused, press Ctrl + Shift + E to save your current export preferences as `bannerify-export-settings.json`. In another Figma file, open the same panel and press Ctrl + Shift + I to browse for that JSON file and apply its preferences to the current page. Use the Control key on both Windows and Mac.

## 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.

## Choosing an HTML output format

Bannerify can export platform-neutral HTML, platform-specific upload packages, responsive layouts, and several batch formats. Each option in **Code Output Settings** has a dedicated guide under [Ad Platform Options](/bannerify/export/code-output), including its setup, click handling, package structure, and testing notes.

## 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 want to exclude any banners from being included (without [re-loading the selected banners](/bannerify/design/figma-frames#refreshing-or-re-loading-multiple-all-banners) 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.

### Keep selected text layers as images

When the paragraph export option is enabled, text layers locked in Figma keep their SVG/image output instead of becoming editable HTML text.

1. In Figma, lock each text layer that should stay as artwork. Lock the text layer itself, rather than only its parent group or frame.
2. Leave the text layers you want to edit in HTML unlocked.
3. Enable **Export text as <p> tags instead of <svg>** and export again.

For example, leave a dealer-name placeholder unlocked and lock the surrounding copy. The placeholder remains editable HTML, while the locked copy stays in image assets. Locking does not remove the artwork from the banner or provide access control over the exported files. Unlocking a text layer makes it eligible for rich text again on the next export. Existing text eligibility and format limitations still apply.

For brand fonts on editable text, see [Adding custom fonts to editable HTML text](/bannerify/export/inject-custom-code#adding-custom-fonts-to-editable-html-text).

---

---
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 walks through how to add custom HTML, CSS, and Javascript to Figma banner exports using the Bannerify plugin.
[Embedded media](https://www.youtube-nocookie.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 lets you 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.

## Adding custom fonts to editable HTML text

Use a web-font file for each weight and style used by your editable text. Installing a font in Figma does not package that font in an HTML export.

1. Obtain the brand's approved **.woff2** or **.woff** files for web use.
2. Enable [paragraph text export](/bannerify/export/html#export-text-as-paragraph-tags-instead-of-svg-images). Leave editable text unlocked in Figma.
3. In the HTML export panel, enable **Inject Custom Code**, then choose **Add custom CSS styles**.
4. Paste an `@font-face` rule into the CSS field without a surrounding `` tag. Replace the sample family with the exact family name used in Figma and the exported text's `font-family` declaration, and match the actual font weight and style.

```css
@font-face {
  font-family: "Your Brand Font";
  src: url("fonts/brand-regular.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
}
```

5. Add a separate rule for each additional weight/style (for example, `700` for bold or `italic` for an italic file).
6. Export and unzip the banner. Place the font files in a `fonts` folder beside each banner's HTML file, then re-zip that banner's complete contents. Bannerify injects the CSS but does not copy these local font files into the ZIP. Relative font URLs resolve from the stylesheet location; adjust the path if CSS is saved in a different folder.
7. Test the package through a local web server or the destination platform's preview, including on a device without the font installed. Check font loading, line breaks and longer replacement text. Font files count towards package size, and the destination must allow those files.

You can instead use a direct hosted HTTPS font-file URL if your ad platform permits external font requests. The font server must allow cross-origin font loading. See the [MDN font-face reference](https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/At-rules/@font-face).

---

---
url: "/bannerify/export/make.md"
description: "If you want 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 want 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 want 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 want 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 walks through how to upload preview links for HTML banners from Figma to Netlify using the Bannerify plugin.
[Embedded media](https://www.youtube-nocookie.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/platforms.md"
description: "Choose the exact Bannerify HTML output for an ad platform, responsive placement, or custom hosting workflow."
---

# Choose a Bannerify HTML platform output

> Choose the exact Bannerify HTML output for an ad platform, responsive placement, or custom hosting workflow.

Start with the destination named by the media team or upload interface. Bannerify's platform outputs can add different click handling, metadata, SDKs, manifests, and ZIP structures, so similarly named options are not interchangeable.

If the deliverable should be GIF, MP4, WebM, APNG, or animated WebP instead of HTML, use the [Bannerify export format guide](/bannerify/export/choose-a-format).

## Choose the output family

| Destination or requirement | Choose | Important boundary |
| --- | --- | --- |
| Custom hosting or developer handoff | [HTML with CSS keyframes](/bannerify/export/platforms/html-keyframes) or [HTML with GSAP](/bannerify/export/platforms/html-gsap) | These platform-neutral outputs do not add an ad-network SDK, manifest, or platform-specific click wrapper |
| A named advertising platform | [Open its exact guide](#advertising-platform-outputs) | Use the named output rather than a similar Google, responsive, or legacy format |
| Separate fixed-size Google Display ZIPs | [Google Ads](/bannerify/export/platforms/google-ads) | Each supplied Figma frame becomes a separate fixed-size upload |
| One Google Display ZIP containing several supplied layouts | [Google Ads (Responsive HTML5)](/bannerify/export/platforms/google-ads-responsive) | Bannerify switches between included layouts; it does not generate missing sizes |
| A full-screen playable App Campaign placement | [Google App Campaign (Playable)](/bannerify/export/platforms/google-app-campaign-playable) | Use the supported portrait or landscape frame size documented in the guide |
| One App Campaign ZIP for portrait and landscape | [Google App Campaign (Responsive)](/bannerify/export/platforms/google-app-campaign-responsive) | This is for mobile app campaigns, not standard Display banner sizes |
| Responsive custom-hosted HTML | [Responsive HTML with media queries](/bannerify/export/platforms/responsive-html-media-queries) | Include every layout or breakpoint required by the placement |
| Responsive platform-neutral HTML | [Responsive HTML with CSS keyframes](/bannerify/export/platforms/responsive-html-keyframes) | No ad-platform SDK or click wrapper is added |
| One fixed layout that scales as a visual unit | [Scaleable HTML](/bannerify/export/platforms/scaleable-html) | The layout scales proportionally; its elements do not reflow and new sizes are not generated |
| The same creative in several platform formats | [Multiple Ad Platforms](/bannerify/export/platforms/multiple-ad-platforms) | Validate every generated package against its own destination requirements |
| Separate packages for creative groups | [Figma Sections](/bannerify/export/platforms/figma-sections) | Put each related group of frames inside its own Figma Section |

## Confirm before delivery

- Ask for the exact platform, campaign type, required dimensions, and file-size limit.
- Confirm whether the destination needs fixed-size, responsive, full-screen, MRAID, playable, or custom-hosted HTML.
- Use the dedicated guide to check click handling, metadata, SDK, manifest, and package location.
- Include every required Figma layout; responsive outputs do not invent missing sizes or orientations.
- Preview the exported package, then validate it in the destination's own validator or upload flow when one is available.

> **Warning:** A successful local export confirms that Bannerify produced the package. It does not confirm destination-platform acceptance, account eligibility, campaign approval, or live serving.

## Standard HTML outputs

- [HTML/JS (CSS keyframes)](/bannerify/export/platforms/html-keyframes)
- [HTML/JS (GSAP/GreenSock)](/bannerify/export/platforms/html-gsap)

## Advertising platform outputs

- [6sense Dynamic Creative](/bannerify/export/platforms/6sense)
- [AdForm](/bannerify/export/platforms/adform)
- [AdForm Mobile (MRAID)](/bannerify/export/platforms/adform-mobile)
- [Adition](/bannerify/export/platforms/adition)
- [Adobe Ad Cloud](/bannerify/export/platforms/adobe-ad-cloud)
- [AdRoll](/bannerify/export/platforms/adroll)
- [Amazon Ads](/bannerify/export/platforms/amazon-ads)
- [AppLovin (Responsive HTML5)](/bannerify/export/platforms/applovin-responsive)
- [AppNexus](/bannerify/export/platforms/appnexus)
- [Basis](/bannerify/export/platforms/basis)
- [BidTheatre](/bannerify/export/platforms/bidtheatre)
- [Campaign Manager 360 (DoubleClick DCM)](/bannerify/export/platforms/doubleclick-dcm)
- [Delta Projects](/bannerify/export/platforms/delta-projects)
- [DemandScience](/bannerify/export/platforms/demandscience)
- [DoubleClick Studio](/bannerify/export/platforms/doubleclick-studio)
- [Display & Video 360](/bannerify/export/platforms/dv360)
- [Flashtalking](/bannerify/export/platforms/flashtalking)
- [Google Ad Manager](/bannerify/export/platforms/google-ad-manager)
- [Google Ads](/bannerify/export/platforms/google-ads)
- [Google Ads (Responsive HTML5)](/bannerify/export/platforms/google-ads-responsive)
- [Google App Campaign (Playable)](/bannerify/export/platforms/google-app-campaign-playable)
- [Google App Campaign (Responsive)](/bannerify/export/platforms/google-app-campaign-responsive)
- [Google Display Network](/bannerify/export/platforms/google-display-network)
- [IAB](/bannerify/export/platforms/iab)
- [Jivox Dynamic Creative (CSS)](/bannerify/export/platforms/jivox-css)
- [Jivox Dynamic Creative (GSAP)](/bannerify/export/platforms/jivox-gsap)
- [Performance Max (PMAX)](/bannerify/export/platforms/performance-max)
- [Seznam Sklik](/bannerify/export/platforms/seznam-sklik)
- [Simpli.fi](/bannerify/export/platforms/simplifi)
- [Sizmek](/bannerify/export/platforms/sizmek)
- [StackAdapt](/bannerify/export/platforms/stackadapt)
- [The Trade Desk](/bannerify/export/platforms/the-trade-desk)
- [USSD (Tap to Call)](/bannerify/export/platforms/ussd-call)
- [USSD (Tap to SMS)](/bannerify/export/platforms/ussd-sms)
- [Xandr](/bannerify/export/platforms/xandr)
- [Yandex](/bannerify/export/platforms/yandex)

## Responsive, batch, and other HTML outputs

- [Responsive HTML (Media Queries)](/bannerify/export/platforms/responsive-html-media-queries)
- [Responsive HTML/JS (CSS keyframes)](/bannerify/export/platforms/responsive-html-keyframes)
- [Scaleable HTML/JS (CSS keyframes)](/bannerify/export/platforms/scaleable-html)
- [Multiple Ad Platforms](/bannerify/export/platforms/multiple-ad-platforms)
- [Figma Sections (Separate ZIP Files)](/bannerify/export/platforms/figma-sections)

---

---
url: "/bannerify/export/platforms/6sense.md"
description: "Generate the Bannerify starter output for a developer-customized 6sense dynamic creative."
---

# Exporting 6sense dynamic HTML creatives

> Generate the Bannerify starter output for a developer-customized 6sense dynamic creative.

Select **6sense Dynamic Creative** when a developer will finish the creative using 6sense company data and AppNexus click tracking. Bannerify adds starter personalization code, a sample company-to-URL mapping, and the platform libraries needed by that implementation.

## Exporting with this option

1. Load the banner frames you want to export into Bannerify.
2. Click **Export to HTML** in the Bannerify header.
3. Select the output option named in this guide under **Code Output Settings**.
4. Enter the destination URL or other platform-specific values shown in the export panel.
5. Click the export button, download the generated `.zip`, and unzip the main Bannerify download.

If you enable **Include individual .zip files for each banner**, the upload-ready banner packages are placed in the `_zips` folder. Some responsive and single-file formats use a different package described on their dedicated page.

> **Note:** Always test the exact exported file in the destination platform or its official validator. A local browser preview confirms the creative renders, but it cannot confirm account eligibility or platform approval.

> **Warning:** This output is a developer starter, not a completed dynamic campaign integration. A developer must replace the sample API configuration and mappings, connect the required dynamic text elements, review the click URL logic, and test the result with the campaign's 6sense setup before delivery.

Contact [6sense](https://6sense.com/contact/) for account-specific API and implementation details.

---

---
url: "/bannerify/export/platforms/adform-mobile.md"
description: "Export AdForm Mobile MRAID HTML creatives from Bannerify."
---

# Exporting mobile MRAID banners for AdForm

> Export AdForm Mobile MRAID HTML creatives from Bannerify.

Select **AdForm Mobile (MRAID)** for mobile in-app AdForm placements that explicitly require MRAID. Bannerify adds the mobile metadata and routes the banner click through AdForm's MRAID click URL using `mraid.open()`.

## Exporting with this option

1. Load the banner frames you want to export into Bannerify.
2. Click **Export to HTML** in the Bannerify header.
3. Select the output option named in this guide under **Code Output Settings**.
4. Enter the destination URL or other platform-specific values shown in the export panel.
5. Click the export button, download the generated `.zip`, and unzip the main Bannerify download.

If you enable **Include individual .zip files for each banner**, the upload-ready banner packages are placed in the `_zips` folder. Some responsive and single-file formats use a different package described on their dedicated page.

> **Note:** Always test the exact exported file in the destination platform or its official validator. A local browser preview confirms the creative renders, but it cannot confirm account eligibility or platform approval.

Confirm the required dimensions, MRAID version, file-size limit, and preview method with the media team before delivery. The host app supplies the MRAID runtime when the creative is served.

---

---
url: "/bannerify/export/platforms/adform.md"
description: "Export AdForm-ready HTML banner ZIP files from Bannerify."
---

# Exporting HTML banners for AdForm

> Export AdForm-ready HTML banner ZIP files from Bannerify.

Select **AdForm** for standard AdForm HTML5 banner uploads. Bannerify includes the AdForm DHTML runtime, binds the banner click to AdForm's `clickTAG`, and creates the required `manifest.json` with the creative dimensions and destination URL.

## Exporting with this option

1. Load the banner frames you want to export into Bannerify.
2. Click **Export to HTML** in the Bannerify header.
3. Select the output option named in this guide under **Code Output Settings**.
4. Enter the destination URL or other platform-specific values shown in the export panel.
5. Click the export button, download the generated `.zip`, and unzip the main Bannerify download.

If you enable **Include individual .zip files for each banner**, the upload-ready banner packages are placed in the `_zips` folder. Some responsive and single-file formats use a different package described on their dedicated page.

> **Note:** Always test the exact exported file in the destination platform or its official validator. A local browser preview confirms the creative renders, but it cannot confirm account eligibility or platform approval.

Upload the individual ZIP files from the `_zips` folder. See the [AdForm export tutorial](/bannerify/tutorials/export-banners-for-adform-from-figma) for a complete walkthrough.

---

---
url: "/bannerify/export/platforms/adition.md"
description: "Export clickTag-enabled HTML banner ZIP files for Adition."
---

# Exporting HTML banners for Adition

> Export clickTag-enabled HTML banner ZIP files for Adition.

Select **Adition** when the destination platform is Adition. Bannerify wraps the creative with the platform's click destination and produces one fixed-size HTML package for each included Figma frame.

## Exporting with this option

1. Load the banner frames you want to export into Bannerify.
2. Click **Export to HTML** in the Bannerify header.
3. Select the output option named in this guide under **Code Output Settings**.
4. Enter the destination URL or other platform-specific values shown in the export panel.
5. Click the export button, download the generated `.zip`, and unzip the main Bannerify download.

If you enable **Include individual .zip files for each banner**, the upload-ready banner packages are placed in the `_zips` folder. Some responsive and single-file formats use a different package described on their dedicated page.

> **Note:** Always test the exact exported file in the destination platform or its official validator. A local browser preview confirms the creative renders, but it cannot confirm account eligibility or platform approval.

Upload the individual ZIP files from the `_zips` folder and confirm the requested dimensions and maximum file size with the campaign brief.

---

---
url: "/bannerify/export/platforms/adobe-ad-cloud.md"
description: "Export clickTag-enabled HTML banner ZIP files for Adobe Advertising Cloud."
---

# Exporting HTML banners for Adobe Ad Cloud

> Export clickTag-enabled HTML banner ZIP files for Adobe Advertising Cloud.

Select **Adobe Ad Cloud** for HTML creatives delivered through Adobe Advertising Cloud. Bannerify defines the configured `clickTag` and binds it to the banner after the document is ready.

## Exporting with this option

1. Load the banner frames you want to export into Bannerify.
2. Click **Export to HTML** in the Bannerify header.
3. Select the output option named in this guide under **Code Output Settings**.
4. Enter the destination URL or other platform-specific values shown in the export panel.
5. Click the export button, download the generated `.zip`, and unzip the main Bannerify download.

If you enable **Include individual .zip files for each banner**, the upload-ready banner packages are placed in the `_zips` folder. Some responsive and single-file formats use a different package described on their dedicated page.

> **Note:** Always test the exact exported file in the destination platform or its official validator. A local browser preview confirms the creative renders, but it cannot confirm account eligibility or platform approval.

Upload the individual ZIP files from the `_zips` folder. Confirm dimensions, file-size limits, and any campaign-specific tracking requirements with the Adobe Ad Cloud operator.

---

---
url: "/bannerify/export/platforms/adroll.md"
description: "Export clickTag-enabled HTML banner ZIP files for AdRoll."
---

# Exporting HTML banners for AdRoll

> Export clickTag-enabled HTML banner ZIP files for AdRoll.

Select **AdRoll** for fixed-size HTML creatives that will be uploaded to AdRoll. Bannerify defines the destination as `window.clickTag` and binds the full banner click to that URL.

## Exporting with this option

1. Load the banner frames you want to export into Bannerify.
2. Click **Export to HTML** in the Bannerify header.
3. Select the output option named in this guide under **Code Output Settings**.
4. Enter the destination URL or other platform-specific values shown in the export panel.
5. Click the export button, download the generated `.zip`, and unzip the main Bannerify download.

If you enable **Include individual .zip files for each banner**, the upload-ready banner packages are placed in the `_zips` folder. Some responsive and single-file formats use a different package described on their dedicated page.

> **Note:** Always test the exact exported file in the destination platform or its official validator. A local browser preview confirms the creative renders, but it cannot confirm account eligibility or platform approval.

Upload the individual ZIP files from the `_zips` folder and validate them against the current AdRoll creative requirements supplied with the campaign.

---

---
url: "/bannerify/export/platforms/amazon-ads.md"
description: "Export Amazon Ads HTML creatives with Amazon SDK click handling."
---

# Exporting HTML banners for Amazon Ads

> Export Amazon Ads HTML creatives with Amazon SDK click handling.

Select **Amazon Ads** when the creative will run in an Amazon HTML ad workflow. Bannerify loads Amazon's advertising SDK, routes clicks through `SDK.clickThrough()`, and writes the creative JavaScript to the separate file structure expected by this output.

## Exporting with this option

1. Load the banner frames you want to export into Bannerify.
2. Click **Export to HTML** in the Bannerify header.
3. Select the output option named in this guide under **Code Output Settings**.
4. Enter the destination URL or other platform-specific values shown in the export panel.
5. Click the export button, download the generated `.zip`, and unzip the main Bannerify download.

If you enable **Include individual .zip files for each banner**, the upload-ready banner packages are placed in the `_zips` folder. Some responsive and single-file formats use a different package described on their dedicated page.

> **Note:** Always test the exact exported file in the destination platform or its official validator. A local browser preview confirms the creative renders, but it cannot confirm account eligibility or platform approval.

Bannerify disables WebP for this format. Upload the individual ZIP files from `_zips`, and confirm current size, asset, and policy requirements with the Amazon campaign brief.

---

---
url: "/bannerify/export/platforms/applovin-responsive.md"
description: "Export self-contained portrait, landscape, and optional square MRAID HTML creatives for AppLovin."
---

# Exporting responsive HTML5 creatives for AppLovin

> Export self-contained portrait, landscape, and optional square MRAID HTML creatives for AppLovin.

Select **AppLovin (Responsive HTML5)** when you need one self-contained MRAID HTML file that adapts to full-screen mobile placements.

## Setup

1. Create one `9:16` portrait frame and one `16:9` landscape frame in Figma. Add one square frame if the campaign brief also requires a `1:1` layout.
2. Include those frames in the Bannerify timeline.
3. Click **Export to HTML** and select **AppLovin (Responsive HTML5)**.
4. Export and unzip Bannerify's downloaded file.
5. Upload the self-contained `.html` file to the AppLovin workflow specified by the client or media team.

Bannerify waits for AppLovin's MRAID ready event before starting, displays the included layout whose aspect ratio is closest to the device viewport, and scales it proportionally to cover the placement. It also includes a loading indicator, keeps video muted, routes clicks through `mraid.open()`, and embeds images and downloaded video files directly into the HTML. The finished creative does not need a separate `images` or `videos` folder.

Keep the required CTA visible in the design, and do not add a close button because AppLovin supplies one for the placement.

## Why both orientations are required

AppLovin's `9:16` requirement applies to portrait video and image end-card assets. HTML playables have a different requirement: the single HTML file must work properly in both portrait and landscape orientations.

Bannerify therefore requires one `9:16` portrait frame and one `16:9` landscape frame for this export. The two frames can use the same copy, images, and creative concept; the landscape frame only needs to adapt the layout for the wider orientation. Bannerify combines both frames into one responsive HTML file. A `1:1` square frame is optional.

> **Info:** If a client asks for only a `9:16` asset, confirm whether they need a video, image end card, or HTML playable. A portrait-only brief can be valid for the first two formats, but it is not sufficient for Bannerify's **AppLovin (Responsive HTML5)** export.

## Exporting multiple creative versions

Put each portrait and landscape set inside its own Figma Section. A Section may also contain one square frame. Bannerify creates one self-contained AppLovin `.html` file per Section.

> **Warning:** This single-file format does not currently support Lottie or YouTube layers because they depend on external runtime files. Convert those layers to an image sequence or a small muted video first. Bannerify also checks the `2 MB` compressed and `50 MB` uncompressed limits used by this export.

See AppLovin's [HTML playable specifications](https://support.applovin.com/en/growth/promoting-your-apps/welcome-to-applovin/creative-specs-and-guidelines) for the current single-file, orientation, audio, and click-through rules.

---

---
url: "/bannerify/export/platforms/appnexus.md"
description: "Export AppNexus-compatible HTML banner ZIP files from Bannerify."
---

# Exporting HTML banners for AppNexus

> Export AppNexus-compatible HTML banner ZIP files from Bannerify.

Select **AppNexus** for creatives delivered through the legacy AppNexus workflow. Bannerify loads the AppNexus HTML5 library and uses its clickTag wrapper so the platform can provide the final destination at serve time.

## Exporting with this option

1. Load the banner frames you want to export into Bannerify.
2. Click **Export to HTML** in the Bannerify header.
3. Select the output option named in this guide under **Code Output Settings**.
4. Enter the destination URL or other platform-specific values shown in the export panel.
5. Click the export button, download the generated `.zip`, and unzip the main Bannerify download.

If you enable **Include individual .zip files for each banner**, the upload-ready banner packages are placed in the `_zips` folder. Some responsive and single-file formats use a different package described on their dedicated page.

> **Note:** Always test the exact exported file in the destination platform or its official validator. A local browser preview confirms the creative renders, but it cannot confirm account eligibility or platform approval.

Upload the individual ZIP files from `_zips`. AppNexus is now part of Xandr; use the separate [Xandr](/bannerify/export/platforms/xandr) option when that is the name specified by the media team.

See the [AppNexus export tutorial](/bannerify/tutorials/export-banners-for-appnexus-from-figma) for a complete example.

---

---
url: "/bannerify/export/platforms/basis.md"
description: "Export clickTag-enabled HTML banner ZIP files for Basis."
---

# Exporting HTML banners for Basis

> Export clickTag-enabled HTML banner ZIP files for Basis.

Select **Basis** for fixed-size HTML creatives that will be uploaded through Basis. Bannerify defines the configured destination as `window.clickTag` and binds the full banner click to that URL.

## Exporting with this option

1. Load the banner frames you want to export into Bannerify.
2. Click **Export to HTML** in the Bannerify header.
3. Select the output option named in this guide under **Code Output Settings**.
4. Enter the destination URL or other platform-specific values shown in the export panel.
5. Click the export button, download the generated `.zip`, and unzip the main Bannerify download.

If you enable **Include individual .zip files for each banner**, the upload-ready banner packages are placed in the `_zips` folder. Some responsive and single-file formats use a different package described on their dedicated page.

> **Note:** Always test the exact exported file in the destination platform or its official validator. A local browser preview confirms the creative renders, but it cannot confirm account eligibility or platform approval.

Upload the individual ZIP files from `_zips` and confirm the requested dimensions and package-size limits with the campaign brief.

---

---
url: "/bannerify/export/platforms/bidtheatre.md"
description: "Export BidTheatre HTML creatives with platform metadata and click handling."
---

# Exporting HTML banners for BidTheatre

> Export BidTheatre HTML creatives with platform metadata and click handling.

Select **BidTheatre** for HTML creatives delivered through BidTheatre. Bannerify adds the BidTheatre HTML5 helper, reads the served `clickurl` parameter, and includes `metadata.json` with the creative dimensions and entry file.

## Exporting with this option

1. Load the banner frames you want to export into Bannerify.
2. Click **Export to HTML** in the Bannerify header.
3. Select the output option named in this guide under **Code Output Settings**.
4. Enter the destination URL or other platform-specific values shown in the export panel.
5. Click the export button, download the generated `.zip`, and unzip the main Bannerify download.

If you enable **Include individual .zip files for each banner**, the upload-ready banner packages are placed in the `_zips` folder. Some responsive and single-file formats use a different package described on their dedicated page.

> **Note:** Always test the exact exported file in the destination platform or its official validator. A local browser preview confirms the creative renders, but it cannot confirm account eligibility or platform approval.

Upload the individual ZIP files from `_zips` and validate them with the current BidTheatre workflow before delivery.

---

---
url: "/bannerify/export/platforms/delta-projects.md"
description: "Export Delta Projects HTML creatives with manifest metadata and platform click handling."
---

# Exporting HTML banners for Delta Projects

> Export Delta Projects HTML creatives with manifest metadata and platform click handling.

Select **Delta Projects** for HTML creatives delivered through the Delta Projects platform. Bannerify adds the platform boot code, uses its served clickTag API, and creates `manifest.json` with the creative dimensions, entry file, and destination URL.

## Exporting with this option

1. Load the banner frames you want to export into Bannerify.
2. Click **Export to HTML** in the Bannerify header.
3. Select the output option named in this guide under **Code Output Settings**.
4. Enter the destination URL or other platform-specific values shown in the export panel.
5. Click the export button, download the generated `.zip`, and unzip the main Bannerify download.

If you enable **Include individual .zip files for each banner**, the upload-ready banner packages are placed in the `_zips` folder. Some responsive and single-file formats use a different package described on their dedicated page.

> **Note:** Always test the exact exported file in the destination platform or its official validator. A local browser preview confirms the creative renders, but it cannot confirm account eligibility or platform approval.

Upload the individual ZIP files from `_zips` and confirm any campaign-specific requirements with the media team.

---

---
url: "/bannerify/export/platforms/demandscience.md"
description: "Export clickTag-enabled HTML banner ZIP files for DemandScience, formerly Terminus."
---

# Exporting HTML banners for DemandScience

> Export clickTag-enabled HTML banner ZIP files for DemandScience, formerly Terminus.

Select **DemandScience** for HTML creatives delivered through DemandScience, formerly Terminus. Bannerify reads the served `clickTAG` query parameter and opens it when the banner is clicked.

## Exporting with this option

1. Load the banner frames you want to export into Bannerify.
2. Click **Export to HTML** in the Bannerify header.
3. Select the output option named in this guide under **Code Output Settings**.
4. Enter the destination URL or other platform-specific values shown in the export panel.
5. Click the export button, download the generated `.zip`, and unzip the main Bannerify download.

If you enable **Include individual .zip files for each banner**, the upload-ready banner packages are placed in the `_zips` folder. Some responsive and single-file formats use a different package described on their dedicated page.

> **Note:** Always test the exact exported file in the destination platform or its official validator. A local browser preview confirms the creative renders, but it cannot confirm account eligibility or platform approval.

Upload the individual ZIP files from `_zips` and confirm dimensions, file-size limits, and any campaign-specific parameters with the media team.

---

---
url: "/bannerify/export/platforms/doubleclick-dcm.md"
description: "Export fixed-size clickTag-enabled HTML banners for DoubleClick Campaign Manager and Campaign Manager 360."
---

# Exporting HTML banners for Campaign Manager 360

> Export fixed-size clickTag-enabled HTML banners for DoubleClick Campaign Manager and Campaign Manager 360.

Select **DoubleClick (DCM)** for fixed-size HTML creatives delivered through DoubleClick Campaign Manager, now called Campaign Manager 360. Bannerify adds Google-compatible size metadata and binds the banner to `window.clickTag`.

## Exporting with this option

1. Load the banner frames you want to export into Bannerify.
2. Click **Export to HTML** in the Bannerify header.
3. Select the output option named in this guide under **Code Output Settings**.
4. Enter the destination URL or other platform-specific values shown in the export panel.
5. Click the export button, download the generated `.zip`, and unzip the main Bannerify download.

If you enable **Include individual .zip files for each banner**, the upload-ready banner packages are placed in the `_zips` folder. Some responsive and single-file formats use a different package described on their dedicated page.

> **Note:** Always test the exact exported file in the destination platform or its official validator. A local browser preview confirms the creative renders, but it cannot confirm account eligibility or platform approval.

Upload the individual ZIP files from `_zips`. See the [DCM export tutorial](/bannerify/tutorials/export-banners-for-dcm-from-figma) for a complete walkthrough.

---

---
url: "/bannerify/export/platforms/doubleclick-studio.md"
description: "Export Studio Enabler HTML creatives with background and layer-specific exits."
---

# Exporting HTML banners for DoubleClick Studio

> Export Studio Enabler HTML creatives with background and layer-specific exits.

Select **DoubleClick Studio** when the creative will use the Studio Enabler workflow. Bannerify waits for the Enabler to initialize and become visible before starting the banner, then routes background and linked-layer clicks through named `Enabler.exit()` events.

## Exporting with this option

1. Load the banner frames you want to export into Bannerify.
2. Click **Export to HTML** in the Bannerify header.
3. Select the output option named in this guide under **Code Output Settings**.
4. Enter the destination URL or other platform-specific values shown in the export panel.
5. Click the export button, download the generated `.zip`, and unzip the main Bannerify download.

If you enable **Include individual .zip files for each banner**, the upload-ready banner packages are placed in the `_zips` folder. Some responsive and single-file formats use a different package described on their dedicated page.

> **Note:** Always test the exact exported file in the destination platform or its official validator. A local browser preview confirms the creative renders, but it cannot confirm account eligibility or platform approval.

Prototype links applied to individual Figma layers become separate Studio exit names. Unlinked banner areas use the background exit.

See the [DoubleClick Studio export tutorial](/bannerify/tutorials/export-banners-for-doubleclick-from-figma) and Google's [Studio HTML5 guidance](https://support.google.com/richmedia/answer/2389093) for current trafficking requirements.

---

---
url: "/bannerify/export/platforms/dv360.md"
description: "Export fixed-size clickTag-enabled HTML banner ZIP files for DV360."
---

# Exporting HTML banners for Display & Video 360

> Export fixed-size clickTag-enabled HTML banner ZIP files for DV360.

Select **DV360** for fixed-size HTML creatives delivered through Display & Video 360. Bannerify adds Google-compatible size metadata, defines the configured destination as `window.clickTag`, and packages each included Figma frame separately.

## Exporting with this option

1. Load the banner frames you want to export into Bannerify.
2. Click **Export to HTML** in the Bannerify header.
3. Select the output option named in this guide under **Code Output Settings**.
4. Enter the destination URL or other platform-specific values shown in the export panel.
5. Click the export button, download the generated `.zip`, and unzip the main Bannerify download.

If you enable **Include individual .zip files for each banner**, the upload-ready banner packages are placed in the `_zips` folder. Some responsive and single-file formats use a different package described on their dedicated page.

> **Note:** Always test the exact exported file in the destination platform or its official validator. A local browser preview confirms the creative renders, but it cannot confirm account eligibility or platform approval.

Upload the individual ZIP files from `_zips` and confirm the accepted dimensions, maximum package size, and account permissions with the DV360 operator.

---

---
url: "/bannerify/export/platforms/figma-sections.md"
description: "Create separate Bannerify HTML packages for groups of frames organized in Figma Sections."
---

# Batch exporting HTML banners by Figma Section

> Create separate Bannerify HTML packages for groups of frames organized in Figma Sections.

Select **Figma Sections (Separate .zip Files)** when each Figma Section represents a separate creative set or responsive banner package.

## Setup

1. Put each group of related banner frames inside its own Figma Section.
2. Load the frames into Bannerify and click **Export to HTML**.
3. Select **Figma Sections (Separate .zip Files)**.
4. Export and unzip the main Bannerify download.
5. Use the separately named package created for each Section.

Bannerify groups included frames by their parent Section and preserves the Section name in the exported structure. Frames that belong to different creative versions should not share the same Section.

---

---
url: "/bannerify/export/platforms/flashtalking.md"
description: "Export Flashtalking HTML creatives with the platform API and manifest file."
---

# Exporting HTML banners for Flashtalking

> Export Flashtalking HTML creatives with the platform API and manifest file.

Select **Flashtalking** for creatives delivered through the Flashtalking HTML5 API. Bannerify waits for the Flashtalking runtime, applies clickTag `1` to the banner container, and creates `manifest.js` with the entry file and creative dimensions.

## Exporting with this option

1. Load the banner frames you want to export into Bannerify.
2. Click **Export to HTML** in the Bannerify header.
3. Select the output option named in this guide under **Code Output Settings**.
4. Enter the destination URL or other platform-specific values shown in the export panel.
5. Click the export button, download the generated `.zip`, and unzip the main Bannerify download.

If you enable **Include individual .zip files for each banner**, the upload-ready banner packages are placed in the `_zips` folder. Some responsive and single-file formats use a different package described on their dedicated page.

> **Note:** Always test the exact exported file in the destination platform or its official validator. A local browser preview confirms the creative renders, but it cannot confirm account eligibility or platform approval.

Upload the individual ZIP files from `_zips`. See the [Flashtalking export tutorial](/bannerify/tutorials/export-banners-for-flashtalking-from-figma) for a complete walkthrough.

---

---
url: "/bannerify/export/platforms/google-ad-manager.md"
description: "Export fixed-size Bannerify HTML5 banners for publisher-side uploads to Google Ad Manager."
---

# Exporting HTML banners for Google Ad Manager

> Export fixed-size Bannerify HTML5 banners for publisher-side uploads to Google Ad Manager.

Select **Google Ad Manager (DFP)** for fixed-size HTML5 creatives that will be uploaded through Google Ad Manager. Bannerify adds Google-compatible size metadata and click handling to each banner package.

## Exporting with this option

1. Load the banner frames you want to export into Bannerify.
2. Click **Export to HTML** in the Bannerify header.
3. Select the output option named in this guide under **Code Output Settings**.
4. Enter the destination URL or other platform-specific values shown in the export panel.
5. Click the export button, download the generated `.zip`, and unzip the main Bannerify download.

If you enable **Include individual .zip files for each banner**, the upload-ready banner packages are placed in the `_zips` folder. Some responsive and single-file formats use a different package described on their dedicated page.

> **Note:** Always test the exact exported file in the destination platform or its official validator. A local browser preview confirms the creative renders, but it cannot confirm account eligibility or platform approval.

Upload the individual banner `.zip` files from the `_zips` folder. Keep each Figma frame at the exact dimensions requested by the publisher or campaign brief.

> **Note:** Google Ad Manager is the publisher-side ad serving product formerly called DoubleClick for Publishers. For a Google Ads campaign, use one of the dedicated [Google Ads](/bannerify/export/platforms/google-ads) options instead.

See Google's [HTML5 creative guidance for Google Ad Manager](https://support.google.com/admanager/answer/7046799) for current account and upload requirements.

---

---
url: "/bannerify/export/platforms/google-ads-responsive.md"
description: "Combine supplied Google Display banner layouts into one responsive uploaded HTML5 ZIP."
---

# Exporting one responsive HTML5 ZIP for Google Ads

> Combine supplied Google Display banner layouts into one responsive uploaded HTML5 ZIP.

Select **Google Ads (Responsive HTML5)** when a Google Ads Display campaign needs one uploaded HTML5 ZIP containing several standard banner layouts.

## Setup

1. Create a separate Figma frame for every banner size the campaign needs, such as `300x250`, `728x90`, or `160x600`.
2. Include all of those frames in the Bannerify timeline.
3. Click **Export to HTML** and select **Google Ads (Responsive HTML5)**.
4. Export and unzip Bannerify's downloaded file.
5. Upload the single responsive ZIP inside the `_zip` folder to Google Ads.

Bannerify adds Google's responsive uploaded-HTML5 metadata and switches to the included layout whose dimensions match the available ad space. It does not generate new layouts or stretch one frame across unrelated banner sizes, so include every size required by the campaign.

This format is different from [Responsive HTML (Media Queries)](/bannerify/export/platforms/responsive-html-media-queries), which is intended for custom hosting, and from [Google App Campaign (Responsive)](/bannerify/export/platforms/google-app-campaign-responsive), which is a full-screen portrait and landscape format for campaigns promoting an app.

> **Note:** Google Ads limits uploaded HTML5 access to eligible accounts and supported campaign types. A fresh test account may reject HTML5 uploads even when the ZIP structure is valid.

See Google's [responsive uploaded HTML5 ad documentation](https://support.google.com/google-ads/answer/9050398) and [responsive layout documentation](https://support.google.com/webdesigner/answer/7002441).

---

---
url: "/bannerify/export/platforms/google-ads.md"
description: "Export separate fixed-size HTML5 ZIP files from Bannerify for Google Ads Display campaigns."
---

# Exporting fixed-size HTML5 banners for Google Ads

> Export separate fixed-size HTML5 ZIP files from Bannerify for Google Ads Display campaigns.

Select **Google Ads** when the campaign needs a separate uploaded HTML5 ZIP for each fixed banner size. Bannerify adds the required `ad.size` metadata and Google-compatible click handling to every exported banner.

## Exporting with this option

1. Load the banner frames you want to export into Bannerify.
2. Click **Export to HTML** in the Bannerify header.
3. Select the output option named in this guide under **Code Output Settings**.
4. Enter the destination URL or other platform-specific values shown in the export panel.
5. Click the export button, download the generated `.zip`, and unzip the main Bannerify download.

If you enable **Include individual .zip files for each banner**, the upload-ready banner packages are placed in the `_zips` folder. Some responsive and single-file formats use a different package described on their dedicated page.

> **Note:** Always test the exact exported file in the destination platform or its official validator. A local browser preview confirms the creative renders, but it cannot confirm account eligibility or platform approval.

Upload the individual banner ZIPs from the `_zips` folder. Each Figma frame should match a supported Google Ads dimension, and each compressed upload ZIP must be `600 KB` or smaller.

Use [Google Ads (Responsive HTML5)](/bannerify/export/platforms/google-ads-responsive) instead when the campaign explicitly needs one responsive upload containing multiple supplied banner layouts.

See Google's [uploaded display ad specifications](https://support.google.com/google-ads/answer/1722096) for current dimensions, file-size limits, and account eligibility requirements.

---

---
url: "/bannerify/export/platforms/google-app-campaign-playable.md"
description: "Export fixed-orientation playable HTML5 ZIP files for Google App Campaign placements."
---

# Exporting playable HTML5 ads for Google App Campaigns

> Export fixed-orientation playable HTML5 ZIP files for Google App Campaign placements.

Select **Google App Campaign (Playable)** when Google Ads asks for the Exit API or playable App Campaign metadata. Bannerify includes Google's `exitapi.js` script, uses `ExitApi.exit()` for banner clicks, adds the App Campaign metadata, and scales the creative for a full-screen playable placement.

## Setup

1. Create the Figma frame at `320x480` for portrait or `480x320` for landscape.
2. Include the frame in the Bannerify timeline.
3. Click **Export to HTML** and select **Google App Campaign (Playable)**.
4. Export and unzip the main Bannerify download.
5. Upload the individual playable ZIP from the `_zips` folder.

Bannerify downloads external video layer URLs for this format, places each video in the exported banner's `videos` folder, and updates the HTML to use the bundled file.

You can check the upload package with the [Google Ads HTML5 Validator](https://h5validator.appspot.com/adwords/asset) by enabling **Select for App Campaigns**. Keep the entire uploaded banner ZIP within Google's current App Campaign HTML5 limit.

Use [Google App Campaign (Responsive)](/bannerify/export/platforms/google-app-campaign-responsive) when one upload must contain both portrait and landscape layouts.

---

---
url: "/bannerify/export/platforms/google-app-campaign-responsive.md"
description: "Export one Google App Campaign ZIP containing portrait and landscape playable layouts."
---

# Exporting responsive HTML5 ads for Google App Campaigns

> Export one Google App Campaign ZIP containing portrait and landscape playable layouts.

Select **Google App Campaign (Responsive)** when you need one App Campaign upload ZIP that supports both full-screen orientations.

## Setup

1. Create one `320x480` portrait frame and one `480x320` landscape frame in Figma.
2. Include both frames in the Bannerify timeline.
3. Click **Export to HTML** and select **Google App Campaign (Responsive)**.
4. Export and unzip Bannerify's downloaded file.
5. Upload the responsive ZIP inside the `_zip` folder to Google Ads.

Bannerify adds the combined orientation metadata, switches to the matching Figma layout at runtime, and scales that layout proportionally to cover the full-screen placement. Keep important text, logos, and buttons away from the outer edges because wider or taller screens may crop those edges.

## Exporting multiple creative versions

Put each `320x480` and `480x320` pair inside its own Figma Section. Bannerify creates one responsive upload ZIP per Section. Every included Section must contain exactly one supported portrait frame and one supported landscape frame.

> **Note:** This format is only for campaigns promoting a mobile app. It does not convert these layouts into standard Google Display banner sizes.

You can check the package with the [Google Ads HTML5 Validator](https://h5validator.appspot.com/adwords/asset) by enabling **Select for App Campaigns**. Also preview the result in both orientations to confirm that important content stays within the safe area.

---

---
url: "/bannerify/export/platforms/google-display-network.md"
description: "Export separate fixed-size HTML5 ZIP files for Google Display Network campaigns."
---

# Exporting HTML5 banners for Google Display Network

> Export separate fixed-size HTML5 ZIP files for Google Display Network campaigns.

Select **Google Display Network** for separate fixed-size HTML5 banner uploads to a Google Display campaign. Bannerify adds Google-compatible size metadata and click handling to each exported package.

## Exporting with this option

1. Load the banner frames you want to export into Bannerify.
2. Click **Export to HTML** in the Bannerify header.
3. Select the output option named in this guide under **Code Output Settings**.
4. Enter the destination URL or other platform-specific values shown in the export panel.
5. Click the export button, download the generated `.zip`, and unzip the main Bannerify download.

If you enable **Include individual .zip files for each banner**, the upload-ready banner packages are placed in the `_zips` folder. Some responsive and single-file formats use a different package described on their dedicated page.

> **Note:** Always test the exact exported file in the destination platform or its official validator. A local browser preview confirms the creative renders, but it cannot confirm account eligibility or platform approval.

Upload the individual banner ZIPs from the `_zips` folder. Use [Google Ads (Responsive HTML5)](/bannerify/export/platforms/google-ads-responsive) only when the campaign explicitly calls for one responsive upload containing several supplied layouts.

See Google's [uploaded display ad specifications](https://support.google.com/google-ads/answer/1722096) for supported dimensions, the current `600 KB` HTML5 ZIP limit, and account eligibility requirements.

---

---
url: "/bannerify/export/platforms/html-gsap.md"
description: "Export platform-neutral animated HTML banners using GreenSock GSAP."
---

# Exporting HTML banners with GSAP

> Export platform-neutral animated HTML banners using GreenSock GSAP.

Select **HTML/JS (GSAP/GreenSock)** for platform-neutral HTML banners that use GSAP for animation. This option does not add an ad-network SDK, manifest, or platform-specific click wrapper.

## Exporting with this option

1. Load the banner frames you want to export into Bannerify.
2. Click **Export to HTML** in the Bannerify header.
3. Select the output option named in this guide under **Code Output Settings**.
4. Enter the destination URL or other platform-specific values shown in the export panel.
5. Click the export button, download the generated `.zip`, and unzip the main Bannerify download.

If you enable **Include individual .zip files for each banner**, the upload-ready banner packages are placed in the `_zips` folder. Some responsive and single-file formats use a different package described on their dedicated page.

> **Note:** Always test the exact exported file in the destination platform or its official validator. A local browser preview confirms the creative renders, but it cannot confirm account eligibility or platform approval.

Use this format for custom hosting, development handoff, or a workflow that explicitly accepts GSAP-based HTML. See the [GSAP export tutorial](/bannerify/tutorials/export-banners-to-html-gsap-from-figma) for a complete example.

---

---
url: "/bannerify/export/platforms/html-keyframes.md"
description: "Export platform-neutral animated HTML banners using CSS keyframe animations."
---

# Exporting HTML banners with CSS keyframes

> Export platform-neutral animated HTML banners using CSS keyframe animations.

Select **HTML/JS (CSS @keyframes)** for platform-neutral HTML banners that use native CSS keyframe animations. This option does not add an ad-network SDK, manifest, or platform-specific click wrapper.

## Exporting with this option

1. Load the banner frames you want to export into Bannerify.
2. Click **Export to HTML** in the Bannerify header.
3. Select the output option named in this guide under **Code Output Settings**.
4. Enter the destination URL or other platform-specific values shown in the export panel.
5. Click the export button, download the generated `.zip`, and unzip the main Bannerify download.

If you enable **Include individual .zip files for each banner**, the upload-ready banner packages are placed in the `_zips` folder. Some responsive and single-file formats use a different package described on their dedicated page.

> **Note:** Always test the exact exported file in the destination platform or its official validator. A local browser preview confirms the creative renders, but it cannot confirm account eligibility or platform approval.

Use this format for custom hosting, development handoff, or an ad platform that accepts standard HTML and supplies its own integration instructions. If the destination appears elsewhere under [Ad Platform Options](/bannerify/export/code-output), use that dedicated option instead.

---

---
url: "/bannerify/export/platforms/iab.md"
description: "Export standard fixed-size HTML banners with an IAB-style served clickTag parameter."
---

# Exporting IAB HTML banners

> Export standard fixed-size HTML banners with an IAB-style served clickTag parameter.

Select **IAB** for a standard fixed-size HTML package when the campaign brief asks for Bannerify's IAB output. Bannerify reads the served `clicktag` query parameter and opens it when the banner is clicked.

## Exporting with this option

1. Load the banner frames you want to export into Bannerify.
2. Click **Export to HTML** in the Bannerify header.
3. Select the output option named in this guide under **Code Output Settings**.
4. Enter the destination URL or other platform-specific values shown in the export panel.
5. Click the export button, download the generated `.zip`, and unzip the main Bannerify download.

If you enable **Include individual .zip files for each banner**, the upload-ready banner packages are placed in the `_zips` folder. Some responsive and single-file formats use a different package described on their dedicated page.

> **Note:** Always test the exact exported file in the destination platform or its official validator. A local browser preview confirms the creative renders, but it cannot confirm account eligibility or platform approval.

IAB guidance does not define one universal upload package for every ad server. Confirm the dimensions, file-size limit, naming, and validator with the receiving platform before delivery.

See the [IAB export tutorial](/bannerify/tutorials/export-banners-for-iab-from-figma) for a complete example.

---

---
url: "/bannerify/export/platforms/jivox-css.md"
description: "Export Jivox dynamic HTML creatives using Bannerify's CSS animation output."
---

# Exporting Jivox dynamic creatives with CSS animations

> Export Jivox dynamic HTML creatives using Bannerify's CSS animation output.

Select **Jivox Dynamic Creative (CSS)** when the Jivox workflow should use Bannerify's CSS animation output. Bannerify adds Jivox authoring and creative-size metadata and routes clicks through `jvxAd.openClickThrough()`.

## Exporting with this option

1. Load the banner frames you want to export into Bannerify.
2. Click **Export to HTML** in the Bannerify header.
3. Select the output option named in this guide under **Code Output Settings**.
4. Enter the destination URL or other platform-specific values shown in the export panel.
5. Click the export button, download the generated `.zip`, and unzip the main Bannerify download.

If you enable **Include individual .zip files for each banner**, the upload-ready banner packages are placed in the `_zips` folder. Some responsive and single-file formats use a different package described on their dedicated page.

> **Note:** Always test the exact exported file in the destination platform or its official validator. A local browser preview confirms the creative renders, but it cannot confirm account eligibility or platform approval.

Dynamic content bindings and feed setup are campaign-specific. Confirm those values and the final upload workflow with the Jivox developer or media team.

---

---
url: "/bannerify/export/platforms/jivox-gsap.md"
description: "Export Jivox dynamic HTML creatives using Bannerify's GSAP animation output."
---

# Exporting Jivox dynamic creatives with GSAP

> Export Jivox dynamic HTML creatives using Bannerify's GSAP animation output.

Select **Jivox Dynamic Creative (GSAP)** when the Jivox workflow should use GSAP animations. Bannerify adds the GSAP runtime, Jivox authoring and creative-size metadata, and `jvxAd.openClickThrough()` click handling.

## Exporting with this option

1. Load the banner frames you want to export into Bannerify.
2. Click **Export to HTML** in the Bannerify header.
3. Select the output option named in this guide under **Code Output Settings**.
4. Enter the destination URL or other platform-specific values shown in the export panel.
5. Click the export button, download the generated `.zip`, and unzip the main Bannerify download.

If you enable **Include individual .zip files for each banner**, the upload-ready banner packages are placed in the `_zips` folder. Some responsive and single-file formats use a different package described on their dedicated page.

> **Note:** Always test the exact exported file in the destination platform or its official validator. A local browser preview confirms the creative renders, but it cannot confirm account eligibility or platform approval.

Dynamic content bindings and feed setup are campaign-specific. Confirm those values and the final upload workflow with the Jivox developer or media team.

---

---
url: "/bannerify/export/platforms/multiple-ad-platforms.md"
description: "Generate several Bannerify platform formats from one HTML export."
---

# Exporting banners for multiple ad platforms

> Generate several Bannerify platform formats from one HTML export.

Select **Multiple Ad Platforms** when the same set of banners needs to be delivered in more than one supported platform format.

## Setup

1. Load the banner frames into Bannerify and click **Export to HTML**.
2. Select **Multiple Ad Platforms** under **Code Output Settings**.
3. Add every required platform to the platform selector.
4. Configure the shared export settings and click the export button.
5. Unzip the main Bannerify download. Each selected platform is placed in its own folder with the corresponding HTML, click handling, metadata, and package structure.

> **Note:** Platform requirements can differ. Check the dedicated page for every selected output before delivery, and validate the exact package in each destination platform.

See the [multiple ad platform export tutorial](/bannerify/tutorials/export-animated-html-banners-from-figma-to-multiple-ad-platforms) for a complete walkthrough.

---

---
url: "/bannerify/export/platforms/performance-max.md"
description: "Use Bannerify's Performance Max HTML output when a Google campaign workflow explicitly accepts an uploaded HTML creative."
---

# Exporting HTML banners for Performance Max

> Use Bannerify's Performance Max HTML output when a Google campaign workflow explicitly accepts an uploaded HTML creative.

Select **Performance Max (PMAX)** when your Google campaign workflow or media team explicitly asks for Bannerify's PMAX HTML output. Bannerify adds its PMAX retail product metadata and Google-compatible click handling to the exported creative.

## Exporting with this option

1. Load the banner frames you want to export into Bannerify.
2. Click **Export to HTML** in the Bannerify header.
3. Select the output option named in this guide under **Code Output Settings**.
4. Enter the destination URL or other platform-specific values shown in the export panel.
5. Click the export button, download the generated `.zip`, and unzip the main Bannerify download.

If you enable **Include individual .zip files for each banner**, the upload-ready banner packages are placed in the `_zips` folder. Some responsive and single-file formats use a different package described on their dedicated page.

> **Note:** Always test the exact exported file in the destination platform or its official validator. A local browser preview confirms the creative renders, but it cannot confirm account eligibility or platform approval.

Confirm the required dimensions, feed setup, upload method, and account eligibility with the person managing the campaign before delivery. Performance Max commonly assembles ads from uploaded assets, so the availability of an HTML upload depends on the exact campaign workflow.

---

---
url: "/bannerify/export/platforms/responsive-html-keyframes.md"
description: "Combine supplied layouts into responsive platform-neutral HTML using CSS keyframes."
---

# Exporting responsive platform-neutral HTML banners

> Combine supplied layouts into responsive platform-neutral HTML using CSS keyframes.

Select **Responsive HTML/JS (CSS @keyframes)** when several supplied Figma layouts should be combined into one platform-neutral responsive HTML output.

## Exporting with this option

1. Load the banner frames you want to export into Bannerify.
2. Click **Export to HTML** in the Bannerify header.
3. Select the output option named in this guide under **Code Output Settings**.
4. Enter the destination URL or other platform-specific values shown in the export panel.
5. Click the export button, download the generated `.zip`, and unzip the main Bannerify download.

If you enable **Include individual .zip files for each banner**, the upload-ready banner packages are placed in the `_zips` folder. Some responsive and single-file formats use a different package described on their dedicated page.

> **Note:** Always test the exact exported file in the destination platform or its official validator. A local browser preview confirms the creative renders, but it cannot confirm account eligibility or platform approval.

Bannerify uses the supplied frame dimensions to choose the matching layout at runtime. It does not generate missing layouts, so include each size or orientation required by the host environment.

This option does not add an ad-platform SDK or click wrapper. Use [Responsive HTML (Media Queries)](/bannerify/export/platforms/responsive-html-media-queries) when you need the clickTag-enabled responsive option, or choose a named platform format when the package will be uploaded to an ad network.

---

---
url: "/bannerify/export/platforms/responsive-html-media-queries.md"
description: "Combine supplied Figma layouts into a clickTag-enabled responsive HTML banner for custom hosting."
---

# Exporting responsive HTML banners with media queries

> Combine supplied Figma layouts into a clickTag-enabled responsive HTML banner for custom hosting.

Select **Responsive HTML (Media Queries)** when several supplied Figma layouts should be combined into one responsive HTML creative for custom hosting or a compatible third-party placement.

## Exporting with this option

1. Load the banner frames you want to export into Bannerify.
2. Click **Export to HTML** in the Bannerify header.
3. Select the output option named in this guide under **Code Output Settings**.
4. Enter the destination URL or other platform-specific values shown in the export panel.
5. Click the export button, download the generated `.zip`, and unzip the main Bannerify download.

If you enable **Include individual .zip files for each banner**, the upload-ready banner packages are placed in the `_zips` folder. Some responsive and single-file formats use a different package described on their dedicated page.

> **Note:** Always test the exact exported file in the destination platform or its official validator. A local browser preview confirms the creative renders, but it cannot confirm account eligibility or platform approval.

Bannerify includes the supplied layouts in one responsive document, uses media queries to select the matching layout, and adds the destination URL entered in the export panel. It does not generate new layouts, so include every size or breakpoint the placement requires.

> **Warning:** This is not a Google Ads upload format. Use [Google Ads (Responsive HTML5)](/bannerify/export/platforms/google-ads-responsive) for one responsive Google Display upload, or [Google Ads](/bannerify/export/platforms/google-ads) for separate fixed-size ZIPs.

See the [responsive HTML export tutorial](/bannerify/tutorials/export-responsive-html-banners-from-figma) for a complete walkthrough.

---

---
url: "/bannerify/export/platforms/scaleable-html.md"
description: "Scale one fixed Bannerify layout proportionally to the browser viewport."
---

# Exporting scaleable HTML banners

> Scale one fixed Bannerify layout proportionally to the browser viewport.

Select **Scaleable HTML/JS (CSS @keyframes)** when one fixed-layout banner should scale proportionally with the browser viewport.

## Exporting with this option

1. Load the banner frames you want to export into Bannerify.
2. Click **Export to HTML** in the Bannerify header.
3. Select the output option named in this guide under **Code Output Settings**.
4. Enter the destination URL or other platform-specific values shown in the export panel.
5. Click the export button, download the generated `.zip`, and unzip the main Bannerify download.

If you enable **Include individual .zip files for each banner**, the upload-ready banner packages are placed in the `_zips` folder. Some responsive and single-file formats use a different package described on their dedicated page.

> **Note:** Always test the exact exported file in the destination platform or its official validator. A local browser preview confirms the creative renders, but it cannot confirm account eligibility or platform approval.

This mode scales the original Figma dimensions as one visual unit. It does not reflow individual elements, switch between supplied layouts, or create new ad sizes. Use [Responsive HTML (Media Queries)](/bannerify/export/platforms/responsive-html-media-queries) when the creative needs different layouts at different viewport sizes.

---

---
url: "/bannerify/export/platforms/seznam-sklik.md"
description: "Export Sklik-compatible fixed-size HTML banner ZIP files from Bannerify."
---

# Exporting HTML banners for Seznam Sklik

> Export Sklik-compatible fixed-size HTML banner ZIP files from Bannerify.

Select **Seznam Sklik** for fixed-size HTML creatives uploaded to Sklik. Bannerify generates Sklik-compatible HTML structure, preserves the configured destination link, and applies the platform-specific output cleanup required by this format.

## Exporting with this option

1. Load the banner frames you want to export into Bannerify.
2. Click **Export to HTML** in the Bannerify header.
3. Select the output option named in this guide under **Code Output Settings**.
4. Enter the destination URL or other platform-specific values shown in the export panel.
5. Click the export button, download the generated `.zip`, and unzip the main Bannerify download.

If you enable **Include individual .zip files for each banner**, the upload-ready banner packages are placed in the `_zips` folder. Some responsive and single-file formats use a different package described on their dedicated page.

> **Note:** Always test the exact exported file in the destination platform or its official validator. A local browser preview confirms the creative renders, but it cannot confirm account eligibility or platform approval.

Upload the individual ZIP files from `_zips` and test the exact generated package in the current Sklik validator or campaign account.

See [Seznam Sklik](https://www.sklik.cz/) for the current platform requirements.

---

---
url: "/bannerify/export/platforms/simplifi.md"
description: "Export Simpli.fi HTML creatives with the platform click macro."
---

# Exporting HTML banners for Simpli.fi

> Export Simpli.fi HTML creatives with the platform click macro.

Select **Simpli.fi** for HTML creatives delivered through Simpli.fi. Bannerify binds the banner click to the platform's `{{clickMacro}}` placeholder so Simpli.fi can supply the destination and tracking URL when the creative is served.

## Exporting with this option

1. Load the banner frames you want to export into Bannerify.
2. Click **Export to HTML** in the Bannerify header.
3. Select the output option named in this guide under **Code Output Settings**.
4. Enter the destination URL or other platform-specific values shown in the export panel.
5. Click the export button, download the generated `.zip`, and unzip the main Bannerify download.

If you enable **Include individual .zip files for each banner**, the upload-ready banner packages are placed in the `_zips` folder. Some responsive and single-file formats use a different package described on their dedicated page.

> **Note:** Always test the exact exported file in the destination platform or its official validator. A local browser preview confirms the creative renders, but it cannot confirm account eligibility or platform approval.

Upload the individual ZIP files from `_zips` and leave the generated click macro unchanged.

---

---
url: "/bannerify/export/platforms/sizmek.md"
description: "Export Sizmek HTML creatives with EB runtime click handling."
---

# Exporting HTML banners for Sizmek

> Export Sizmek HTML creatives with EB runtime click handling.

Select **Sizmek** for HTML creatives delivered through a Sizmek or compatible EB workflow. Bannerify loads the EB runtime, waits for it to initialize, and routes the banner click through `EB.clickthrough()`.

## Exporting with this option

1. Load the banner frames you want to export into Bannerify.
2. Click **Export to HTML** in the Bannerify header.
3. Select the output option named in this guide under **Code Output Settings**.
4. Enter the destination URL or other platform-specific values shown in the export panel.
5. Click the export button, download the generated `.zip`, and unzip the main Bannerify download.

If you enable **Include individual .zip files for each banner**, the upload-ready banner packages are placed in the `_zips` folder. Some responsive and single-file formats use a different package described on their dedicated page.

> **Note:** Always test the exact exported file in the destination platform or its official validator. A local browser preview confirms the creative renders, but it cannot confirm account eligibility or platform approval.

Upload the individual ZIP files from `_zips`. See the [Sizmek export tutorial](/bannerify/tutorials/export-banners-for-sizmek-from-figma) for a complete walkthrough.

---

---
url: "/bannerify/export/platforms/stackadapt.md"
description: "Export StackAdapt HTML creatives with the platform's served click parameter."
---

# Exporting HTML banners for StackAdapt

> Export StackAdapt HTML creatives with the platform's served click parameter.

Select **StackAdapt** for fixed-size HTML creatives uploaded to StackAdapt. Bannerify reads the served `click` query parameter and opens it when the banner is clicked.

Because StackAdapt supplies that click destination when the ad is served, the **StackAdapt** export preset does not show a manual **clickTag** field in Bannerify.

## Exporting with this option

1. Load the banner frames you want to export into Bannerify.
2. Click **Export to HTML** in the Bannerify header.
3. Select the output option named in this guide under **Code Output Settings**.
4. Enter the destination URL or other platform-specific values shown in the export panel.
5. Click the export button, download the generated `.zip`, and unzip the main Bannerify download.

If you enable **Include individual .zip files for each banner**, the upload-ready banner packages are placed in the `_zips` folder. Some responsive and single-file formats use a different package described on their dedicated page.

> **Note:** Always test the exact exported file in the destination platform or its official validator. A local browser preview confirms the creative renders, but it cannot confirm account eligibility or platform approval.

You can optionally enable **Put image files inside an /images subfolder** when the receiving workflow requires that structure. Upload the individual ZIP files from `_zips` and validate the final package with StackAdapt.

If you need to type a destination URL directly into Bannerify before exporting, choose a clickTag-enabled format such as [Responsive HTML (Media Queries)](/bannerify/export/platforms/responsive-html-keyframes) instead.

---

---
url: "/bannerify/export/platforms/the-trade-desk.md"
description: "Export The Trade Desk HTML creatives with a served clickTAG parameter."
---

# Exporting HTML banners for The Trade Desk

> Export The Trade Desk HTML creatives with a served clickTAG parameter.

Select **The Trade Desk** for fixed-size HTML creatives delivered through The Trade Desk. Bannerify reads the served `clickTAG` query parameter into `window.clickTAG` and opens it when the banner is clicked. The uppercase `TAG` spelling is preserved throughout the generated click handler.

This click tracking is included for every banner in a batch export; you do not need to inject it manually for each banner. If a publisher validator still rejects an export, send support the original banner ZIP and the exact validation message so its requirements can be checked.

## Exporting with this option

1. Load the banner frames you want to export into Bannerify.
2. Click **Export to HTML** in the Bannerify header.
3. Select the output option named in this guide under **Code Output Settings**.
4. Enter the destination URL or other platform-specific values shown in the export panel.
5. Click the export button, download the generated `.zip`, and unzip the main Bannerify download.

If you enable **Include individual .zip files for each banner**, the upload-ready banner packages are placed in the `_zips` folder. Some responsive and single-file formats use a different package described on their dedicated page.

> **Note:** Always test the exact exported file in the destination platform or its official validator. A local browser preview confirms the creative renders, but it cannot confirm account eligibility or platform approval.

Upload the individual ZIP files from `_zips` and confirm the requested dimensions and package-size limits with the campaign brief.

---

---
url: "/bannerify/export/platforms/ussd-call.md"
description: "Create Studio Enabler HTML creatives that open a preconfigured phone call action when tapped."
---

# Exporting tap-to-call HTML banners

> Create Studio Enabler HTML creatives that open a preconfigured phone call action when tapped.

Select **USSD (Tap to Call)** when the primary banner action should open the device's phone interface. Bannerify uses the Studio Enabler, records separate website and tap-to-call counters, and opens the configured phone number with a `tel:` URL.

## Setup

1. Load the banner into Bannerify and click **Export to HTML**.
2. Select **USSD (Tap to Call)**.
3. Enter the website clickTag and telephone number shown in the export panel.
4. Export and unzip the main Bannerify download.
5. Upload the individual ZIP from `_zips` to the compatible Studio workflow.

Test the exact creative on supported mobile devices. Desktop browser previews may not have an application registered for `tel:` links.

---

---
url: "/bannerify/export/platforms/ussd-sms.md"
description: "Create Studio Enabler HTML creatives that open a preconfigured SMS action when tapped."
---

# Exporting tap-to-SMS HTML banners

> Create Studio Enabler HTML creatives that open a preconfigured SMS action when tapped.

Select **USSD (Tap to SMS)** when the primary banner action should open the device's SMS interface. Bannerify uses the Studio Enabler, records separate website and tap-to-SMS counters, and opens the configured phone number with an `sms:` URL.

## Setup

1. Load the banner into Bannerify and click **Export to HTML**.
2. Select **USSD (Tap to SMS)**.
3. Enter the website clickTag and the SMS phone number shown in the export panel.
4. Export and unzip the main Bannerify download.
5. Upload the individual ZIP from `_zips` to the compatible Studio workflow.

Test the exact creative on supported mobile devices. Desktop browser previews may not have an application registered for `sms:` links.

---

---
url: "/bannerify/export/platforms/xandr.md"
description: "Export Xandr-compatible HTML banner ZIP files from Bannerify."
---

# Exporting HTML banners for Xandr

> Export Xandr-compatible HTML banner ZIP files from Bannerify.

Select **Xandr** for HTML creatives delivered through the current Xandr workflow. Bannerify loads the AppNexus/Xandr HTML5 library and uses its clickTag wrapper so the platform can supply the destination at serve time.

## Exporting with this option

1. Load the banner frames you want to export into Bannerify.
2. Click **Export to HTML** in the Bannerify header.
3. Select the output option named in this guide under **Code Output Settings**.
4. Enter the destination URL or other platform-specific values shown in the export panel.
5. Click the export button, download the generated `.zip`, and unzip the main Bannerify download.

If you enable **Include individual .zip files for each banner**, the upload-ready banner packages are placed in the `_zips` folder. Some responsive and single-file formats use a different package described on their dedicated page.

> **Note:** Always test the exact exported file in the destination platform or its official validator. A local browser preview confirms the creative renders, but it cannot confirm account eligibility or platform approval.

Upload the individual ZIP files from `_zips`. Use the separate [AppNexus](/bannerify/export/platforms/appnexus) option only when the receiving workflow explicitly uses the legacy AppNexus name.

---

---
url: "/bannerify/export/platforms/yandex.md"
description: "Export Yandex HTML5 creatives with the Yandex banner API click URL."
---

# Exporting HTML banners for Yandex

> Export Yandex HTML5 creatives with the Yandex banner API click URL.

Select **Yandex** for HTML5 creatives delivered through Yandex. Bannerify loads the Yandex HTML5 banner API and assigns the platform-provided click URL to the exported banner.

## Exporting with this option

1. Load the banner frames you want to export into Bannerify.
2. Click **Export to HTML** in the Bannerify header.
3. Select the output option named in this guide under **Code Output Settings**.
4. Enter the destination URL or other platform-specific values shown in the export panel.
5. Click the export button, download the generated `.zip`, and unzip the main Bannerify download.

If you enable **Include individual .zip files for each banner**, the upload-ready banner packages are placed in the `_zips` folder. Some responsive and single-file formats use a different package described on their dedicated page.

> **Note:** Always test the exact exported file in the destination platform or its official validator. A local browser preview confirms the creative renders, but it cannot confirm account eligibility or platform approval.

Upload the individual ZIP files from `_zips` and test them against Yandex's current [HTML5 banner requirements](https://yandex.com/support/direct/products-cpm-campaign/about.html).

---

---
url: "/bannerify/export/preview.md"
description: "Bannerify includes an HTML preview page inside of your banner .zip file exports, which is great for 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 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.

## Sharing your preview page online

The exported Bannerify `.zip` includes a root `index.html` file that displays all of the exported banners. You can either upload this package from Bannerify using one of the built-in integrations, or upload it manually to a static hosting service.

### Quick manual upload with Tiiny Host

For a quick drag-and-drop option, you can [manually upload the exported Bannerify `.zip` to Tiiny Host](/bannerify/export/tiiny-host). The package already contains the required root `index.html`, so you do not need to rearrange the exported files first.

### Built-in direct uploads

Enable **Upload Preview Page** in the Bannerify HTML export panel, then select one of these hosting providers:

- **[Netlify](/bannerify/export/netlify)** uploads the preview package to a Netlify site.
- **[Cloudflare Pages](/bannerify/export/cloudflare-pages)** uses a Cloudflare API token, account ID and Pages project name. Bannerify creates the Pages project automatically if it does not already exist.
- **[Vercel](/bannerify/export/vercel)** uses a Vercel access token and project name, with an optional Team ID. Each export creates a new preview deployment URL.

Cloudflare Pages has a free plan for static sites, subject to its current [Pages limits](https://developers.cloudflare.com/pages/platform/limits/). Vercel also has a free Hobby plan, but Vercel restricts Hobby accounts to personal, non-commercial use; business and team work requires an eligible paid plan.

Zapier and Make remain available for custom automation. Those integrations send the exported `.zip` to your webhook, so your Zap or Make scenario still needs a downstream static host if you want it to return a public preview URL.

### Using the preview with Commentful

Commentful review links currently display Figma frames rather than embedding an external live HTML preview. For QA, share the hosted Bannerify preview URL for animation and interaction checks alongside a Commentful review link for frame-based comments and approvals.

---

---
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/tiiny-host.md"
description: "Create a shareable Bannerify preview page URL by manually uploading the exported .zip file to Tiiny Host."
---

# Manually upload a Bannerify preview page to Tiiny Host

> Create a shareable Bannerify preview page URL by manually uploading the exported .zip file to Tiiny Host.

[Tiiny Host](https://tiiny.host/) is a manual drag-and-drop alternative if the built-in Bannerify preview hosting options are unavailable or blocked on your network.

Unlike the Netlify, Cloudflare Pages and Vercel integrations, Bannerify does not connect to Tiiny Host or upload files automatically. You upload the exported `.zip` through the Tiiny Host website after the Bannerify export finishes.

## Upload the preview page

1. In Bannerify, click **Export to HTML** and leave **Generate Preview Page** enabled.
2. Click **Export Banners** and save the generated `.zip` file.
3. Open [Tiiny Host](https://tiiny.host/), then drag and drop the Bannerify `.zip` into its uploader.
4. Choose a link name and follow the Tiiny Host prompts to publish the site.
5. Copy the generated URL to share the live banner preview with your client or team.

The Bannerify package already includes the required root `index.html` preview page, so you can upload the exported `.zip` as-is without extracting or rearranging its files.

> **Warning:** Tiiny Host is a separate third-party service. Its free plan currently has a 3 MB upload limit, and free users must log in at least once every three months to keep links online. Uploaded links are publicly accessible unless your plan includes password protection. Check the current [Tiiny Host pricing and limits](https://tiiny.host/pricing) before uploading confidential or larger banner packages.

---

---
url: "/bannerify/export/vercel.md"
description: "Use Bannerify's built-in Vercel integration to publish an exported HTML banner preview page to a shareable deployment URL."
---

# Upload a Bannerify preview page to Vercel

> Use Bannerify's built-in Vercel integration to publish an exported HTML banner preview page to a shareable deployment URL.

Bannerify can publish the generated HTML preview page and all of its banner assets directly to Vercel.

## Configure Vercel

1. Create a [Vercel access token](https://vercel.com/account/tokens).
2. In Bannerify, click **Export to HTML**, enable **Upload Preview Page**, and select **Vercel**.
3. Paste the access token and enter the Vercel project name you want to use.
4. If the project belongs to a Vercel team, also enter its Team ID.

After you click **Export Banners**, Bannerify uploads the generated preview files and returns the unique URL for the new Vercel preview deployment.

The access token is stored in your Figma user's private client storage. The project name and optional Team ID are saved with the current Figma page so they can be reused for later exports.

> **Warning:** Vercel's free Hobby plan is restricted to personal, non-commercial use. Business and team projects require an eligible paid plan. See the current [Vercel Hobby plan terms](https://vercel.com/docs/plans/hobby) before using it for client or company work.

---

---
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 walks through how to export production-ready animated banners from Figma to MP4 Videos using the Bannerify plugin.
[Embedded media](https://www.youtube-nocookie.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 want to exclude any banners from being included (without [re-loading the selected banners](/bannerify/design/figma-frames#refreshing-or-re-loading-multiple-all-banners) 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**. 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 walks through how to add audio files to your MP4 video banner exports in Figma using the Bannerify plugin.
[Embedded media](https://www.youtube-nocookie.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 walks through how to export production-ready animated banners from Figma to WebM Videos using the Bannerify plugin.
[Embedded media](https://www.youtube-nocookie.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 want to exclude any banners from being included (without [re-loading the selected banners](/bannerify/design/figma-frames#refreshing-or-re-loading-multiple-all-banners) 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**. 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 want 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 want 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 walks through how to export animated HTML banners from Figma to Google Drive with Zapier using the Bannerify plugin.
[Embedded media](https://www.youtube-nocookie.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://www.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://www.hypermatic.com/bannerify/#pro).

- **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 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 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 (for example, a “find layer by name” plugin)
- Modify any data in your Figma document (for example, a “rename selected layers” plugin)
- Communicate with any server over the internet (for example, 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, 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.

## Exported HTML banner is not animating or playing in the browser

If your exported HTML banner looks frozen, does not animate, or works in Bannerify's preview but not when you open the exported HTML file in a browser, check whether an ad blocker or privacy browser extension is enabled. Some extensions can block local or ad-related HTML files from running correctly. Temporarily disable the extension for the local preview file, open the export in another browser, or upload the banner to your normal preview/staging environment and test it there.

## 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 (for example, 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](/tinyimage/downsize) 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

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-nocookie.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 a 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 of all of the Figma plugin features.

> **Warning:** 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.

> **Info:** If you ever need to use a different license key at any time (for example, 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 Figma designs and export production-ready banners as HTML, GIF, video, and other advertising formats."
---

# Get started with Bannerify

> Animate Figma designs and export production-ready banners as HTML, GIF, video, and other advertising formats.

[![Bannerify Figma Plugin](https://www.hypermatic.com/bannerify.jpg)](https://www.figma.com/community/plugin/796124491692147799/bannerify-banner-studio)

## Install and 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 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

- Works with Figma Design, Figma Buzz and Figma Motion.
- Build timeline animations and preview them 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.
- Optionally use your own AI tools to generate, review and apply complete entry, exit and hover animation timelines for every layer.
- Set a maximum file size (kb) per banner for automatic asset optimization.
- Optionally include static fallback "backup" JPG for every banner.
- Generate responsive HTML preview pages, with optional upload workflows for Netlify, Cloudflare Pages, Vercel, 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, AppLovin (Responsive HTML5), AppNexus, Basis, Delta Projects, DoubleClick (DCM), DoubleClick Studio, DV360, FlashTalking, Google Ads (fixed-size and Responsive HTML5), Google Ad Manager (DFP), Google App Campaigns (Playable and Responsive), Google Display Network, IAB, Jivox (Dynamic Creative), Responsive HTML (Media Queries), 6sense (Dynamic Creative), Seznam Sklik, 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: "Learn how to design, animate, and export Figma banners to HTML, GIF, video, and major advertising platforms with Bannerify."
---

# Bannerify Video Tutorials

> Learn how to design, animate, and export Figma banners to HTML, GIF, video, and major advertising platforms with Bannerify.

## Designing Banners

- [Animate groups and layers independently with Group Motion](/bannerify/tutorials/animate-groups-and-layers-independently)
- [Export animated Figma Motion banners to HTML, MP4 video, or GIF](/bannerify/tutorials/export-animated-figma-motion-banners)
- [Animate and export Figma Buzz banners to HTML, MP4 video, or GIF](/bannerify/tutorials/animate-and-export-figma-buzz-banners)
- [Animate and export banners to HTML from Figma](/bannerify/tutorials/animate-and-export-banners-to-html-from-figma)
- [Create multi-scene animated banners in Figma](/bannerify/tutorials/create-multi-scene-animated-banners-in-figma)
- [Add video embeds to Figma banner exports](/bannerify/tutorials/add-video-embeds-to-figma-banner-exports)
- [Generate custom banner animations with AI](/bannerify/tutorials/generate-custom-banner-animations-with-ai)
- [Add custom animations to your Figma banner designs](/bannerify/tutorials/add-custom-animations-to-your-figma-banner-designs)
- [Add hover animations to your Figma banner designs](/bannerify/tutorials/add-hover-animations-to-your-figma-banner-designs)
- [Add masked animations to Figma banners](/bannerify/tutorials/add-masked-animations-to-figma-banners)
- [Add split text animations to Figma banners](/bannerify/tutorials/add-split-text-animations-to-figma-banners)
- [Add cubic bezier easing to banner animations in Figma](/bannerify/tutorials/add-cubic-bezier-easing-to-banner-animations-in-figma)
- [Add Lottie animations to Figma banner exports](/bannerify/tutorials/add-lottie-animations-to-figma-banner-exports)
- [Add scrollable text disclaimers to HTML Figma banners](/bannerify/tutorials/add-scrollable-text-disclaimers-to-html-figma-banners)
- [Add rich text popup overlays to HTML Figma banners](/bannerify/tutorials/add-rich-text-popup-overlays-to-html-figma-banners)

## HTML Exports

- [Export banners to HTML/GSAP from Figma](/bannerify/tutorials/export-banners-to-html-gsap-from-figma)
- [Add custom HTML, CSS, and Javascript to Figma banner exports](/bannerify/tutorials/add-custom-html-css-and-javascript-to-figma-banner-exports)
- [Export animated HTML banners from Figma to multiple ad platforms](/bannerify/tutorials/export-animated-html-banners-from-figma-to-multiple-ad-platforms)
- [Upload preview links for HTML banners from Figma to Netlify](/bannerify/tutorials/upload-preview-links-for-html-banners-from-figma-to-netlify)
- [Export animated HTML banners from Figma to Google Drive with Zapier](/bannerify/tutorials/export-animated-html-banners-from-figma-to-google-drive-with-zapier)
- [Bulk export Figma banner variants from a spreadsheet to HTML or Video/GIF](/bannerify/tutorials/bulk-export-figma-banner-variants-from-a-spreadsheet-to-html-or-video-gif)

## GIF/Video Exports

- [Export banners to MP4 videos from Figma](/bannerify/tutorials/export-banners-to-mp4-videos-from-figma)
- [Add audio to Figma video banner exports](/bannerify/tutorials/add-audio-to-figma-video-banner-exports)
- [Export banners to GIFs from Figma](/bannerify/tutorials/export-banners-to-gifs-from-figma)
- [Export banners to WebM videos from Figma](/bannerify/tutorials/export-banners-to-webm-videos-from-figma)
- [Export banners to animated PNG (APNG) images from Figma](/bannerify/tutorials/export-banners-to-animated-png-apng-images-from-figma)
- [Export banners to animated WebP images from Figma](/bannerify/tutorials/export-banners-to-animated-webp-images-from-figma)

## Ad Platforms

- [Export banners for Google Ads from Figma](/bannerify/tutorials/export-banners-for-google-ads-from-figma)
- [Export responsive HTML banners from Figma](/bannerify/tutorials/export-responsive-html-banners-from-figma)
- [Export banners for DoubleClick from Figma](/bannerify/tutorials/export-banners-for-doubleclick-from-figma)
- [Export banners for AdForm from Figma](/bannerify/tutorials/export-banners-for-adform-from-figma)
- [Export banners for DCM from Figma](/bannerify/tutorials/export-banners-for-dcm-from-figma)
- [Export banners for Flashtalking from Figma](/bannerify/tutorials/export-banners-for-flashtalking-from-figma)
- [Export banners for IAB from Figma](/bannerify/tutorials/export-banners-for-iab-from-figma)
- [Export banners for Sizmek from Figma](/bannerify/tutorials/export-banners-for-sizmek-from-figma)
- [Export banners for AppNexus from Figma](/bannerify/tutorials/export-banners-for-appnexus-from-figma)

## More video tutorials

- [How to export Figma to HTML Canvas using Bannerify](/bannerify/tutorials/how-to-export-figma-to-html-canvas-using-bannerify)
- [How to install Figma plugins in 2022](/bannerify/tutorials/how-to-install-figma-plugins-in-2022)

---

---
url: "/bannerify/tutorials/add-audio-to-figma-video-banner-exports.md"
description: "This tutorial shows how to use the Bannerify Figma plugin to export animated Figma banners as MP4 video files with an added audio track. It covers installing or running Bannerify, selecting banners, adding an MP3 file in the export options, and exporting a zip that contains MP4 videos with sound."
---

# Add audio to Figma video banner exports

> This tutorial shows how to use the Bannerify Figma plugin to export animated Figma banners as MP4 video files with an added audio track. It covers installing or running Bannerify, selecting banners, adding an MP3 file in the export options, and exporting a zip that contains MP4 videos with sound.

[← Back to Bannerify Video Tutorials](/bannerify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/XLg0YGQglgA)

## What this video covers

This tutorial shows how to use the Bannerify Figma plugin to export animated Figma banners as MP4 video files with an added audio track. It covers installing or running Bannerify, selecting banners, adding an MP3 file in the export options, and exporting a zip that contains MP4 videos with sound.

## Things you'll need

- Bannerify Figma plugin installed or saved
- Animated Figma banners already designed and ready to export
- An MP3 audio file to add to the export

## Steps

1. [ ] Open Figma Resources, search for Bannerify under Plugins, and install or run the Bannerify Figma plugin.
2. [ ] Select the banner frames you want to export and load them into Bannerify.
3. [ ] Click Export to GIF/Video and choose the MP4 export option.
4. [ ] Find an MP3 file to use, such as one downloaded from Pixabay, and save it to your computer.
5. [ ] Drag and drop the MP3 file into the MP4 audio drop zone in the Bannerify export options.
6. [ ] Click Export MP4 to render the selected banners with the audio track included.
7. [ ] Download the zip file, unzip it, and play the exported MP4 files to confirm the audio is included.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=XLg0YGQglgA)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-add-audio-to-figma-video-banner-exports-using-bannerify)
- [Read: Exporting your banners to MP4 videos](/bannerify/export/video)
- [Next: Export banners to GIFs from Figma](/bannerify/tutorials/export-banners-to-gifs-from-figma)
- [Open Bannerify in the Figma Community](https://www.figma.com/community/plugin/796124491692147799)

---

---
url: "/bannerify/tutorials/add-cubic-bezier-easing-to-banner-animations-in-figma.md"
description: "This tutorial shows how to add custom cubic bezier easing curves to Bannerify custom animations in Figma. It demonstrates creating a custom animation, pasting a generated cubic bezier rule into Bannerify, previewing the motion, and exporting the banner as a GIF/Video or HTML preview."
---

# Add cubic bezier easing to banner animations in Figma

> This tutorial shows how to add custom cubic bezier easing curves to Bannerify custom animations in Figma. It demonstrates creating a custom animation, pasting a generated cubic bezier rule into Bannerify, previewing the motion, and exporting the banner as a GIF/Video or HTML preview.

[← Back to Bannerify Video Tutorials](/bannerify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/uS2TRRQiYzw)

## What this video covers

This tutorial shows how to add custom cubic bezier easing curves to Bannerify custom animations in Figma. It demonstrates creating a custom animation, pasting a generated cubic bezier rule into Bannerify, previewing the motion, and exporting the banner as a GIF/Video or HTML preview.

## Things you'll need

- Figma
- Bannerify Figma plugin

## Steps

1. [ ] Open Bannerify from Figma by finding it in Resources or from Plugins > Saved Plugins.
2. [ ] Load the Figma frames you want Bannerify to treat as banners so their layers appear in the timeline.
3. [ ] Click Custom Animations to open the keyframe editor and build an animation with keyframes.
4. [ ] Set the animation easing to Cubic Bezier and paste in a custom CSS cubic bezier rule copied from a cubic bezier generator site.
5. [ ] Name the animation and click Add new animation, then assign it to a layer such as a CTA button under the Custom group.
6. [ ] Edit the saved animation if needed, then click Update saved animation to apply the changes.
7. [ ] Copy and paste the animation to other matching layers, apply it, and export the result using Export to GIF/Video or HTML.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=uS2TRRQiYzw)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-add-cubic-bezier-easing-to-banner-animations-in-figma-using-bannerify)
- [Read: Setting the animation easing](/bannerify/animation/animation-easing)
- [Next: Add Lottie animations to Figma banner exports](/bannerify/tutorials/add-lottie-animations-to-figma-banner-exports)
- [Open Bannerify in the Figma Community](https://www.figma.com/community/plugin/796124491692147799)

---

---
url: "/bannerify/tutorials/add-custom-animations-to-your-figma-banner-designs.md"
description: "The video shows how to install the Bannerify Figma plugin and use its custom Animation editor to build keyframe-based banner animations. It demonstrates creating, saving, updating, deleting, and applying custom animations, then exporting them in GIF/MP4, HTML, and banner set outputs."
---

# Add custom animations to your Figma banner designs

> The video shows how to install the Bannerify Figma plugin and use its custom Animation editor to build keyframe-based banner animations. It demonstrates creating, saving, updating, deleting, and applying custom animations, then exporting them in GIF/MP4, HTML, and banner set outputs.

[← Back to Bannerify Video Tutorials](/bannerify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/Js4uSQ855uo)

## What this video covers

The video shows how to install the Bannerify Figma plugin and use its custom Animation editor to build keyframe-based banner animations. It demonstrates creating, saving, updating, deleting, and applying custom animations, then exporting them in GIF/MP4, HTML, and banner set outputs.

## Things you'll need

- Figma Community access
- The Bannerify Banner Studio plugin installed

## Steps

1. [ ] Install the Bannerify Banner Studio plugin from Figma Community and open it from Plugins in your Figma project.
2. [ ] Open the Animations panel to create a custom CSS-based timeline animation instead of using preset entrances and exits.
3. [ ] Set keyframe properties such as X-axis, Y-axis, opacity, rotation, and scale, then use the live preview and easing controls to shape the motion.
4. [ ] Add intermediate keyframes with Insert New Keyframe, copy and paste properties between frames if needed, and adjust the animation path and timing.
5. [ ] Name the animation, click Add New Animation, and select it under Custom Animations to apply it to a banner layer.
6. [ ] Use the timeline speed slider and delay controls to preview the animation, and update a saved animation or create a new version such as v2.
7. [ ] Delete keyframes or saved animations with the delete controls; deleting an applied animation reverts the layer to No Animation.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=Js4uSQ855uo)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-add-custom-animations-to-your-figma-banner-designs-using-bannerify)
- [Read: Creating custom keyframe animations](/bannerify/animation/custom-keyframes)
- [Next: Add hover animations to your Figma banner designs](/bannerify/tutorials/add-hover-animations-to-your-figma-banner-designs)
- [Open Bannerify in the Figma Community](https://www.figma.com/community/plugin/796124491692147799)

---

---
url: "/bannerify/tutorials/add-custom-html-css-and-javascript-to-figma-banner-exports.md"
description: "This tutorial shows how to use the Bannerify Figma plugin to export HTML banners with optional custom HTML, CSS, and Javascript injected into the output. It also demonstrates how to turn the feature on or off and how custom code appears in the exported preview page."
---

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

> This tutorial shows how to use the Bannerify Figma plugin to export HTML banners with optional custom HTML, CSS, and Javascript injected into the output. It also demonstrates how to turn the feature on or off and how custom code appears in the exported preview page.

[← Back to Bannerify Video Tutorials](/bannerify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/Uwe6PLmErRU)

## What this video covers

This tutorial shows how to use the Bannerify Figma plugin to export HTML banners with optional custom HTML, CSS, and Javascript injected into the output. It also demonstrates how to turn the feature on or off and how custom code appears in the exported preview page.

## Things you'll need

- Bannerify should already be installed or saved as a Figma plugin.
- The banners should already be designed and ready to export.

## Steps

1. [ ] Open Figma, use the Resources icon to search for Bannerify, and save or run the plugin from Plugins > Saved Plugins.
2. [ ] In Bannerify, open Export to HTML and turn on Inject Custom Code.
3. [ ] Paste custom HTML into the body tag field for banner content.
4. [ ] Paste custom CSS into the CSS styles field and Javascript into the Javascript code field.
5. [ ] Export Banners, download the zip file, and open the HTML preview page to test the injected code.
6. [ ] Turn off Inject Custom Code and export again to remove the custom code from the output.
7. [ ] Optionally add code to the HTML to head tag field for items like meta tags or script tags that belong in the document head.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=Uwe6PLmErRU)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-add-custom-html-css-and-javascript-to-figma-banner-exports-using-bannerify)
- [Read: Inject custom HTML/CSS/Javascript code into all of your HTML banner exports](/bannerify/export/inject-custom-code)
- [Next: Export animated HTML banners from Figma to multiple ad platforms](/bannerify/tutorials/export-animated-html-banners-from-figma-to-multiple-ad-platforms)
- [Open Bannerify in the Figma Community](https://www.figma.com/community/plugin/796124491692147799)

---

---
url: "/bannerify/tutorials/add-hover-animations-to-your-figma-banner-designs.md"
description: "This tutorial shows how to install the Bannerify Figma plugin, load banner frames, add hover animation states to individual layers, and export the result as production-ready HTML and CSS. It also demonstrates previewing the hover effects in a browser and applying the same hover settings to multiple layers by bulk apply or copy and paste."
---

# Add hover animations to your Figma banner designs

> This tutorial shows how to install the Bannerify Figma plugin, load banner frames, add hover animation states to individual layers, and export the result as production-ready HTML and CSS. It also demonstrates previewing the hover effects in a browser and applying the same hover settings to multiple layers by bulk apply or copy and paste.

[← Back to Bannerify Video Tutorials](/bannerify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/dOdeG78NlSw)

## What this video covers

This tutorial shows how to install the Bannerify Figma plugin, load banner frames, add hover animation states to individual layers, and export the result as production-ready HTML and CSS. It also demonstrates previewing the hover effects in a browser and applying the same hover settings to multiple layers by bulk apply or copy and paste.

## Things you'll need

- Figma installed
- Bannerify installed from the Figma Community

## Steps

1. [ ] Install Bannerify from the Figma Community plugins tab.
2. [ ] Open your Figma file, right-click, go to Plugins, and launch Bannerify.
3. [ ] Select the banner frames you want to load, then click Load selected banners.
4. [ ] Choose a layer such as CTA or Logo, turn on Add Hover, and pick a hover animation like Grow, Rotation, Bounce-in, Skew, or Wobble.
5. [ ] Adjust the hover animation speed and optionally enable Loop for continuous playback while hovering.
6. [ ] Click Export to HTML, choose the output settings, optionally add a click tag, then click Export Banner and download the .zip file.
7. [ ] Unzip the export, open index.html or the banners folder in a browser to preview the animations; use bulk application or Copy and Paste to reuse hover settings on other layers.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=dOdeG78NlSw)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-add-hover-animations-to-html-banners-in-figma-using-bannerify)
- [Read: Adding hover animation states to layers](/bannerify/animation/hover)
- [Next: Add masked animations to Figma banners](/bannerify/tutorials/add-masked-animations-to-figma-banners)
- [Open Bannerify in the Figma Community](https://www.figma.com/community/plugin/796124491692147799)

---

---
url: "/bannerify/tutorials/add-lottie-animations-to-figma-banner-exports.md"
description: "The video shows how to use the Bannerify Figma plugin to add Lottie animations into banner designs by pasting a Lottie JSON URL into a placeholder layer. It also shows how to combine Lottie embeds with Bannerify transitions and export the finished banner to HTML/CSS, GIF, WebM, or MP4."
---

# Add Lottie animations to Figma banner exports

> The video shows how to use the Bannerify Figma plugin to add Lottie animations into banner designs by pasting a Lottie JSON URL into a placeholder layer. It also shows how to combine Lottie embeds with Bannerify transitions and export the finished banner to HTML/CSS, GIF, WebM, or MP4.

[← Back to Bannerify Video Tutorials](/bannerify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/JOJXVPWejOw)

## What this video covers

The video shows how to use the Bannerify Figma plugin to add Lottie animations into banner designs by pasting a Lottie JSON URL into a placeholder layer. It also shows how to combine Lottie embeds with Bannerify transitions and export the finished banner to HTML/CSS, GIF, WebM, or MP4.

## Things you'll need

- A Figma file with banner frames and placeholder layers set up.
- A Bannerify plugin installation.
- A Lottie JSON file URL from lottiefiles.com or another source.

## Steps

1. [ ] Install the Bannerify Figma plugin from the Figma Community Plugins tab.
2. [ ] Open your banner file in Figma, right-click, and launch Bannerify from Plugins.
3. [ ] Load the parent frames you want to work on with Load Selected Banners.
4. [ ] Create or select a placeholder layer, open its settings, and paste a Lottie Animation URL from lottiefiles.com or another Lottie JSON source.
5. [ ] Set the Lottie animation to loop if desired, then preview it alongside Bannerify layer animations such as fade in or scale in/out.
6. [ ] Add more placeholder layers or use Media Embed and Quick Select Layer to apply the same Lottie animation across multiple layers or banners.
7. [ ] Export the banner with Export to HTML or Export to GIF/Video, then download the .zip file and open the exported HTML or video output.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=JOJXVPWejOw)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-add-lottie-animations-to-figma-banner-exports-using-bannerify)
- [Read: Including Lottie file animations in your banners](/bannerify/design/lottie)
- [Next: Add scrollable text disclaimers to HTML Figma banners](/bannerify/tutorials/add-scrollable-text-disclaimers-to-html-figma-banners)
- [Open Bannerify in the Figma Community](https://www.figma.com/community/plugin/796124491692147799)

---

---
url: "/bannerify/tutorials/add-masked-animations-to-figma-banners.md"
description: "This tutorial shows how to use the Bannerify Figma plugin to add masked entrance and exit animations to banner layers. It also covers exporting the finished banner as HTML, GreenSock/GSAP, Google ads, GIF, or video."
---

# Add masked animations to Figma banners

> This tutorial shows how to use the Bannerify Figma plugin to add masked entrance and exit animations to banner layers. It also covers exporting the finished banner as HTML, GreenSock/GSAP, Google ads, GIF, or video.

[← Back to Bannerify Video Tutorials](/bannerify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/GIGNYoB6oCM)

## What this video covers

This tutorial shows how to use the Bannerify Figma plugin to add masked entrance and exit animations to banner layers. It also covers exporting the finished banner as HTML, GreenSock/GSAP, Google ads, GIF, or video.

## Things you'll need

- Figma
- Bannerify Figma plugin

## Steps

1. [ ] Open Figma, click the Resources icon, search for Bannerify, and save or run the plugin.
2. [ ] Right-click on the canvas, go to Plugins, and open Bannerify.
3. [ ] Select the parent frame or artboard you want to use, then load the checked banner so Bannerify treats its layers as animation elements.
4. [ ] For each layer, open the entrance and exit animation controls and choose a masked animation, such as a square, wipe, or circle effect. For an eased circular exit with an origin inset from the top-left corner, choose **Circle Out Upper Left (Ease)**.
5. [ ] Adjust the direction, timing, and delays on layers to create staggered masked entrances and exits.
6. [ ] Preview the result in Bannerify to check the masking effect.
7. [ ] Export the banner using Export to HTML, GreenSock or GSAP, or an ad platform such as Google ads, or export it as GIF or video.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=GIGNYoB6oCM)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-add-masked-animations-to-figma-banners-using-bannerify)
- [Read: Selecting animations](/bannerify/animation/selecting-animations)
- [Next: Add split text animations to Figma banners](/bannerify/tutorials/add-split-text-animations-to-figma-banners)
- [Open Bannerify in the Figma Community](https://www.figma.com/community/plugin/796124491692147799)

---

---
url: "/bannerify/tutorials/add-rich-text-popup-overlays-to-html-figma-banners.md"
description: "This video shows how to use the Bannerify Figma plugin to add interactive popup overlay disclaimers to HTML banner exports. It covers selecting CTA trigger layers, generating and customizing the overlay component, exporting to HTML, and testing the result in the browser."
---

# Add rich text popup overlays to HTML Figma banners

> This video shows how to use the Bannerify Figma plugin to add interactive popup overlay disclaimers to HTML banner exports. It covers selecting CTA trigger layers, generating and customizing the overlay component, exporting to HTML, and testing the result in the browser.

[← Back to Bannerify Video Tutorials](/bannerify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/fOlw2ghGcIc)

## What this video covers

This video shows how to use the Bannerify Figma plugin to add interactive popup overlay disclaimers to HTML banner exports. It covers selecting CTA trigger layers, generating and customizing the overlay component, exporting to HTML, and testing the result in the browser.

## Things you'll need

- A Figma file with banner frames already created
- The Bannerify Figma plugin

## Steps

1. [ ] Open the Figma file, find Bannerify from Resources or Saved Plugins, and run the plugin.
2. [ ] Load the checked banner frames into Bannerify so their layers are imported into the plugin timeline.
3. [ ] Use Quick Select Layers to select the trigger layers, such as all layers named "CTA Button."
4. [ ] In Generate Popup Overlay Disclaimers, choose the transition, speed, easing, and direction, then click "Create Popup Links."
5. [ ] Edit the generated popup overlay component in Figma by changing the content, colors, and padding as needed.
6. [ ] Export the banners to HTML, download the zip file, unzip it, and open the index.html preview page in a browser.
7. [ ] Click the CTA buttons in the exported banners to verify the rich text overlay opens and closes as expected.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=fOlw2ghGcIc)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-add-rich-text-popup-overlays-to-html-figma-banners-using-bannerify)
- [Read: Adding clickable rich text popup overlay links to your banners](/bannerify/design/popups)
- [Next: Add scrollable text disclaimers to HTML Figma banners](/bannerify/tutorials/add-scrollable-text-disclaimers-to-html-figma-banners)
- [Open Bannerify in the Figma Community](https://www.figma.com/community/plugin/796124491692147799)

---

---
url: "/bannerify/tutorials/add-scrollable-text-disclaimers-to-html-figma-banners.md"
description: "This tutorial shows how to add scrollable disclaimer text to HTML Figma banners using the Bannerify Figma plugin. It explains how to make a text layer truncation-enabled, turn on scrollable HTML text, and export the banner for manual scrolling or auto-scrolling behavior."
---

# Add scrollable text disclaimers to HTML Figma banners

> This tutorial shows how to add scrollable disclaimer text to HTML Figma banners using the Bannerify Figma plugin. It explains how to make a text layer truncation-enabled, turn on scrollable HTML text, and export the banner for manual scrolling or auto-scrolling behavior.

[← Back to Bannerify Video Tutorials](/bannerify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/lDPV4QU_ZRU)

## What this video covers

This tutorial shows how to add scrollable disclaimer text to HTML Figma banners using the Bannerify Figma plugin. It explains how to make a text layer truncation-enabled, turn on scrollable HTML text, and export the banner for manual scrolling or auto-scrolling behavior.

## Things you'll need

- A Figma file with banner frames ready to load into Bannerify.
- The Bannerify Figma plugin installed or saved in Figma.

## Steps

1. [ ] Open the Figma file, find Bannerify in the Figma plugins list, and run the plugin.
2. [ ] Load the banner frames into Bannerify so their content layers appear in the timeline.
3. [ ] Select the disclaimer text layer in Figma and enable truncate text so the layer becomes a truncated text box.
4. [ ] Refresh the banner in Bannerify, then open the layer settings and enable scrollable HTML text.
5. [ ] Choose one of the scroll modes: manually scrollable, auto-scroll on layer enter, or auto-scroll on banner end.
6. [ ] Export the banner as HTML, unzip the downloaded file, and open the index HTML preview in a browser to test the scroll behavior.
7. [ ] Copy the configured text layer into other banners, refresh all banners, and export multiple banners if needed.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=lDPV4QU_ZRU)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-add-scrollable-text-disclaimers-with-auto-scroll-to-html-figma-banners-using-bannerify)
- [Read: Adding scrollable truncated text layers to your banners](/bannerify/design/scrollable-text)
- [Next: Add rich text popup overlays to HTML Figma banners](/bannerify/tutorials/add-rich-text-popup-overlays-to-html-figma-banners)
- [Open Bannerify in the Figma Community](https://www.figma.com/community/plugin/796124491692147799)

---

---
url: "/bannerify/tutorials/add-split-text-animations-to-figma-banners.md"
description: "This tutorial shows how to use the Bannerify Figma plugin to add split text animations to banner text layers, including character-by-character, word-by-word, and line-by-line effects. It also explains how to export those banners as MP4, GIF, WebM, or HTML with the HTML GreenSock Animation option required for split text animations."
---

# Add split text animations to Figma banners

> This tutorial shows how to use the Bannerify Figma plugin to add split text animations to banner text layers, including character-by-character, word-by-word, and line-by-line effects. It also explains how to export those banners as MP4, GIF, WebM, or HTML with the HTML GreenSock Animation option required for split text animations.

[← Back to Bannerify Video Tutorials](/bannerify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/NrzaotL5IMw)

## What this video covers

This tutorial shows how to use the Bannerify Figma plugin to add split text animations to banner text layers, including character-by-character, word-by-word, and line-by-line effects. It also explains how to export those banners as MP4, GIF, WebM, or HTML with the HTML GreenSock Animation option required for split text animations.

## Things you'll need

- A Figma file with at least one frame to load into Bannerify.
- Bannerify installed as a Figma plugin.

## Steps

1. [ ] Open your Figma file, search for Bannerify from the actions icon, and run or save the plugin, then launch it from saved plugins.
2. [ ] Load the current Figma frame into Bannerify by clicking the load banners button so the frame contents appear in the timeline.
3. [ ] Select a text layer in the timeline and open the entry or exit animation settings.
4. [ ] Scroll to the split text section and choose an animation that splits text by characters, words, or lines.
5. [ ] Preview the animation, then apply a matching split text option for the exit animation if needed.
6. [ ] Export the banner as MP4, GIF, WebM, or another animated format, or choose export to HTML and switch code output to the HTML GreenSock Animation option before exporting.
7. [ ] Download and open the exported files to verify the animation playback.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=NrzaotL5IMw)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-add-split-text-animations-to-figma-banners-using-bannerify)
- [Read: Split text animations](/bannerify/animation/split-text)
- [Next: Add cubic bezier easing to banner animations in Figma](/bannerify/tutorials/add-cubic-bezier-easing-to-banner-animations-in-figma)
- [Open Bannerify in the Figma Community](https://www.figma.com/community/plugin/796124491692147799)

---

---
url: "/bannerify/tutorials/add-video-embeds-to-figma-banner-exports.md"
description: "This tutorial shows how to install the Bannerify Figma plugin, load banner frames, and embed video URLs into placeholder layers so the video plays back in the banner timeline. It then demonstrates exporting the banners to HTML and to WebM video, with GIF and MP4 mentioned as additional export options."
---

# Add video embeds to Figma banner exports

> This tutorial shows how to install the Bannerify Figma plugin, load banner frames, and embed video URLs into placeholder layers so the video plays back in the banner timeline. It then demonstrates exporting the banners to HTML and to WebM video, with GIF and MP4 mentioned as additional export options.

[← Back to Bannerify Video Tutorials](/bannerify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/8eqKeU4c4bc)

## What this video covers

This tutorial shows how to install the Bannerify Figma plugin, load banner frames, and embed video URLs into placeholder layers so the video plays back in the banner timeline. It then demonstrates exporting the banners to HTML and to WebM video, with GIF and MP4 mentioned as additional export options.

## Things you'll need

- Figma
- Bannerify Figma plugin
- A direct .mp4 or .webm video URL

## Steps

1. [ ] Find Bannerify in the Figma Community under the Plugins tab and install it.
2. [ ] Open your Figma file, right-click, go to Plugins, and run Bannerify.
3. [ ] Click Load Selected Banners to load the banner frames into Bannerify.
4. [ ] Choose a placeholder or other layer, open its settings, and paste an .mp4 or .webm URL into the embed field.
5. [ ] Preview the banner timeline to confirm the video plays alongside the other animations.
6. [ ] Use Apply Embed or Quick Select to apply the same video to multiple selected layers or banners.
7. [ ] Export the banners with Export to HTML or Export to GIF/Video, then download and open the exported files to verify the result.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=8eqKeU4c4bc)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-add-video-embeds-to-figma-banner-exports-using-bannerify)
- [Read: Including Video file embeds in your banners](/bannerify/design/video)
- [Next: Generate custom banner animations with AI](/bannerify/tutorials/generate-custom-banner-animations-with-ai)
- [Open Bannerify in the Figma Community](https://www.figma.com/community/plugin/796124491692147799)

---

---
url: "/bannerify/tutorials/animate-and-export-banners-to-html-from-figma.md"
description: "This video shows how to use the Bannerify Figma plugin to turn top-level Figma frames into animated banner ads. It covers applying and previewing animations, refreshing edits, and exporting banners to HTML with options like Vanilla HTML/CSS, dark mode, image compression, and ad-platform-specific formats."
---

# Animate and export banners to HTML from Figma

> This video shows how to use the Bannerify Figma plugin to turn top-level Figma frames into animated banner ads. It covers applying and previewing animations, refreshing edits, and exporting banners to HTML with options like Vanilla HTML/CSS, dark mode, image compression, and ad-platform-specific formats.

[← Back to Bannerify Video Tutorials](/bannerify/tutorials)

This video walks through how to animate and export production-ready HTML banners from Figma in seconds.

[Embedded media](https://www.youtube-nocookie.com/embed/-TA088FNulA)

## What this video covers

This video shows how to use the Bannerify Figma plugin to turn top-level Figma frames into animated banner ads. It covers applying and previewing animations, refreshing edits, and exporting banners to HTML with options like Vanilla HTML/CSS, dark mode, image compression, and ad-platform-specific formats.

## Things you'll need

- Figma
- Bannerify plugin installed in Figma

## Steps

1. [ ] Install Bannerify from Figma Community, or duplicate the example file from the Files tab to get started quickly.
2. [ ] Open Bannerify from the Plugins menu and review how each top-level frame in the Figma file becomes a separate banner in the plugin.
3. [ ] Assign animation styles to individual layers, groups of layers, or an entire banner, then preview the motion with the play button and adjust timing, loop, delay, and speed.
4. [ ] Use multi-select, quick select by layer name, and the magic delay and magic speed controls to apply consistent animation settings across multiple layers or banners.
5. [ ] If you change the Figma design after opening Bannerify, click the refresh button so the plugin updates the preview with the latest layer positions and content.
6. [ ] Click Export Banners to HTML, choose options such as dark mode, black border, preloader, image compression, and the export format, then export the banners to a .zip file.
7. [ ] Open the exported folder and use index.html to review the responsive preview page and replay the animations.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=-TA088FNulA)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-animated-banners-from-figma-to-html-using-bannerify)
- [Read: Exporting your banners to HTML](/bannerify/export/html)
- [Next: Create multi-scene animated banners in Figma](/bannerify/tutorials/create-multi-scene-animated-banners-in-figma)
- [Open Bannerify in the Figma Community](https://www.figma.com/community/plugin/796124491692147799)

---

---
url: "/bannerify/tutorials/animate-and-export-figma-buzz-banners.md"
description: "Watch how to load Figma Buzz banner designs into Bannerify, animate them, and export them to HTML, MP4 video, or GIF."
---

# Animate and export Figma Buzz banners to HTML, MP4 video, or GIF

> Watch how to load Figma Buzz banner designs into Bannerify, animate them, and export them to HTML, MP4 video, or GIF.

[← Back to Bannerify Video Tutorials](/bannerify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/DlUogTWnheQ)

## What this video covers

This tutorial shows how to animate banner designs from Figma Buzz with Bannerify, reuse those animations across multiple banner sizes, and export the finished banners to HTML, MP4 video, or GIF.

## Things you'll need

- A Figma Buzz file with a banner design
- The Bannerify Figma plugin

## Steps

1. [ ] Create a Figma Buzz file, then add a banner template or create a banner from scratch.
2. [ ] Open the **Plugins** panel, search for Bannerify, and run the Bannerify Figma plugin.
3. [ ] Click **Load All Banners**, then use the pop-out icon in the plugin header to open the full Bannerify animation timeline.
4. [ ] Apply animations to the layers in your first banner, adjust their positions on the timeline to stagger the timing, and preview the result.
5. [ ] Copy and paste the animated banner in Figma Buzz, then select a different ad size for the copied frame.
6. [ ] Click the refresh button in Bannerify and load all banners again. The animations from the original banner are automatically applied to the copied banner sizes.
7. [ ] To create an HTML export, click **Export to HTML**, choose the target platform and any additional settings, then export and download the zip file.
8. [ ] Unzip the HTML export and open its `index.html` file in a browser to preview the banners. For platforms such as Google Ads, use the upload-ready files in the `_zips` folder.
9. [ ] To create a video or GIF export, click **Export to GIF/Video**, choose an output format such as MP4 or GIF, configure any optional settings, then export and download the zip file.
10. [ ] Unzip the export to access the generated media files, or open the included `index.html` file to preview them together in a browser.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=DlUogTWnheQ)
- [Read: Using Bannerify with Figma Buzz](/bannerify/design/figma-buzz)
- [Next: Animate and export banners to HTML from Figma](/bannerify/tutorials/animate-and-export-banners-to-html-from-figma)
- [Open Bannerify in the Figma Community](https://www.figma.com/community/plugin/796124491692147799)

---

---
url: "/bannerify/tutorials/animate-groups-and-layers-independently.md"
description: "Animate a parent group and its nested layers independently in Figma, then export the combined animation to HTML, MP4 or GIF with Bannerify."
---

# Animate groups and layers independently with Group Motion

> Animate a parent group and its nested layers independently in Figma, then export the combined animation to HTML, MP4 or GIF with Bannerify.

[← Back to Bannerify Video Tutorials](/bannerify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/B_YTLpBfROg)

## What this video covers

Move a whole car group while rotating its wheel layers independently. This tutorial shows how to expose nested layers, enable **Keep Parent Animatable**, preview Group Motion, and export the combined animation as HTML, MP4 or GIF.

## Things you'll need

- Bannerify installed or saved in Figma.
- A top-level Figma frame containing a group with separate child layers, such as a car body and two wheels.

## Steps

1. Run Bannerify, select your banner frame, and click **Load Checked Banners**.
2. Apply an animation such as **Slide In Left** to the parent group and adjust its timing.
3. Open the nested layer settings and expand the group to expose its child layers.
4. Enable **Keep Parent Animatable**, then close the panel. The parent appears as a separate **Group Motion** row alongside the child layers.
5. Apply independent animations to the child rows, such as **Rotate 360°** on each wheel.
6. Replay the preview to check that the group moves while its child layers animate independently.
7. Choose HTML, MP4 or GIF export and save the generated ZIP file.
8. Extract the ZIP and open the HTML preview, video or GIF to check the exported animation.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=B_YTLpBfROg)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-animate-groups-and-layers-independently-and-export-to-html-mp4-or-gif-using-bannerify)
- [Read: Group Motion and nested-layer settings](/bannerify/design/nested)
- [Next: Export animated banners to HTML](/bannerify/export/html)
- [Open Bannerify in the Figma Community](https://www.figma.com/community/plugin/796124491692147799)

---

---
url: "/bannerify/tutorials/bulk-export-figma-banner-variants-from-a-spreadsheet-to-html-or-video-gif.md"
description: "The video shows how to use the Bannerify Figma plugin to bulk export banner variants from a CSV or Excel spreadsheet. It demonstrates mapping spreadsheet columns to Figma layer names, loading optional local images from a zipped file, and exporting the variants to HTML, GIF, or video."
---

# Bulk export Figma banner variants from a spreadsheet to HTML or Video/GIF

> The video shows how to use the Bannerify Figma plugin to bulk export banner variants from a CSV or Excel spreadsheet. It demonstrates mapping spreadsheet columns to Figma layer names, loading optional local images from a zipped file, and exporting the variants to HTML, GIF, or video.

[← Back to Bannerify Video Tutorials](/bannerify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/EiVk0G0nEU4)

## What this video covers

The video shows how to use the Bannerify Figma plugin to bulk export banner variants from a CSV or Excel spreadsheet. It demonstrates mapping spreadsheet columns to Figma layer names, loading optional local images from a zipped file, and exporting the variants to HTML, GIF, or video.

## Things you'll need

- A Figma file with banner frames and content layers already set up
- A CSV or Excel file with column names matching the Figma layer names
- Optional local image assets zipped together with the spreadsheet if images are included

## Steps

1. [ ] Open your Figma file, find Bannerify from the actions menu or saved Figma plugins, and run the plugin.
2. [ ] Go to the Variance panel and prepare your spreadsheet data source, making sure the spreadsheet header names match the Figma layer names.
3. [ ] If you need images, zip the CSV or Excel file together with the image assets and make sure the image names match the spreadsheet values.
4. [ ] Drag and drop the zip file into Bannerify to load the rows and preview the mapped text and images.
5. [ ] Close the Variance panel and export the banners, choosing Export to HTML or Export to GIF or video and then selecting the desired format.
6. [ ] Download the exported zip file, unzip it, and open index.html to preview the generated banner variants.
7. [ ] If you reopen the plugin later, reimport the data into the Variance panel and optionally toggle rows on or off before exporting again.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=EiVk0G0nEU4)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-bulk-export-figma-banner-variants-from-a-spreadsheet-to-html-or-video-gif-using-bannerify)
- [Read: Creating banner variants from spreadsheet data](/bannerify/design/variants)
- [Next: Export animated HTML banners from Figma to Google Drive with Zapier](/bannerify/tutorials/export-animated-html-banners-from-figma-to-google-drive-with-zapier)
- [Open Bannerify in the Figma Community](https://www.figma.com/community/plugin/796124491692147799)

---

---
url: "/bannerify/tutorials/create-multi-scene-animated-banners-in-figma.md"
description: "This tutorial shows how to use the Bannerify Figma plugin to turn multiple Figma frames into one animated banner with multiple scenes. It also demonstrates exporting the result as HTML, GIF, or MP4, and how to handle multiple banners and multiple dimensions."
---

# Create multi-scene animated banners in Figma

> This tutorial shows how to use the Bannerify Figma plugin to turn multiple Figma frames into one animated banner with multiple scenes. It also demonstrates exporting the result as HTML, GIF, or MP4, and how to handle multiple banners and multiple dimensions.

[← Back to Bannerify Video Tutorials](/bannerify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/_RJoxtwDC04)

## What this video covers

This tutorial shows how to use the Bannerify Figma plugin to turn multiple Figma frames into one animated banner with multiple scenes. It also demonstrates exporting the result as HTML, GIF, or MP4, and how to handle multiple banners and multiple dimensions.

## Things you'll need

- A Figma file with frames already created.
- The Bannerify Figma plugin saved in Figma plugins.

## Steps

1. [ ] Open the Bannerify Figma plugin from the Actions menu or from Saved plugins.
2. [ ] Load the current Figma frames as banners to see the default behavior, where each frame is treated separately.
3. [ ] Select the frames you want in one banner, then use Wrap in new section to place them inside a section layer.
4. [ ] Return to the banner loading screen, enable Use Figma sections as multi scene banners, and load the section.
5. [ ] Adjust the timeline length and scene offsets so each scene animates in sequence within the same banner.
6. [ ] Export the banner by choosing Export HTML or another format such as MP4, then download the zip file and open the preview in a browser.
7. [ ] For multiple banners, duplicate sections, keep each banner frame the same size within its section, refresh the plugin, and load or export all banners together.

Within each Section, Bannerify orders same-size scenes from left to right and then top to bottom. Small alignment differences are treated as part of the same visual column, so scenes do not need to be positioned at exactly identical coordinates.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=_RJoxtwDC04)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-create-multi-scene-animated-banners-from-figma-using-bannerify)
- [Read: Creating multi-scene banners using Figma Sections](/bannerify/design/scenes)
- [Next: Add video embeds to Figma banner exports](/bannerify/tutorials/add-video-embeds-to-figma-banner-exports)
- [Open Bannerify in the Figma Community](https://www.figma.com/community/plugin/796124491692147799)

---

---
url: "/bannerify/tutorials/export-animated-figma-motion-banners.md"
description: "Learn how to import native Figma Motion animations into Bannerify, mirror their timing, and export the finished banners to HTML, MP4 video, or GIF."
---

# Export animated Figma Motion banners to HTML, MP4 video, or GIF

> Learn how to import native Figma Motion animations into Bannerify, mirror their timing, and export the finished banners to HTML, MP4 video, or GIF.

[← Back to Bannerify Video Tutorials](/bannerify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/QKvJ2YVTUyU)

## What this video covers

This tutorial shows how to import native Figma Motion animations into Bannerify, apply them individually or across every loaded banner, control whether Bannerify mirrors the original Motion timing, and export the finished banners to HTML, MP4 video, or GIF.

## Things you'll need

- A Figma file containing a banner with supported Figma Motion animations
- The Bannerify Figma plugin

## Steps

1. [ ] Open your Figma file, find Bannerify in the **Plugins** tab, and run or save the plugin for easy access.
2. [ ] Run Bannerify from your saved plugins, then click **Load All Banners** to load the banner frames and their content layers.
3. [ ] Switch the Figma file from **Design** to **Motion** mode and confirm that the banner layers contain the native animations you want to export.
4. [ ] To import one animation, open a layer's **Entry Animation** menu and select its detected animation from the **Figma Motion** group.
5. [ ] To import every detected animation at once, click **Apply to All Banners** above the Bannerify timelines.
6. [ ] Leave **Mirror Figma Motion Timings** enabled to preserve the native start and end offsets, or disable it to reposition and resize the animation bars in Bannerify.
7. [ ] Preview the imported animations in Bannerify and optionally combine them with Bannerify presets, custom animations, exit animations, or hover animations.
8. [ ] To create an HTML export, click **Export to HTML**, choose plain HTML or a platform such as Google Ads, export the banners, and download the zip file.
9. [ ] Unzip the HTML export and open its `index.html` file in a browser to preview the code-based animation.
10. [ ] To create an MP4 or GIF export, click **Export to GIF/Video**, choose the output format and settings, export and download the zip file, then open the generated media or preview page.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=QKvJ2YVTUyU)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-animated-banners-from-figma-motion-to-html-mp4-video-or-gif-using-bannerify)
- [Read: Using Figma Motion animations](/bannerify/animation/figma-motion)
- [Next: Animate and export Figma Buzz banners to HTML, MP4 video, or GIF](/bannerify/tutorials/animate-and-export-figma-buzz-banners)
- [Open Bannerify in the Figma Community](https://www.figma.com/community/plugin/796124491692147799)

---

---
url: "/bannerify/tutorials/export-animated-html-banners-from-figma-to-google-drive-with-zapier.md"
description: "This tutorial shows how to export animated HTML banners from Figma with the Bannerify Figma plugin and send the exported zip file to Google Drive through a Zapier webhook. It walks through creating a Zapier Zap with a Webhooks by Zapier catch hook trigger and a Google Drive upload file action, then mapping the Bannerify file and file name before testing and publishing the automation."
---

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

> This tutorial shows how to export animated HTML banners from Figma with the Bannerify Figma plugin and send the exported zip file to Google Drive through a Zapier webhook. It walks through creating a Zapier Zap with a Webhooks by Zapier catch hook trigger and a Google Drive upload file action, then mapping the Bannerify file and file name before testing and publishing the automation.

[← Back to Bannerify Video Tutorials](/bannerify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/yVS3gDPDNUo)

## What this video covers

This tutorial shows how to export animated HTML banners from Figma with the Bannerify Figma plugin and send the exported zip file to Google Drive through a Zapier webhook. It walks through creating a Zapier Zap with a Webhooks by Zapier catch hook trigger and a Google Drive upload file action, then mapping the Bannerify file and file name before testing and publishing the automation.

## Things you'll need

- A Figma file with frames to use as banners
- A Zapier account
- A Google Drive account

## Steps

1. [ ] Open your Figma file, run the Bannerify Figma plugin from Figma plugins, and load the banners from your Figma frames.
2. [ ] In Bannerify, finish your banner animations, click Export to HTML, enable upload preview page, and change the upload platform from Netlify to Zapier.
3. [ ] In Zapier, create a new Zap, add Webhooks by Zapier as the trigger, and set the trigger event to catch hook to get a webhook URL.
4. [ ] Paste the Zapier webhook URL into Bannerify, then send a test export from Bannerify so Zapier can capture the uploaded zip file data.
5. [ ] In Zapier, add Google Drive as the action, choose upload file, connect your Google account, and select the destination folder in Google Drive.
6. [ ] Map the incoming file and file name fields from the webhook data to the Google Drive upload step, then test the step and publish the Zap.
7. [ ] After publishing, future Bannerify HTML exports sent through the webhook will be uploaded automatically to the selected Google Drive folder.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=yVS3gDPDNUo)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-animated-banners-to-google-drive-from-figma-with-zapier-using-bannerify)
- [Read: Automatically upload your banners to a Zapier Webhook URL](/bannerify/export/zapier)
- [Next: Bulk export Figma banner variants from a spreadsheet to HTML or Video/GIF](/bannerify/tutorials/bulk-export-figma-banner-variants-from-a-spreadsheet-to-html-or-video-gif)
- [Open Bannerify in the Figma Community](https://www.figma.com/community/plugin/796124491692147799)

---

---
url: "/bannerify/tutorials/export-animated-html-banners-from-figma-to-multiple-ad-platforms.md"
description: "This tutorial shows how to use the Bannerify Figma plugin to export animated banners from Figma into production-ready HTML for one or more ad platforms. It also demonstrates the new Multiple Platforms option for generating banner exports for platforms like Google Ads, DoubleClick, and Adform in one process."
---

# Export animated HTML banners from Figma to multiple ad platforms

> This tutorial shows how to use the Bannerify Figma plugin to export animated banners from Figma into production-ready HTML for one or more ad platforms. It also demonstrates the new Multiple Platforms option for generating banner exports for platforms like Google Ads, DoubleClick, and Adform in one process.

[← Back to Bannerify Video Tutorials](/bannerify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/Q16MPp9YKjg)

## What this video covers

This tutorial shows how to use the Bannerify Figma plugin to export animated banners from Figma into production-ready HTML for one or more ad platforms. It also demonstrates the new Multiple Platforms option for generating banner exports for platforms like Google Ads, DoubleClick, and Adform in one process.

## Things you'll need

- A Figma file with banner frames already created
- Banner animations already set up in Bannerify

## Steps

1. [ ] Open your Figma file, find Bannerify under the plugins tab, and run it from Saved Plugins.
2. [ ] Load the Figma frames you want to use as banners into the plugin and finish setting up your animations.
3. [ ] Click Export to HTML in the top-right corner of the plugin.
4. [ ] For a single platform, choose a format such as Google Ads and click Export Banners.
5. [ ] For multiple platforms, select Multiple Platforms, then add platforms like Google Ads, DoubleClick, and Adform in the Add Platforms field.
6. [ ] Export the banners, download the zip file, and unzip it to access the platform-specific folders and the _zips folder.
7. [ ] Open index.html in a browser to preview the banners before uploading them to the ad platforms.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=Q16MPp9YKjg)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-animated-banners-to-multiple-ad-platforms-from-figma-using-bannerify)
- [Read: Exporting banners for multiple ad platforms](/bannerify/export/platforms/multiple-ad-platforms)
- [Next: Upload preview links for HTML banners from Figma to Netlify](/bannerify/tutorials/upload-preview-links-for-html-banners-from-figma-to-netlify)
- [Open Bannerify in the Figma Community](https://www.figma.com/community/plugin/796124491692147799)

---

---
url: "/bannerify/tutorials/export-banners-for-adform-from-figma.md"
description: "This video shows how to install and use the Bannerify HTML Exporter Figma plugin to export animated banners from Figma to HTML for the AdForm platform. It also briefly explains the files Bannerify generates, including AdFormDHTML.js, manifest.json, HTML, and the images folder."
---

# Export banners for AdForm from Figma

> This video shows how to install and use the Bannerify HTML Exporter Figma plugin to export animated banners from Figma to HTML for the AdForm platform. It also briefly explains the files Bannerify generates, including AdFormDHTML.js, manifest.json, HTML, and the images folder.

[← Back to Bannerify Video Tutorials](/bannerify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/8P5W9Q9v-5g)

## What this video covers

This video shows how to install and use the Bannerify HTML Exporter Figma plugin to export animated banners from Figma to HTML for the AdForm platform. It also briefly explains the files Bannerify generates, including AdFormDHTML.js, manifest.json, HTML, and the images folder.

## Things you'll need

- Figma
- The Bannerify HTML Exporter plugin
- Banners already designed and animated in Figma

## Steps

1. [ ] Open Figma, go to Community, search for Bannerify, and install the Bannerify HTML Exporter plugin.
2. [ ] Optionally duplicate the tutorial file from the URL in the plugin's additional notes, or use your own banner design.
3. [ ] Right-click in the Figma file, open Plugins, and launch Bannerify HTML Exporter.
4. [ ] Click Export banners to HTML, open the export format/platform dropdown, and select AdForm.
5. [ ] Click Export banners, then save the generated zip file.
6. [ ] Unzip the file and open index.html in a browser to preview the exported banners and animations.
7. [ ] Inspect an exported banner folder to see the AdForm files Bannerify creates automatically.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=8P5W9Q9v-5g)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-figma-to-html-for-ad-form-using-bannerify)
- [Read: Exporting HTML banners for AdForm](/bannerify/export/platforms/adform)
- [Next: Export banners for DCM from Figma](/bannerify/tutorials/export-banners-for-dcm-from-figma)
- [Open Bannerify in the Figma Community](https://www.figma.com/community/plugin/796124491692147799)

---

---
url: "/bannerify/tutorials/export-banners-for-appnexus-from-figma.md"
description: "This tutorial shows how to use the Bannerify HTML Exporter Figma plugin to export animated banner designs from Figma to HTML for the AppNexus platform. It also demonstrates the generated file structure, including the AppNexus HTML5 library, HTML, CSS, JavaScript, and exported image assets."
---

# Export banners for AppNexus from Figma

> This tutorial shows how to use the Bannerify HTML Exporter Figma plugin to export animated banner designs from Figma to HTML for the AppNexus platform. It also demonstrates the generated file structure, including the AppNexus HTML5 library, HTML, CSS, JavaScript, and exported image assets.

[← Back to Bannerify Video Tutorials](/bannerify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/qRBXJX0yChc)

## What this video covers

This tutorial shows how to use the Bannerify HTML Exporter Figma plugin to export animated banner designs from Figma to HTML for the AppNexus platform. It also demonstrates the generated file structure, including the AppNexus HTML5 library, HTML, CSS, JavaScript, and exported image assets.

## Things you'll need

- Bannerify HTML Exporter installed in Figma
- A Figma file containing banner designs

## Steps

1. [ ] Install Bannerify from Figma Community by searching for “bannerify” and selecting “Bannerify HTML Exporter.”
2. [ ] Open a banner file in Figma, then right click, go to Plugins, and launch Bannerify HTML Exporter.
3. [ ] Click “Export banners to HTML” and open the code output settings.
4. [ ] Change the export platform from Vanilla HTML and JavaScript to AppNexus.
5. [ ] Click “Export banners” to generate the code, images, and zip file.
6. [ ] Save and open the zip file, then double click “index.html” to preview the exported banners.
7. [ ] Optionally inspect the exported folder in a code editor to see the HTML, CSS, JavaScript, images, and AppNexus click handling.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=qRBXJX0yChc)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-figma-to-html-for-app-nexus-using-bannerify)
- [Read: Exporting HTML banners for AppNexus](/bannerify/export/platforms/appnexus)
- [Next: Export banners for Sizmek from Figma](/bannerify/tutorials/export-banners-for-sizmek-from-figma)
- [Open Bannerify in the Figma Community](https://www.figma.com/community/plugin/796124491692147799)

---

---
url: "/bannerify/tutorials/export-banners-for-dcm-from-figma.md"
description: "This tutorial shows how to use the Bannerify Figma plugin to export animated banners from Figma to HTML for DoubleClick Campaign Manager (DCM). It also demonstrates how to inspect the exported files and verify the click tag behavior with HTML5 Validator."
---

# Export banners for DCM from Figma

> This tutorial shows how to use the Bannerify Figma plugin to export animated banners from Figma to HTML for DoubleClick Campaign Manager (DCM). It also demonstrates how to inspect the exported files and verify the click tag behavior with HTML5 Validator.

[← Back to Bannerify Video Tutorials](/bannerify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/8nWhYP7cnk8)

## What this video covers

This tutorial shows how to use the Bannerify Figma plugin to export animated banners from Figma to HTML for DoubleClick Campaign Manager (DCM). It also demonstrates how to inspect the exported files and verify the click tag behavior with HTML5 Validator.

## Things you'll need

- Figma
- Bannerify HTML Exporter
- A Figma file with pre-designed animated banners

## Steps

1. [ ] Install the Bannerify HTML Exporter plugin from Figma Community if it is not already installed.
2. [ ] Open a Figma file with pre-designed animated banners, then launch Bannerify HTML Exporter from the Plugins menu.
3. [ ] Click Export banners to HTML, choose DoubleClick Campaign Manager (DCM) under advertising platforms, and export the banners.
4. [ ] Save the exported zip file, then open it to view the generated banner folders and the index.html file.
5. [ ] Open index.html in a browser to preview the exported animation, or inspect the HTML, CSS, and JavaScript in a code editor.
6. [ ] Use HTML5 Validator to upload a zipped banner and confirm that the click event tracks correctly.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=8nWhYP7cnk8)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-figma-to-html-for-double-click-campaign-manager-dcm-using-bannerify)
- [Read: Exporting HTML banners for Campaign Manager 360](/bannerify/export/platforms/doubleclick-dcm)
- [Next: Export banners for Flashtalking from Figma](/bannerify/tutorials/export-banners-for-flashtalking-from-figma)
- [Open Bannerify in the Figma Community](https://www.figma.com/community/plugin/796124491692147799)

---

---
url: "/bannerify/tutorials/export-banners-for-doubleclick-from-figma.md"
description: "This video shows how to use the Bannerify Figma plugin to export animated banner designs from Figma to HTML for DoubleClick Studio. It walks through installing the plugin, exporting the banners, and checking the generated DoubleClick Studio-compatible files in the browser and code editor."
---

# Export banners for DoubleClick from Figma

> This video shows how to use the Bannerify Figma plugin to export animated banner designs from Figma to HTML for DoubleClick Studio. It walks through installing the plugin, exporting the banners, and checking the generated DoubleClick Studio-compatible files in the browser and code editor.

[← Back to Bannerify Video Tutorials](/bannerify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/vyxXHZ4rpos)

## What this video covers

This video shows how to use the Bannerify Figma plugin to export animated banner designs from Figma to HTML for DoubleClick Studio. It walks through installing the plugin, exporting the banners, and checking the generated DoubleClick Studio-compatible files in the browser and code editor.

## Things you'll need

- Figma
- Bannerify HTML Exporter
- DoubleClick Studio

## Steps

1. [ ] Install Bannerify from the Figma Community by searching for "bannerify" and selecting "Bannerify HTML Exporter".
2. [ ] Open the provided Figma file from the plugin description and duplicate it for the tutorial banners and preset animations.
3. [ ] Launch Bannerify from Figma by right-clicking, going to plugins, and selecting "Bannerify HTML Exporter".
4. [ ] Click "Export banners to HTML" and choose "DoubleClick Studio" under the advertising platforms code output settings.
5. [ ] Click "Export banners" to generate the code, images, and zip file.
6. [ ] Open the exported zip, then open "index.html" in a browser to preview the banners and animation.
7. [ ] Inspect the exported folder in a code editor to see the HTML, JavaScript, CSS, and DoubleClick Studio-specific Enabler.js integration.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=vyxXHZ4rpos)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-figma-to-html-for-doubleclick-studio-using-bannerify)
- [Read: Exporting HTML banners for DoubleClick Studio](/bannerify/export/platforms/doubleclick-studio)
- [Next: Export banners for AdForm from Figma](/bannerify/tutorials/export-banners-for-adform-from-figma)
- [Open Bannerify in the Figma Community](https://www.figma.com/community/plugin/796124491692147799)

---

---
url: "/bannerify/tutorials/export-banners-for-flashtalking-from-figma.md"
description: "This video shows how to use the Bannerify HTML Exporter Figma plugin to export animated banners from Figma to HTML for the Flashtalking ad platform. It walks through installing the plugin, opening a prepared Figma file, choosing the Flashtalking export format, and checking the generated HTML package."
---

# Export banners for Flashtalking from Figma

> This video shows how to use the Bannerify HTML Exporter Figma plugin to export animated banners from Figma to HTML for the Flashtalking ad platform. It walks through installing the plugin, opening a prepared Figma file, choosing the Flashtalking export format, and checking the generated HTML package.

[← Back to Bannerify Video Tutorials](/bannerify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/lCjG54qAFb4)

## What this video covers

This video shows how to use the Bannerify HTML Exporter Figma plugin to export animated banners from Figma to HTML for the Flashtalking ad platform. It walks through installing the plugin, opening a prepared Figma file, choosing the Flashtalking export format, and checking the generated HTML package.

## Things you'll need

- Figma
- Bannerify HTML Exporter plugin
- A banner design or the duplicated example project

## Steps

1. [ ] Install the Bannerify HTML Exporter plugin from Figma Community if it is not already installed.
2. [ ] Open the Bannerify plugin details and use the URL in the 'additional notes' section to duplicate the example project, or open your own banner design.
3. [ ] Right-click in the Figma file, go to plugins, and launch 'Bannerify HTML Exporter' to load the banners.
4. [ ] Click 'Export banners to HTML', then open 'code output settings' and select 'Flashtalking' from the 'export format' dropdown.
5. [ ] Click 'Export banners' to generate a zip file containing the exported banners and assets.
6. [ ] Open the zip contents and preview 'index.html' to verify that the banners and animations load correctly.
7. [ ] Inspect the exported files in a code editor if needed, including the HTML, CSS, JavaScript, and 'manifest.js' files for Flashtalking.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=lCjG54qAFb4)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-figma-to-html-for-flashtalking-using-bannerify)
- [Read: Exporting HTML banners for Flashtalking](/bannerify/export/platforms/flashtalking)
- [Next: Export banners for IAB from Figma](/bannerify/tutorials/export-banners-for-iab-from-figma)
- [Open Bannerify in the Figma Community](https://www.figma.com/community/plugin/796124491692147799)

---

---
url: "/bannerify/tutorials/export-banners-for-google-ads-from-figma.md"
description: "The video shows how to use the Bannerify Figma plugin to export animated HTML banners from Figma for Google Ads. It also demonstrates how to preview the exported zip, inspect the generated code, and validate the result with the Google Ads HTML5 validator."
---

# Export banners for Google Ads from Figma

> The video shows how to use the Bannerify Figma plugin to export animated HTML banners from Figma for Google Ads. It also demonstrates how to preview the exported zip, inspect the generated code, and validate the result with the Google Ads HTML5 validator.

[← Back to Bannerify Video Tutorials](/bannerify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/ZFeByEwsjME)

## What this video covers

The video shows how to use the Bannerify Figma plugin to export animated HTML banners from Figma for Google Ads. It also demonstrates how to preview the exported zip, inspect the generated code, and validate the result with the Google Ads HTML5 validator.

## Things you'll need

- Figma
- Bannerify HTML Exporter plugin

## Steps

1. [ ] Install the Bannerify HTML Exporter plugin from the Figma Community tab if it is not already installed.
2. [ ] Open a Figma file with banners set up, or duplicate the sample file linked in the Bannerify plugin details additional notes.
3. [ ] Right-click on the canvas, go to plugins, and launch Bannerify HTML Exporter.
4. [ ] Click Export banners to HTML, then open the code output settings and choose Google Ads from the advertising platforms list.
5. [ ] Click Export banners to generate the HTML, images, and zip file.
6. [ ] Open the zip file and view index.html to preview the exported banners and replay animations if needed.
7. [ ] Optionally upload the zip to the Google Ads HTML5 validator to check the creative before use.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=ZFeByEwsjME)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-figma-to-html-for-google-ads-using-bannerify)
- [Read: Exporting fixed-size HTML5 banners for Google Ads](/bannerify/export/platforms/google-ads)
- [Next: Export responsive HTML banners from Figma](/bannerify/tutorials/export-responsive-html-banners-from-figma)
- [Open Bannerify in the Figma Community](https://www.figma.com/community/plugin/796124491692147799)

---

---
url: "/bannerify/tutorials/export-banners-for-iab-from-figma.md"
description: "The video shows how to install the Bannerify HTML Exporter Figma plugin and use it to export already animated banner designs from Figma to HTML for IAB. It then previews the exported output, explains the generated files, and shows where the banners can be uploaded afterward."
---

# Export banners for IAB from Figma

> The video shows how to install the Bannerify HTML Exporter Figma plugin and use it to export already animated banner designs from Figma to HTML for IAB. It then previews the exported output, explains the generated files, and shows where the banners can be uploaded afterward.

[← Back to Bannerify Video Tutorials](/bannerify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/JHucv6UEaBU)

## What this video covers

The video shows how to install the Bannerify HTML Exporter Figma plugin and use it to export already animated banner designs from Figma to HTML for IAB. It then previews the exported output, explains the generated files, and shows where the banners can be uploaded afterward.

## Things you'll need

- Figma
- Bannerify HTML Exporter

## Steps

1. [ ] Open Figma Community, search for “Bannerify,” and install “Bannerify HTML Exporter.”
2. [ ] Open the plugin description to find the example Figma design link in the “additional notes” section, or use your own banner design.
3. [ ] In your Figma project, right click and choose plugins, then launch “Bannerify HTML Exporter.”
4. [ ] Click “Export banners to HTML,” open “code output settings,” and select “IAB” under the “advertising platforms” export format group.
5. [ ] Click “Export banners,” then save the generated zip file.
6. [ ] Open the exported folder and use the “index.html” file to preview the banners in the browser.
7. [ ] Inspect the exported folder in Visual Studio Code to see the HTML, images, CSS, and JavaScript generated for the banner set.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=JHucv6UEaBU)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-figma-to-html-for-iab-using-bannerify)
- [Read: Exporting IAB HTML banners](/bannerify/export/platforms/iab)
- [Next: Export banners for Sizmek from Figma](/bannerify/tutorials/export-banners-for-sizmek-from-figma)
- [Open Bannerify in the Figma Community](https://www.figma.com/community/plugin/796124491692147799)

---

---
url: "/bannerify/tutorials/export-banners-for-sizmek-from-figma.md"
description: "This tutorial shows how to use the Bannerify Figma plugin to export animated banners from Figma to HTML for the Sizmek ad platform. It covers installing Bannerify, selecting the Sizmek export format, and reviewing the generated HTML, JavaScript, CSS, images, and EBLoader.js files."
---

# Export banners for Sizmek from Figma

> This tutorial shows how to use the Bannerify Figma plugin to export animated banners from Figma to HTML for the Sizmek ad platform. It covers installing Bannerify, selecting the Sizmek export format, and reviewing the generated HTML, JavaScript, CSS, images, and EBLoader.js files.

[← Back to Bannerify Video Tutorials](/bannerify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/xuGoT7KbVOw)

## What this video covers

This tutorial shows how to use the Bannerify Figma plugin to export animated banners from Figma to HTML for the Sizmek ad platform. It covers installing Bannerify, selecting the Sizmek export format, and reviewing the generated HTML, JavaScript, CSS, images, and EBLoader.js files.

## Things you'll need

- Figma
- Bannerify HTML Exporter
- Access to the pre-designed banners linked in the plugin description, if following along with the tutorial example

## Steps

1. [ ] Install the Bannerify plugin from Figma Community by searching for "Bannerify" and selecting "Bannerify HTML Exporter".
2. [ ] Open the plugin description and use the URL in the "additional notes" section to load the pre-designed banner file, if desired.
3. [ ] In your Figma file, right click the banners, go to Plugin, and launch "Bannerify HTML Exporter".
4. [ ] Click "Export banners to HTML", then under "code output settings" open the "export format" drop-down and choose "Sizmek".
5. [ ] Click "export banners", then save the generated zip file and unzip it.
6. [ ] Open the exported folder and preview the banners by opening "index.html" in a browser.
7. [ ] Inspect the exported files in a code editor to see the HTML, JavaScript, CSS, image assets, and the automatically included "EBLoader.js" script.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=xuGoT7KbVOw)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-figma-to-html-for-sizmek-using-bannerify)
- [Read: Exporting HTML banners for Sizmek](/bannerify/export/platforms/sizmek)
- [Next: Export banners for AppNexus from Figma](/bannerify/tutorials/export-banners-for-appnexus-from-figma)
- [Open Bannerify in the Figma Community](https://www.figma.com/community/plugin/796124491692147799)

---

---
url: "/bannerify/tutorials/export-banners-to-animated-png-apng-images-from-figma.md"
description: "This tutorial shows how to use the Bannerify Figma plugin to export animated banners from Figma as animated PNG (APNG) files. It also demonstrates downloading the ZIP output and previewing the exported PNGs with the included index.html file."
---

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

> This tutorial shows how to use the Bannerify Figma plugin to export animated banners from Figma as animated PNG (APNG) files. It also demonstrates downloading the ZIP output and previewing the exported PNGs with the included index.html file.

[← Back to Bannerify Video Tutorials](/bannerify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/GoBXTURjPuM)

## What this video covers

This tutorial shows how to use the Bannerify Figma plugin to export animated banners from Figma as animated PNG (APNG) files. It also demonstrates downloading the ZIP output and previewing the exported PNGs with the included index.html file.

## Things you'll need

- Bannerify installed in Figma.
- One or more banner frames with animations ready to export.
- A browser if you want to use the included `index.html` preview.

## Steps

1. [ ] Open your Figma file, search for Bannerify from the actions icon, and save or run the plugin.
2. [ ] Right-click on the canvas, go to plugins, then saved plugins, and launch Bannerify.
3. [ ] Click load banners to import the Figma frames and their child layers into Bannerify.
4. [ ] When the banners are ready, click export to GIF/video and choose export APNG.
5. [ ] Wait for Bannerify to process each banner, then download the ZIP file and unzip it.
6. [ ] Open the APNG folder to view the exported .png files, or drag the index.html file into a browser to preview them together.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=GoBXTURjPuM)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-animated-png-apng-files-from-figma-using-bannerify)
- [Read: Exporting your banners to animated PNG image](/bannerify/export/animated-png)
- [Next: Export banners to animated WebP images from Figma](/bannerify/tutorials/export-banners-to-animated-webp-images-from-figma)
- [Open Bannerify in the Figma Community](https://www.figma.com/community/plugin/796124491692147799)

---

---
url: "/bannerify/tutorials/export-banners-to-animated-webp-images-from-figma.md"
description: "This video shows how to use the Bannerify Figma plugin to export animated banners from Figma as animated WebP image files. It also compares Export WebP with Export GIF, showing that animated WebP keeps sharper, more vibrant output at 2x retina resolution."
---

# Export banners to animated WebP images from Figma

> This video shows how to use the Bannerify Figma plugin to export animated banners from Figma as animated WebP image files. It also compares Export WebP with Export GIF, showing that animated WebP keeps sharper, more vibrant output at 2x retina resolution.

[← Back to Bannerify Video Tutorials](/bannerify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/-MsleYiQHIQ)

## What this video covers

This video shows how to use the Bannerify Figma plugin to export animated banners from Figma as animated WebP image files. It also compares Export WebP with Export GIF, showing that animated WebP keeps sharper, more vibrant output at 2x retina resolution.

## Things you'll need

- Figma installed with the Bannerify Figma plugin available
- Banner frames already designed in Figma
- Animations already set up on the banners

## Steps

1. [ ] Open Figma, click the Resources icon, search for Bannerify, and run the plugin or save it to your plugins list.
2. [ ] In your file, right-click and open Plugins > Saved plugins, then launch Bannerify.
3. [ ] Select the banner frames you want to export, then click Load checked banners in the plugin.
4. [ ] When your banners are loaded and animated, click Export to GIF/Video and choose Export WebP.
5. [ ] Wait for Bannerify to convert the frames and merge them into a single animated WebP file.
6. [ ] Download the zip file, unzip it, and open the webp folder and index preview page to view the exported banners.
7. [ ] Optionally export GIF as well to compare the quality and file size against animated WebP.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=-MsleYiQHIQ)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-banners-from-figma-to-animated-web-p-images-using-bannerify)
- [Read: Exporting your banners to animated WebP image](/bannerify/export/animated-webp)
- [Next: Export banners to animated PNG (APNG) images from Figma](/bannerify/tutorials/export-banners-to-animated-png-apng-images-from-figma)
- [Open Bannerify in the Figma Community](https://www.figma.com/community/plugin/796124491692147799)

---

---
url: "/bannerify/tutorials/export-banners-to-gifs-from-figma.md"
description: "The video shows how to use the Bannerify Figma plugin to export animated banner designs from Figma to GIF files. It also demonstrates the export settings, the ZIP download, and the generated index.html preview page."
---

# Export banners to GIFs from Figma

> The video shows how to use the Bannerify Figma plugin to export animated banner designs from Figma to GIF files. It also demonstrates the export settings, the ZIP download, and the generated index.html preview page.

[← Back to Bannerify Video Tutorials](/bannerify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/J2wk4r1QL1k)

## What this video covers

The video shows how to use the Bannerify Figma plugin to export animated banner designs from Figma to GIF files. It also demonstrates the export settings, the ZIP download, and the generated index.html preview page.

## Things you'll need

- Figma installed
- Bannerify plugin installed
- Animated banner designs already set up in Bannerify

## Steps

1. [ ] Install the Bannerify plugin from Figma Community or Plugins by searching for “Bannerify” and clicking Install.
2. [ ] Open your Figma file, then right click on the page and choose Plugins > Bannerify.
3. [ ] Confirm that your parent frames are loaded as banners and that your layer animations are already set up.
4. [ ] Click “Export to GIF/Video” to open the export settings panel.
5. [ ] Choose whether the GIF should loop, adjust the output quality slider, and optionally enable the preview page dark mode.
6. [ ] Click “Export to GIF” and wait while Bannerify plays each banner, renders the GIFs, and zips the results.
7. [ ] Save the ZIP file, unzip it, and open the included index.html file to preview all exported GIFs together.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=J2wk4r1QL1k)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-animated-banners-from-figma-to-gi-fs-using-bannerify)
- [Read: Exporting your banners to animated GIF files](/bannerify/export/gif)
- [Next: Export banners to WebM videos from Figma](/bannerify/tutorials/export-banners-to-webm-videos-from-figma)
- [Open Bannerify in the Figma Community](https://www.figma.com/community/plugin/796124491692147799)

---

---
url: "/bannerify/tutorials/export-banners-to-html-gsap-from-figma.md"
description: "The video shows how to install the Bannerify Figma plugin and use it to export animated banners from Figma as HTML and JavaScript in the GreenSock (GSAP) format. It then demonstrates saving the export as a zip, opening index.HTML to preview the banners, and inspecting the generated HTML and JavaScript files."
---

# Export banners to HTML/GSAP from Figma

> The video shows how to install the Bannerify Figma plugin and use it to export animated banners from Figma as HTML and JavaScript in the GreenSock (GSAP) format. It then demonstrates saving the export as a zip, opening index.HTML to preview the banners, and inspecting the generated HTML and JavaScript files.

[← Back to Bannerify Video Tutorials](/bannerify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/SS2J6k5Wo7s)

## What this video covers

The video shows how to install the Bannerify Figma plugin and use it to export animated banners from Figma as HTML and JavaScript in the GreenSock (GSAP) format. It then demonstrates saving the export as a zip, opening index.HTML to preview the banners, and inspecting the generated HTML and JavaScript files.

## Things you'll need

- A Figma account with a banner design file open
- The Bannerify plugin installed in Figma

## Steps

1. [ ] Install the Bannerify plugin in Figma by searching for "Bannerify" in Community or search and selecting "Bannerify HTML Exporter".
2. [ ] Open the Figma file with the prepared banners, or duplicate the example file from the plugin description if you want to follow along.
3. [ ] Right-click on the page, go to Plugins, and launch "Bannerify HTML Exporter".
4. [ ] Click "Export Banners to HTML" to open the export settings.
5. [ ] Under "Code output settings," choose "Vanilla HTML/JS" and then select "GreenSock (GSAP)" as the export format/platform.
6. [ ] Click "Export banners," save the generated zip file, and unzip it.
7. [ ] Open "index.HTML" to preview the exported banners in the browser, or open the generated HTML and JavaScript files in a code editor to inspect the output.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=SS2J6k5Wo7s)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-figma-to-html-green-sock-gsap-using-bannerify)
- [Read: Exporting HTML banners with GSAP](/bannerify/export/platforms/html-gsap)
- [Next: Add custom HTML, CSS, and Javascript to Figma banner exports](/bannerify/tutorials/add-custom-html-css-and-javascript-to-figma-banner-exports)
- [Open Bannerify in the Figma Community](https://www.figma.com/community/plugin/796124491692147799)

---

---
url: "/bannerify/tutorials/export-banners-to-mp4-videos-from-figma.md"
description: "The video shows how to use the Bannerify Figma plugin to export animated banner designs from Figma as MP4 video files with one click. It also demonstrates the export options, the generated ZIP download, and the HTML preview page for reviewing all exported videos together."
---

# Export banners to MP4 videos from Figma

> The video shows how to use the Bannerify Figma plugin to export animated banner designs from Figma as MP4 video files with one click. It also demonstrates the export options, the generated ZIP download, and the HTML preview page for reviewing all exported videos together.

[← Back to Bannerify Video Tutorials](/bannerify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/rlq7Zq0fl7o)

## What this video covers

The video shows how to use the Bannerify Figma plugin to export animated banner designs from Figma as MP4 video files with one click. It also demonstrates the export options, the generated ZIP download, and the HTML preview page for reviewing all exported videos together.

## Things you'll need

- A Figma file with banner frames already set up.
- Animations already configured in the banner designs.

## Steps

1. [ ] Install the Bannerify Banner Ad Studio plugin from Figma Community if it is not already installed.
2. [ ] Right click on the Figma page, go to Plugins, and open Bannerify Banner Ad Studio.
3. [ ] Click Export to GIF/Video in the plugin header.
4. [ ] Set the Frames Per Second and Image Compression options, and leave Dark Mode on or off for the HTML preview page as needed.
5. [ ] Click Export to MP4.
6. [ ] Save the downloaded ZIP file, unzip it, and open the included index.html in Chrome to preview all the MP4 files.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=rlq7Zq0fl7o)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-animated-banners-from-figma-to-m-p4-videos-using-bannerify)
- [Read: Exporting your banners to MP4 videos](/bannerify/export/video)
- [Next: Add audio to Figma video banner exports](/bannerify/tutorials/add-audio-to-figma-video-banner-exports)
- [Open Bannerify in the Figma Community](https://www.figma.com/community/plugin/796124491692147799)

---

---
url: "/bannerify/tutorials/export-banners-to-webm-videos-from-figma.md"
description: "This tutorial shows how to install the Bannerify Figma plugin and use it to export animated banners from Figma to WebM video files in one click. It also explains the export options, the generated preview page, and how to open the resulting zip file and WebM videos."
---

# Export banners to WebM videos from Figma

> This tutorial shows how to install the Bannerify Figma plugin and use it to export animated banners from Figma to WebM video files in one click. It also explains the export options, the generated preview page, and how to open the resulting zip file and WebM videos.

[← Back to Bannerify Video Tutorials](/bannerify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/Nur9nWx9Qhs)

## What this video covers

This tutorial shows how to install the Bannerify Figma plugin and use it to export animated banners from Figma to WebM video files in one click. It also explains the export options, the generated preview page, and how to open the resulting zip file and WebM videos.

## Things you'll need

- Figma
- The Bannerify Figma plugin
- Animated banners already set up in Bannerify

## Steps

1. [ ] Install the Bannerify Figma plugin from Figma Community or Plugins and confirm it shows as Installed.
2. [ ] Open your Figma file, right click, go to Plugins, and launch Bannerify.
3. [ ] Make sure your parent frames and layer animations are set up the way you want in Bannerify.
4. [ ] Click Export to GIF/Video, adjust output quality and the preview page setting if needed, and leave the GIF-only option off for WebM export.
5. [ ] Click Export to WebM and wait while Bannerify renders each banner and packages the results into a zip file.
6. [ ] Save the download, unzip it, and open the included index.html preview page or individual WebM files.
7. [ ] Use the exported WebM files on the web as needed, or convert them to another format with a third-party tool if required.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=Nur9nWx9Qhs)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-animated-banners-from-figma-to-web-m-videos-using-bannerify)
- [Read: Exporting your banners to WebM videos](/bannerify/export/webm-video)
- [Next: Export banners to animated PNG (APNG) images from Figma](/bannerify/tutorials/export-banners-to-animated-png-apng-images-from-figma)
- [Open Bannerify in the Figma Community](https://www.figma.com/community/plugin/796124491692147799)

---

---
url: "/bannerify/tutorials/export-responsive-html-banners-from-figma.md"
description: "The video shows how to use the Bannerify Figma plugin to export responsive HTML banner ads from Figma. It explains how to select Responsive HTML (Media Queries), export the banners, and download the resulting .zip file with a single responsive index.html file that uses media queries to display the right banner size."
---

# Export responsive HTML banners from Figma

> The video shows how to use the Bannerify Figma plugin to export responsive HTML banner ads from Figma. It explains how to select Responsive HTML (Media Queries), export the banners, and download the resulting .zip file with a single responsive index.html file that uses media queries to display the right banner size.

[← Back to Bannerify Video Tutorials](/bannerify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/RXBaPS4nSQ4)

## What this video covers

The video shows how to use the Bannerify Figma plugin to export responsive HTML banner ads from Figma. It explains how to select **Responsive HTML (Media Queries)**, export the banners, and download the resulting `.zip` file with a single responsive `index.html` file that uses media queries to display the right banner size.

> **Note:** This **Responsive HTML (Media Queries)** format is generic responsive HTML for custom hosting; it is not a Google Ads upload format. For a single responsive uploaded Display ZIP, use [**Google Ads (Responsive HTML5)**](/bannerify/export/platforms/google-ads-responsive). For separate fixed-size ZIPs, use **Google Ads** or **Google Display Network**.

## Things you'll need

- Figma
- Bannerify Figma plugin
- Frames already designed and animated as banners

## Steps

1. [ ] Open Figma, go to Resources, search for Bannerify under the Plugins tab, and run or save the Bannerify plugin.
2. [ ] Load the frames on the page into Bannerify so they appear in the timeline as banners.
3. [ ] Click Export to HTML, then choose Export HTML and change the code output settings from HTML/CSS to **Responsive HTML (Media Queries)**.
4. [ ] Optionally add a clickTag, include a zip file inside the zip, and choose whether to minify the code.
5. [ ] Click Export Banners to generate the HTML, CSS, JavaScript, and images.
6. [ ] Download the .zip file, unzip it, and use the responsive folder containing the index.html file and images.
7. [ ] Preview or inspect the exported index.html to see how media queries swap banners based on viewport size.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=RXBaPS4nSQ4)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-responsive-html-banners-from-figma-using-bannerify)
- [Read: Exporting responsive HTML banners with media queries](/bannerify/export/platforms/responsive-html-media-queries)
- [Next: Export banners for DoubleClick from Figma](/bannerify/tutorials/export-banners-for-doubleclick-from-figma)
- [Open Bannerify in the Figma Community](https://www.figma.com/community/plugin/796124491692147799)

---

---
url: "/bannerify/tutorials/generate-custom-banner-animations-with-ai.md"
description: "This tutorial shows how to use the Bannerify Figma plugin to generate custom key frame animations with AI prompts from ChatGPT or Claude, then import the JSON back into Bannerify. It also demonstrates applying those custom animations to layers and exporting the finished banners as MP4 video or HTML."
---

# Generate custom banner animations with AI

> This tutorial shows how to use the Bannerify Figma plugin to generate custom key frame animations with AI prompts from ChatGPT or Claude, then import the JSON back into Bannerify. It also demonstrates applying those custom animations to layers and exporting the finished banners as MP4 video or HTML.

[← Back to Bannerify Video Tutorials](/bannerify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/WDYRd9cSJcs)

## What this video covers

This tutorial shows how to use the Bannerify Figma plugin to generate custom key frame animations with AI prompts from ChatGPT or Claude, then import the JSON back into Bannerify. It also demonstrates applying those custom animations to layers and exporting the finished banners as MP4 video or HTML.

## Things you'll need

- A Figma file with frames to use as banners
- Bannerify installed as a Figma plugin
- Access to ChatGPT or Claude, or another AI tool that can produce the JSON prompt output

## Steps

1. [ ] Open a Figma file, find Bannerify from the Actions menu, and run it from Saved Plugins.
2. [ ] Load your frames as banners with Load All Banners so Bannerify can read the layers into the timeline.
3. [ ] Open Custom Animations, then use Ask AI to open the Bannerify web tool and generate an animation prompt from an existing preset or from scratch.
4. [ ] Open the prompt in ChatGPT or Claude, copy the JSON response, and paste it into Paste generated JSON code here in Bannerify.
5. [ ] Review the generated key frames, adjust values like timing or position if needed, and click Update Saved Animation.
6. [ ] Apply the custom animation to one layer or Similar Layers, then preview the animation in the timeline.
7. [ ] Export the result with Export to GIF or Video, Export MP4, or Export to HTML, then download the zip file and use the preview or source files.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=WDYRd9cSJcs)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-generate-custom-animations-using-bannerify)
- [Read: Creating AI prompt JSON animations](/bannerify/animation/ai-prompt-animations)
- [Next: Add custom animations to your Figma banner designs](/bannerify/tutorials/add-custom-animations-to-your-figma-banner-designs)
- [Open Bannerify in the Figma Community](https://www.figma.com/community/plugin/796124491692147799)

---

---
url: "/bannerify/tutorials/how-to-export-figma-to-html-canvas-using-bannerify.md"
description: "The video shows how to use the Bannerify Figma plugin to export animated banners from Figma as HTML Canvas. It covers installing the plugin, choosing the HTML Canvas export format, and opening the exported files to preview the generated canvas-based animations."
---

# How to export Figma to HTML Canvas using Bannerify

> The video shows how to use the Bannerify Figma plugin to export animated banners from Figma as HTML Canvas. It covers installing the plugin, choosing the HTML Canvas export format, and opening the exported files to preview the generated canvas-based animations.

[← Back to Bannerify Video Tutorials](/bannerify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/kjDWvQkCxek)

## What this video covers

The video shows how to use the Bannerify Figma plugin to export animated banners from Figma as HTML Canvas. It covers installing the plugin, choosing the HTML Canvas export format, and opening the exported files to preview the generated canvas-based animations.

## Things you'll need

- Figma
- Bannerify HTML Exporter plugin
- A Figma file with banners and animations already set up

## Steps

1. [ ] Install the Bannerify HTML Exporter plugin from the Figma Community if it is not already installed.
2. [ ] Open your Figma file and launch Bannerify by right-clicking the design, then selecting plugins and Bannerify HTML Exporter.
3. [ ] In the plugin, click Export Banners to HTML to open the export settings panel.
4. [ ] Under Code output settings, change Export format/platform from Vanilla HTML/CSS to Vanilla HTML/JS (HTML Canvas).
5. [ ] Click Export Banners and save the generated zip file with the default or preferred name.
6. [ ] Open the zip file, then open index.html in Chrome to preview the exported banners and animations.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=kjDWvQkCxek)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-figma-to-html-canvas-using-bannerify)
- [Read: Ad Platform Options](/bannerify/export/code-output)
- [Next: Animate and export banners to HTML](/bannerify/tutorials/animate-and-export-banners-to-html-from-figma)
- [Open Bannerify in the Figma Community](https://www.figma.com/community/plugin/796124491692147799)

---

---
url: "/bannerify/tutorials/how-to-install-figma-plugins-in-2022.md"
description: "This tutorial shows the updated 2022 way to install and uninstall Figma plugins using the Figma Community and the new “Try it out” flow. It uses the Bannerify plugin as an example and also explains how to launch installed plugins from a Figma file."
---

# How to install Figma plugins in 2022

> This tutorial shows the updated 2022 way to install and uninstall Figma plugins using the Figma Community and the new “Try it out” flow. It uses the Bannerify plugin as an example and also explains how to launch installed plugins from a Figma file.

[← Back to Bannerify Video Tutorials](/bannerify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/0bEnR3cpXI8)

## What this video covers

This tutorial shows the updated 2022 way to install and uninstall Figma plugins using the Figma Community and the new “Try it out” flow. It uses the Bannerify plugin as an example and also explains how to launch installed plugins from a Figma file.

## Things you'll need

- A Figma account
- Access to Figma Community
- Figma open in the browser or the Figma desktop app

## Steps

1. [ ] Open the Figma Community by clicking the “Community” icon or text at the top.
2. [ ] Find a plugin by searching or by opening the “Plugins” tab, then open the plugin detail page.
3. [ ] Click “Try it out” for the plugin you want, and choose the Figma account or Figma team to add it to.
4. [ ] In the blank Figma file that opens, go to the “Resources” panel, click the three dot “More options” icon, and select “Install”.
5. [ ] To use the plugin later, open a Figma file, right-click, go to “Plugins” > “Installed Figma plugins”, and select the plugin.
6. [ ] To uninstall it, open the plugin from the “Resources” tab, click the three dot “More options” icon, and choose “Uninstall”.
7. [ ] Use “Recents” or switch to “Installed” in the “Resources” menu to review plugins you have installed.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=0bEnR3cpXI8)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-install-figma-plugins-in-2022)
- [Read: Install and run the Bannerify Figma Plugin](/bannerify/overview/install)
- [Next: Start with Bannerify](/bannerify/overview/quickstart)
- [Open Bannerify in the Figma Community](https://www.figma.com/community/plugin/796124491692147799)

---

---
url: "/bannerify/tutorials/upload-preview-links-for-html-banners-from-figma-to-netlify.md"
description: "This video shows how to use the Bannerify Figma plugin to export HTML banners and automatically upload the included preview page to Netlify. It also shows how to create a Netlify personal access token, connect it in Bannerify, rename the site, and share the hosted preview URL with clients or stakeholders."
---

# Upload preview links for HTML banners from Figma to Netlify

> This video shows how to use the Bannerify Figma plugin to export HTML banners and automatically upload the included preview page to Netlify. It also shows how to create a Netlify personal access token, connect it in Bannerify, rename the site, and share the hosted preview URL with clients or stakeholders.

[← Back to Bannerify Video Tutorials](/bannerify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/ZBJeKCTWo4k)

## What this video covers

This video shows how to use the Bannerify Figma plugin to export HTML banners and automatically upload the included preview page to Netlify. It also shows how to create a Netlify personal access token, connect it in Bannerify, rename the site, and share the hosted preview URL with clients or stakeholders.

## Things you'll need

- A prepared Figma file with banners set up in Bannerify
- A Netlify account

## Steps

1. [ ] Open the Figma Resources icon, search for Bannerify, and save the Bannerify plugin for easy access.
2. [ ] Run Bannerify from Saved plugins and load your prepared banners into the plugin.
3. [ ] Click Export to HTML, choose the export settings you want, and enable Upload Preview Page URL to Netlify.
4. [ ] In Netlify, create a new personal access token, copy it, and paste it into the personal access token field in Bannerify.
5. [ ] If needed, open the generated Netlify site and change the site name in Domain settings, then refresh Bannerify to update the preview URL.
6. [ ] Click Export Banners to export the files and upload the preview page to Netlify.
7. [ ] Use the Netlify preview URL to share the live banner preview, and open site settings in Netlify if you need to manage the site later.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=ZBJeKCTWo4k)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-upload-preview-links-for-html-banners-from-figma-to-netlify-using-bannerify)
- [Read: Automatically upload preview page to a Netlify URL](/bannerify/export/netlify)
- [Next: Export animated HTML banners from Figma to Google Drive with Zapier](/bannerify/tutorials/export-animated-html-banners-from-figma-to-google-drive-with-zapier)
- [Open Bannerify in the Figma Community](https://www.figma.com/community/plugin/796124491692147799)

---

---
url: "/choose-a-plugin.md"
description: "Match your Figma workflow to the Hypermatic plugin, output, and quickstart guide that fits it."
---

# Choose the right Hypermatic Figma plugin

> Match your Figma workflow to the Hypermatic plugin, output, and quickstart guide that fits it.

Start with the result you need, then open the matching quickstart. If two plugins look similar, use the comparisons below to separate their workflows.

## Choose by task

| What you need to do | Choose | What to expect |
| --- | --- | --- |
| Animate Figma designs and deliver banners as HTML, GIF, or video | [Bannerify](/bannerify/overview/quickstart) | Timeline animation tools plus HTML, advertising-platform, and rendered media exports |
| Design responsive HTML emails in Figma | [Emailify](/emailify/overview/quickstart) | Email layouts built with Emailify components, then exported to HTML or handed off through a supported platform workflow |
| Create presentations in Figma or export editable slides | [Pitchdeck](/pitchdeck/overview/quickstart) | Animated presentations and presentation exports, including PowerPoint workflows |
| Compress or export images, PDFs, and animated media | [TinyImage](/tinyimage/overview/quickstart) | Optimized image, PDF, GIF, APNG, animated WebP, WebM, or MP4 files |
| Move designs and documents between Figma and other formats | [Convertify](/convertify/overview/quickstart) | Import and export workflows for supported design, document, image, and 3D formats |
| Export, import, localize, or synchronize Figma text and content | [CopyDoc](/copydoc/overview/quickstart) | Spreadsheet, document, JSON, Markdown, Airtable, and content-library workflows |
| Build, import, inspect, audit, preview, or export a website | [Weblify](/weblify/overview/quickstart) | Website-building and code workflows, plus importing existing pages into Figma |
| Compare a Figma design with an implemented website | [Pixelay](/pixelay/overview/quickstart) | Visual QA with overlays across design and website views |
| Batch crop or resize several images into several sizes | [HyperCrop](/hypercrop/overview/quickstart) | Presets, manual crop controls, smart cropping, and face detection |
| Share designs or prototypes through a protected link or PDF | [Crypto](/crypto/overview/quickstart) | Password-protected browser previews and PDF sharing workflows |
| Organize Figma comments or collect stakeholder feedback | [Commentful](/commentful/overview/quickstart) | Comment statuses, todos, filters, and external feedback workflows |
| Export favicon images, HTML, and PWA files | [Favvy](/favvy/overview/quickstart) | A favicon package with generated image and code files |

## Separate the closest choices

### Bannerify or TinyImage

Use **Bannerify** when the work is an animated banner campaign and the destination needs HTML, advertising-platform packaging, GIF, or video. Use **TinyImage** for broader image, PDF, compression, and media-export workflows.

### Pitchdeck or Convertify

Use **Pitchdeck** to build and present a slide deck or follow its presentation export workflows. Use **Convertify** when the main task is moving a file between Figma and another supported design or document format.

### Weblify or Pixelay

Use **Weblify** to build, import, inspect, audit, preview, or export a website workflow. Use **Pixelay** to compare an existing Figma design with a website during visual QA.

### CopyDoc or Emailify

Use **CopyDoc** when the main job is moving, localizing, or synchronizing text and other content in Figma. Use **Emailify** when the final output is a responsive HTML email built with Emailify's own layout and content components.

### Crypto or Commentful

Use **Crypto** when the deliverable is a password-protected design or prototype preview. Use **Commentful** when the goal is to organize comments and gather feedback.

## Check the workflow before committing

- Open the plugin quickstart and confirm that its supported input and output match your project.
- Check the plugin's **Free vs Pro** page before relying on an export or production workflow.
- For platform uploads, confirm the destination's current account, campaign, file, and approval requirements separately.
- Test the final exported file or hosted result in the environment where it will be used.

## Compare access

After choosing a plugin, compare its Free, trial, and Pro access before starting a production workflow.

[Compare Free and Pro access](/faq/plans)

---

---
url: "/commentful/ai-agents.md"
description: "Install the Hypermatic Agent Skill for Commentful and give Codex, Claude Code, Grok, and compatible agents the correct review workflows."
---

# Use Commentful with AI agents

> Install the Hypermatic Agent Skill for Commentful and give Codex, Claude Code, Grok, and compatible agents the correct review workflows.

Hypermatic Agent Skills give your AI agent a concise Commentful playbook. The Commentful skill distinguishes native Figma comments from external-review feedback and requires evidence before the agent reports that a comment or review state changed.

- [Install Hypermatic Agent Skills](https://hypermatic.ai/): Copy the terminal installer or the no-terminal prompt. One install includes all 12 Hypermatic plugin skills.

## Install the Commentful skill

1. Open [Hypermatic Agent Skills](https://hypermatic.ai/).
2. Copy the terminal command, or copy the no-terminal prompt into your agent.
3. Confirm that `hypermatic-commentful` appears in the installed skills.
4. Ask the agent to use the Commentful skill for your task.

## What the skill can help with

- Triage native Figma comments and Commentful to-dos without mixing their states.
- Prepare external stakeholder review links and access settings.
- Apply supported statuses, assignments, filters, and notification workflows.
- Report the comments, reviewers, and state changes that were actually observed.

## Keyboard Shortcuts

Use [Commentful Keyboard Shortcuts](/commentful/automation/parameters) for supported repeatable tasks with a hidden plugin panel. The reference includes plain-field examples, selection requirements and a machine-readable registry. Choose a supported action from the installed plugin’s Quick Actions list; results use normal notifications, document changes and saved files.

## Example prompts

- `Use the Commentful skill to triage the open review comments in this file.`
- `Use the Commentful skill to prepare an external stakeholder review.`
- `Use the Commentful skill to show me which comments still need action.`

## Approval and verification

The agent can guide the workflow, or use available Figma and computer-control tools after you approve the requested changes. It must ask before changing comment states, notifying reviewers, or publishing a review link. If it cannot observe the result, it should give you exact validation steps instead of claiming success.

## Trial limits

If Commentful reports that its trial allowance is exhausted, the agent should stop retrying and send you to [Commentful pricing and purchase options](https://www.hypermatic.com/commentful/#pro). Complete checkout and license activation yourself, then tell the agent when Commentful is active.

## Keep the skill current

Return to [Hypermatic Agent Skills](https://hypermatic.ai/) and use the **Update** command to install the latest stable Commentful instructions.

---

---
url: "/commentful/automation/parameters.md"
description: "Open Commentful from Quick Actions or the context menu; manage feedback in the plugin panel."
---

# Commentful Keyboard Shortcuts

> Open Commentful from Quick Actions or the context menu; manage feedback in the plugin panel.

## Open Commentful

Choose **Open Commentful** in Figma Quick Actions or **Plugins → Commentful → Open Commentful** in the context menu. Manage feedback, text changes, comments and review workflows in the normal panel. There are no standalone editing shortcuts.

[Machine-readable command registry](/automation/parameters/commentful.json) contains the same action IDs and option definitions.

## Current limits

Comments, review links, text changes, replies, status pins and comment/todo exports use the normal panel.

## Related documentation

- [Install and run Commentful](/commentful/overview/install)
- [Figma plugin parameters](https://developers.figma.com/docs/plugins/plugin-parameters/)
- [Figma hidden UI options](https://developers.figma.com/docs/plugins/api/properties/figma-showui/)

---

---
url: "/commentful/comments/comment-metadata.md"
description: "You can add metadata (for example, 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 (for example, 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 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 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 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.

Commentful downloads the included comment threads and their replies as a UTF-8 `.csv` file, ordered by thread and reply time. Open it in Microsoft Excel, Google Sheets, Apple Numbers, or another spreadsheet app. Emoji and other Unicode characters are preserved in the export.

---

---
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 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 (for example, 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 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 (for example, 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 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 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 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 (for example, 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)

Select a numbered **Pin** icon to jump to the comment's location on the Figma canvas. Commentful adds a matching visual pin and removes it when the plugin closes.

---

---
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://www.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://www.hypermatic.com/commentful/#pro).

- **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 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 (for example, a “find layer by name” plugin)
- Modify any data in your Figma document (for example, a “rename selected layers” plugin)
- Communicate with any server over the internet (for example, 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

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.

## Does Commentful work with Figma Slides?

Commentful currently runs in regular Figma design files, not in Figma Slides files.

If you need to use Commentful with slide content, copy the slides into a regular Figma design file first, then run Commentful there to sync Figma comments, manage todos, or create external review links.

---

---
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-nocookie.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 a 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 of all of the Figma plugin features.

> **Warning:** 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.

> **Info:** If you ever need to use a different license key at any time (for example, 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: "Organize Figma comments, track todos, and collect external design feedback from stakeholders."
---

# Get started with Commentful

> Organize Figma comments, track todos, and collect external design feedback from stakeholders.

[![Commentful Figma Plugin](https://www.hypermatic.com/commentful.jpg)](https://www.figma.com/community/plugin/1030968261424288884/commentful-feedback-workflow)

## Install and 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 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
- Add tags, due dates, and todos to Figma comments.
- See all todos assigned to you (and your own private todos) in one place
- Filter Figma comments by frame, date, status, user, or tag.
- Search 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 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:** Each version is a fixed snapshot. You cannot replace its uploaded frames because existing comments refer to their original positions and content. Create another version for the next design iteration. Reviewers can switch between versions to compare the designs and their feedback.

---

---
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).

You can keep a manual drag-and-drop order or sort the selected frames by Figma layer order, visual rows, or visual columns. Visual sorting tolerates small alignment differences and uses absolute canvas positions for frames inside Figma Sections.

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:** A review version is a fixed snapshot. You cannot replace its uploaded frames because existing comments refer to their original positions and content. [Create a new version](/commentful/reviews/create-new-version) when the designs change.

## 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.

Commentful downloads the current review version's feedback as a UTF-8 `.csv` file. You can open it in Microsoft Excel, Google Sheets, Apple Numbers, or another spreadsheet app. Emoji and other Unicode characters are preserved.

## 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 (for example, 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 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 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.

In the Commentful Figma plugin, you can [apply each text update](/commentful/reviews/applying-figma-feedback) to its corresponding Figma layer.

### Request Images Updates

By clicking 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.

In the Commentful Figma plugin, you can [apply each image update](/commentful/reviews/applying-figma-feedback) to its corresponding Figma layer.

## 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 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 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 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 the **Kanban View** tab (while the **Show All Feedback** panel is open); this lets you 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 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 lets you 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 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 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 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 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 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:

   for example, `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:

   for example, `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)

 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:

for example, `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:

for example, `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 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:

   for example, `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: for example, `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 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 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 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** (for example, _Commentful Figma Plugin_).
5. Set the **Expiration** dropdown option to **90 Days**.
6. Ensure the **File content** dropdown option is set to **Read-only**.
7. Ensure 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:** 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 (for example, 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 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 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 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 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 lets you 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 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 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 (for example, 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 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: "Learn how to collect, organize, export, and resolve Figma comments and client feedback with Commentful."
---

# Commentful Video Tutorials

> Learn how to collect, organize, export, and resolve Figma comments and client feedback with Commentful.

## Video Tutorials

- [Supercharge and organize your Figma comments](/commentful/tutorials/supercharge-and-organize-your-figma-comments)
- [Get feedback from clients without a Figma account](/commentful/tutorials/get-feedback-from-clients-without-a-figma-account)

---

---
url: "/commentful/tutorials/get-feedback-from-clients-without-a-figma-account.md"
description: "This video shows how to use the Commentful Figma plugin to collect external comments and feedback from clients and stakeholders without a Figma account. It walks through creating review links, handling text and image update requests, updating feedback in Figma, exporting feedback to CSV, and deleting feedback when needed."
---

# Get feedback from clients without a Figma account

> This video shows how to use the Commentful Figma plugin to collect external comments and feedback from clients and stakeholders without a Figma account. It walks through creating review links, handling text and image update requests, updating feedback in Figma, exporting feedback to CSV, and deleting feedback when needed.

[← Back to Commentful Video Tutorials](/commentful/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/ta9IvkSXaG4)

## What this video covers

This video shows how to use the Commentful Figma plugin to collect external comments and feedback from clients and stakeholders without a Figma account. It walks through creating review links, handling text and image update requests, updating feedback in Figma, exporting feedback to CSV, and deleting feedback when needed.

## Things you'll need

- A Figma file
- A Figma API token

## Steps

1. [ ] Find Commentful in the Figma Community under the Plugins tab and install it.
2. [ ] In your Figma file, right-click, go to Plugins, and open Commentful.
3. [ ] If prompted, click Connect To Figma File, save your Figma API token, then copy your Figma file link from Share and Save URL.
4. [ ] Open the Reviews tab, click Create New Review, sort and select the frames to include, name the review, and create the review URL.
5. [ ] Share the Passwordless URL or a password-protected URL with clients or stakeholders so they can leave comments, request text updates, or request image updates.
6. [ ] Review incoming feedback in the plugin, jump to the pin location, and use Update in Figma to apply text or image changes automatically.
7. [ ] Use Hide Completed Feedback to tidy the list, Export Feedback to generate a CSV, or Delete Feedback to remove unwanted feedback.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=ta9IvkSXaG4)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-get-comments-and-feedback-without-a-figma-account-using-commentful)
- [Read: Create a shareable review link to gather external feedback on your designs](/commentful/reviews/create-review-link)
- [Next: Supercharge and organize your Figma comments](/commentful/tutorials/supercharge-and-organize-your-figma-comments)
- [Open Commentful in the Figma Community](https://www.figma.com/community/plugin/1030968261424288884)

---

---
url: "/commentful/tutorials/supercharge-and-organize-your-figma-comments.md"
description: "This tutorial shows how to use the Commentful Figma plugin to organize native Figma comments into statuses, tags, todos, and searchable views. It also demonstrates how to reply to threads, create new comment threads, export comments to CSV, and re-link the plugin if a Figma file is duplicated."
---

# Supercharge and organize your Figma comments

> This tutorial shows how to use the Commentful Figma plugin to organize native Figma comments into statuses, tags, todos, and searchable views. It also demonstrates how to reply to threads, create new comment threads, export comments to CSV, and re-link the plugin if a Figma file is duplicated.

[← Back to Commentful Video Tutorials](/commentful/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/8bi57aDmpc8)

## What this video covers

This tutorial shows how to use the Commentful Figma plugin to organize native Figma comments into statuses, tags, todos, and searchable views. It also demonstrates how to reply to threads, create new comment threads, export comments to CSV, and re-link the plugin if a Figma file is duplicated.

## Things you'll need

- A Figma file with native Figma comments
- A Figma personal access token
- The Figma file URL

## Steps

1. [ ] Install Commentful from the Figma Community, then open it from Plugins in your Figma file.
2. [ ] Connect the plugin by saving a personal access token and pasting the Figma file URL to sync native Figma comments.
3. [ ] Create custom statuses such as Completed or In Progress, then move comment threads into the right column.
4. [ ] Open a thread card to edit its title, set a due date, add tags like Design, and filter comments by status, tag, user, date, location, or keyword search.
5. [ ] Reply to an existing thread with markdown formatting, emojis, and links, then post it back to Figma.
6. [ ] Add todos either on a comment thread or in My Todos, and switch between Private Todos and Assigned Todos to track work.
7. [ ] Use the alerts panel to review recent comments, export Figma comments to CSV, or create a new comment thread directly in Commentful.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=8bi57aDmpc8)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-supercharge-and-organize-your-figma-comments-using-commentful)
- [Read: Viewing native Figma comments left by any Figma users in your current file](/commentful/comments/view-comments)
- [Next: Get feedback from clients without a Figma account](/commentful/tutorials/get-feedback-from-clients-without-a-figma-account)
- [Open Commentful in the Figma Community](https://www.figma.com/community/plugin/1030968261424288884)

---

---
url: "/convertify/ai-agents.md"
description: "Install the Hypermatic Agent Skill for Convertify and give Codex, Claude Code, Grok, and compatible agents the correct conversion workflows."
---

# Use Convertify with AI agents

> Install the Hypermatic Agent Skill for Convertify and give Codex, Claude Code, Grok, and compatible agents the correct conversion workflows.

Hypermatic Agent Skills give your AI agent a concise Convertify playbook. The Convertify skill routes each source format to the correct workflow, protects editability where possible, and separates a completed conversion from visual proof.

- [Install Hypermatic Agent Skills](https://hypermatic.ai/): Copy the terminal installer or the no-terminal prompt. One install includes all 12 Hypermatic plugin skills.

## Install the Convertify skill

1. Open [Hypermatic Agent Skills](https://hypermatic.ai/).
2. Copy the terminal command, or copy the no-terminal prompt into your agent.
3. Confirm that `hypermatic-convertify` appears in the installed skills.
4. Ask the agent to use the Convertify skill for your task.

## What the skill can help with

- Choose the correct import or export workflow for the source format.
- Preserve editable text, vectors, layers, and prototypes where supported.
- Prepare conversions between Figma and formats such as Sketch, XD, PDF, PSD, or InDesign.
- Inspect the converted artifact and report remaining visual checks.

## Keyboard Shortcuts

Use [Convertify Keyboard Shortcuts](/convertify/automation/parameters) for supported repeatable tasks with a hidden plugin panel. The reference includes plain-field examples, selection requirements and a machine-readable registry. Choose a supported action from the installed plugin’s Quick Actions list; results use normal notifications, document changes and saved files.

## Example prompts

- `Use the Convertify skill to choose the safest way to import this PDF into Figma.`
- `Use the Convertify skill to prepare these frames for an editable Sketch export.`
- `Use the Convertify skill to check this converted file for missing fonts or assets.`

## Approval and verification

The agent can guide the workflow, or use available Figma and computer-control tools after you approve the requested changes. It must ask before replacing layers, overwriting files, or exporting sensitive source material. If it cannot inspect the converted result, it should not claim that visual fidelity was preserved.

## Trial limits

If Convertify reports that its trial allowance is exhausted, the agent should stop retrying and send you to [Convertify pricing and purchase options](https://www.hypermatic.com/convertify/#pro). Complete checkout and license activation yourself, then tell the agent when Convertify is active.

## Keep the skill current

Return to [Hypermatic Agent Skills](https://hypermatic.ai/) and use the **Update** command to install the latest stable Convertify instructions.

---

---
url: "/convertify/automation/parameters.md"
description: "Run Convertify Quick Actions with simple named inputs and current-selection shortcuts."
---

# Convertify Keyboard Shortcuts

> Run Convertify Quick Actions with simple named inputs and current-selection shortcuts.

Run common Convertify tasks from Figma Quick Actions without opening the plugin panel. Choose a named shortcut below. Use the normal plugin panel for detailed settings and authoring.

## Run a keyboard shortcut

Every shortcut requires a verified valid license or remaining trials. If verification fails or your trials have expired, open the normal plugin panel to activate your license. Opening the panel remains available.

1. Select the layers you want to work with, if the shortcut uses a selection.
2. Open Figma Quick Actions with **Command + /** on Mac or **Ctrl + /** on Windows.
3. Search for the plugin and choose the named shortcut below.
4. Enter the fields shown. Optional fields may be skipped; use Tab to edit them. Run the shortcut and check the result or complete its save dialog.

Creation shortcuts ask for names or dimensions directly. Selected-layer shortcuts use the current selection automatically. These everyday shortcuts do not ask for Target or JSON. Choose **Open Convertify** for the normal plugin panel.

| Shortcut | Inputs |
| --- | --- |
| **Export Selected Layers (Custom Settings…)** | Format (optional) |

Fixed-choice fields use readable labels. Search by the displayed label or the underlying value; agent inputs continue to use the values shown in the command reference.

## Run from the context menu

Select the intended layers, right-click, and choose **Plugins → Convertify** (development plugins appear under **Development**). Choose an action and its format or preset. A preset runs immediately when it needs no required input; finish the save dialog when one appears.

Each preset sets its named option. Omitted compatible options inherit the plugin’s saved settings; an explicit action or option takes priority over conflicting saved behavior. Only explicitly entered fields or the selected menu choice override them for that run. If a setting has never been saved, the normal setting or documented fallback applies. Export overrides are not saved back to your preferences. If a saved format is unavailable as a shortcut, choose a supported format explicitly or use the normal panel. To combine options, choose **Custom Settings…** within the action and enter the parameters. Actions needing text, URLs, names or dimensions still prompt for those required fields. **Open Convertify** opens the normal panel.

| Menu choice | Next step |
| --- | --- |
| **Export Selected Layers → Use Saved Settings** | Runs immediately |
| **Export Selected Layers → Adobe Photoshop (.psd)** | Runs immediately |
| **Export Selected Layers → Canva (.psd)** | Runs immediately |
| **Export Selected Layers → Sketch (.sketch)** | Runs immediately |
| **Export Selected Layers → EPS Vector (.eps)** | Runs immediately |
| **Export Selected Layers → Adobe XD (.xd)** | Runs immediately |
| **Export Selected Layers → Adobe After Effects** | Runs immediately |
| **Export Selected Layers → Adobe InDesign (.idml)** | Runs immediately |
| **Export Selected Layers → Export Selected Layers (Custom Settings…)** | Enter Format (optional) |

## Detailed editing

Use the normal plugin panel for detailed settings, longer content, bulk authoring and browsing components or templates. The shortcut menu contains only the everyday commands listed above.

Keep each pasted field below 150 characters: Figma desktop can truncate pasted input at that boundary. Longer input belongs in the normal panel.

If an older plugin shows Action, Target and Options instead, update it to use these named shortcuts. A Target value is a layer ID or selection, never the name of a new item.

## Convertify actions

| Action | What it does | Target |
| --- | --- | --- |
| [`export`](#export) | Convert selected layers using the existing exporter | One or more eligible layers |

### export

Convert selected layers using the existing exporter. Select one or more eligible layers.

| Option | Type | Required / default | Meaning and accepted values |
| --- | --- | --- | --- |
| `format` | string | Fallback: `"psd"` | Local conversion format. `psd`, `canva`, `sketch`, `eps`, `xd`, `ae`, `idml` |

Nested required fields apply when their parent object or array item is supplied. Omitted optional values use the existing operation’s behavior unless a default is listed.

Choose **Export Selected Layers (Custom Settings…)**. Enter these plain fields; no JSON is required:

- **Format**: **Adobe Photoshop (.psd)**

Agent host input

```json
{"command":"shortcut-export","parameters":{"format":"psd"}}
```

## Using shortcuts with an agent

Read the machine-readable registry linked below and choose an action offered by the installed plugin’s Quick Actions list. The registry uses Hypermatic option definitions rather than standard JSON Schema: `min` and `max` constrain string length, array length or numeric value according to the field type; nested definitions use `fields` and `item`. Unknown fields are rejected.

The agent needs a host that can invoke Figma Quick Actions and observe the normal plugin result. Parameters do not add a REST or MCP launcher. The expandable examples are input data for a compatible host, not executable API calls; shortcut inputs use plain strings in `parameters`, including numbers and format choices. Never claim that a shortcut ran from its prepared input alone.

Verify the visible outcome: the changed Figma layers, saved export, or published page. Read the normal success/error notification and any partial-export warning. Complete native save dialogs as needed; a download starting does not prove that the file was saved. Users do not need to open developer tools or read a console.

## Troubleshooting

| Symptom | Next step |
| --- | --- |
| Action is unavailable | Update the plugin and check its Quick Actions list; use the normal panel if the action is unavailable. |
| Options are invalid or may have been truncated | Use individual plain field values below 150 characters, with only fields accepted by that shortcut. |
| Target is missing or ineligible | Open the correct page, check the action’s layer requirements, and select the intended layers again. |
| A license or trial error appears | Complete the plugin’s normal activation flow before rerunning. |
| Download was requested but no saved file is visible | Check the native save dialog and download location. Inspect the actual file. |
| A command fails, times out or is cancelled | Check the document and remote destination before retrying; earlier changes or uploads may already exist. |

Commands have a five-minute deadline. Errors do not imply a full rollback. Automatically retrying a create, replacement or upload can duplicate or overwrite work.

[Machine-readable command registry](/automation/parameters/convertify.json) contains the same action IDs and option definitions.

## Current limits

All file imports remain interactive because parameter text cannot supply local file bytes. After Effects uses the existing XD handoff format; IDML produces the existing ZIP package. Existing conversion and temporary document-restoration behavior is retained.

## Related documentation

- [Install and run Convertify](/convertify/overview/install)
- [Figma plugin parameters](https://developers.figma.com/docs/plugins/plugin-parameters/)
- [Figma hidden UI options](https://developers.figma.com/docs/plugins/api/properties/figma-showui/)

---

---
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 walks through 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-nocookie.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, click the **Export from Figma** tab, choose **Export Figma to Adobe After Effects** from the workflow selector, then 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 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 (for example, **~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. 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**. 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**. 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 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 "_*_" (for example, "*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**. 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

## Related Convertify guides

- Follow the [step-by-step Figma to Adobe After Effects tutorial](/convertify/tutorials/convert-figma-to-adobe-after-effects).
- Review the underlying [Figma to Adobe XD export workflow](/convertify/export/adobe-xd).
- Explore the [Convertify Figma plugin](https://www.hypermatic.com/convertify/) for other import and export formats.

---

---
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.

### Video Tutorial: Export Figma to Adobe InDesign

This video walks through how to automatically export Figma to Adobe InDesign (.idml) files with one click using the Convertify plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/9Ei5wHpsC14)

[Video](/assets/videos/convertify/export/export-indesign.mp4)

To export your designs from Figma for [Adobe InDesign](https://www.adobe.com/products/indesign.html), click the **Export from Figma** tab, then choose **Export Figma to Adobe InDesign** from the workflow selector.

## 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.

By default, hidden Figma layers are preserved in InDesign exports as hidden objects in the `.idml` file. To leave hidden Figma layers out of the exported package, open the InDesign export settings and enable **Remove hidden layers from export** before exporting.

### Cropped images and private content

Some images are exported as editable originals. The `Links` folder can contain the full source image, including areas cropped out in Figma and embedded image metadata. Recipients can recover those areas by opening the linked image or changing its crop in InDesign.

Cropping an image or hiding a layer does not remove private content from the package. Before sharing, replace sensitive source images with copies that have the unwanted pixels and metadata removed, exclude hidden layers, and inspect the exported `Links` folder.

If linked images look soft while you are editing in InDesign, choose **View > Display Performance > High Quality Display**. This changes InDesign's on-screen preview quality; the exported package can still contain the full-resolution files in the `Links` folder.

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 walks through how to automatically export Figma to Adobe Photoshop (.psd) files with one click using the Convertify plugin.
[Embedded media](https://www.youtube-nocookie.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), click the **Export from Figma** tab, then choose **Export Figma to Adobe Photoshop** from the workflow selector.

## 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**. You can also select a section to export its contents together, or select an individual frame inside the section to export just that frame.

## Photoshop PSD size limits

PSD files have a maximum document size of 30,000 x 30,000 px, and very large PSD canvases can also be too large to build safely in the browser. If your selected frames are spread far apart on the Figma canvas, Convertify will stop the export before building the file and ask you to move the frames closer together or export a smaller selection.

## 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 walks through 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-nocookie.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, click the **Export from Figma** tab, choose **Export Figma to Adobe XD** from the workflow selector, then 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 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 (for example, **~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. 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**. 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 (for example, **~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. 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 "_*_" (for example, "*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**. 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

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.

## Related Convertify guides

- Follow the [step-by-step Figma to Adobe XD tutorial](/convertify/tutorials/convert-figma-to-adobe-xd).
- Continue the workflow by [exporting Figma designs to Adobe After Effects](/convertify/export/adobe-after-effects).
- Explore the [Convertify Figma plugin](https://www.hypermatic.com/convertify/) for other import and export formats.

---

---
url: "/convertify/export/canva.md"
description: "Export selected Figma pages and frames to PSD files for Canva with Convertify."
---

# Exporting Figma to Canva

> Export selected Figma pages and frames to PSD files for Canva with Convertify.

### Video Tutorial: Export Figma to Canva with one click

This video walks through how to automatically export Figma to Canva via PSD files with one click using the Convertify plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/bsucvuXSMxA)

[Video](/assets/videos/convertify/export/export-canva.mp4)

To export your designs from Figma for [Canva](https://www.canva.com/), click the **Export from Figma** tab, then choose **Export Figma to Canva** from the workflow selector.

Convertify creates a `.psd` file for this export, because Canva supports importing Adobe Photoshop files. After downloading the file, import the `.psd` into Canva using Canva's [Adobe Illustrator or Photoshop import flow](https://www.canva.com/en_au/help/ai-import/).

Convertify packs exported frames into a PSD grid first, ordered visually from top-left to bottom-right based on their positions on the Figma canvas. If the packed PSD is still too large, Convertify automatically splits the Canva export into a `.zip` containing smaller `.psd` files. Canva has a 300 MB import limit, so this helps keep large Figma pages importable in Canva.

## Exporting the current Figma page to Canva

To convert an entire page, click **Export This Page** to begin converting the current page to a `.psd` file.

## Exporting selected Figma frames to Canva

If you only want specific areas exported, select the Figma frames you want and then click **Export Selected Frames**.

## Splitting large Canva exports

Convertify first tries to create one packed PSD file. If the export is near Canva's 300 MB import limit, exceeds PSD document limits, or is too large to build safely, Convertify automatically creates a `.zip` package containing smaller `.psd` files instead of one combined `.psd` file.

You can also turn on **Split each frame into a separate PSD file** before exporting if you prefer separate PSD files from the start. After downloading the `.zip`, unzip it on your computer and import the `.psd` files into Canva individually. If a single frame is still over Canva's 300 MB import limit, split that design into smaller Figma frames and export again.

## Downloading your .psd file from Figma

After Convertify has finished processing, download your `.psd` file from the file browser. If Convertify exports a `.zip` file, download and unzip it before importing the PSD files into Canva.

> **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).

## Importing the .psd file into Canva

Once downloaded, upload or import the `.psd` file into Canva. Canva may convert unsupported Photoshop layer features, effects, or fonts differently, so check the imported design before using it in a live project.

---

---
url: "/convertify/export/eps.md"
description: "Export Figma frames to individual EPS files for print, with ZIP packaging for multiple frames."
---

# Exporting Figma to EPS (PostScript)

> Export Figma frames to individual EPS files for print, with ZIP packaging for multiple frames.

### Video Tutorial: Convert Figma to EPS (PostScript)

This video walks through 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-nocookie.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, click the **Export from Figma** tab, choose **Export Figma to Unlayered EPS for Print** from the workflow selector, then 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 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.

## Exporting multiple EPS files

Convertify creates one individual `.eps` file for each exported Figma frame. If you export multiple frames, Convertify packages the resulting EPS files together in a `.zip` file for download.

## Transparency and print quality

EPS does not support live transparency. Frames containing transparent images, shadows or other blended effects may be rasterized during conversion, so an EPS export is not guaranteed to contain only vector artwork.

Check the exported file at its intended print size before sending it to your printer. Enlarging the EPS later will not add detail to rasterized content or low-resolution source images.

Large frames with transparency can take longer to convert and produce large files. Export a single frame first when checking a complex design, and keep Convertify open until the download is ready.

## 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/penpot.md"
description: "Export Figma Design pages or selected layers as an editable Penpot file with Convertify."
---

# Exporting Figma to Penpot

> Export Figma Design pages or selected layers as an editable Penpot file with Convertify.

Convertify exports Figma Design layers as a `.penpot` file that you can import into your Penpot workspace. Text, supported shapes, images and local components remain editable.

> **Warning:** Penpot conversion is experimental. Review the conversion warnings and compare the imported design before using it for delivery. The two apps do not support every property in the same way.

## Export your design

1. [Run Convertify in Figma](/convertify/overview/install) and choose **Export from Figma**.
2. Choose **Export Figma to Penpot (Experimental)** from the workflow selector.
3. Check the pages to export, or enable **Export all Figma pages to Penpot**. To export a selection instead, select the layers on your canvas.
4. Click **Export Pages** or **Export Selected Layers**.
5. Review the warnings and download the `.penpot` file. Referenced component masters are included automatically, including masters on other pages.
6. In Penpot's file dashboard, open **Options**, choose **Import Penpot files**, and select the downloaded file. Open the imported file after the import finishes.

## Check the result

Compare your desktop and smaller layouts, text wrapping, image crops and component copies. Resize important layouts and edit a local component before relying on its behavior. The exported file is a copy; later edits do not synchronize between Figma and Penpot.

## Compatibility and editable content

- **Fonts and text:** make matching fonts available in the destination app. Font substitution and differences in whitespace handling, line spacing and font versions can change wrapping. Conversion preserves characters rather than inserting line breaks to force a visual match.
- **Images and effects:** images larger than Figma's 4096-pixel limit on either axis are resized locally and converted to PNG when importing. Layer geometry and normalized crop controls remain editable, but original pixel resolution, encoding and image metadata are lost. Check cropped edges and color profiles. Image interpolation and some shadows or effects render differently between the apps. Some image crops or unsupported paints require a baked image; the warning identifies the affected layer and lost controls. Keeping the layer editable does not mean every original paint property survives. Figma can close a stroked path that returns to its start; check its endpoint caps and join at the closure.
- **Tokens:** mathematical expressions and aliases that depend on them do not become live Figma variable bindings. Conversion retains resolved layer values and reports the unsupported bindings.
- **Components:** supported copies use local component masters. Some geometry or layout overrides require a separate local master; those copies remain editable and linked to that local master, but their original-master identity and future updates are lost. Conversion warnings identify these cases.
- **Layers and layout:** Figma Auto spacing exports without a minimum gap in Penpot. Its inactive fixed-gap value can return to Figma if spacing is unchanged; a variable bound to that inactive value remains in the token library without a live layout binding. Unsupported structures can require extra groups, local masters or an editable approximation. Check the warnings and test resizing; a matching image alone does not establish matching layout behavior. Hidden fixed-width text can lose its stretch alignment on return to Figma; check its layout when revealing or resizing it. Some centered fixed-size containers have symmetric padding larger than their saved box. Where supported, conversion keeps the box and live centered layout with zero padding on that axis, and reports the lost padding controls and bindings.

These workflows target **Figma Design**. They do not provide FigJam, Figma Slides or prototype-playback parity. Keep your source file and review important layouts in both apps.

To bring a saved design back, follow [Importing Penpot to Figma](/convertify/import/penpot).

---

---
url: "/convertify/export/procreate.md"
description: "Export Figma frames to Procreate .procreate canvases with their layers, groups, opacity and blend modes using Convertify."
---

# Exporting Figma to Procreate

> Export Figma frames to Procreate .procreate canvases with their layers, groups, opacity and blend modes using Convertify.

To export your designs from Figma for [Procreate](https://procreate.com/procreate), click the **Export from Figma** tab, then choose **Export Figma to Procreate (Beta)** from the workflow selector.

> **Tip:** **Procreate export is in Beta.** Check your canvas in Procreate before you start painting on it, and tell us about any frame that doesn't come across as expected.

## Choosing a canvas size

Procreate canvases are measured in pixels. Choose a **Canvas size** before exporting:

- **1x** makes the canvas the same number of pixels as your Figma frame.
- **2x** (the default), **3x** and **4x** make it two, three or four times larger, for sharper results when you zoom in and paint in Procreate.

Canvases are capped at 8192 px on their longest side, the most Procreate opens on most iPads. A larger frame is scaled down to fit, and Convertify tells you when it does.

## Exporting frames as a Procreate animation

Turn on **Export frames as one animation** to export the frames you select (or every frame on the page) as one Animation Assist canvas, the size of the first frame. Each frame becomes an animation frame:

- **Order and timing** follow the frames' **After delay** prototype links, starting from the page's flow starting point. The shortest delay sets the frame rate, and longer delays hold their frame. Without links, frames play left to right, top to bottom, at 15 frames per second.
- **Looping** is on when the last frame links back to the first; otherwise the animation plays once.
- The first frame's solid fill becomes the canvas background; later frames with a different fill keep it as a **Background** layer.

## Exporting the current Figma page to Procreate

To convert every frame on the page, click **Export This Page**. Each frame becomes its own Procreate canvas.

## Exporting selected Figma frames to Procreate

If you only want specific frames, select them and then click **Export Selected Frames**.

## How your layers come across

- Each **top-level layer** in your frame becomes a Procreate layer, with its name, visibility, lock, opacity and blend mode.
- **Groups** (and frames with no fill, stroke or clipping) become Procreate groups, keeping their name, visibility, lock and opacity. Procreate groups can't contain other groups, so anything nested deeper is flattened into its top-level layer.
- **A solid frame fill** becomes the canvas background colour. Gradient, image or multiple fills, strokes and effects on the frame become a **Background** layer instead.
- **Masks** become Procreate layer masks on each layer they clip, so you can keep editing them in Procreate. Luminance masks keep their light and dark areas, and layers under several masks get them combined into one.
- Canvases imported from Procreate keep their clipping masks, Alpha Lock and blend modes Figma doesn't have.
- Procreate paints in pixels, so **text, vectors and effects** are rendered into each layer and are no longer editable.
- Content outside a frame is cropped to the canvas.
- The canvas uses your Figma file's colour profile: **Display P3** for Display P3 files, **sRGB** otherwise.

## Downloading your .procreate file from Figma

After Convertify has finished processing, download your `.procreate` file. If you exported more than one frame, the canvases are downloaded together in a `.zip` file.

> **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 .procreate file in Procreate

1. Move the `.procreate` file to your iPad with AirDrop, the Files app or any cloud drive. If you downloaded a `.zip`, unzip it first (tap it in the Files app).
2. Tap the `.procreate` file to open it in Procreate, or tap **Import** in Procreate's Gallery and choose the file.
3. The canvas appears in your Gallery with its layers ready to edit.

---

---
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 walks through 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-nocookie.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, click the **Export from Figma** tab, choose **Export Figma to Sketch** from the workflow selector, then 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 want 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 (for example, **~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. 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 (for example, **~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. 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 walks through how to automatically convert your components from Figma to Sketch symbols using the Convertify plugin.
[Embedded media](https://www.youtube-nocookie.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

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://www.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://www.hypermatic.com/convertify/#pro).

- **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 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 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 (for example, a “find layer by name” plugin)
- Modify any data in your Figma document (for example, a “rename selected layers” plugin)
- Communicate with any server over the internet (for example, 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 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](/tinyimage/downsize) 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

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://www.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/3d-models.md"
description: "Import glTF, GLB, OBJ, and packaged ZIP models into Figma, adjust their view, or turn a flat image into a 3D isometric perspective with Convertify."
---

# Importing 3D models to Figma

> Import glTF, GLB, OBJ, and packaged ZIP models into Figma, adjust their view, or turn a flat image into a 3D isometric perspective with Convertify.

Use Convertify to position a 3D asset and add its rendered view directly to your Figma canvas. The resulting Figma layer is a transparent PNG snapshot with a 2,048-pixel longest edge. Convertify removes fully transparent outer pixels before creating the image fill, so the layer bounds fit the visible render. While Convertify remains open, you can select the layer and adjust its view again.

[Video](/assets/videos/convertify/import/import-3d-model.mp4)

## Supported 3D formats

- glTF (`.gltf`)
- Binary glTF (`.glb`)
- Wavefront OBJ (`.obj`)
- ZIP package containing one supported model and its linked files (`.zip`)

If a glTF or OBJ file uses separate `.bin`, `.mtl`, or texture files, select or drop the model and all of its linked files together. You can also place one model and its linked files inside a ZIP while keeping their relative folder paths intact, then drop the ZIP directly into Convertify.

Direct 3D source files can total up to 200 MB. ZIP packages can be up to 50 MB compressed and 200 MB after extraction.

> **Tip:** Need a model? Browse [3D models on Sketchfab](https://sketchfab.com/3d-models?features=downloadable&is_ai=0&sort_by=-likeCount). Check the license shown on each model before using it.

## Import a 3D model

1. Open Convertify, click the **Import into Figma** tab, then choose **Import 3D to Figma**.
2. Keep the **Import 3D Model** tab selected.
3. Click the import area or drag in your model file. Include any linked files if the model depends on them, or drop a ZIP containing one model and all of its dependencies. After a preview is loaded, click **Load another** to browse for a replacement, or drop the replacement files directly onto the **Load another** button.
4. Drag the preview to rotate the model. Hold Command on macOS or Ctrl on Windows and Linux while dragging to pan, or scroll to zoom.
5. Adjust the model in the preview until you have the view you want.
6. Click **Add to canvas** to insert that view as a rendered image layer in Figma. After insertion, further view changes stay in the preview until you click **Update canvas**.

## Turn an image into a 3D Isometric Perspective

> **Tip:** Prefer to follow along? Watch the [3D isometric perspective video tutorial](/convertify/tutorials/add-3d-isometric-perspective-to-figma-images).

1. Click the **Import into Figma** tab, choose **Import 3D to Figma**, then select **Image to 3D Perspective**.
2. Add a PNG, JPG/JPEG, JPE, JFIF, WebP, GIF, AVIF, BMP, or SVG image, or select exactly one layer in Figma and click **Use selected Figma layer**. After a preview is loaded, click **Load another** to browse for a replacement image, or drop it directly onto the **Load another** button.
3. Rotate, pan, or zoom the preview, then click **Add to canvas**. After insertion, further view changes stay in the preview until you click **Update canvas**.

When you upload another image or use a different selected Figma layer, Convertify keeps the current preview angle, pan position, and zoom. Click **Reset view** before loading the next image if you want it to start from the default view instead.

Images can be up to 50 MB. A selected Figma layer is captured locally as a transparent PNG at its current 1x size before the final 3D isometric perspective is rendered at 2K. The original layer is not changed, and its temporary image bytes are discarded when Convertify closes or restarts.

WebM is a video format rather than an image format, so it is not available in **Image to 3D Perspective**.

## Re-edit an imported 3D layer

While Convertify remains open, select an imported 3D layer to restore its model and camera position. Adjust the preview, then click **Update canvas** when you are ready to replace the rendered image on the selected Figma layer.

If Convertify has been closed or restarted, select the 3D layer and drop the original source files or ZIP again. Convertify restores the saved view metadata; adjust the preview if needed, then click **Update canvas** to update the same Figma layer.

> **Tip:** Original model and image files are held only in temporary plugin memory after you drop them in. They are discarded when Convertify closes or restarts. The Figma document stores only the rendered image layer and lightweight view metadata.

> **Tip:** 3D rendering and file processing happen locally inside the Convertify plugin. The generated Figma layer is a rendered image, not an editable mesh.

---

---
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 walks through how to automatically import your Adobe Illustrator (.ai) files to Figma using the Convertify plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/Xb4hBxewwEE)

[Video](/assets/videos/convertify/import/import-ai.mp4)

To import your designs from an Adobe Illustrator (.ai) file to Figma, click the **Import into Figma** tab, choose **Import Adobe Illustrator to Figma** from the workflow selector, 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.

### Video Tutorial: Import Adobe InDesign to Figma

This video walks through how to automatically import your Adobe InDesign (.idml) files to Figma using the Convertify plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/Nc0kEtedF70)

[Video](/assets/videos/convertify/import/import-indesign.mp4)

To import your designs from an Adobe InDesign (.idml) file to Figma, click the **Import into Figma** tab, choose **Import Adobe InDesign to Figma** from the workflow selector, 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.

Within a linked text story, each table is imported once rather than repeated in every text frame. Review table placement and page breaks after importing, especially when fonts have been substituted.

Anchored graphics, shapes, text frames and equations are not yet placed in the imported layout. Check these objects against your original InDesign document; an imported page or recovered image asset does not confirm that an anchored object is present.

## Linked images

To include linked images, place your `.idml` file and its **Links** folder together in a `.zip` file and import the ZIP. Preserve any image subfolders, especially when different images share the same filename.

An **ambiguous linked image references** warning means more than one packaged file matches an image reference. Restore the matching folder structure, or give conflicting images unique filenames in InDesign and update their links before exporting and packaging again. Review missing or unresolved image areas against your original document after importing.

## Fonts and text layout

Make sure the fonts used in your InDesign document are available in Figma before importing. If a font or style is unavailable, Convertify may substitute an available font. Review the imported text for changes to line wrapping, spacing and page layout. Justified paragraphs use Figma's justification, with a left-aligned final line. Review paragraphs that use a centered, right-aligned or fully justified final line in InDesign.

For IDML imports, Convertify can continue after a font stops responding only if a substitute font loads successfully. If no substitute font loads, the import stops and removes its newly created layers instead of dropping text. Native INDD imports still stop on font-service timeouts.

If an import reports that Figma could not return its font list or finish loading a font, check Figma's connection and local font service, restart Figma, then try the import again. Repeatedly importing the same file will not make an unavailable font available. If the import fails, Convertify removes the layers it created and its empty import page while retaining your existing artwork. If an error says cleanup could not finish, undo the import or remove the reported partial import before retrying.

## File size limits

Import files can be up to 100 MB before extraction. Each file inside an archive can be up to 64 MB, with up to 10,000 files and 256 MB of extracted content in total, including nested packages. If an import exceeds these limits, split the document or reduce its image sizes, then try again.

---

---
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 walks through how to automatically import your Adobe Photoshop (.psd) files to Figma using the Convertify plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/r5ITJXDOHiI)

[Video](/assets/videos/convertify/import/import-psd.mp4)

To import your designs from an Adobe Photoshop (.psd) file to Figma, click the **Import into Figma** tab, choose **Import Adobe Photoshop to Figma** from the workflow selector, 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 walks through how to automatically convert and import your designs from Adobe XD to Figma using the Convertify plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/9SrTAJnl68g)

[Video](/assets/videos/convertify/import/import-xd.mp4)

To import your designs from an Adobe XD (.xd) file to Figma, click the **Import into Figma** tab, choose **Import Adobe XD to Figma** from the workflow selector, 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 walks through how to automatically convert and import pages from Google Docs to Figma using the Convertify plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/DuXOipNO3Nk)

[Video](/assets/videos/convertify/import/import-google-doc.mp4)

Click the **Import into Figma** tab, choose **Import Google Doc to Figma** from the workflow selector, paste the public Google Docs URL, then select **Import Google Doc**.

> **Tip:** Convertify needs permission to read the document. In Google Docs, select **Share** and change **Restricted** to **Anyone with the link** before copying the URL.

---

---
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 walks through how to automatically convert and import tables from Google Sheets to Figma using the Convertify plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/cfzEPRPRfCg)

[Video](/assets/videos/convertify/import/import-google-sheet.mp4)

Click the **Import into Figma** tab, choose **Import Google Sheet Table to Figma** from the workflow selector, paste the public Google Sheets URL, then select **Import Google Sheet**.

> **Tip:** Convertify needs permission to read the spreadsheet. In Google Sheets, select **Share** and change **Restricted** to **Anyone with the link** before copying the URL.

---

---
url: "/convertify/import/lottie.md"
description: "Convert Lottie JSON and dotLottie files to animated GIF layers in Figma with Convertify."
---

# Importing Lottie animations as animated GIF layers to Figma

> Convert Lottie JSON and dotLottie files to animated GIF layers in Figma with Convertify.

### Video Tutorial: Import Lottie file animations to Figma

This video walks through how to automatically import your Lottie files (.lottie / .json) to Figma using the Convertify plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/-x-2psLbbVA)

[Video](/assets/videos/convertify/import/lottie-imports.mp4)

To import Lottie animations to Figma, click the **Import into Figma** tab, choose **Import Lottie as GIF to Figma** from the workflow selector, then drag and drop your `.json` or `.lottie` file into the dropzone area inside the Convertify plugin to import it as an animated GIF image layer.

Convertify renders the Lottie animation locally inside the plugin, converts it into an animated GIF, and inserts it into your Figma file as an image fill layer.

For unusually large or long animations, Convertify may reduce the GIF dimensions or sample a lower frame rate so the conversion can complete reliably inside Figma.

> **Info:** Animated GIF layers may appear static while editing in Figma, but can play when viewed in presentation/prototype contexts that support animated GIF playback.

> **Warning:** Lottie files are imported as GIF image layers, not editable vector animation layers.

---

---
url: "/convertify/import/pdf.md"
description: "How to import PDF files into Figma with Convertify, including drag-and-drop, vector layers, and editable text."
---

# Importing PDF to Figma

> How to import PDF files into Figma with Convertify, including drag-and-drop, vector layers, and editable text.

### Video Tutorial: Import PDF to Figma

This video walks through how to automatically import your PDF files to Figma using the Convertify plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/7BEJzVi8yeE)

[Video](/assets/videos/convertify/import/import-pdf.mp4)

To import your designs from a PDF (.pdf) file to Figma, click the **Import into Figma** tab, choose **Import PDF to Figma** from the workflow selector, 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 editable layers, enable **Import Pages as Vector Layers**.

## Importing editable text

When **Import Pages as Vector Layers** is enabled, Convertify also displays the **Import Editable Text Layers** option. This option is enabled by default and converts text stored as text in the PDF into native, editable Figma text layers.

> **Note:** Some PDFs store text as vector outlines or scanned images instead of text data. Those parts will remain vectors or images because the original characters are not available to edit. Convertify may also substitute fonts that are not available in Figma, which can cause small visual differences.

---

---
url: "/convertify/import/penpot.md"
description: "Import a saved Penpot file into new editable Figma Design pages with Convertify."
---

# Importing Penpot to Figma

> Import a saved Penpot file into new editable Figma Design pages with Convertify.

Convertify imports a current Penpot ZIP/JSON `.penpot` file into new pages in your Figma Design file. Your existing pages remain separate from the imported design.

> **Warning:** Penpot conversion is experimental. Review the import warnings and compare the resulting design before using it for delivery. Older binary Penpot files are not supported; download a fresh file from Penpot instead.

## Import your design

1. In Penpot, open the file's **Main menu**, choose **File**, then **Download Penpot file (.penpot)**.
2. [Run Convertify in Figma](/convertify/overview/install) and choose **Import into Figma**.
3. Choose **Import Penpot to Figma (Experimental)** from the workflow selector.
4. Leave **Import color, text and variable libraries** enabled to import those libraries, or turn it off if you only need the layers.
5. Click the file chooser or drag your `.penpot` file into the plugin. Wait for the import result before starting another conversion.
6. Review the warnings, then inspect the new pages. Check text wrapping, fonts, image crops, component copies and important layout resizing.

## File limits and failures

Import at most 50,000 layers at a time, including any component masters needed to reconstruct copies. The input archive must be no larger than 128 MB; expanded content is also limited. Split large files into smaller exports if a limit is reached.

An unsupported layer type or invalid archive can stop the import. Failed imports attempt to remove the pages and resources they created; if rollback cannot finish, the error identifies the remaining cleanup problem. Resolve that error before retrying.

WebP images are converted locally to editable PNG images for Figma. Their original WebP encoding and any animation are lost, and the import reports a warning.

## Compatibility and editable content

- **Fonts and text:** make matching fonts available in the destination app. Font substitution and differences in whitespace handling, line spacing and font versions can change wrapping. Conversion preserves characters rather than inserting line breaks to force a visual match.
- **Images and effects:** images larger than Figma's 4096-pixel limit on either axis are resized locally and converted to PNG when importing. Layer geometry and normalized crop controls remain editable, but original pixel resolution, encoding and image metadata are lost. Check cropped edges and color profiles. Image interpolation and some shadows or effects render differently between the apps. Some image crops or unsupported paints require a baked image; the warning identifies the affected layer and lost controls. Keeping the layer editable does not mean every original paint property survives. Figma can close a stroked path that returns to its start; check its endpoint caps and join at the closure.
- **Tokens:** mathematical expressions and aliases that depend on them do not become live Figma variable bindings. Conversion retains resolved layer values and reports the unsupported bindings.
- **Components:** supported copies use local component masters. Some geometry or layout overrides require a separate local master; those copies remain editable and linked to that local master, but their original-master identity and future updates are lost. Conversion warnings identify these cases.
- **Layers and layout:** Figma Auto spacing exports without a minimum gap in Penpot. Its inactive fixed-gap value can return to Figma if spacing is unchanged; a variable bound to that inactive value remains in the token library without a live layout binding. Unsupported structures can require extra groups, local masters or an editable approximation. Check the warnings and test resizing; a matching image alone does not establish matching layout behavior. Hidden fixed-width text can lose its stretch alignment on return to Figma; check its layout when revealing or resizing it. Some centered fixed-size containers have symmetric padding larger than their saved box. Where supported, conversion keeps the box and live centered layout with zero padding on that axis, and reports the lost padding controls and bindings.

These workflows target **Figma Design**. They do not provide FigJam, Figma Slides or prototype-playback parity. Keep your source file and review important layouts in both apps.

To convert in the other direction, follow [Exporting Figma to Penpot](/convertify/export/penpot).

---

---
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, click the **Import into Figma** tab, choose **Import PowerPoint to Figma** from the workflow selector, 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/procreate.md"
description: "Import Procreate .procreate canvases into Figma as layers or a flattened image using Convertify."
---

# Importing Procreate to Figma

> Import Procreate .procreate canvases into Figma as layers or a flattened image using Convertify.

To import a Procreate canvas into Figma, click the **Import into Figma** tab, choose **Import Procreate to Figma (Beta)** from the workflow selector, and then drag and drop your `.procreate` file into the dropzone inside the Convertify plugin (or click the dropzone to choose the file). Check the preview and dimensions, then click **Import Procreate** to place it in Figma.

> **Tip:** **Procreate import is in Beta.** Check the imported layers before you build on them, and tell us about any canvas that doesn't come across as expected.

## Getting your .procreate file onto your computer

Procreate saves its canvases on your iPad. To get one onto the computer you use Figma on:

1. In Procreate's Gallery, swipe left on the artwork and tap **Share**, or open the artwork and tap **Actions** > **Share**.
2. Choose **Procreate** as the format.
3. Send the `.procreate` file to your computer with AirDrop, the Files app or any cloud drive.

## Reviewing the canvas before import

Choosing a file shows its gallery preview, filename, canvas dimensions and resulting import dimensions. You can change **Import as** and **Import size** before clicking **Import Procreate**. Selecting a file alone does not add layers to Figma. Use **Clear file** to discard the selection, or choose another file to replace it.

If the gallery preview is missing or damaged, Convertify still lets you import readable canvas layers and shows a notice. For a damaged archive, the preview may be the only artwork it can recover; check any warning before importing.

## Choosing layered or flattened import

Use **Import as** to choose how the artwork is placed:

- **Layered canvas** is the default. It keeps the layers, groups and masks described below.
- **Flattened image** places the visible artwork as one image, baking groups, masks, opacity and blend modes into its pixels. Individual layers are not kept, so they cannot be recovered by exporting back to Procreate.

Flattened import uses Procreate's saved full-resolution composite when available. If that composite cannot be read, Convertify flattens the visible layers instead and adds an import warning. For animations, it creates one flattened image per frame, including any foreground and background layers, and keeps the prototype playback timing.

Both modes support the import sizes below. Images larger than Figma's 4096 px limit are split into image tiles.

## Choosing an import size

Use **Import size** to select the resolution:

- **Original resolution** is the default and keeps the canvas at its original pixel size.
- **Up to 1024 px**, **Up to 2048 px** and **Up to 4096 px** reduce larger canvases to fit that limit on their longest side. Smaller canvases keep their original size.

In layered mode, layers, groups and masks scale together, and animation frames use the same resized canvas dimensions. The canvas keeps its proportions, rounded to whole pixels.

Resizing reduces the images placed in Figma; Convertify still needs to read the original file first. Choose **Original resolution** when you need to keep the original pixels for exporting back to Procreate: increasing the export scale later cannot restore detail removed during import.

## Keeping or trimming transparent layer borders

**Trim transparent layer borders** is on by default for layered imports. Each layer's image bounds fit its painted pixels, while its position on the canvas stays the same.

Turn it off to give each painted layer the full canvas bounds, including transparent margins. Masks stay aligned, and any import size limit applies to the full canvas. This creates larger images. Empty layers are still left out, and the setting does not affect flattened imports.

## What gets imported

With **Layered canvas** selected:

Convertify adds a new page to your Figma file with one frame at the chosen import size. With **Original resolution**, it matches the Procreate canvas size in pixels.

- **Layers** come in as image layers, with their name, visibility, lock, opacity and blend mode.
- **Groups** stay as groups, with their name, visibility, lock and opacity.
- **Layer masks** become luminance masks on their layer.
- **Clipping masks** stay clipped to the layer below.
- **The background colour** becomes the frame's fill. It is hidden if the background was hidden in Procreate.
- **Canvas rotation and flips** are applied, so the canvas looks the way it does in your Procreate Gallery.
- **Colours** are converted from the canvas's colour profile (Display P3 or sRGB) to your Figma file's colour profile, so they look the same as in Procreate. Older canvases that don't store a profile use the profile of their Gallery preview.

Procreate files saved by Procreate 4 and later can be imported, including files from older iPads.

## What changes in Figma

The following applies to **Layered canvas** imports. Flattened imports bake the visible appearance into the image instead.

- Procreate paints in pixels, so every layer is an image in Figma. Text layers come in as pixels, and their text isn't editable.
- Figma has no equivalent of Procreate's **Alpha Lock**. It's remembered, so exporting back to Procreate turns it on again.
- Figma has no **Subtract**, **Hard Mix**, **Vivid Light**, **Linear Light**, **Pin Light** or **Divide** blend modes, so layers using them are set to **Normal**. **Lighter Color** and **Darker Color** become **Lighten** and **Darken**, which can look slightly different. Turn on **Match blend modes Figma doesn't have** to bake these layers so they look exactly as in Procreate; they keep their masks and opacity, but won't update if you change the layers beneath them.
- Empty layers are left out.
- Figma limits images to 4096 px on a side, so a layer larger than that comes in as a group of image tiles when importing at original resolution.

Anything left out or approximated is listed under **Import warnings** in the plugin after the import finishes.

## Exporting back to Procreate

For layered imports, Convertify remembers what Figma can't show, so exporting an imported canvas back to Procreate keeps its clipping masks, layer masks, Alpha Lock and original blend modes (unless you change a layer's blend mode in Figma). To export an imported animation as one Procreate animation again, select its frames and turn on **Export frames as one animation**. See [Exporting Figma to Procreate](/convertify/export/procreate).

## Importing animations

If Animation Assist is turned on for the canvas, each animation frame becomes its own Figma frame, side by side, in playback order.

- Your **background** and **foreground** layers, if you set them in Animation Assist, appear on every frame.
- The frames are linked as a Figma prototype that plays at your animation's frame rate, including any held frames. Press **Present** to play it. Looping and one-shot animations play as in Procreate; ping-pong animations add copies of the middle frames, marked **(back)**, for the way back.
- Hidden frames are left out, and onion skins aren't imported.

## Damaged files

If a file's layers can't be read, Convertify places Procreate's preview image of the canvas instead and tells you why.

---

---
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 walks through how to automatically import optimized SVG to Figma using the Convertify plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/b-ENDkyz4ro)

[Video](/assets/videos/convertify/import/import-svg.mp4)

To import optimized and simplified SVG (.svg) vector files to Figma, click the **Import into Figma** tab, choose **Import Optimized SVG to Figma** from the workflow selector, 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 walks through how to automatically convert and import a JPG/PNG image to vector SVG in Figma using the Convertify plugin.
[Embedded media](https://www.youtube-nocookie.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, click the **Import into Figma** tab, choose **Import Image as Traced SVG to Figma** from the workflow selector, 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 walks through 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-nocookie.com/embed/e_PLQv2RY8Y)

[Video](/assets/videos/convertify/import/import-video-to-gif.mp4)

To import MP4 (.mp4) video files to Figma, click the **Import into Figma** tab, choose **Import Video as GIF to Figma** from the workflow selector, 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:** Note, due to the large size of animated GIFs, **MP4 imports are limited to 60 seconds in length**.

> **Info:** For unusually large or long videos, Convertify may reduce the GIF dimensions while preserving the aspect ratio so the conversion can complete reliably inside Figma.

---

---
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, click the **Import into Figma** tab, choose **Import Microsoft Word to Figma** from the workflow selector, 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.

## File size limits

Import files can be up to 100 MB before extraction. Each file inside an archive can be up to 64 MB, with up to 10,000 files and 256 MB of extracted content in total, including nested packages. If an import exceeds these limits, split the document or reduce its image sizes, then try again.

---

---
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-nocookie.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 a 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 of all of the Figma plugin features.

> **Warning:** 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.

> **Info:** If you ever need to use a different license key at any time (for example, 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 files to Sketch, Canva, XD, or After Effects, and import common design and document formats into Figma."
---

# Get started with Convertify

> Export Figma files to Sketch, Canva, XD, or After Effects, and import common design and document formats into Figma.

[![Convertify Figma Plugin](https://www.hypermatic.com/convertify.jpg)](https://www.figma.com/community/plugin/849159306117999028/convertify-sketch-adobe-google)

## Install and 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

Convertify remembers your active **Export from Figma** or **Import into Figma** tab and the last workflow selected in each tab separately for you in each Figma file.

## Frequently asked questions

- [Troubleshooting Convertify](/convertify/faq/troubleshooting.md): Common 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

- Convert Figma designs to Sketch, Canva, Adobe XD, After Effects, Adobe Photoshop, Adobe Illustrator, Adobe InDesign, or EPS.
- Import Adobe XD, Photoshop, PDF, Illustrator, InDesign, PowerPoint, Word, optimized SVG, Google Docs, and Google Sheets content into Figma.
- Import glTF, GLB, OBJ, or ZIP 3D models as rotatable image layers, or turn any uploaded image or selected Figma layer into a 3D perspective.
- Import PNG/JPG bitmap images as vectorized SVG layers with the image tracer feature.
- Import MP4 video files and Lottie animations as animated GIF layers.
- 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: "Learn how to import, export, and convert designs between Figma, Sketch, Adobe apps, Canva, documents, images, and other formats with Convertify."
---

# Convertify Video Tutorials

> Learn how to import, export, and convert designs between Figma, Sketch, Adobe apps, Canva, documents, images, and other formats with Convertify.

## Adobe

- [Convert Figma to Adobe XD](/convertify/tutorials/convert-figma-to-adobe-xd)
- [Convert Figma to Adobe After Effects](/convertify/tutorials/convert-figma-to-adobe-after-effects)
- [Import Adobe XD to Figma](/convertify/tutorials/import-adobe-xd-to-figma)
- [Import Adobe Illustrator to Figma](/convertify/tutorials/import-adobe-illustrator-to-figma)
- [Export Figma to Adobe Photoshop](/convertify/tutorials/export-figma-to-adobe-photoshop)
- [Import Adobe Photoshop to Figma](/convertify/tutorials/import-adobe-photoshop-to-figma)
- [Import Adobe InDesign to Figma](/convertify/tutorials/import-adobe-indesign-to-figma)
- [Export Figma to Adobe InDesign](/convertify/tutorials/export-figma-to-adobe-indesign)

## Sketch

- [Convert Figma to Sketch](/convertify/tutorials/convert-figma-to-sketch)
- [Convert Figma Components to Sketch Symbols](/convertify/tutorials/convert-figma-components-to-sketch-symbols)

## Canva

- [Export Figma to Canva with one click](/convertify/tutorials/export-figma-to-canva-with-one-click)

## Google

- [Import Google Docs to Figma](/convertify/tutorials/import-google-docs-to-figma)
- [Import Google Sheets to Figma](/convertify/tutorials/import-google-sheets-to-figma)

## Other

- [Add 3D Isometric Perspective to Figma images](/convertify/tutorials/add-3d-isometric-perspective-to-figma-images)
- [Import 3D model files to Figma](/convertify/tutorials/import-3d-model-files-to-figma)
- [Convert an image to vector SVG in Figma with one click](/convertify/tutorials/convert-an-image-to-vector-svg-in-figma-with-one-click)
- [Import PDF to Figma](/convertify/tutorials/import-pdf-to-figma)
- [Import Lottie file animations to Figma with one click](/convertify/tutorials/import-lottie-file-animations-to-figma-with-one-click)
- [Import an MP4 video to animated GIF in Figma with one click](/convertify/tutorials/import-an-mp4-video-to-animated-gif-in-figma-with-one-click)
- [Import optimized SVG to Figma](/convertify/tutorials/import-optimized-svg-to-figma)
- [Convert Figma to EPS (PostScript)](/convertify/tutorials/convert-figma-to-eps-postscript)

---

---
url: "/convertify/tutorials/add-3d-isometric-perspective-to-figma-images.md"
description: "This tutorial shows how to turn an uploaded image or selected Figma layer into a 3D isometric perspective with Convertify, adjust its view, add it to the canvas, and update it later."
---

# Add 3D Isometric Perspective to Figma images

> This tutorial shows how to turn an uploaded image or selected Figma layer into a 3D isometric perspective with Convertify, adjust its view, add it to the canvas, and update it later.

[← Back to Convertify Video Tutorials](/convertify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/cqdEud6ZeCc)

## What this video covers

This tutorial shows how to use Convertify to turn a flat image into a 3D isometric perspective directly in Figma. You can use an existing Figma layer or upload an image from your computer, rotate, pan, and zoom the preview, then add the chosen 3D isometric perspective to the canvas as a new rendered image layer.

## Things you'll need

- Figma
- Convertify Figma plugin
- An image layer in Figma or an image file on your computer

## Steps

1. [ ] Open Convertify in a new or existing Figma file.
2. [ ] Click **Import into Figma**, choose **Import 3D to Figma**, then select **Image to 3D Perspective**.
3. [ ] Select one image layer in Figma and click **Use selected Figma layer**, or upload an image from your computer.
4. [ ] Drag the preview to rotate it, hold Command on macOS or Ctrl on Windows and Linux while dragging to pan, and scroll to zoom.
5. [ ] Click **Add to canvas** to insert the chosen 3D isometric perspective as a new rendered Figma layer.
6. [ ] Keep that inserted layer selected, adjust the preview, then click **Update canvas** to replace its rendered 3D isometric perspective.
7. [ ] To use another image, click **Load another**, drop an image directly onto that button, or select a different Figma layer and click **Use selected Figma layer**.
8. [ ] Convertify keeps the current angle, pan position, and zoom for the next image. Click **Reset view** first if you want the next image to use the default 3D isometric perspective.

> **Tip:** The source image stays unchanged. Convertify adds the 3D isometric perspective as a separate high-resolution rendered image layer.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=cqdEud6ZeCc)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-add-3d-isometric-perspective-to-your-figma-images-using-convertify)
- [Read: Importing 3D models to Figma](/convertify/import/3d-models)
- [Next: Import 3D model files to Figma](/convertify/tutorials/import-3d-model-files-to-figma)
- [Open Convertify in the Figma Community](https://www.figma.com/community/plugin/849159306117999028)

---

---
url: "/convertify/tutorials/convert-an-image-to-vector-svg-in-figma-with-one-click.md"
description: "The video shows how to use the Convertify Figma plugin to trace bitmap images and import them into Figma as editable SVG vector layers. It also demonstrates that starting with a sharper, upscaled JPG, PNG, or WebP image can produce cleaner vector results."
---

# Convert an image to vector SVG in Figma with one click

> The video shows how to use the Convertify Figma plugin to trace bitmap images and import them into Figma as editable SVG vector layers. It also demonstrates that starting with a sharper, upscaled JPG, PNG, or WebP image can produce cleaner vector results.

[← Back to Convertify Video Tutorials](/convertify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/mSAk3iGpaXQ)

## What this video covers

The video shows how to use the Convertify Figma plugin to trace bitmap images and import them into Figma as editable SVG vector layers. It also demonstrates that starting with a sharper, upscaled JPG, PNG, or WebP image can produce cleaner vector results.

## Things you'll need

- A Figma file
- The Convertify Figma plugin
- A bitmap image such as JPG, PNG, or WebP

## Steps

1. [ ] Open your Figma file, go to Resources, search for Convertify under the Plugins tab, and run it from Saved plugins.
2. [ ] In Convertify, click the **Import into Figma** tab, then choose **Import Image as Traced SVG to Figma** from the workflow selector.
3. [ ] Drag and drop a JPG, PNG, or WebP image from your computer into the plugin drop zone.
4. [ ] Wait for Convertify to trace the image and generate the SVG paths.
5. [ ] Click Insert SVG to Figma to bring the traced vector into the file as editable layers.
6. [ ] Optionally download the SVG file instead of inserting it into Figma.
7. [ ] For better results, upscale lower-resolution images first before importing them.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=mSAk3iGpaXQ)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-convert-an-image-to-vector-svg-in-figma-with-one-click-using-convertify)
- [Read: Convert and import a JPG, PNG or WebP image to Vector SVG in Figma](/convertify/import/vector)
- [Next: Import PDF to Figma](/convertify/tutorials/import-pdf-to-figma)
- [Open Convertify in the Figma Community](https://www.figma.com/community/plugin/849159306117999028)

---

---
url: "/convertify/tutorials/convert-figma-components-to-sketch-symbols.md"
description: "This tutorial shows how to use the Convertify Figma plugin to export a Figma design to Sketch, including converting Figma components into Sketch symbols. It also demonstrates how the exported Sketch file can be edited through symbols, colors, and styles for global updates."
---

# Convert Figma Components to Sketch Symbols

> This tutorial shows how to use the Convertify Figma plugin to export a Figma design to Sketch, including converting Figma components into Sketch symbols. It also demonstrates how the exported Sketch file can be edited through symbols, colors, and styles for global updates.

[← Back to Convertify Video Tutorials](/convertify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/iOkr2w5KYMI)

## What this video covers

This tutorial shows how to use the Convertify Figma plugin to export a Figma design to Sketch, including converting Figma components into Sketch symbols. It also demonstrates how the exported Sketch file can be edited through symbols, colors, and styles for global updates.

## Things you'll need

- Figma
- Convertify plugin
- Sketch

## Steps

1. [ ] Install the Convertify plugin from the Figma Community.
2. [ ] Open a Figma file, then run Convertify from right-click > Plugins > Convertify.
3. [ ] Open the settings icon next to the Sketch button and enable “Convert Figma components to Sketch symbols”.
4. [ ] Click “Convert to Sketch” and wait for the plugin to process all pages and layers.
5. [ ] Click “Download Sketch File” and save the file to your computer.
6. [ ] Open the exported Sketch file in Sketch and check the new “Symbols” page for converted components.
7. [ ] Edit symbols, colors, or styles in Sketch to update the design globally.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=iOkr2w5KYMI)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-convert-figma-components-to-sketch-symbols-using-convertify)
- [Read: Exporting Figma to Sketch](/convertify/export/sketch)
- [Next: Convert Figma to Sketch](/convertify/tutorials/convert-figma-to-sketch)
- [Open Convertify in the Figma Community](https://www.figma.com/community/plugin/849159306117999028)

---

---
url: "/convertify/tutorials/convert-figma-to-adobe-after-effects.md"
description: "This video shows how to export a Figma design to Adobe After Effects using the Convertify Figma plugin. The workflow converts a Figma page to an XD file, then exports the XD artboard to After Effects so the layers can be animated there."
---

# Convert Figma to Adobe After Effects

> This video shows how to export a Figma design to Adobe After Effects using the Convertify Figma plugin. The workflow converts a Figma page to an XD file, then exports the XD artboard to After Effects so the layers can be animated there.

[← Back to Convertify Video Tutorials](/convertify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/-UBknnWT6D0)

## What this video covers

This video shows how to export a Figma design to Adobe After Effects using the Convertify Figma plugin. The workflow converts a Figma page to an XD file, then exports the XD artboard to After Effects so the layers can be animated there.

## Things you'll need

- Convertify must be installed in Figma.
- Adobe XD and Adobe After Effects are used in the export workflow.

## Steps

1. [ ] Install Convertify from the Figma Community Plugins tab.
2. [ ] Open your Figma file, then right-click and choose Plugins > Convertify.
3. [ ] Select the page you want to export, since the Adobe export only supports single pages.
4. [ ] Click Convert to After Effects, then download the XD file using Download XD file (for exporting to After Effects).
5. [ ] Open the downloaded XD file in Adobe XD.
6. [ ] Select the artboard you want to export, then go to File > Export > After Effects.
7. [ ] After Effects opens with the exported artboard and Figma layers ready to animate.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=-UBknnWT6D0)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-figma-to-after-effects-in-one-click-using-convertify)
- [Read: Exporting Figma to Adobe After Effects](/convertify/export/adobe-after-effects)
- [Next: Import Adobe XD to Figma](/convertify/tutorials/import-adobe-xd-to-figma)
- [Open Convertify in the Figma Community](https://www.figma.com/community/plugin/849159306117999028)

---

---
url: "/convertify/tutorials/convert-figma-to-adobe-xd.md"
description: "The video shows how to use the Convertify Figma plugin to convert Figma designs into Adobe XD files in one click. It demonstrates the installation, export, and opening of the generated XD file, while also pointing out a few conversion caveats for unsupported Adobe XD features."
---

# Convert Figma to Adobe XD

> The video shows how to use the Convertify Figma plugin to convert Figma designs into Adobe XD files in one click. It demonstrates the installation, export, and opening of the generated XD file, while also pointing out a few conversion caveats for unsupported Adobe XD features.

[← Back to Convertify Video Tutorials](/convertify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/cGYU2jvnSs8)

## What this video covers

The video shows how to use the Convertify Figma plugin to convert Figma designs into Adobe XD files in one click. It demonstrates the installation, export, and opening of the generated XD file, while also pointing out a few conversion caveats for unsupported Adobe XD features.

## Things you'll need

- Figma
- Convertify
- Adobe XD

## Steps

1. [ ] Search for Convertify in Figma Community or Plugins and install it.
2. [ ] In your Figma file, right-click and choose Plugins > Convertify, or launch it from the Convertify icon.
3. [ ] Select the page to convert and click Convert to XD.
4. [ ] Wait for the plugin to finish converting and bundling the XD file, then save it to your desktop.
5. [ ] Open the generated Adobe XD file to review the imported artboards, layers, text, images, and vectors.
6. [ ] Check for unsupported elements such as arc features, nested masks, star shapes, vector corner radiuses, and vertical text alignment, then adjust the design in Figma if needed before re-exporting.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=cGYU2jvnSs8)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-convert-figma-to-adobe-xd-files-in-one-click-using-convertify)
- [Read: Exporting Figma to Adobe XD](/convertify/export/adobe-xd)
- [Next: Convert Figma to Adobe After Effects](/convertify/tutorials/convert-figma-to-adobe-after-effects)
- [Open Convertify in the Figma Community](https://www.figma.com/community/plugin/849159306117999028)

---

---
url: "/convertify/tutorials/convert-figma-to-eps-postscript.md"
description: "This tutorial shows how to use the Convertify Figma plugin to export designs from Figma to EPS or PostScript in one click. It demonstrates both exporting an entire page of artboards and exporting only selected top-level parent frames as individual EPS files."
---

# Convert Figma to EPS (PostScript)

> This tutorial shows how to use the Convertify Figma plugin to export designs from Figma to EPS or PostScript in one click. It demonstrates both exporting an entire page of artboards and exporting only selected top-level parent frames as individual EPS files.

[← Back to Convertify Video Tutorials](/convertify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/ZEclPO-3sbw)

## What this video covers

This tutorial shows how to use the Convertify Figma plugin to export designs from Figma to EPS or PostScript in one click. It demonstrates both exporting an entire page of artboards and exporting only selected top-level parent frames as individual EPS files.

## Things you'll need

- Figma
- Convertify Figma plugin

## Steps

1. [ ] Open the Figma file you want to export, then use the Resources icon to search for the Convertify plugin and save it to your Figma plugins list.
2. [ ] Run Convertify from the plugin list or by right-clicking the canvas and going to Plugins > Saved plugins.
3. [ ] To export an entire page, stay on the page you want to convert and click Convert to EPS so each artboard or frame is exported as its own EPS file.
4. [ ] When the conversion finishes, click Download .eps to save the file.
5. [ ] To export only specific frames, select the top-level parent frames or artboards you want to convert.
6. [ ] In the plugin, click the **Export from Figma** tab, choose **Export Figma to Unlayered EPS for Print** from the workflow selector, then click Convert layers to EPS.
7. [ ] After the files are processed, download the EPS package and unzip it to access the individual EPS files.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=ZEclPO-3sbw)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-figma-to-eps-files-in-one-click-using-convertify)
- [Read: Exporting Figma to EPS (PostScript)](/convertify/export/eps)
- [Next: Import optimized SVG to Figma](/convertify/tutorials/import-optimized-svg-to-figma)
- [Open Convertify in the Figma Community](https://www.figma.com/community/plugin/849159306117999028)

---

---
url: "/convertify/tutorials/convert-figma-to-sketch.md"
description: "This video shows how to use the Convertify Figma to Sketch plugin to export Figma designs into editable Sketch files. It walks through installing the plugin, converting pages of different sizes, and opening the resulting .Sketch files in Sketch with layers, text, images, vectors, and zoom position carried over."
---

# Convert Figma to Sketch

> This video shows how to use the Convertify Figma to Sketch plugin to export Figma designs into editable Sketch files. It walks through installing the plugin, converting pages of different sizes, and opening the resulting .Sketch files in Sketch with layers, text, images, vectors, and zoom position carried over.

[← Back to Convertify Video Tutorials](/convertify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/1zwE3xSJeas)

## What this video covers

This video shows how to use the Convertify Figma to Sketch plugin to export Figma designs into editable Sketch files. It walks through installing the plugin, converting pages of different sizes, and opening the resulting .Sketch files in Sketch with layers, text, images, vectors, and zoom position carried over.

## Things you'll need

- Figma
- Sketch

## Steps

1. [ ] Install Convertify from the Figma plugin directory by searching for “Convertify Figma to Sketch” and clicking install.
2. [ ] Open a Figma file, right-click, go to Plugins, and launch “Convertify Figma to Sketch.”
3. [ ] Check the selected page name and the estimated conversion time, then click “Convert to Sketch.”
4. [ ] Wait for the conversion and bundling process to finish, then save the generated Sketch file when prompted.
5. [ ] Open the saved .Sketch file in Sketch to confirm the design, layers, and editable text were preserved.
6. [ ] If Sketch shows “Missing Fonts,” use the Missing Fonts prompt to replace them and confirm the changes.
7. [ ] Use the plugin on larger files as needed; the video shows that conversion time varies with layer count and nested layers.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=1zwE3xSJeas)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-convert-figma-to-sketch-files-in-one-click-using-convertify)
- [Read: Exporting Figma to Sketch](/convertify/export/sketch)
- [Next: Convert Figma Components to Sketch Symbols](/convertify/tutorials/convert-figma-components-to-sketch-symbols)
- [Open Convertify in the Figma Community](https://www.figma.com/community/plugin/849159306117999028)

---

---
url: "/convertify/tutorials/export-figma-to-adobe-indesign.md"
description: "This tutorial shows how to use the Convertify Figma plugin to export Figma designs to Adobe InDesign as an IDML file with a links folder for image assets. It demonstrates exporting either an entire page or selected frames, then unzipping the package and opening the IDML file in Adobe InDesign."
---

# Export Figma to Adobe InDesign

> This tutorial shows how to use the Convertify Figma plugin to export Figma designs to Adobe InDesign as an IDML file with a links folder for image assets. It demonstrates exporting either an entire page or selected frames, then unzipping the package and opening the IDML file in Adobe InDesign.

[← Back to Convertify Video Tutorials](/convertify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/9Ei5wHpsC14)

## What this video covers

This tutorial shows how to use the Convertify Figma plugin to export Figma designs to Adobe InDesign as an IDML file with a links folder for image assets. It demonstrates exporting either an entire page or selected frames, then unzipping the package and opening the IDML file in Adobe InDesign.

## Things you'll need

- A Figma file with frames to export
- Adobe InDesign

## Steps

1. [ ] In Figma, open the Actions icon, search for Convertify under the Figma plugins tab, then run it or save it for later use from Saved plugins.
2. [ ] In Convertify, click the **Export from Figma** tab, then choose **Export Figma to Adobe InDesign** from the workflow selector.
3. [ ] Choose export this page to export every frame on the page, or select the parent frames in Figma and choose export selected frames to export only those frames.
4. [ ] Click download zip and save the package.
5. [ ] Unzip the file to access the IDML file and the links folder.
6. [ ] Open the IDML file in Adobe InDesign and keep the links folder with it so the image assets stay linked correctly.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=9Ei5wHpsC14)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-figma-to-adobe-indesign-idml-files-with-one-click-using-convertify)
- [Read: Exporting Figma to Adobe InDesign](/convertify/export/adobe-indesign)
- [Next: Import Adobe InDesign to Figma](/convertify/tutorials/import-adobe-indesign-to-figma)
- [Open Convertify in the Figma Community](https://www.figma.com/community/plugin/849159306117999028)

---

---
url: "/convertify/tutorials/export-figma-to-adobe-photoshop.md"
description: "This tutorial shows how to use the Convertify Figma plugin to export Figma designs to Adobe Photoshop .psd files with one click. It demonstrates exporting an entire page or only selected frames, then opening the downloaded PSD in Adobe Photoshop to access the imported layers, images, icons, and text."
---

# Export Figma to Adobe Photoshop

> This tutorial shows how to use the Convertify Figma plugin to export Figma designs to Adobe Photoshop .psd files with one click. It demonstrates exporting an entire page or only selected frames, then opening the downloaded PSD in Adobe Photoshop to access the imported layers, images, icons, and text.

[← Back to Convertify Video Tutorials](/convertify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/mmrIp3yB62g)

## What this video covers

This tutorial shows how to use the Convertify Figma plugin to export Figma designs to Adobe Photoshop .psd files with one click. It demonstrates exporting an entire page or only selected frames, then opening the downloaded PSD in Adobe Photoshop to access the imported layers, images, icons, and text.

## Things you'll need

- A Figma file with frames or artboards to export.
- The Convertify Figma plugin installed or saved in Figma.

## Steps

1. [ ] Open your Figma file, run the Convertify plugin from the Figma plugins list, click the **Export from Figma** tab, then choose **Export Figma to Adobe Photoshop** from the workflow selector.
2. [ ] Choose whether to export the entire page or only selected frames.
3. [ ] Click export this page or export selected frames to generate the PSD file.
4. [ ] When the converted PSD file is ready, click download PSD and save it to your computer.
5. [ ] Open the downloaded .psd file in Adobe Photoshop to view the exported artboards and layers.
6. [ ] Edit the imported layers in Photoshop as needed, noting that some text layers may need the correct font installed or may require vectorizing.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=mmrIp3yB62g)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-figma-to-adobe-photoshop-psd-files-with-one-click-using-convertify)
- [Read: Exporting Figma to Adobe Photoshop](/convertify/export/adobe-photoshop)
- [Next: Import Adobe Photoshop to Figma](/convertify/tutorials/import-adobe-photoshop-to-figma)
- [Open Convertify in the Figma Community](https://www.figma.com/community/plugin/849159306117999028)

---

---
url: "/convertify/tutorials/export-figma-to-canva-with-one-click.md"
description: "The video shows how to use the Convertify Figma plugin to export Figma designs to Canva. It covers exporting a whole page or selected frames as a PSD file, then importing that file into Canva so the layers remain editable, including an option to split large exports into separate PSD files."
---

# Export Figma to Canva with one click

> The video shows how to use the Convertify Figma plugin to export Figma designs to Canva. It covers exporting a whole page or selected frames as a PSD file, then importing that file into Canva so the layers remain editable, including an option to split large exports into separate PSD files.

[← Back to Convertify Video Tutorials](/convertify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/bsucvuXSMxA)

## What this video covers

The video shows how to use the Convertify Figma plugin to export Figma designs to Canva. It covers exporting a whole page or selected frames as a PSD file, then importing that file into Canva so the layers remain editable, including an option to split large exports into separate PSD files.

## Things you'll need

- A Figma file with frames to export
- The Convertify Figma plugin
- A Canva account

## Steps

1. [ ] Open your Figma file, search for Convertify in the Figma plugins tab, and run or save the plugin.
2. [ ] In Convertify, click the **Export from Figma** tab, then choose **Export Figma to Canva** from the workflow selector.
3. [ ] Export either the current page with export this page or specific frames with export selected frames.
4. [ ] When the PSD file is ready, click download PSD for Canva and save it to your computer.
5. [ ] Open canva.com, sign in, and drag the PSD file into the Canva homepage to upload it.
6. [ ] Open the uploaded file in Canva to edit the individual layers.
7. [ ] If the export is too large for Canva's PSD import limit, enable split exports into separate PSD files, export again, download the zip, and upload the PSD files from it to Canva.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=bsucvuXSMxA)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-figma-to-canva-with-one-click-using-convertify)
- [Read: Exporting Figma to Canva](/convertify/export/canva)
- [Next: Import Google Docs to Figma](/convertify/tutorials/import-google-docs-to-figma)
- [Open Convertify in the Figma Community](https://www.figma.com/community/plugin/849159306117999028)

---

---
url: "/convertify/tutorials/import-3d-model-files-to-figma.md"
description: "This tutorial shows how to import glTF, GLB, OBJ, and ZIP-packaged 3D models with Convertify, adjust the model view, add it to Figma, and reload the source files for later edits."
---

# Import 3D model files to Figma

> This tutorial shows how to import glTF, GLB, OBJ, and ZIP-packaged 3D models with Convertify, adjust the model view, add it to Figma, and reload the source files for later edits.

[← Back to Convertify Video Tutorials](/convertify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/T5l0I6JT7kA)

## What this video covers

This tutorial shows how to use Convertify to import a 3D model into Figma, rotate, pan, and zoom its preview, then add the chosen view to the canvas as a high-resolution rendered image. It also covers ZIP packages and linked model files, replacing the current model, updating an inserted layer, and restoring a model after reopening the plugin.

## Things you'll need

- Figma
- Convertify Figma plugin
- A glTF, GLB, or OBJ model, or a ZIP containing one model and its linked files

## Steps

1. [ ] Open Convertify in a new or existing Figma file.
2. [ ] Click **Import into Figma**, then choose **Import 3D to Figma** from the workflow selector.
3. [ ] Drag a glTF, GLB, OBJ, or ZIP model into the import area. For models with separate BIN, MTL, or texture files, drop the linked files together or package them in one ZIP while preserving their folder structure.
4. [ ] Drag the preview to rotate the model, hold Command on macOS or Ctrl on Windows and Linux while dragging to pan, and scroll to zoom.
5. [ ] Click **Add to canvas** when the model is positioned the way you want.
6. [ ] Keep the inserted layer selected, adjust the preview, then click **Update canvas** to replace its rendered view.
7. [ ] To use a different model, click **Load another** or drop the replacement files directly onto the **Load another** button.
8. [ ] If you reopen Convertify later, select the imported layer and drop its original source files or ZIP again. Convertify restores the saved view so you can adjust it and click **Update canvas**.

> **Tip:** Convertify keeps original model files only in temporary plugin memory. Figma stores the rendered image and lightweight view settings, not the original 3D model.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=T5l0I6JT7kA)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-import-3d-model-files-to-figma-with-one-click-using-convertify)
- [Read: Importing 3D models to Figma](/convertify/import/3d-models)
- [Next: Convert an image to vector SVG in Figma with one click](/convertify/tutorials/convert-an-image-to-vector-svg-in-figma-with-one-click)
- [Open Convertify in the Figma Community](https://www.figma.com/community/plugin/849159306117999028)

---

---
url: "/convertify/tutorials/import-adobe-illustrator-to-figma.md"
description: "The video shows how to use the Convertify Figma plugin to import Adobe Illustrator (.ai) files into Figma with one click. It demonstrates both bitmap import and the beta option to import artboards as vector layers, with examples showing the difference in sharpness and editability."
---

# Import Adobe Illustrator to Figma

> The video shows how to use the Convertify Figma plugin to import Adobe Illustrator (.ai) files into Figma with one click. It demonstrates both bitmap import and the beta option to import artboards as vector layers, with examples showing the difference in sharpness and editability.

[← Back to Convertify Video Tutorials](/convertify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/Xb4hBxewwEE)

## What this video covers

The video shows how to use the Convertify Figma plugin to import Adobe Illustrator (.ai) files into Figma with one click. It demonstrates both bitmap import and the beta option to import artboards as vector layers, with examples showing the difference in sharpness and editability.

## Things you'll need

- Figma
- Convertify Figma plugin
- An Adobe Illustrator (.ai) file

## Steps

1. [ ] Open Figma, click the Resources icon, search for Convertify under the Plugins tab, and run it or save it to your plugin list.
2. [ ] Open Convertify from Saved Plugins, click the **Import into Figma** tab, then choose **Import Adobe Illustrator to Figma** from the workflow selector.
3. [ ] Optionally leave Import artboards as vector layers turned off to import an .ai file as a bitmap.
4. [ ] Drag and drop an Adobe Illustrator (.ai) file into the plugin drop zone to import it into Figma.
5. [ ] Turn on the BETA Import artboards as vector layers option and drop the .ai file again to import it as vector layers.
6. [ ] Inspect the imported layers in Figma, edit vector shapes and colors, and note that text in vector imports becomes individual vector shapes rather than editable text layers.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=Xb4hBxewwEE)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-import-adobe-illustrator-files-to-figma-with-one-click-using-convertify)
- [Read: Importing Adobe Illustrator to Figma](/convertify/import/adobe-illustrator)
- [Next: Export Figma to Adobe Photoshop](/convertify/tutorials/export-figma-to-adobe-photoshop)
- [Open Convertify in the Figma Community](https://www.figma.com/community/plugin/849159306117999028)

---

---
url: "/convertify/tutorials/import-adobe-indesign-to-figma.md"
description: "This tutorial shows how to use the Convertify Figma plugin to import Adobe InDesign .idml files into Figma with one click. It explains how to package an IDML file with its links folder into a zip, then drag it into Convertify to bring InDesign pages in as editable Figma layers."
---

# Import Adobe InDesign to Figma

> This tutorial shows how to use the Convertify Figma plugin to import Adobe InDesign .idml files into Figma with one click. It explains how to package an IDML file with its links folder into a zip, then drag it into Convertify to bring InDesign pages in as editable Figma layers.

[← Back to Convertify Video Tutorials](/convertify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/Nc0kEtedF70)

## What this video covers

This tutorial shows how to use the Convertify Figma plugin to import Adobe InDesign .idml files into Figma with one click. It explains how to package an IDML file with its links folder into a zip, then drag it into Convertify to bring InDesign pages in as editable Figma layers.

## Things you'll need

- A Figma file with the Convertify plugin available.
- Adobe InDesign files saved as IDML, along with the links folder.

## Steps

1. [ ] Open a Figma file, find Convertify from the Actions icon or saved plugins, and run the plugin.
2. [ ] In Convertify, click the **Import into Figma** tab, then choose **Import Adobe InDesign to Figma** from the workflow selector.
3. [ ] In Adobe InDesign, save the document as an IDML file, not an INDD file.
4. [ ] Zip the IDML file together with the links folder so image assets are included.
5. [ ] Drag and drop the zip file into the Convertify drop zone in Figma.
6. [ ] Review the imported pages and edit the resulting Figma layers, text, images, and grouped content.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=Nc0kEtedF70)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-import-adobe-indesign-idml-files-to-figma-with-one-click-using-convertify)
- [Read: Importing Adobe InDesign to Figma](/convertify/import/adobe-indesign)
- [Next: Export Figma to Adobe InDesign](/convertify/tutorials/export-figma-to-adobe-indesign)
- [Open Convertify in the Figma Community](https://www.figma.com/community/plugin/849159306117999028)

---

---
url: "/convertify/tutorials/import-adobe-photoshop-to-figma.md"
description: "The video shows how to use the Convertify Figma plugin to import Adobe Photoshop .psd files into Figma with one click. It demonstrates selecting the import Adobe Photoshop to Figma option, dragging and dropping PSD files, and then editing the imported layers in Figma."
---

# Import Adobe Photoshop to Figma

> The video shows how to use the Convertify Figma plugin to import Adobe Photoshop .psd files into Figma with one click. It demonstrates selecting the import Adobe Photoshop to Figma option, dragging and dropping PSD files, and then editing the imported layers in Figma.

[← Back to Convertify Video Tutorials](/convertify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/r5ITJXDOHiI)

## What this video covers

The video shows how to use the Convertify Figma plugin to import Adobe Photoshop .psd files into Figma with one click. It demonstrates selecting the import Adobe Photoshop to Figma option, dragging and dropping PSD files, and then editing the imported layers in Figma.

## Things you'll need

- A Figma file
- The Convertify Figma plugin
- An Adobe Photoshop .psd file

## Steps

1. [ ] Open a Figma file and find Convertify from the actions icon or run it from saved plugins.
2. [ ] In Convertify, click the **Import into Figma** tab, then choose **Import Adobe Photoshop to Figma** from the workflow selector.
3. [ ] Drag and drop a .psd file into the Convertify drop zone.
4. [ ] Wait for the plugin to load the PSD and create a new page in Figma.
5. [ ] Review the imported image layers, text layers, groups, and layer names, then edit them directly in Figma.
6. [ ] If needed, tweak small text alignment differences because Photoshop and Figma may render text differently.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=r5ITJXDOHiI)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-import-adobe-photoshop-psd-files-to-figma-with-one-click-using-convertify)
- [Read: Importing Adobe Photoshop to Figma](/convertify/import/adobe-photoshop)
- [Next: Import Adobe InDesign to Figma](/convertify/tutorials/import-adobe-indesign-to-figma)
- [Open Convertify in the Figma Community](https://www.figma.com/community/plugin/849159306117999028)

---

---
url: "/convertify/tutorials/import-adobe-xd-to-figma.md"
description: "This video shows how to use the Convertify Figma plugin to import Adobe XD files into Figma. It demonstrates importing layers, text and color styles, prototype links, and components/instances, along with a few font and text import tips."
---

# Import Adobe XD to Figma

> This video shows how to use the Convertify Figma plugin to import Adobe XD files into Figma. It demonstrates importing layers, text and color styles, prototype links, and components/instances, along with a few font and text import tips.

[← Back to Convertify Video Tutorials](/convertify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/9SrTAJnl68g)

## What this video covers

This video shows how to use the Convertify Figma plugin to import Adobe XD files into Figma. It demonstrates importing layers, text and color styles, prototype links, and components/instances, along with a few font and text import tips.

## Things you'll need

- Figma
- Convertify Figma plugin
- An Adobe XD file to import

## Steps

1. [ ] Open a new Figma file, find Convertify from the Resources icon, and run the plugin or save it to Saved plugins.
2. [ ] In Convertify, click the **Import into Figma** tab, then choose **Import Adobe XD to Figma** from the workflow selector.
3. [ ] Drag and drop an Adobe XD file into the dropzone to create a new page in the current Figma file.
4. [ ] Check the imported layers in Figma to confirm the structure, images, text, and groups were brought across.
5. [ ] If needed, enable the toggles to import color and text styles and import prototype links before importing.
6. [ ] Make sure the original Adobe XD fonts are installed on your computer, and use "auto height" for text layers if you run into text import issues.
7. [ ] Import components and instances from Adobe XD, then review them in the Figma Assets panel if desired.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=9SrTAJnl68g)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-convert-and-import-adobe-xd-to-figma-in-seconds-using-convertify)
- [Read: Importing Adobe XD to Figma](/convertify/import/adobe-xd)
- [Next: Import Adobe Illustrator to Figma](/convertify/tutorials/import-adobe-illustrator-to-figma)
- [Open Convertify in the Figma Community](https://www.figma.com/community/plugin/849159306117999028)

---

---
url: "/convertify/tutorials/import-an-mp4-video-to-animated-gif-in-figma-with-one-click.md"
description: "This tutorial shows how to use the Convertify Figma plugin to import an MP4 video as an animated GIF layer directly in Figma. It demonstrates saving and running the plugin, switching to the Import Video as GIF to Figma option, and dragging an MP4 file into the plugin window to create a playable GIF layer on the canvas."
---

# Import an MP4 video to animated GIF in Figma with one click

> This tutorial shows how to use the Convertify Figma plugin to import an MP4 video as an animated GIF layer directly in Figma. It demonstrates saving and running the plugin, switching to the Import Video as GIF to Figma option, and dragging an MP4 file into the plugin window to create a playable GIF layer on the canvas.

[← Back to Convertify Video Tutorials](/convertify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/e_PLQv2RY8Y)

## What this video covers

This tutorial shows how to use the Convertify Figma plugin to import an MP4 video as an animated GIF layer directly in Figma. It demonstrates saving and running the plugin, switching to the Import Video as GIF to Figma option, and dragging an MP4 file into the plugin window to create a playable GIF layer on the canvas.

## Things you'll need

- Figma
- Convertify Figma plugin
- An MP4 video file

## Steps

1. [ ] Open a new or existing Figma file, open the actions icon, search for Convertify under the plugins tab, and save or run it.
2. [ ] In Convertify, click the **Import into Figma** tab, then choose **Import Video as GIF to Figma** from the workflow selector.
3. [ ] Drag and drop an MP4 video file into the Convertify window.
4. [ ] Wait for the plugin to convert the video frame by frame into a GIF and insert it automatically into the Figma page.
5. [ ] Select the inserted layer and check the fill preview, where it appears as GIF with a play icon.
6. [ ] Use the GIF layer like a normal Figma layer, including resizing it or playing it back inside Figma.
7. [ ] Keep video clips short; the tutorial notes a maximum video length of 60 seconds, with shorter clips preferred.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=e_PLQv2RY8Y)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-convert-an-mp4-to-gif-in-figma-with-one-click-using-convertify)
- [Read: Importing MP4 video files as animated GIF layers to Figma](/convertify/import/video-to-gif)
- [Next: Import optimized SVG to Figma](/convertify/tutorials/import-optimized-svg-to-figma)
- [Open Convertify in the Figma Community](https://www.figma.com/community/plugin/849159306117999028)

---

---
url: "/convertify/tutorials/import-google-docs-to-figma.md"
description: "The video shows how to use the Convertify Figma plugin to import Google Docs into Figma. It covers setting a Google Doc to “Anyone with the link,” pasting the URL into Convertify, and using options like “Hide Table Borders,” “Merge pages into single frame,” and “Remove Styles and Formatting.”"
---

# Import Google Docs to Figma

> The video shows how to use the Convertify Figma plugin to import Google Docs into Figma. It covers setting a Google Doc to “Anyone with the link,” pasting the URL into Convertify, and using options like “Hide Table Borders,” “Merge pages into single frame,” and “Remove Styles and Formatting.”

[← Back to Convertify Video Tutorials](/convertify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/DuXOipNO3Nk)

## What this video covers

The video shows how to use the Convertify Figma plugin to import Google Docs into Figma. It covers setting a Google Doc to “Anyone with the link,” pasting the URL into Convertify, and using options like “Hide Table Borders,” “Merge pages into single frame,” and “Remove Styles and Formatting.”

## Things you'll need

- A Figma file
- A Google Docs document with sharing set to “Anyone with the link”

## Steps

1. [ ] Open a new Figma file, find Convertify from Resources > Plugins, and run the plugin.
2. [ ] Click the **Import into Figma** tab, then choose **Import Google Doc to Figma** from the workflow selector.
3. [ ] In Google Docs, click “Share,” set “General access” to “Anyone with the link,” and copy the document link.
4. [ ] Paste the Google Docs URL into Convertify and click “Import Google Doc.”
5. [ ] Optionally enable “Hide Table Borders” if the imported doc uses a table for layout.
6. [ ] Use “Merge pages into single frame” to import multiple pages into one Figma frame instead of separate frames.
7. [ ] Use “Remove Styles and Formatting” to import a simplified version based on document structure rather than exact Google Docs styling.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=DuXOipNO3Nk)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-import-google-docs-to-figma-with-one-click-using-convertify)
- [Read: Importing Google Docs to Figma](/convertify/import/google-docs)
- [Next: Import Google Sheets to Figma](/convertify/tutorials/import-google-sheets-to-figma)
- [Open Convertify in the Figma Community](https://www.figma.com/community/plugin/849159306117999028)

---

---
url: "/convertify/tutorials/import-google-sheets-to-figma.md"
description: "This tutorial shows how to use the Convertify Figma plugin to import a Google Sheets table directly into Figma with one click. It also demonstrates how to adjust the imported table’s columns, header styling, image size, and stroke settings after import."
---

# Import Google Sheets to Figma

> This tutorial shows how to use the Convertify Figma plugin to import a Google Sheets table directly into Figma with one click. It also demonstrates how to adjust the imported table’s columns, header styling, image size, and stroke settings after import.

[← Back to Convertify Video Tutorials](/convertify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/cfzEPRPRfCg)

## What this video covers

This tutorial shows how to use the Convertify Figma plugin to import a Google Sheets table directly into Figma with one click. It also demonstrates how to adjust the imported table’s columns, header styling, image size, and stroke settings after import.

## Things you'll need

- A Figma file with the Convertify plugin available
- A Google Sheet with a simple table layout, using the first row as headers
- A shareable Google Sheets link set to Anyone with the link

## Steps

1. [ ] Open the Resources icon in Figma, search for Convertify, and run the plugin or save it for later use.
2. [ ] In Convertify, click the **Import into Figma** tab, then choose **Import Google Sheet Table to Figma** from the workflow selector.
3. [ ] Open the Google Sheet, set General access to Anyone with the link, keep the permission as Viewer, and copy the share link.
4. [ ] Paste the Google Sheets URL into Convertify and click Import Google Sheet.
5. [ ] Wait for the table and any image URLs in the sheet to be downloaded and imported into Figma.
6. [ ] Edit the imported component in Figma by resizing columns, changing text styling, adjusting the image layer in the table header component, and turning table strokes on or off as needed.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=cfzEPRPRfCg)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-import-google-sheets-to-figma-with-one-click-using-convertify)
- [Read: Importing Google Sheets to Figma](/convertify/import/google-sheets)
- [Next: Import Google Docs to Figma](/convertify/tutorials/import-google-docs-to-figma)
- [Open Convertify in the Figma Community](https://www.figma.com/community/plugin/849159306117999028)

---

---
url: "/convertify/tutorials/import-lottie-file-animations-to-figma-with-one-click.md"
description: "This tutorial shows how to import Lottie animations into Figma using the Convertify Figma plugin in one click. It demonstrates selecting the import Lottie as GIF to Figma option, then drag-and-dropping Lottie or JSON files so they become playable GIF fills in Figma designs and prototypes."
---

# Import Lottie file animations to Figma with one click

> This tutorial shows how to import Lottie animations into Figma using the Convertify Figma plugin in one click. It demonstrates selecting the import Lottie as GIF to Figma option, then drag-and-dropping Lottie or JSON files so they become playable GIF fills in Figma designs and prototypes.

[← Back to Convertify Video Tutorials](/convertify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/-x-2psLbbVA)

## What this video covers

This tutorial shows how to import Lottie animations into Figma using the Convertify Figma plugin in one click. It demonstrates selecting the import Lottie as GIF to Figma option, then drag-and-dropping Lottie or JSON files so they become playable GIF fills in Figma designs and prototypes.

## Things you'll need

- A Figma file
- The Convertify Figma plugin
- A Lottie file or Lottie JSON file

## Steps

1. [ ] Open a Figma file and run Convertify from the Figma plugins list.
2. [ ] In Convertify, click the **Import into Figma** tab, then choose **Import Lottie as GIF to Figma** from the workflow selector.
3. [ ] Download a Lottie file or Lottie JSON file from lottiefiles.com, or use your own Lottie file.
4. [ ] Drag and drop the Lottie or JSON file into the plugin’s drop zone.
5. [ ] Wait for Convertify to load and optimize the animation as a GIF fill in Figma.
6. [ ] Preview the imported animation inline in Figma or play it in a prototype.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=-x-2psLbbVA)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-import-lottie-file-animations-to-figma-with-one-click-using-convertify)
- [Read: Importing Lottie animations as animated GIF layers to Figma](/convertify/import/lottie)
- [Next: Import an MP4 video to animated GIF in Figma with one click](/convertify/tutorials/import-an-mp4-video-to-animated-gif-in-figma-with-one-click)
- [Open Convertify in the Figma Community](https://www.figma.com/community/plugin/849159306117999028)

---

---
url: "/convertify/tutorials/import-optimized-svg-to-figma.md"
description: "This video shows how to use the Convertify Figma plugin to import pre-optimized SVG files into Figma. It demonstrates that the imported SVGs keep the same visual appearance while using fewer groups and simplified vector layers for easier editing."
---

# Import optimized SVG to Figma

> This video shows how to use the Convertify Figma plugin to import pre-optimized SVG files into Figma. It demonstrates that the imported SVGs keep the same visual appearance while using fewer groups and simplified vector layers for easier editing.

[← Back to Convertify Video Tutorials](/convertify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/b-ENDkyz4ro)

## What this video covers

This video shows how to use the Convertify Figma plugin to import pre-optimized SVG files into Figma. It demonstrates that the imported SVGs keep the same visual appearance while using fewer groups and simplified vector layers for easier editing.

## Things you'll need

- Figma
- Convertify Figma plugin
- SVG files

## Steps

1. [ ] Open Figma and go to the Resources tab.
2. [ ] Search for Convertify under the Plugins tab and save it to your Figma plugins list.
3. [ ] On the canvas, right-click and go to Plugins > Saved Plugins > Convertify to run the plugin.
4. [ ] Click the **Import into Figma** tab, then choose **Import Optimized SVG to Figma** from the workflow selector.
5. [ ] Drag and drop an SVG file into the plugin to import an optimized version onto the page.
6. [ ] Compare the optimized SVG with a normal SVG import to see the reduced groups and vector layers.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=b-ENDkyz4ro)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-import-optimized-svg-files-to-figma-with-one-click-using-convertify)
- [Read: Importing Optimized SVG to Figma](/convertify/import/svg)
- [Next: Convert Figma to EPS (PostScript)](/convertify/tutorials/convert-figma-to-eps-postscript)
- [Open Convertify in the Figma Community](https://www.figma.com/community/plugin/849159306117999028)

---

---
url: "/convertify/tutorials/import-pdf-to-figma.md"
description: "This video shows how to use the Convertify Figma plugin to import PDF files into Figma with one click. It compares importing PDFs as flat images versus vector layers, and explains the tradeoffs between visual accuracy, speed, and editability."
---

# Import PDF to Figma

> This video shows how to use the Convertify Figma plugin to import PDF files into Figma with one click. It compares importing PDFs as flat images versus vector layers, and explains the tradeoffs between visual accuracy, speed, and editability.

[← Back to Convertify Video Tutorials](/convertify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/7BEJzVi8yeE)

## What this video covers

This video shows how to use the Convertify Figma plugin to import PDF files into Figma with one click. It compares importing PDFs as flat images versus vector layers, and explains the tradeoffs between visual accuracy, speed, and editability.

## Things you'll need

- Figma
- The Convertify Figma plugin
- A PDF file to import

## Steps

1. [ ] Open Figma, click the Resources icon, search for Convertify under the Plugins tab, and run it or save it as a Saved Plugin.
2. [ ] In Convertify, click the **Import into Figma** tab, then choose **Import PDF to Figma** from the workflow selector.
3. [ ] Drag and drop a PDF file into the import box to bring the PDF pages into Figma as images by default.
4. [ ] If you want sharper, editable output, enable **Import Pages as Vector Layers**. Leave **Import Text as Editable Layers** enabled to convert supported PDF text into native Figma text layers, then drag the PDF in again.
5. [ ] Review the imported content. Text stored as text in the PDF will be editable, while text stored as vector outlines or scanned images will remain vectors or images. Fonts that are unavailable in Figma may be substituted.
6. [ ] Use the imported pages or layers in Figma, and manually adjust any masked or clipped content if needed.
7. [ ] Repeat the same process for other PDF types, such as illustration PDFs or multi-page portfolio PDFs.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=7BEJzVi8yeE)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-import-pdf-files-to-figma-with-one-click-using-convertify)
- [Read: Importing PDF to Figma](/convertify/import/pdf)
- [Next: Import Lottie file animations to Figma with one click](/convertify/tutorials/import-lottie-file-animations-to-figma-with-one-click)
- [Open Convertify in the Figma Community](https://www.figma.com/community/plugin/849159306117999028)

---

---
url: "/copydoc/ai-agents.md"
description: "Install the Hypermatic Agent Skill for CopyDoc and give Codex, Claude Code, Grok, and compatible agents the correct copy workflows."
---

# Use CopyDoc with AI agents

> Install the Hypermatic Agent Skill for CopyDoc and give Codex, Claude Code, Grok, and compatible agents the correct copy workflows.

Hypermatic Agent Skills give your AI agent a concise CopyDoc playbook. The CopyDoc skill protects document identifiers and structure while routing text export, editing, localization, and re-import tasks to the correct workflow.

- [Install Hypermatic Agent Skills](https://hypermatic.ai/): Copy the terminal installer or the no-terminal prompt. One install includes all 12 Hypermatic plugin skills.

## Install the CopyDoc skill

1. Open [Hypermatic Agent Skills](https://hypermatic.ai/).
2. Copy the terminal command, or copy the no-terminal prompt into your agent.
3. Confirm that `hypermatic-copydoc` appears in the installed skills.
4. Ask the agent to use the CopyDoc skill for your task.

## What the skill can help with

- Export Figma text to supported spreadsheet or document formats.
- Edit, localize, and re-import copy without breaking layer identifiers.
- Choose the right workflow for bulk updates, localization, or document handoff.
- Compare the imported result with the requested copy changes.

## Keyboard Shortcuts

Use [CopyDoc Keyboard Shortcuts](/copydoc/automation/parameters) for supported repeatable tasks with a hidden plugin panel. The reference includes plain-field examples, selection requirements and a machine-readable registry. Choose a supported action from the installed plugin’s Quick Actions list; results use normal notifications, document changes and saved files.

## Example prompts

- `Use the CopyDoc skill to round-trip this Figma copy through a spreadsheet.`
- `Use the CopyDoc skill to prepare these frames for localization.`
- `Use the CopyDoc skill to validate this re-import before I share the file.`

## Approval and verification

The agent can guide the workflow, or use available Figma and computer-control tools after you approve the requested changes. It must ask before overwriting copy, importing a modified document, or sharing source content externally. If it cannot inspect the updated Figma layers, it should report the import as unverified.

## Trial limits

If CopyDoc reports that its trial allowance is exhausted, the agent should stop retrying and send you to [CopyDoc pricing and purchase options](https://www.hypermatic.com/copydoc/#pro). Complete checkout and license activation yourself, then tell the agent when CopyDoc is active.

## Keep the skill current

Return to [Hypermatic Agent Skills](https://hypermatic.ai/) and use the **Update** command to install the latest stable CopyDoc instructions.

---

---
url: "/copydoc/automation/parameters.md"
description: "Run CopyDoc Quick Actions with simple named inputs and current-selection shortcuts."
---

# CopyDoc Keyboard Shortcuts

> Run CopyDoc Quick Actions with simple named inputs and current-selection shortcuts.

Run common CopyDoc tasks from Figma Quick Actions without opening the plugin panel. Choose a named shortcut below. Use the normal plugin panel for detailed settings and authoring.

## Run a keyboard shortcut

Every shortcut requires a verified valid license or remaining trials. If verification fails or your trials have expired, open the normal plugin panel to activate your license. Opening the panel remains available.

1. Select the layers you want to work with, if the shortcut uses a selection.
2. Open Figma Quick Actions with **Command + /** on Mac or **Ctrl + /** on Windows.
3. Search for the plugin and choose the named shortcut below.
4. Enter the fields shown. Optional fields may be skipped; use Tab to edit them. Run the shortcut and check the result or complete its save dialog.

Creation shortcuts ask for names or dimensions directly. Selected-layer shortcuts use the current selection automatically. These everyday shortcuts do not ask for Target or JSON. Choose **Open CopyDoc** for the normal plugin panel.

| Shortcut | Inputs |
| --- | --- |
| **Export Selected Text (Custom Settings…)** | Format (optional) |

Fixed-choice fields use readable labels. Search by the displayed label or the underlying value; agent inputs continue to use the values shown in the command reference.

## Run from the context menu

Select the intended layers, right-click, and choose **Plugins → CopyDoc** (development plugins appear under **Development**). Choose an action and its format or preset. A preset runs immediately when it needs no required input; finish the save dialog when one appears.

Each preset sets its named option. Omitted compatible options inherit the plugin’s saved settings; an explicit action or option takes priority over conflicting saved behavior. Only explicitly entered fields or the selected menu choice override them for that run. If a setting has never been saved, the normal setting or documented fallback applies. Export overrides are not saved back to your preferences. If a saved format is unavailable as a shortcut, choose a supported format explicitly or use the normal panel. To combine options, choose **Custom Settings…** within the action and enter the parameters. Actions needing text, URLs, names or dimensions still prompt for those required fields. **Open CopyDoc** opens the normal panel.

| Menu choice | Next step |
| --- | --- |
| **Export Selected Text → Use Saved Settings** | Runs immediately |
| **Export Selected Text → CSV Spreadsheet** | Runs immediately |
| **Export Selected Text → Excel Spreadsheet (.xlsx)** | Runs immediately |
| **Export Selected Text → JSON** | Runs immediately |
| **Export Selected Text → Markdown** | Runs immediately |
| **Export Selected Text → XLIFF 1.2** | Runs immediately |
| **Export Selected Text → XLIFF 2.0** | Runs immediately |
| **Export Selected Text → Export Selected Text (Custom Settings…)** | Enter Format (optional) |

## Detailed editing

Use the normal plugin panel for detailed settings, longer content, bulk authoring and browsing components or templates. The shortcut menu contains only the everyday commands listed above.

Keep each pasted field below 150 characters: Figma desktop can truncate pasted input at that boundary. Longer input belongs in the normal panel.

If an older plugin shows Action, Target and Options instead, update it to use these named shortcuts. A Target value is a layer ID or selection, never the name of a new item.

## CopyDoc actions

| Action | What it does | Target |
| --- | --- | --- |
| [`export`](#export) | Export text from selected frames | One or more eligible layers |

### export

Export text from selected frames. Select one or more eligible layers.

| Option | Type | Required / default | Meaning and accepted values |
| --- | --- | --- | --- |
| `format` | string | Fallback: `"csv"` | Text export format. `csv`, `xlsx`, `json`, `markdown`, `xliff1`, `xliff2` |

Nested required fields apply when their parent object or array item is supplied. Omitted optional values use the existing operation’s behavior unless a default is listed.

Choose **Export Selected Text (Custom Settings…)**. Enter these plain fields; no JSON is required:

- **Format**: **CSV Spreadsheet**

Agent host input

```json
{"command":"shortcut-export","parameters":{"format":"csv"}}
```

## Using shortcuts with an agent

Read the machine-readable registry linked below and choose an action offered by the installed plugin’s Quick Actions list. The registry uses Hypermatic option definitions rather than standard JSON Schema: `min` and `max` constrain string length, array length or numeric value according to the field type; nested definitions use `fields` and `item`. Unknown fields are rejected.

The agent needs a host that can invoke Figma Quick Actions and observe the normal plugin result. Parameters do not add a REST or MCP launcher. The expandable examples are input data for a compatible host, not executable API calls; shortcut inputs use plain strings in `parameters`, including numbers and format choices. Never claim that a shortcut ran from its prepared input alone.

Verify the visible outcome: the changed Figma layers, saved export, or published page. Read the normal success/error notification and any partial-export warning. Complete native save dialogs as needed; a download starting does not prove that the file was saved. Users do not need to open developer tools or read a console.

## Troubleshooting

| Symptom | Next step |
| --- | --- |
| Action is unavailable | Update the plugin and check its Quick Actions list; use the normal panel if the action is unavailable. |
| Options are invalid or may have been truncated | Use individual plain field values below 150 characters, with only fields accepted by that shortcut. |
| Target is missing or ineligible | Open the correct page, check the action’s layer requirements, and select the intended layers again. |
| A license or trial error appears | Complete the plugin’s normal activation flow before rerunning. |
| Download was requested but no saved file is visible | Check the native save dialog and download location. Inspect the actual file. |
| A command fails, times out or is cancelled | Check the document and remote destination before retrying; earlier changes or uploads may already exist. |

Commands have a five-minute deadline. Errors do not imply a full rollback. Automatically retrying a create, replacement or upload can duplicate or overwrite work.

[Machine-readable command registry](/automation/parameters/copydoc.json) contains the same action IDs and option definitions.

## Current limits

Shortcuts export selected text. Text replacement, translation imports, spreadsheet synchronization and component population use the normal panel.

## Related documentation

- [Install and run CopyDoc](/copydoc/overview/install)
- [Figma plugin parameters](https://developers.figma.com/docs/plugins/plugin-parameters/)
- [Figma hidden UI options](https://developers.figma.com/docs/plugins/api/properties/figma-showui/)

---

---
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.

## Comic/Manga export settings {#export-comic-manga}

Selecting the **Comic/Manga** option lets you 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.

## Microsoft Word export settings {#export-microsoft-word}

Selecting the **Microsoft Word** option lets you 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` file, 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`, 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.

## E-Book export settings {#export-e-book}

Selecting the **E-Book** option lets you export your Figma frames to an 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 lets you 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` file, 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 walks through 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-nocookie.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 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** (for example, _CopyDoc Figma Plugin_).
5. Set the **Expiration** dropdown option to **90 Days**.
6. Ensure the **File content** dropdown option is set to **Read-only**.
7. Ensure 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 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.

## PDF export settings {#export-pdf}

Selecting the **PDF** option lets you 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` file, 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.

> **Note:** If PDF processing fails, CopyDoc shows the error and clears the progress indicator. Resolve the reported issue before exporting again.

## 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.

## Plain Text export settings {#export-plain-text}

Selecting the **Plain Text** option lets you 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.

## HTML Table export settings {#export-html-table}

Selecting the **HTML Table** option lets you export the text content of your Figma frames to an 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://www.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://www.hypermatic.com/copydoc/#pro).

- **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 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 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 (for example, a “find layer by name” plugin)
- Modify any data in your Figma document (for example, a “rename selected layers” plugin)
- Communicate with any server over the internet (for example, 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, 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 [Figma bug](https://forum.figma.com/t/pdf-export-consistently-missing-elements/3547) that can show purple boxes instead of images. CopyDoc uses Figma's native PDF export, so the same problem can appear in CopyDoc exports.

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](/tinyimage/downsize) 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). 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](/tinyimage/downsize) 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

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.

## More CopyDoc help

- Follow the [CopyDoc quick-start guide](/copydoc/overview/quickstart) to confirm the plugin is installed and configured correctly.
- Use the [CopyDoc text export workflow](/copydoc/update/export) to verify supported update and re-import formats.
- Watch the [Figma to Microsoft Word tutorial](https://www.hypermatic.com/tutorials/how-to-export-figma-to-microsoft-word-docx-files-using-copy-doc/) for a complete document-export example.

---

---
url: "/copydoc/library/airtable.md"
description: "The Content Library feature in CopyDoc lets you 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 lets you 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 walks through how to use Airtable as a Figma text content library using the CopyDoc plugin.
[Embedded media](https://www.youtube-nocookie.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 (for example, `//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 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 need to set a custom label (for example, `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: "Load local Figma string variables into CopyDoc and use them as reusable text snippets."
---

# Integrating with content from Figma Variables

> Load local Figma string variables into CopyDoc and use them as reusable text snippets.

### Video Tutorial: Use Figma Variables as a reusable text content library

This video walks through how to use Figma Variables as a reusable text content library with CopyDoc.
[Embedded media](https://www.youtube-nocookie.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 (for example, `Heading`), then add your text snippet content under the **Value** column (for example, `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 (for example, `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: "Load text snippets from a public Google Sheet and use them to populate Figma text layers with CopyDoc."
---

# Using Google Sheets as a content library

> Load text snippets from a public Google Sheet and use them to populate Figma text layers with CopyDoc.

### Video Tutorial: Use Google Sheets as a Figma text content library

This video walks through how to use Google Sheets as a Figma text content library using the CopyDoc plugin.
[Embedded media](https://www.youtube-nocookie.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 (for example, `//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

CopyDoc needs permission to read the spreadsheet. In Google Sheets, select **Share** and change **Restricted** to **Anyone with the link** before copying the URL.

In CopyDoc, open **Content Library** → **Integrations**, choose **Google Sheets**, then paste the public URL. CopyDoc loads the sheet content automatically.

---

---
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 walks through how to add realistic placeholder text content in Figma using the CopyDoc plugin.
[Embedded media](https://www.youtube-nocookie.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 (for example, names, places etc).

You can either click on the placeholder name (for example, "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 (for example, //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 (for example, find and replace, bulk CSV/XLSX imports, and Google Sheet sync). Just use the trigger name as part of your updated content `for example, 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) (for example, //fake.person.firstName)

### Airlines

- `fake.airline.aircraftType` (for example, "Airbus A320")
- `fake.airline.airline` (for example, "Delta Airlines")
- `fake.airline.airplane` (for example, "Boeing 747")
- `fake.airline.airport` (for example, "John F. Kennedy International Airport")
- `fake.airline.flightNumber` (for example, "DL123")
- `fake.airline.recordLocator` (for example, "ABC123")
- `fake.airline.seat` (for example, "21A")

### Animals

- `fake.animal.bear` (for example, "Grizzly Bear")
- `fake.animal.bird` (for example, "Blue Jay")
- `fake.animal.cat` (for example, "Siamese Cat")
- `fake.animal.cetacean` (for example, "Bottlenose Dolphin")
- `fake.animal.cow` (for example, "Holstein Cow")
- `fake.animal.crocodilia` (for example, "American Alligator")
- `fake.animal.dog` (for example, "Golden Retriever")
- `fake.animal.fish` (for example, "Rainbow Trout")
- `fake.animal.horse` (for example, "Thoroughbred Horse")
- `fake.animal.insect` (for example, "Butterfly")
- `fake.animal.lion` (for example, "African Lion")
- `fake.animal.rabbit` (for example, "Holland Lop")
- `fake.animal.rodent` (for example, "Squirrel")
- `fake.animal.snake` (for example, "Python")
- `fake.animal.type` (for example, "Mammal")

### Colors

- `fake.color.cmyk` (for example, "cmyk(24, 56, 100, 3)")
- `fake.color.hsl` (for example, "hsl(187, 72%, 34%)")
- `fake.color.human` (for example, "DarkGreen")
- `fake.color.hwb` (for example, "hwb(333, 14%, 0%)")
- `fake.color.lab` (for example, "lab(57.54, -70.17, 56.39)")
- `fake.color.lch` (for example, "lch(57.54, 92.94, 146.21)")
- `fake.color.rgb` (for example, "rgb(32, 178, 170)")
- `fake.color.space` (for example, "rgb(255, 99, 71)")

### Commerce

- `fake.commerce.department` (for example, "Electronics")
- `fake.commerce.price` (for example, "$349.99")
- `fake.commerce.product` (for example, "Smartphone")
- `fake.commerce.productAdjective` (for example, "Sleek")
- `fake.commerce.productDescription` (for example, "This smartphone features a high-resolution display and a powerful processor.")
- `fake.commerce.productMaterial` (for example, "Leather")
- `fake.commerce.productName` (for example, "Wireless Headphones")

### Company

- `fake.company.name` (for example, "Acme Corporation")
- `fake.company.buzzAdjective` (for example, "Dynamic")
- `fake.company.buzzNoun` (for example, "Solutions")
- `fake.company.buzzPhrase` (for example, "Empowering Success")
- `fake.company.buzzVerb` (for example, "Transform")
- `fake.company.catchPhrase` (for example, "Innovate Your Tomorrow")
- `fake.company.catchPhraseAdjective` (for example, "Revolutionary")
- `fake.company.catchPhraseDescriptor` (for example, "Cutting-edge")
- `fake.company.catchPhraseNoun` (for example, "Solutions")

### Database

- `fake.database.collation` (for example, "utf8_general_ci")
- `fake.database.column` (for example, "email")
- `fake.database.engine` (for example, "InnoDB")
- `fake.database.mongodbObjectId` (for example, "5f16bf99ae900e001f8b9bb5")
- `fake.database.type` (for example, "NoSQL")

### Date
- `fake.date.anytime` (for example, "Sat Apr 29 2023 01:25:14 GMT+0000 (Coordinated Universal Time)")
- `fake.date.birthdate` (for example, "1995-09-15")
- `fake.date.future` (for example, "2025-06-28")
- `fake.date.month` (for example, "June")
- `fake.date.past` (for example, "2002-03-10")
- `fake.date.recent` (for example, "Sun Jul 09 2023 08:18:43 GMT+0000 (Coordinated Universal Time)")
- `fake.date.soon` (for example, "2023-07-26")
- `fake.date.weekday` (for example, "Tuesday")

### Finance
- `fake.finance.accountName` (for example, "John Doe")
- `fake.finance.accountNumber` (for example, "98765432")
- `fake.finance.amount` (for example, "$1234.56")
- `fake.finance.bic` (for example, "GENODEF1M04")
- `fake.finance.bitcoinAddress` (for example, "1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2")
- `fake.finance.creditCardCVV` (for example, "123")
- `fake.finance.creditCardIssuer` (for example, "Visa")
- `fake.finance.creditCardNumber` (for example, "4929272040382633")
- `fake.finance.currencyCode` (for example, "USD")
- `fake.finance.currencyName` (for example, "Euro")
- `fake.finance.currencySymbol` (for example, "$")
- `fake.finance.ethereumAddress` (for example, "0x742d35Cc6634C0532925a3b844Bc454e4438f44e")
- `fake.finance.iban` (for example, "DE89370400440532013000")
- `fake.finance.litecoinAddress` (for example, "LhWZkm3ZR1vuztrbNnFo4VLrqfUEKGZWEd")
- `fake.finance.maskedNumber` (for example, "************1234")
- `fake.finance.pin` (for example, "1234")
- `fake.finance.routingNumber` (for example, "021000021")
- `fake.finance.transactionDescription` (for example, "Payment for services")
- `fake.finance.transactionType` (for example, "Credit")

### Git
- `fake.git.branch` (for example, "feature/add-new-feature")
- `fake.git.commitDate` (for example, "2023-07-24T10:15:37")
- `fake.git.commitEntry` (for example, "Merge pull request #42")
- `fake.git.commitMessage` (for example, "Fix issue with authentication")
- `fake.git.commitSha` (for example, "d86fe8f1e64870ecf89b961631f8c63eade26ca0")

### Hacker
- `fake.hacker.abbreviation` (for example, "SQL")
- `fake.hacker.adjective` (for example, "cyber")
- `fake.hacker.ingverb` (for example, "hacking")
- `fake.hacker.noun` (for example, "firewall")
- `fake.hacker.phrase` (for example, "Encrypt everything!")
- `fake.hacker.verb` (for example, "hack")

### Internet
- `fake.internet.color` (for example, "#ff5733")
- `fake.internet.displayName` (for example, "JohnDoe87")
- `fake.internet.domainName` (for example, "example.com")
- `fake.internet.domainSuffix` (for example, ".net")
- `fake.internet.domainWord` (for example, "web")
- `fake.internet.email` (for example, "john.doe@example.com")
- `fake.internet.emoji` (for example, "😄")
- `fake.internet.exampleEmail` (for example, "jane.doe@example.com")
- `fake.internet.httpMethod` (for example, "GET")
- `fake.internet.httpStatusCode` (for example, "200")
- `fake.internet.ip` (for example, "192.168.0.1")
- `fake.internet.ipv4` (for example, "192.0.2.1")
- `fake.internet.ipv6` (for example, "2001:0db8:85a3:0000:0000:8a2e:0370:7334")
- `fake.internet.mac` (for example, "00:1a:2b:3c:4d:5e")
- `fake.internet.password` (for example, "P@ssw0rd123")
- `fake.internet.port` (for example, "8080")
- `fake.internet.protocol` (for example, "https")
- `fake.internet.url` (for example, "https://www.example.com")
- `fake.internet.userAgent` (for example, "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` (for example, "johndoe123")

### Location
- `fake.location.buildingNumber` (for example, "123")
- `fake.location.cardinalDirection` (for example, "North")
- `fake.location.city` (for example, "New York")
- `fake.location.country` (for example, "United States")
- `fake.location.countryCode` (for example, "US")
- `fake.location.county` (for example, "Los Angeles County")
- `fake.location.direction` (for example, "Southwest")
- `fake.location.latitude` (for example, "40.7128")
- `fake.location.longitude` (for example, "-74.0060")
- `fake.location.nearbyGPSCoordinate` (for example, "40.7128, -74.0060")
- `fake.location.ordinalDirection` (for example, "Northeast")
- `fake.location.secondaryAddress` (for example, "Apt. 2B")
- `fake.location.state` (for example, "California")
- `fake.location.street` (for example, "Main Street")
- `fake.location.streetAddress` (for example, "123 Main Street")
- `fake.location.timeZone` (for example, "America/New_York")
- `fake.location.zipCode` (for example, "10001")

### Lorem
- `fake.lorem.lines` (for example, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.")
- `fake.lorem.paragraph` (for example, "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed euismod ligula a dui tincidunt, sit amet euismod metus tristique.")
- `fake.lorem.paragraphs` (for example, "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` (for example, "Lorem ipsum dolor sit amet.")
- `fake.lorem.sentences` (for example, "Lorem ipsum dolor sit amet. Consectetur adipiscing elit. Sed euismod ligula a dui tincidunt.")
- `fake.lorem.slug` (for example, "lorem-ipsum-dolor")
- `fake.lorem.text` (for example, "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` (for example, "Lorem")
- `fake.lorem.words` (for example, "Lorem ipsum dolor sit amet")

### Music
- `fake.music.genre` (for example, "Rock")
- `fake.music.songName` (for example, "Bohemian Rhapsody")

### Number
- `fake.number.bigInt` (for example, "12345678901234567890")
- `fake.number.binary` (for example, "10101010")
- `fake.number.float` (for example, "3.14")
- `fake.number.hex` (for example, "1a4")
- `fake.number.int` (for example, "42")
- `fake.number.octal` (for example, "52")

### Person
- `fake.person.bio` (for example, "software engineer with a passion for technology and coding.")
- `fake.person.firstName` (for example, "John")
- `fake.person.fullName` (for example, "John Doe")
- `fake.person.gender` (for example, "Male")
- `fake.person.jobArea` (for example, "Information Technology")
- `fake.person.jobDescriptor` (for example, "Senior")
- `fake.person.jobTitle` (for example, "Software Engineer")
- `fake.person.jobType` (for example, "Full-Time")
- `fake.person.lastName` (for example, "Doe")
- `fake.person.middleName` (for example, "Michael")
- `fake.person.prefix` (for example, "Mr.")
- `fake.person.sex` (for example, "Male")
- `fake.person.sexType` (for example, "M")
- `fake.person.suffix` (for example, "Jr.")
- `fake.person.zodiacSign` (for example, "Virgo")

### Phone
- `fake.phone.number` (for example, "+1 (555) 123-4567")
- `fake.phone.imei` (for example, "351756052471134")

### String
- `fake.string.binary` (for example, "10101100")
- `fake.string.hexadecimal` (for example, "1a4f")
- `fake.string.alpha` (for example, "abcXYZ")
- `fake.string.alphanumeric` (for example, "abcXYZ123")
- `fake.string.nanoid` (for example, "a1B2c3D4")
- `fake.string.numeric` (for example, "123456")
- `fake.string.octal` (for example, "147")
- `fake.string.sample` (for example, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.")
- `fake.string.symbol` (for example, "!@#$%^&*")
- `fake.string.uuid` (for example, "6ba7b810-9dad-11d1-80b4-00c04fd430c8")

### System
- `fake.system.commonFileExt` (for example, "txt")
- `fake.system.commonFileName` (for example, "data")
- `fake.system.commonFileType` (for example, "text")
- `fake.system.cron` (for example, "0 * * * *")
- `fake.system.directoryPath` (for example, "/home/user/Documents")
- `fake.system.fileExt` (for example, "js")
- `fake.system.fileName` (for example, "script")
- `fake.system.filePath` (for example, "/home/user/Documents/script.js")
- `fake.system.fileType` (for example, "application/javascript")
- `fake.system.mimeType` (for example, "text/plain")
- `fake.system.networkInterface` (for example, "eth0")
- `fake.system.semver` (for example, "2.1.0")

### Vehicle
- `fake.vehicle.bicycle` (for example, "Mountain Bike")
- `fake.vehicle.color` (for example, "Red")
- `fake.vehicle.fuel` (for example, "Gasoline")
- `fake.vehicle.manufacturer` (for example, "Toyota")
- `fake.vehicle.model` (for example, "Camry")
- `fake.vehicle.type` (for example, "Sedan")
- `fake.vehicle.vehicle` (for example, "Toyota Camry")
- `fake.vehicle.vin` (for example, "1HGCM82633A123456")
- `fake.vehicle.vrm` (for example, "ABC123")

### Word
- `fake.word.adjective` (for example, "beautiful")
- `fake.word.adverb` (for example, "quickly")
- `fake.word.conjunction` (for example, "and")
- `fake.word.interjection` (for example, "wow")
- `fake.word.noun` (for example, "house")
- `fake.word.preposition` (for example, "under")
- `fake.word.words` (for example, "Lorem ipsum")
- `fake.word.sample` (for example, "Lorem ipsum dolor sit amet")
- `fake.word.verb` (for example, "run")

---

---
url: "/copydoc/library/snippets.md"
description: "Create reusable text snippets in CopyDoc's built-in Content Library and insert them into Figma designs."
---

# Using the Content Library

> Create reusable text snippets in CopyDoc's built-in Content Library and insert them into Figma designs.

### Video Tutorial: Create a reusable text content library in Figma

This video walks through how to create a reusable text content library in Figma with CopyDoc.
[Embedded media](https://www.youtube-nocookie.com/embed/x-gNQqwIOLw)
### Video Tutorial: Add text expander content snippet shortcuts in Figma

This video walks through how to add text expander content snippet shortcuts in Figma using the CopyDoc plugin.
[Embedded media](https://www.youtube-nocookie.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 (for example, `//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 (for example, `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 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" (for example, `//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 (for example, find and replace, bulk CSV/XLSX imports, and Google Sheet sync). Just use the trigger name as part of your updated content `for example, 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 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 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 (for example, `//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-nocookie.com/embed/BJ03GUCHTjg)

### Video Tutorial: Translate Figma text layers with XLIFF files

This video walks through how to translate Figma text layers with XLIFF files using the CopyDoc plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/LHIOqns7QU8)

## Looking for the XLIFF workflow?

If you searched for **Localize Figma Text**, **Localise Figma Text**, **Export/Import XLIFF**, or **XLF**, this is the CopyDoc localization workflow you need.

In CopyDoc, click **Localize Frames** to open the localization flow. From there, choose **Export/Import XLIFF** when you want to export or import translation files instead of using the spreadsheet-based `.xlsx` workflow.

For a step-by-step XLIFF example, see [Translate Figma text layers with XLIFF files](/copydoc/tutorials/translate-figma-text-layers-with-xliff-files).

## 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 (for example, 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 (for example, "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 (for example, 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 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 (for example, metadata content like "approved", "status", "reviewer" etc), you can do this by prepending a triple underscore prefix before any column header name (for example, `___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 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.

### Set the imported frame order

After CopyDoc loads your spreadsheet, drag the frames in the import preview into your preferred order before clicking **Localize Frames**. When **Keep Frame Positions** is turned off, CopyDoc uses this order to arrange the original and localized frames from top to bottom on the new page.

> **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 lets you 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, for example, `**Text to bold**`
- You can specify *Italic* text by using single underscores around the text, for example, `_Italic Text_`
- You can specify ***Bold Italic*** text by using double asterisks and one underscore around the text, for example, `**_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.

## Related CopyDoc guides

- Watch the [Figma localization tutorial](/copydoc/tutorials/the-simplest-way-to-localize-any-figma-designs) for a complete example.
- Use the [CopyDoc text export workflow](/copydoc/update/export) for non-localized spreadsheet and document updates.
- Explore the [CopyDoc Figma plugin](https://www.hypermatic.com/copydoc/) for localization, spreadsheet sync, and document exports.

---

---
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 Text & Image Sync](https://www.figma.com/community/plugin/900893606648879767/copydoc-text-kit)."
---

# Install and run CopyDoc Text & Image Sync

> Ensure you're logged into your Figma account, then follow the steps below to install and run the [CopyDoc Text & Image Sync](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-nocookie.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 Text & Image Sync** 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-copydoc-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 Text & Image Sync** 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 a 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 of all of the Figma plugin features.

> **Warning:** 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.

> **Info:** If you ever need to use a different license key at any time (for example, 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: "Sync text and images from spreadsheets, generate repeating Figma layouts, and manage copy and translations with CopyDoc."
---

# Get started with CopyDoc Text & Image Sync

> Sync text and images from spreadsheets, generate repeating Figma layouts, and manage copy and translations with CopyDoc.

**CopyDoc Text & Image Sync** connects spreadsheet content to your Figma designs. Sync text and images, choose component variants, and use **Auto Repeat** to generate a populated layout for each row. You can also export copy for review, bulk-edit text, and localize designs.

## Install and 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

## Sync text, images, and layouts

Start by [naming your Figma layers](/copydoc/sync/structure-figma) to match your spreadsheet columns, then choose the workflow you need.

  - [Sync spreadsheet content](/copydoc/sync/structure-spreadsheet.md): Populate designs from Google Sheets, Airtable, CSV, or Excel
  - [Sync images](/copydoc/sync/images.md): Fill image layers using image URLs in your spreadsheet
  - [Repeat layouts from rows](/copydoc/sync/structure-spreadsheet#auto-repeat-a-single-figma-layer-with-your-spreadsheet-rows): Generate cards and design variations with Auto Repeat
  - [Set component variants](/copydoc/sync/variants.md): Choose component variants from spreadsheet values

## Edit, export, and localize copy

  - [Export and bulk-edit text](/copydoc/update/export.md): Export text for review, then import your edits
  - [Localize your designs](/copydoc/localization/export.md): Create translated versions using a spreadsheet
  - [CopyDoc Video Tutorials](/copydoc/tutorials.md): Full step-by-step video walkthroughs

## Frequently asked questions

- [Troubleshooting CopyDoc](/copydoc/faq/troubleshooting.md): Common 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

- Sync text and images from Google Sheets, Airtable, or XLSX/CSV files.
- Generate a populated layout for each spreadsheet row with Auto Repeat, including instances from a main component.
- Set component variants, apply layer styles, and show or hide layers using spreadsheet values.
- Import and export local files on your computer, with optional online integrations.
- Export Figma text layers to XLSX, DOCX, CSV, Markdown and JSON files directly to your computer (or to Airtable).
- Bulk update Figma text layers through XLSX, DOCX, CSV, Markdown, JSON, or Airtable.
- Create a custom content library inside your Figma file (with Text Expander shortcuts), with optional Google Sheets and Airtable integration.
- Automatically generate Figma data tables from a Google Sheet or XLSX/CSV.
- Localize Figma designs with OpenAI, Claude, Gemini, or XLSX file export and 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 walks through how to sync Airtable spreadsheet content to Figma using the CopyDoc plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/SFAjIzF6P9o)

### Video Tutorial: Auto repeat and sync Figma layers from a spreadsheet

This video walks through how to automatically repeat and sync Figma layers from a spreadsheet using the CopyDoc plugin.
[Embedded media](https://www.youtube-nocookie.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 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`

Set the token's **Scopes** to `data.records:read` and `schema.bases:read`, and give it access to the base you want to sync. The schema scope lets CopyDoc recognise columns that are blank in every record, so matching text layers can be cleared. A token with only `data.records:read` can still sync returned columns, but entirely blank columns may leave the template text unchanged.

### Custom Airtable Label

You need to set a custom label (for example, `My Airtable Snippets`) to help you identify your Airtable URL when you use it.

Once you've added those fields, click **Save New Airtable +** to load the content preview and save the view in your Figma file. You can save multiple views of the same table with different labels. Adding the same view again selects the existing saved entry.

### Blank fields

With `schema.bases:read` enabled, empty cells clear matching text layers even when the whole column is blank in the selected view. Layers that do not match a table column keep their existing content. CopyDoc loads all record pages in the selected view.

If CopyDoc cannot read the field list, it shows a message and continues using the fields returned with the records. Add the schema scope to your token if requested, then reload the content preview. If the field list is temporarily unavailable, reload to retry.

A label such as `MODERATED BY` will still appear if its Airtable cell contains that text. Clear that cell too if you want the label removed.

> **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.

Use this to turn one card, catalog item, or campaign layout into a populated design for each spreadsheet row. Text and image layers inside the design use the matching spreadsheet columns.

If you select a main component, CopyDoc creates an instance for each row. Selecting an existing instance duplicates that instance; selecting a frame duplicates the frame.

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)

To name each duplicated Figma layer from your spreadsheet, match the selected template layer's name to a column header. CopyDoc uses that column's value from each row as the new layer name.

A single leading `#` is optional: a layer named `#Title` can match a `Title` column, and a layer named `Title` can match a `#Title` column. If both headers exist, the exact match takes priority, including when its value is blank. Capitalization and spaces must still match.

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 (for example, `My Frame Layer (Row 3)`) instead.

---

---
url: "/copydoc/sync/charts.md"
description: "If you want 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 want 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 walks through how to sync chart data to Figma from a spreadsheet using the CopyDoc plugin.
[Embedded media](https://www.youtube-nocookie.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 your chart type, then clicking 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 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: "Connect a public Google Sheet to CopyDoc and sync spreadsheet content into matching Figma layers."
---

# Syncing Google Sheets content to Figma

> Connect a public Google Sheet to CopyDoc and sync spreadsheet content into matching Figma layers.

### Video Tutorial: Sync Google Sheets spreadsheet content to Figma

This video walks through how to sync content from a Google Sheets spreadsheet to your Figma designs using the CopyDoc plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/J67CDH5XkWk)

### Video Tutorial: Auto repeat and sync Figma layers from a spreadsheet

This video walks through how to automatically repeat and sync Figma layers from a spreadsheet using the CopyDoc plugin.
[Embedded media](https://www.youtube-nocookie.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 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

CopyDoc needs permission to read the spreadsheet. In Google Sheets, select **Share** and change **Restricted** to **Anyone with the link** before copying the URL.

> **Info:** If company policy prevents link sharing, download the Google Sheet as an Excel (`.xlsx`) file. You can [drag and drop that file into CopyDoc](/copydoc/sync/spreadsheet-file) and use the same sync workflow without making the sheet public.

### 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.

Use this to turn one card, catalog item, or campaign layout into a populated design for each spreadsheet row. Text and image layers inside the design use the matching spreadsheet columns.

If you select a main component, CopyDoc creates an instance for each row. Selecting an existing instance duplicates that instance; selecting a frame duplicates the frame.

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)

To name each duplicated Figma layer from your spreadsheet, match the selected template layer's name to a column header. CopyDoc uses that column's value from each row as the new layer name.

A single leading `#` is optional: a layer named `#Title` can match a `Title` column, and a layer named `Title` can match a `#Title` column. If both headers exist, the exact match takes priority, including when its value is blank. Capitalization and spaces must still match.

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 (for example, `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 want 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 want 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 want 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 (for example, **#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 walks through how to sync an images folder with Figma layers using a spreadsheet with the CopyDoc plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/4JV01bi8nOw)

### Video Tutorial: Sync SVG icons from a spreadsheet to your Figma layers

This video walks through how to sync SVG icons from a spreadsheet to your Figma layers with the CopyDoc plugin.
[Embedded media](https://www.youtube-nocookie.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 "æøå" (for example, `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**. 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.

Use this to turn one card, catalog item, or campaign layout into a populated design for each spreadsheet row. Text and image layers inside the design use the matching spreadsheet columns.

If you select a main component, CopyDoc creates an instance for each row. Selecting an existing instance duplicates that instance; selecting a frame duplicates the frame.

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)

To name each duplicated Figma layer from your spreadsheet, match the selected template layer's name to a column header. CopyDoc uses that column's value from each row as the new layer name.

A single leading `#` is optional: a layer named `#Title` can match a `Title` column, and a layer named `Title` can match a `#Title` column. If both headers exist, the exact match takes priority, including when its value is blank. Capitalization and spaces must still match.

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 (for example, `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 walks through how to sync merge tags in Figma text layers from a spreadsheet using the CopyDoc plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/odONMaXerQQ)
### Video Tutorial: Sync content with advanced merge tags in spreadsheet cells

This video walks through 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-nocookie.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 walks through how to rename Figma layers in bulk from a spreadsheet using the CopyDoc plugin.
[Embedded media](https://www.youtube-nocookie.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 (for example, "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 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 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 walks through how to sync content from an Excel spreadsheet to your Figma designs using the CopyDoc plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/7YmbMj8LGXI)

### Video Tutorial: Sync CSV spreadsheet content to Figma

This video walks through how to sync content from a CSV spreadsheet to your Figma designs using the CopyDoc plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/5qdxq629A48)

### Video Tutorial: Auto repeat and sync Figma layers from a spreadsheet

This video walks through how to automatically repeat and sync Figma layers from a spreadsheet using the CopyDoc plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/_1MHyfYNHFQ)

### Video Tutorial: Sync a folder of images to Figma layers via a spreadsheet

This video walks through how to sync an images folder with Figma layers using a spreadsheet with the CopyDoc plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/4JV01bi8nOw)

### Video Tutorial: Sync SVG icons from a spreadsheet to your Figma layers

This video walks through how to sync SVG icons from a spreadsheet to your Figma layers with the CopyDoc plugin.
[Embedded media](https://www.youtube-nocookie.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 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.

Use this to turn one card, catalog item, or campaign layout into a populated design for each spreadsheet row. Text and image layers inside the design use the matching spreadsheet columns.

If you select a main component, CopyDoc creates an instance for each row. Selecting an existing instance duplicates that instance; selecting a frame duplicates the frame.

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)

To name each duplicated Figma layer from your spreadsheet, match the selected template layer's name to a column header. CopyDoc uses that column's value from each row as the new layer name.

A single leading `#` is optional: a layer named `#Title` can match a `Title` column, and a layer named `Title` can match a `#Title` column. If both headers exist, the exact match takes priority, including when its value is blank. Capitalization and spaces must still match.

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 (for example, `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 (for example, **#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 want to rename any non-text Figma layers, you can use the layer name (for example, **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.

Use this to turn one card, catalog item, or campaign layout into a populated design for each spreadsheet row. Text and image layers inside the design use the matching spreadsheet columns.

If you select a main component, CopyDoc creates an instance for each row. Selecting an existing instance duplicates that instance; selecting a frame duplicates the frame.

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)

To name each duplicated Figma layer from your spreadsheet, match the selected template layer's name to a column header. CopyDoc uses that column's value from each row as the new layer name.

A single leading `#` is optional: a layer named `#Title` can match a `Title` column, and a layer named `Title` can match a `#Title` column. If both headers exist, the exact match takes priority, including when its value is blank. Capitalization and spaces must still match.

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 (for example, `My Frame Layer (Row 3)`) instead.

---

---
url: "/copydoc/sync/structure-spreadsheet.md"
description: "The **Sync Spreadsheet Content** feature in CopyDoc lets you 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 lets you 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 walks through how to automatically repeat and sync Figma layers from a spreadsheet using the CopyDoc plugin.
[Embedded media](https://www.youtube-nocookie.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.

Use this to turn one card, catalog item, or campaign layout into a populated design for each spreadsheet row. Text and image layers inside the design use the matching spreadsheet columns.

If you select a main component, CopyDoc creates an instance for each row. Selecting an existing instance duplicates that instance; selecting a frame duplicates the frame.

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)

To name each duplicated Figma layer from your spreadsheet, match the selected template layer's name to a column header. CopyDoc uses that column's value from each row as the new layer name.

A single leading `#` is optional: a layer named `#Title` can match a `Title` column, and a layer named `Title` can match a `#Title` column. If both headers exist, the exact match takes priority, including when its value is blank. Capitalization and spaces must still match.

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 (for example, `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.

Your Figma text layer can start as regular text; you do not need to pre-format a bold or italic sample. Use a font family with the matching bold, italic or bold italic variant available in Figma. The spreadsheet preview uses browser fonts, so its appearance alone does not confirm that your Figma font has those variants.

- You can specify **Bold** text by using double asterisks `**Snippet text to bold**` or double underscores `__Snippet text to bold__`
- You can specify *Italic* text by using single asterisks `*Italic Snippet Text*` or single underscores `_Italic Snippet Text_`
- You can specify ***Bold Italic*** text by using triple asterisks `***Bold Italic Snippet Text***` or triple underscores `___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 walks through how to style Figma layers from a spreadsheet with CSS style sync using the CopyDoc plugin.
[Embedded media](https://www.youtube-nocookie.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:

for example, `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 (for example, `color: #CCCCCC;`)
- font-size (for example, `font-size: 40px;`)
- line-height (for example, `line-height: 48px;`)
- font-family (for example, `font-family: Arial;`)
- font-weight (for example, `font-weight: bold;`)
- font-style (for example, `font-style: italic;`)
- text-align (for example, `text-align: center;`)
- text-transform (for example, `text-transform: uppercase;`)
- vertical-align (for example, `vertical-align: middle;`)

> **Tip:** **Applying text styles to all child layers**. If you apply any Text Layer CSS styles (for example, `font-size: 30px`) to a layer that contains child layers (for example, 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 (for example, `width: 100px;`)
- height (for example, `height: 100px;`)
- opacity (for example, `opacity: 0.5;`)
- background-color (for example, `background-color: #CCCCCC;`)
- border (for example, `border: 1px solid #CCCCCC;`)
- border-radius (for example, `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 lets you 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 because each function applies 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.

Use this to turn one card, catalog item, or campaign layout into a populated design for each spreadsheet row. Text and image layers inside the design use the matching spreadsheet columns.

If you select a main component, CopyDoc creates an instance for each row. Selecting an existing instance duplicates that instance; selecting a frame duplicates the frame.

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)

To name each duplicated Figma layer from your spreadsheet, match the selected template layer's name to a column header. CopyDoc uses that column's value from each row as the new layer name.

A single leading `#` is optional: a layer named `#Title` can match a `Title` column, and a layer named `Title` can match a `#Title` column. If both headers exist, the exact match takes priority, including when its value is blank. Capitalization and spaces must still match.

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 (for example, `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 lets you 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 lets you 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.

Your Figma text layer can start as regular text; you do not need to pre-format a bold or italic sample. Use a font family with the matching bold, italic or bold italic variant available in Figma. The spreadsheet preview uses browser fonts, so its appearance alone does not confirm that your Figma font has those variants.

- You can specify **Bold** text by using double asterisks `**Snippet text to bold**` or double underscores `__Snippet text to bold__`
- You can specify *Italic* text by using single asterisks `*Italic Snippet Text*` or single underscores `_Italic Snippet Text_`
- You can specify ***Bold Italic*** text by using triple asterisks `***Bold Italic Snippet Text***` or triple underscores `___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 walks through how to sync component variants in Figma using a spreadsheet with the CopyDoc plugin.
[Embedded media](https://www.youtube-nocookie.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 (for example, **#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 (for example, 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 (for example, 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 (for example, #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 (for example, **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 your Figma variant layer in the sidebar, which will have an **=** equals sign (for example, **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 (for example, **#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: "Learn how to import, export, sync, translate, and bulk edit Figma text and layer content with spreadsheets, documents, and CopyDoc."
---

# CopyDoc Video Tutorials

> Learn how to import, export, sync, translate, and bulk edit Figma text and layer content with spreadsheets, documents, and CopyDoc.

## Export/Re-Import Text

- [Import/export Figma text layers with CSV files](/copydoc/tutorials/import-export-figma-text-layers-with-csv-files)
- [Export & Re-Import Figma text content via Airtable sync](/copydoc/tutorials/export-and-re-import-figma-text-content-via-airtable-sync)
- [Import/export Figma text layers with JSON files](/copydoc/tutorials/import-export-figma-text-layers-with-json-files)
- [Export and re-import selected text layers in Figma](/copydoc/tutorials/export-and-re-import-selected-text-layers-in-figma)
- [Update Figma text layer content with Markdown files](/copydoc/tutorials/update-figma-text-layer-content-with-markdown-files)
- [Update Figma text from Microsoft Word with DOCX files](/copydoc/tutorials/update-figma-text-from-microsoft-word-with-docx-files)
- [Update Figma text from Google Docs with DOCX files](/copydoc/tutorials/update-figma-text-from-google-docs-with-docx-files)
- [Update Figma text from Office 365 with DOCX files](/copydoc/tutorials/update-figma-text-from-office-365-with-docx-files)

## Sync Spreadsheets

- [Auto repeat and sync Figma layers from a spreadsheet](/copydoc/tutorials/auto-repeat-and-sync-figma-layers-from-a-spreadsheet)
- [Sync XLSX Excel spreadsheet content to Figma](/copydoc/tutorials/sync-xlsx-excel-spreadsheet-content-to-figma)
- [Sync CSV spreadsheet content to Figma](/copydoc/tutorials/sync-csv-spreadsheet-content-to-figma)
- [Sync Google Sheets spreadsheet content to Figma](/copydoc/tutorials/sync-google-sheets-spreadsheet-content-to-figma)
- [Sync Airtable spreadsheet content to Figma](/copydoc/tutorials/sync-airtable-spreadsheet-content-to-figma)
- [Sync a folder of images to Figma layers via a spreadsheet](/copydoc/tutorials/sync-a-folder-of-images-to-figma-layers-via-a-spreadsheet)
- [Sync component variants in Figma using a spreadsheet](/copydoc/tutorials/sync-component-variants-in-figma-using-a-spreadsheet)
- [Sync merge tags in Figma text layers from a spreadsheet](/copydoc/tutorials/sync-merge-tags-in-figma-text-layers-from-a-spreadsheet)
- [Sync content with advanced merge tags in spreadsheet cells](/copydoc/tutorials/sync-content-with-advanced-merge-tags-in-spreadsheet-cells)
- [Sync chart data to Figma from a spreadsheet](/copydoc/tutorials/sync-chart-data-to-figma-from-a-spreadsheet)
- [Sync SVG icons from a spreadsheet to your Figma layers](/copydoc/tutorials/sync-svg-icons-from-a-spreadsheet-to-your-figma-layers)
- [Style Figma layers from a spreadsheet with CSS style sync](/copydoc/tutorials/style-figma-layers-from-a-spreadsheet-with-css-style-sync)
- [Rename Figma layers in bulk from a spreadsheet](/copydoc/tutorials/rename-figma-layers-in-bulk-from-a-spreadsheet)

## Localize Text

- [Translate Figma text layers with XLIFF files](/copydoc/tutorials/translate-figma-text-layers-with-xliff-files)
- [The simplest way to localize any Figma designs](/copydoc/tutorials/the-simplest-way-to-localize-any-figma-designs)

## Content Library

- [Create a reusable text content library in Figma](/copydoc/tutorials/create-a-re-useable-text-content-library-in-figma)
- [Use Google Sheets as a Figma text content library](/copydoc/tutorials/use-google-sheets-as-a-figma-text-content-library)
- [Use Airtable as a Figma text content library](/copydoc/tutorials/use-airtable-as-a-figma-text-content-library)
- [Use Figma Variables as a reusable text content library](/copydoc/tutorials/use-figma-variables-as-a-re-useable-text-content-library)
- [Add realistic placeholder text content in Figma](/copydoc/tutorials/add-realistic-placeholder-text-content-in-figma)
- [Add text expander content snippet shortcuts in Figma](/copydoc/tutorials/add-text-expander-content-snippet-shortcuts-in-figma)

## Export Frames

- [Export Figma to Microsoft Word .docx files](/copydoc/tutorials/export-figma-to-microsoft-word-docx-files)
- [Export Figma to Microsoft Excel .xlsx files](/copydoc/tutorials/export-figma-to-microsoft-excel-xlsx-files)

## Find & Replace

- [Find and replace Figma text content](/copydoc/tutorials/find-and-replace-figma-text-content)

## Spell Check

- [Spell check Figma text layers in your designs](/copydoc/tutorials/spell-check-figma-text-layers-in-your-designs)

## Figma Comments

- [Export comments from Figma files](/copydoc/tutorials/export-comments-from-figma-files)

## More video tutorials

- [How to count words and characters in Figma text layers using CopyDoc](/copydoc/tutorials/how-to-count-words-and-characters-in-figma-text-layers-using-copydoc)

---

---
url: "/copydoc/tutorials/add-realistic-placeholder-text-content-in-figma.md"
description: "This video shows how to use the CopyDoc Figma plugin to add realistic placeholder content to text layers in Figma. It covers the Content Library, placeholder categories, custom text snippets with placeholders, and locale-based localization for names and other content."
---

# Add realistic placeholder text content in Figma

> This video shows how to use the CopyDoc Figma plugin to add realistic placeholder content to text layers in Figma. It covers the Content Library, placeholder categories, custom text snippets with placeholders, and locale-based localization for names and other content.

[← Back to CopyDoc Video Tutorials](/copydoc/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/NghMg69P2hA)

## What this video covers

This video shows how to use the CopyDoc Figma plugin to add realistic placeholder content to text layers in Figma. It covers the Content Library, placeholder categories, custom text snippets with placeholders, and locale-based localization for names and other content.

## Things you'll need

- A Figma file
- The CopyDoc Figma plugin

## Steps

1. [ ] Open your Figma file, find CopyDoc from the resources icon, and run or save the plugin.
2. [ ] In CopyDoc, open Content Library and switch to the placeholders tab to browse categories like person, animals, internet, and Lorem Ipsum.
3. [ ] Click a text layer and apply a placeholder item such as full name, first name, or an email address to fill the layer with realistic fake content.
4. [ ] Use the copy icon to copy a placeholder trigger, or type a shortcut like double slash commands to expand placeholder content in an existing layer.
5. [ ] Go to the collections tab, add a new snippet, and combine custom text with placeholders using Show Placeholder Shortcuts and the plus icon.
6. [ ] Apply or paste the snippet trigger into one or more selected layers to populate them with randomized placeholder content.
7. [ ] Use the localization dropdown to switch locales such as Japanese, Korean, or Italian so placeholders generate content in that language.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=NghMg69P2hA)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-add-realistic-placeholder-text-content-in-figma-using-copy-doc)
- [Read: Using Placeholder Content](/copydoc/library/placeholders)
- [Next: Add text expander content snippet shortcuts in Figma](/copydoc/tutorials/add-text-expander-content-snippet-shortcuts-in-figma)
- [Open CopyDoc in the Figma Community](https://www.figma.com/community/plugin/900893606648879767)

---

---
url: "/copydoc/tutorials/add-text-expander-content-snippet-shortcuts-in-figma.md"
description: "This tutorial shows how to open the CopyDoc Figma plugin, use the Content Library, and create reusable text expander snippets. It demonstrates adding a shortcut trigger like slash slash CTA or slash slash nav, then typing the trigger in a text layer to expand it into approved copy."
---

# Add text expander content snippet shortcuts in Figma

> This tutorial shows how to open the CopyDoc Figma plugin, use the Content Library, and create reusable text expander snippets. It demonstrates adding a shortcut trigger like slash slash CTA or slash slash nav, then typing the trigger in a text layer to expand it into approved copy.

[← Back to CopyDoc Video Tutorials](/copydoc/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/OZCbuLVsDmI)

## What this video covers

This tutorial shows how to open the CopyDoc Figma plugin, use the Content Library, and create reusable text expander snippets. It demonstrates adding a shortcut trigger like slash slash CTA or slash slash nav, then typing the trigger in a text layer to expand it into approved copy.

## Things you'll need

- A Figma file
- The CopyDoc Figma plugin

## Steps

1. [ ] Open a Figma file, click the Resources icon, search for CopyDoc under the Plugins tab, and run or save the plugin.
2. [ ] From the canvas, right-click, go to Plugins, and open CopyDoc.
3. [ ] In CopyDoc, open the Content Library to view and use existing text expander snippets.
4. [ ] Click Add New Snippet, enter a trigger such as nav, choose a category such as menus, and add one or more text content variants.
5. [ ] Click Save New Snippet to add it to the library.
6. [ ] Type the shortcut trigger in a text layer, such as slash slash nav or slash slash CTA, to expand it into the saved snippet.
7. [ ] Use the copy/paste workflow for triggers as needed, and optionally import or export snippets in CSV for bulk management.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=OZCbuLVsDmI)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-add-text-expander-content-snippet-shortcuts-in-figma-using-copy-doc)
- [Read: Using the Content Library](/copydoc/library/snippets)
- [Next: Add realistic placeholder text content in Figma](/copydoc/tutorials/add-realistic-placeholder-text-content-in-figma)
- [Open CopyDoc in the Figma Community](https://www.figma.com/community/plugin/900893606648879767)

---

---
url: "/copydoc/tutorials/auto-repeat-and-sync-figma-layers-from-a-spreadsheet.md"
description: "The video shows how to use the CopyDoc Figma plugin to sync layer content from a CSV, Excel file, or Google Sheets URL. It also demonstrates the auto repeat feature, which duplicates a selected Figma layer or component across spreadsheet rows and fills in matching content automatically."
---

# Auto repeat and sync Figma layers from a spreadsheet

> The video shows how to use the CopyDoc Figma plugin to sync layer content from a CSV, Excel file, or Google Sheets URL. It also demonstrates the auto repeat feature, which duplicates a selected Figma layer or component across spreadsheet rows and fills in matching content automatically.

[← Back to CopyDoc Video Tutorials](/copydoc/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/_1MHyfYNHFQ)

## What this video covers

The video shows how to use the CopyDoc Figma plugin to sync layer content from a CSV, Excel file, or Google Sheets URL. It also demonstrates the auto repeat feature, which duplicates a selected Figma layer or component across spreadsheet rows and fills in matching content automatically.

## Things you'll need

- A Figma file with layers named to match the spreadsheet headers.
- A CSV, Excel file, or a publicly shareable Google Sheets URL.

## Steps

1. [ ] Open a Figma file, find CopyDoc from Resources or Saved plugins, and launch the plugin.
2. [ ] In CopyDoc, open sync content and choose a source such as CSV, Excel, or Google Sheets URL.
3. [ ] Make sure the Figma layer names match the spreadsheet column headers, such as title, genre, minutes, and poster.
4. [ ] Drag and drop the CSV into the Drop Zone, preview the rows, and click sync rows with layers to map selected layers to the data.
5. [ ] Turn on auto repeat, select a single layer or instance with named nested layers, and click sync and repeat selected layer to duplicate it for each spreadsheet row.
6. [ ] Optionally place the layer inside an existing auto layout frame first so the repeated copies stay inside that container.
7. [ ] For Google Sheets, set General access to anyone with the link, copy the sheet URL, paste it into CopyDoc, and load the content preview.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=_1MHyfYNHFQ)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/auto-repeat-and-sync-figma-layers-from-a-spreadsheet-using-copy-doc)
- [Read: Naming your layers in Figma to match the spreadsheet](/copydoc/sync/structure-figma)
- [Next: Sync XLSX Excel spreadsheet content to Figma](/copydoc/tutorials/sync-xlsx-excel-spreadsheet-content-to-figma)
- [Open CopyDoc in the Figma Community](https://www.figma.com/community/plugin/900893606648879767)

---

---
url: "/copydoc/tutorials/create-a-re-useable-text-content-library-in-figma.md"
description: "This video shows how to use the CopyDoc Figma plugin to build a reusable text content library in Figma. It covers creating text snippets with trigger shortcuts and variants, then importing, exporting, updating, moving, and deleting snippets in bulk with CSV files and collections."
---

# Create a reusable text content library in Figma

> This video shows how to use the CopyDoc Figma plugin to build a reusable text content library in Figma. It covers creating text snippets with trigger shortcuts and variants, then importing, exporting, updating, moving, and deleting snippets in bulk with CSV files and collections.

[← Back to CopyDoc Video Tutorials](/copydoc/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/x-gNQqwIOLw)

## What this video covers

This video shows how to use the CopyDoc Figma plugin to build a reusable text content library in Figma. It covers creating text snippets with trigger shortcuts and variants, then importing, exporting, updating, moving, and deleting snippets in bulk with CSV files and collections.

## Things you'll need

- Figma
- CopyDoc Figma plugin

## Steps

1. [ ] Open Figma, find CopyDoc in Resources under the Plugins tab, and save it to your Figma plugins list.
2. [ ] Run CopyDoc from saved plugins, then open the content library feature.
3. [ ] Create a new snippet by setting a trigger shortcut, choosing or creating a collection, entering the text content, and saving the snippet.
4. [ ] Edit a snippet to add multiple text variants by separating them with double pipe symbols, then update the snippet.
5. [ ] Apply snippets to text layers either by using the snippet buttons or by typing the trigger shortcut such as slash slash tagline.
6. [ ] Import snippets in bulk with CSV by downloading the example file, editing it in a spreadsheet app, and dragging the updated CSV into CopyDoc.
7. [ ] Export selected snippets to CSV, then re-import the edited file to update existing snippets, or use bulk move and delete actions to manage collections.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=x-gNQqwIOLw)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-create-a-re-useable-text-content-library-in-figma-using-copy-doc)
- [Read: Using the Content Library](/copydoc/library/snippets)
- [Next: Use Google Sheets as a Figma text content library](/copydoc/tutorials/use-google-sheets-as-a-figma-text-content-library)
- [Open CopyDoc in the Figma Community](https://www.figma.com/community/plugin/900893606648879767)

---

---
url: "/copydoc/tutorials/export-and-re-import-figma-text-content-via-airtable-sync.md"
description: "This tutorial shows how to use the CopyDoc Figma plugin to export Figma text layers to Airtable, edit the content in Airtable, and then reimport the text updates back into Figma. It also shows how to set up Airtable access with a personal access token and sync changes in both directions."
---

# Export & Re-Import Figma text content via Airtable sync

> This tutorial shows how to use the CopyDoc Figma plugin to export Figma text layers to Airtable, edit the content in Airtable, and then reimport the text updates back into Figma. It also shows how to set up Airtable access with a personal access token and sync changes in both directions.

[← Back to CopyDoc Video Tutorials](/copydoc/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/ZoyLiC8riPc)

## What this video covers

This tutorial shows how to use the CopyDoc Figma plugin to export Figma text layers to Airtable, edit the content in Airtable, and then reimport the text updates back into Figma. It also shows how to set up Airtable access with a personal access token and sync changes in both directions.

## Things you'll need

- A Figma file with text layers
- An Airtable account
- Airtable personal access token with data records read, data records write, schema bases read, and schema bases write scopes

## Steps

1. [ ] Open the CopyDoc Figma plugin from the actions menu or from Saved plugins.
2. [ ] Click export text layers, choose the Airtable option, and select the frames you want to export.
3. [ ] Create or open an Airtable base, copy its URL, and paste it into the plugin.
4. [ ] Create an Airtable personal access token with the required scopes, copy it, paste it into the plugin, name the connection, and save Airtable.
5. [ ] Export the text layers to Airtable, then edit the Figma text column in Airtable while leaving the ID values unchanged.
6. [ ] Return to CopyDoc, open import text layers, load the Airtable preview, review the changes, and click update Figma text layers.
7. [ ] Repeat the export process whenever you want Airtable and Figma to stay in sync.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=ZoyLiC8riPc)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/export-and-import-figma-text-content-with-airtable-sync-using-copy-doc)
- [Read: Syncing content to Figma from a Airtable](/copydoc/sync/airtable)
- [Next: Import/export Figma text layers with JSON files](/copydoc/tutorials/import-export-figma-text-layers-with-json-files)
- [Open CopyDoc in the Figma Community](https://www.figma.com/community/plugin/900893606648879767)

---

---
url: "/copydoc/tutorials/export-and-re-import-selected-text-layers-in-figma.md"
description: "This tutorial shows how to use the CopyDoc Figma plugin to export selected text layers from a Figma frame to a CSV spreadsheet, edit the text in a spreadsheet app, and import the changes back into Figma. It also shows how to review detected text changes before updating the selected layers."
---

# Export and re-import selected text layers in Figma

> This tutorial shows how to use the CopyDoc Figma plugin to export selected text layers from a Figma frame to a CSV spreadsheet, edit the text in a spreadsheet app, and import the changes back into Figma. It also shows how to review detected text changes before updating the selected layers.

[← Back to CopyDoc Video Tutorials](/copydoc/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/gCQZiVV7HOM)

## What this video covers

This tutorial shows how to use the CopyDoc Figma plugin to export selected text layers from a Figma frame to a CSV spreadsheet, edit the text in a spreadsheet app, and import the changes back into Figma. It also shows how to review detected text changes before updating the selected layers.

## Things you'll need

- Figma
- CopyDoc installed from the Figma Community

## Steps

1. [ ] Install the CopyDoc plugin from the Figma Community under the Plugins tab.
2. [ ] In your Figma file, right-click and open Plugins, then run CopyDoc.
3. [ ] Select the frame or text layers you want to export, then click Quick Export.
4. [ ] Choose the export format, such as CSV, and select an ordering option, then click Quick Export CSV and download the file.
5. [ ] Open the exported CSV in a spreadsheet app, edit the figma_text values, and save the updated file as CSV.
6. [ ] Back in CopyDoc, open Import Text Layers, drag in the updated CSV, review the detected changes, and optionally deselect any you do not want to apply.
7. [ ] Click Update Figma Text Layers to re-import the approved text changes into Figma.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=gCQZiVV7HOM)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-and-re-import-selected-text-layers-in-figma-using-copy-doc)
- [Read: Exporting Figma text layer content](/copydoc/update/export)
- [Next: Update Figma text layer content with Markdown files](/copydoc/tutorials/update-figma-text-layer-content-with-markdown-files)
- [Open CopyDoc in the Figma Community](https://www.figma.com/community/plugin/900893606648879767)

---

---
url: "/copydoc/tutorials/export-comments-from-figma-files.md"
description: "This tutorial shows how to use the CopyDoc Figma plugin to export Figma comments into CSV and JSON files, along with image references for the frames containing those comments. It walks through installing the plugin, entering the Figma Page URL and Figma Personal Access Token, and downloading the exported comments bundle."
---

# Export comments from Figma files

> This tutorial shows how to use the CopyDoc Figma plugin to export Figma comments into CSV and JSON files, along with image references for the frames containing those comments. It walks through installing the plugin, entering the Figma Page URL and Figma Personal Access Token, and downloading the exported comments bundle.

[← Back to CopyDoc Video Tutorials](/copydoc/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/GXg0q8GO_Ik)

## What this video covers

This tutorial shows how to use the CopyDoc Figma plugin to export Figma comments into CSV and JSON files, along with image references for the frames containing those comments. It walks through installing the plugin, entering the Figma Page URL and Figma Personal Access Token, and downloading the exported comments bundle.

## Things you'll need

- A Figma file with comments already added.
- A Figma personal access token.

## Steps

1. [ ] Install CopyDoc from the Figma Community under the Plugins tab, then open it from Plugins in your Figma file.
2. [ ] Choose the Export Figma Comments option and click Export Comments.
3. [ ] Copy the Figma Page URL from the Share button and paste it into the Figma Page URL field.
4. [ ] Create a new personal access token in Figma Settings under Personal Access Tokens, copy it, and paste it into the Figma Personal Access Token field.
5. [ ] Leave Include Design References enabled if you want frame image references with pin markers.
6. [ ] Click Export Comments to CSV/JSON, then download and unzip the exported files.
7. [ ] Open the CSV or JSON file, and use the frames folder to match comment thread numbers to the exported frame images.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=GXg0q8GO_Ik)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-comments-from-figma-files-using-copy-doc)
- [Read: Exporting Figma comments](/copydoc/export/figma-comments)
- [Next: How to count words and characters in Figma text layers using CopyDoc](/copydoc/tutorials/how-to-count-words-and-characters-in-figma-text-layers-using-copydoc)
- [Open CopyDoc in the Figma Community](https://www.figma.com/community/plugin/900893606648879767)

---

---
url: "/copydoc/tutorials/export-figma-to-microsoft-excel-xlsx-files.md"
description: "This video shows how to use the CopyDoc Figma plugin to export text content from Figma frames into Microsoft Excel .xlsx files. It also explains the two export modes: one Excel file with tabs per frame, or one Excel file per frame, and notes that this Excel export is not meant for re-importing back into Figma."
---

# Export Figma to Microsoft Excel .xlsx files

> This video shows how to use the CopyDoc Figma plugin to export text content from Figma frames into Microsoft Excel .xlsx files. It also explains the two export modes: one Excel file with tabs per frame, or one Excel file per frame, and notes that this Excel export is not meant for re-importing back into Figma.

[← Back to CopyDoc Video Tutorials](/copydoc/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/xz1hXZDLJTU)

## What this video covers

This video shows how to use the CopyDoc Figma plugin to export text content from Figma frames into Microsoft Excel .xlsx files. It also explains the two export modes: one Excel file with tabs per frame, or one Excel file per frame, and notes that this Excel export is not meant for re-importing back into Figma.

## Things you'll need

- Figma
- The CopyDoc Figma plugin
- At least one Figma frame with text content

## Steps

1. [ ] Install CopyDoc from the Figma Community by searching for "CopyDoc" under the Plugins tab and clicking Install.
2. [ ] Open a Figma file that contains at least one frame with text content, then right-click and choose Plugins > CopyDoc.
3. [ ] In CopyDoc, open Export Frames under the Export Figma Frames menu item and choose Microsoft Excel (.xlxs).
4. [ ] Optionally enable design references or select the Excel File Per Frame option if you want separate XLSX files for each frame.
5. [ ] Select the frames you want to export and arrange their order if needed.
6. [ ] Click Export XLSX, then Download XLSX Export, and save the zip file.
7. [ ] Unzip the download and open the XLSX file in Microsoft Excel to view the exported frame text in tabs or as a single Figma Text sheet.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=xz1hXZDLJTU)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-figma-to-microsoft-excel-xlsx-files-using-copy-doc)
- [Read: Export Excel](/copydoc/export/excel)
- [Next: Export Figma to Microsoft Word .docx files](/copydoc/tutorials/export-figma-to-microsoft-word-docx-files)
- [Open CopyDoc in the Figma Community](https://www.figma.com/community/plugin/900893606648879767)

---

---
url: "/copydoc/tutorials/export-figma-to-microsoft-word-docx-files.md"
description: "This video shows how to use the CopyDoc Figma plugin to export Figma frames to Microsoft Word .docx files. It demonstrates exporting a single frame, reordering and selecting multiple frames, and opening the exported document in Microsoft Word with editable text and preserved styling."
---

# Export Figma to Microsoft Word .docx files

> This video shows how to use the CopyDoc Figma plugin to export Figma frames to Microsoft Word .docx files. It demonstrates exporting a single frame, reordering and selecting multiple frames, and opening the exported document in Microsoft Word with editable text and preserved styling.

[← Back to CopyDoc Video Tutorials](/copydoc/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/7KdJUmhB8rM)

## What this video covers

This video shows how to use the CopyDoc Figma plugin to export Figma frames to Microsoft Word .docx files. It demonstrates exporting a single frame, reordering and selecting multiple frames, and opening the exported document in Microsoft Word with editable text and preserved styling.

## Things you'll need

- Figma
- CopyDoc installed from Figma Community
- Microsoft Word

## Steps

1. [ ] Install CopyDoc from Figma Community if it is not already installed.
2. [ ] Open your Figma file, then right click and go to Plugins > CopyDoc.
3. [ ] Choose the option to Export frames to Microsoft Word and click Export Frames to load the frames in the file.
4. [ ] Select the frames you want to include, then set the export order using the rows, columns, layer order, layer name, or drag-and-drop handles.
5. [ ] Click Export to DOCX to generate the Microsoft Word document.
6. [ ] Click Download Word Doc to save the .docx file, then open it in Microsoft Word to review or edit the exported content.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=7KdJUmhB8rM)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-figma-to-microsoft-word-docx-files-using-copy-doc)
- [Read: Export Microsoft Word](/copydoc/export/docx)
- [Next: Export Figma to Microsoft Excel .xlsx files](/copydoc/tutorials/export-figma-to-microsoft-excel-xlsx-files)
- [Open CopyDoc in the Figma Community](https://www.figma.com/community/plugin/900893606648879767)

---

---
url: "/copydoc/tutorials/find-and-replace-figma-text-content.md"
description: "This tutorial shows how to use the CopyDoc Figma plugin to find and replace text in a Figma file, preview the matches, and update selected text layers. It also covers case-sensitive matching with Match Case and notes that the required fonts must be installed for text updates to work."
---

# Find and replace Figma text content

> This tutorial shows how to use the CopyDoc Figma plugin to find and replace text in a Figma file, preview the matches, and update selected text layers. It also covers case-sensitive matching with Match Case and notes that the required fonts must be installed for text updates to work.

[← Back to CopyDoc Video Tutorials](/copydoc/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/E_GDAQdXEGQ)

## What this video covers

This tutorial shows how to use the CopyDoc Figma plugin to find and replace text in a Figma file, preview the matches, and update selected text layers. It also covers case-sensitive matching with Match Case and notes that the required fonts must be installed for text updates to work.

## Things you'll need

- CopyDoc must be installed from the Figma Community
- The fonts used in the Figma file must be installed

## Steps

1. [ ] Install CopyDoc from the Figma Community by searching for CopyDoc under the Plugins tab and clicking Install.
2. [ ] Open your Figma file, then right-click, go to Plugins, and launch CopyDoc.
3. [ ] Click Find and Replace to open the modal, then enter the text you want to find and the replacement text.
4. [ ] Click Find Matches and Preview Updates to view all matching text layers on the current page and see the proposed replacements.
5. [ ] Use the text icon on a result to jump to and select that layer, and uncheck any matches you do not want to update.
6. [ ] Click Update Figma Text Layers to apply the selected replacements, then use Command + Z on Mac or Control + Z on Windows to undo if needed.
7. [ ] Use Match Case when you need case-sensitive searching, and make sure the fonts used in the file are installed before updating text.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=E_GDAQdXEGQ)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-find-and-replace-figma-text-content-using-copy-doc)
- [Read: Finding and replacing text content](/copydoc/update/find-and-replace)
- [Next: Spell check Figma text layers in your designs](/copydoc/tutorials/spell-check-figma-text-layers-in-your-designs)
- [Open CopyDoc in the Figma Community](https://www.figma.com/community/plugin/900893606648879767)

---

---
url: "/copydoc/tutorials/how-to-count-words-and-characters-in-figma-text-layers-using-copydoc.md"
description: "This tutorial shows how to use the CopyDoc Figma plugin to count words, characters, sentences, and paragraphs in Figma text layers. It demonstrates installing the plugin from Figma Community, opening it in a design, and selecting one or more text layers to see the counts update automatically."
---

# How to count words and characters in Figma text layers using CopyDoc

> This tutorial shows how to use the CopyDoc Figma plugin to count words, characters, sentences, and paragraphs in Figma text layers. It demonstrates installing the plugin from Figma Community, opening it in a design, and selecting one or more text layers to see the counts update automatically.

[← Back to CopyDoc Video Tutorials](/copydoc/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/ZT9b6WSpD8o)

## What this video covers

This tutorial shows how to use the CopyDoc Figma plugin to count words, characters, sentences, and paragraphs in Figma text layers. It demonstrates installing the plugin from Figma Community, opening it in a design, and selecting one or more text layers to see the counts update automatically.

## Things you'll need

- Figma
- The CopyDoc plugin installed

## Steps

1. [ ] Search for CopyDoc in Figma Community under the Plugins tab and click Install.
2. [ ] Return to your Figma design, right-click, then go to Plugins and open CopyDoc.
3. [ ] With the plugin open, click a Figma text layer to view its character, word, sentence, and paragraph counts.
4. [ ] Select a larger text block to see counts for that layer update automatically.
5. [ ] Select multiple text layers at once, either on the canvas or in the left-hand Layers panel, to count them together.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=ZT9b6WSpD8o)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-count-words-and-characters-in-figma-text-layers-using-copy-doc)
- [Read: Making text updates to exported files](/copydoc/update/edit)
- [Next: Export comments from Figma files](/copydoc/tutorials/export-comments-from-figma-files)
- [Open CopyDoc in the Figma Community](https://www.figma.com/community/plugin/900893606648879767)

---

---
url: "/copydoc/tutorials/import-export-figma-text-layers-with-csv-files.md"
description: "This tutorial shows how to use the CopyDoc Figma plugin to export Figma text layers to a CSV file, edit the text in a spreadsheet app, and import the updated CSV back into Figma. It also demonstrates reviewing differences before applying updates and using CMD + Z or CTRL + Z to undo changes."
---

# Import/export Figma text layers with CSV files

> This tutorial shows how to use the CopyDoc Figma plugin to export Figma text layers to a CSV file, edit the text in a spreadsheet app, and import the updated CSV back into Figma. It also demonstrates reviewing differences before applying updates and using CMD + Z or CTRL + Z to undo changes.

[← Back to CopyDoc Video Tutorials](/copydoc/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/16QHfpJ8M7E)

## What this video covers

This tutorial shows how to use the CopyDoc Figma plugin to export Figma text layers to a CSV file, edit the text in a spreadsheet app, and import the updated CSV back into Figma. It also demonstrates reviewing differences before applying updates and using CMD + Z or CTRL + Z to undo changes.

## Things you'll need

- Figma
- CopyDoc installed from the Figma Community
- A spreadsheet app that can open and save CSV files

## Steps

1. [ ] Install CopyDoc from the Figma Community if it is not already installed.
2. [ ] In Figma, right click, open Plugins, and launch CopyDoc.
3. [ ] Click Export CSV, choose the frames to export, then download the text as a zip file containing the CSV and frame references.
4. [ ] Open the CSV in a spreadsheet app, edit the text, use find and replace if needed, and export the file back to CSV.
5. [ ] In CopyDoc, click Import CSV and drag in the updated CSV file.
6. [ ] Review the detected differences, use the magnifying glass icons to jump to affected layers, and deselect any changes you do not want.
7. [ ] Click Update Figma Text Layers to apply the selected text changes, or use CMD + Z / CTRL + Z to undo if needed.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=16QHfpJ8M7E)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-import-export-figma-text-layers-with-csv-files-using-copy-doc)
- [Read: Re-importing text updates to Figma](/copydoc/update/import)
- [Next: Export & Re-Import Figma text content via Airtable sync](/copydoc/tutorials/export-and-re-import-figma-text-content-via-airtable-sync)
- [Open CopyDoc in the Figma Community](https://www.figma.com/community/plugin/900893606648879767)

---

---
url: "/copydoc/tutorials/import-export-figma-text-layers-with-json-files.md"
description: "This tutorial shows how to use the CopyDoc Figma plugin to export Figma text layers to a JSON file, edit the text in a code editor, and import the updated JSON back into Figma. It also demonstrates reviewing changes before applying them, including checking layer diffs and using design reference PNGs from the export."
---

# Import/export Figma text layers with JSON files

> This tutorial shows how to use the CopyDoc Figma plugin to export Figma text layers to a JSON file, edit the text in a code editor, and import the updated JSON back into Figma. It also demonstrates reviewing changes before applying them, including checking layer diffs and using design reference PNGs from the export.

[← Back to CopyDoc Video Tutorials](/copydoc/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/Nn01U9o_D9o)

## What this video covers

This tutorial shows how to use the CopyDoc Figma plugin to export Figma text layers to a JSON file, edit the text in a code editor, and import the updated JSON back into Figma. It also demonstrates reviewing changes before applying them, including checking layer diffs and using design reference PNGs from the export.

## Things you'll need

- Figma
- CopyDoc

## Steps

1. [ ] Install the CopyDoc plugin from the Figma Community and open it from Figma's Plugins menu.
2. [ ] Choose the export option and click Export JSON to load the top-level frames you want to include.
3. [ ] Click Download Text to save the exported ZIP, which contains the JSON file and, if selected, a frames folder with PNG design references.
4. [ ] Open the JSON file in a code editor, update the text values, and save the file.
5. [ ] In CopyDoc, switch to Import text updates to Figma from JSON and drag the edited JSON file into the import box.
6. [ ] Review the detected text changes, optionally deselect any layers, and use the magnifying glass icon to jump to the affected text on the canvas.
7. [ ] Click Update Figma Text Layers to apply the approved changes, or undo with CMD + Z on Mac or CTRL + Z on Windows if needed.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=Nn01U9o_D9o)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-import-export-figma-text-layers-with-json-files-using-copy-doc)
- [Read: Re-importing text updates to Figma](/copydoc/update/import)
- [Next: Export and re-import selected text layers in Figma](/copydoc/tutorials/export-and-re-import-selected-text-layers-in-figma)
- [Open CopyDoc in the Figma Community](https://www.figma.com/community/plugin/900893606648879767)

---

---
url: "/copydoc/tutorials/rename-figma-layers-in-bulk-from-a-spreadsheet.md"
description: "This tutorial shows how to use the CopyDoc Figma plugin's sync content feature to rename Figma layers in bulk from a spreadsheet. It also demonstrates how the same workflow can update text layers and work with either Google Sheets or an Excel file."
---

# Rename Figma layers in bulk from a spreadsheet

> This tutorial shows how to use the CopyDoc Figma plugin's sync content feature to rename Figma layers in bulk from a spreadsheet. It also demonstrates how the same workflow can update text layers and work with either Google Sheets or an Excel file.

[← Back to CopyDoc Video Tutorials](/copydoc/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/6lXxRQH98mE)

## What this video covers

This tutorial shows how to use the CopyDoc Figma plugin's sync content feature to rename Figma layers in bulk from a spreadsheet. It also demonstrates how the same workflow can update text layers and work with either Google Sheets or an Excel file.

## Things you'll need

- A Figma file with the CopyDoc Figma plugin installed or saved
- A Google Sheets spreadsheet shared with anyone with the link, or a local Excel file

## Steps

1. [ ] Open the CopyDoc Figma plugin from Resources or from saved plugins, then open the sync content feature.
2. [ ] Create a spreadsheet where the first row is the column header that matches the Figma layer name, and put the replacement names underneath it.
3. [ ] If using Google Sheets, set General access to anyone with the link and copy the sheet URL.
4. [ ] Paste the Google Sheets link into CopyDoc, choose the correct tab, and click use selected sheet.
5. [ ] Select the matching layers in Figma and click Sync Rows to rename the layers.
6. [ ] For text layers or nested layers, add matching column names and values in the spreadsheet, then repeat the sync to update text content and layer names.
7. [ ] To use Excel instead, drag and drop the spreadsheet file into CopyDoc, select the tab, choose the sync order, and click Sync Rows.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=6lXxRQH98mE)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-rename-figma-layers-in-bulk-from-a-spreadsheet-using-copy-doc)
- [Read: Renaming Figma layers from the spreadsheet](/copydoc/sync/renaming)
- [Next: Style Figma layers from a spreadsheet with CSS style sync](/copydoc/tutorials/style-figma-layers-from-a-spreadsheet-with-css-style-sync)
- [Open CopyDoc in the Figma Community](https://www.figma.com/community/plugin/900893606648879767)

---

---
url: "/copydoc/tutorials/spell-check-figma-text-layers-in-your-designs.md"
description: "This video shows how to spell check Figma text layers using the CopyDoc plugin. It demonstrates installing the plugin, scanning a page for spelling mistakes, reviewing grouped suggestions, and applying or undoing corrections in bulk."
---

# Spell check Figma text layers in your designs

> This video shows how to spell check Figma text layers using the CopyDoc plugin. It demonstrates installing the plugin, scanning a page for spelling mistakes, reviewing grouped suggestions, and applying or undoing corrections in bulk.

[← Back to CopyDoc Video Tutorials](/copydoc/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/zIlzh6_kicw)

## What this video covers

This video shows how to spell check Figma text layers using the CopyDoc plugin. It demonstrates installing the plugin, scanning a page for spelling mistakes, reviewing grouped suggestions, and applying or undoing corrections in bulk.

## Things you'll need

- Figma
- The CopyDoc plugin installed from Figma Community
- Fonts used in the text layers installed on the machine

## Steps

1. [ ] Install CopyDoc from the Figma Community, then return to your Figma file.
2. [ ] Right-click in the file, open Plugins, and launch CopyDoc.
3. [ ] Click Spell Check Layers, choose the language that matches your text, and click Find Spelling Mistakes.
4. [ ] Review the grouped spelling errors, use the search icons to jump to each affected text layer, and inspect the results in the canvas.
5. [ ] Select the correct suggestion to update matching text layers in bulk, or use Undo next to a correction to revert it.
6. [ ] If needed, rerun Spell Check Layers after making changes to confirm remaining issues, and use CMD + Z or CTRL + Z for native undo.
7. [ ] If a font is missing, install it before applying a suggestion because the correction buttons will be disabled until the font is available.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=zIlzh6_kicw)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-spell-check-figma-text-layers-in-your-designs-using-copy-doc)
- [Read: Spell checking Figma text layers](/copydoc/update/spellcheck)
- [Next: Export comments from Figma files](/copydoc/tutorials/export-comments-from-figma-files)
- [Open CopyDoc in the Figma Community](https://www.figma.com/community/plugin/900893606648879767)

---

---
url: "/copydoc/tutorials/style-figma-layers-from-a-spreadsheet-with-css-style-sync.md"
description: "This tutorial shows how to use the CopyDoc Figma plugin to style Figma layers from a spreadsheet using CSS, including changing background color, text color, font size, opacity, and border radius. It also demonstrates syncing different rows to different selected layers, mixing style and content updates, using Google Sheets or Microsoft Excel, and finding supported CSS properties in the plugin's CSS docs."
---

# Style Figma layers from a spreadsheet with CSS style sync

> This tutorial shows how to use the CopyDoc Figma plugin to style Figma layers from a spreadsheet using CSS, including changing background color, text color, font size, opacity, and border radius. It also demonstrates syncing different rows to different selected layers, mixing style and content updates, using Google Sheets or Microsoft Excel, and finding supported CSS properties in the plugin's CSS docs.

[← Back to CopyDoc Video Tutorials](/copydoc/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/l0Bhqx6X3Ic)

## What this video covers

This tutorial shows how to use the CopyDoc Figma plugin to style Figma layers from a spreadsheet using CSS, including changing background color, text color, font size, opacity, and border radius. It also demonstrates syncing different rows to different selected layers, mixing style and content updates, using Google Sheets or Microsoft Excel, and finding supported CSS properties in the plugin's CSS docs.

## Things you'll need

- A Figma file with layers named to match the spreadsheet headers
- A spreadsheet in Google Sheets or Microsoft Excel
- For Google Sheets, sharing set to "anyone with the link"

## Steps

1. [ ] Open Figma, use the Resources icon to find CopyDoc, and save it to your plugins list.
2. [ ] Run CopyDoc from Plugins > Saved plugins, then open Sync Spreadsheet.
3. [ ] Prepare a spreadsheet with layer names in the header row and CSS rules in the cells, matching the names used in the Figma layers.
4. [ ] For Google Sheets, set sharing to "anyone with the link" and copy the sheet link; for Excel, use a local file with the same structure.
5. [ ] Paste the spreadsheet link or drag and drop the Excel file into CopyDoc, choose the tab, select the matching Figma layer or layers, and click Use Selected Sheet.
6. [ ] Click Sync Rows to apply the spreadsheet styles to the selected layers, including nested text layers or multiple selected frames.
7. [ ] Optionally switch selection order, mix style and content tabs carefully, and use the CSS docs link for supported properties.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=l0Bhqx6X3Ic)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-style-figma-layers-from-a-spreadsheet-with-css-style-sync-using-copy-doc)
- [Read: Using CSS in your spreadsheet to update Figma layer styles](/copydoc/sync/styles)
- [Next: Rename Figma layers in bulk from a spreadsheet](/copydoc/tutorials/rename-figma-layers-in-bulk-from-a-spreadsheet)
- [Open CopyDoc in the Figma Community](https://www.figma.com/community/plugin/900893606648879767)

---

---
url: "/copydoc/tutorials/sync-a-folder-of-images-to-figma-layers-via-a-spreadsheet.md"
description: "The video shows how to use the CopyDoc Figma plugin to sync spreadsheet content, including local image files, into repeated Figma layers. It also demonstrates an alternative way to generate a table in Figma from the same spreadsheet data."
---

# Sync a folder of images to Figma layers via a spreadsheet

> The video shows how to use the CopyDoc Figma plugin to sync spreadsheet content, including local image files, into repeated Figma layers. It also demonstrates an alternative way to generate a table in Figma from the same spreadsheet data.

[← Back to CopyDoc Video Tutorials](/copydoc/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/4JV01bi8nOw)

## What this video covers

The video shows how to use the CopyDoc Figma plugin to sync spreadsheet content, including local image files, into repeated Figma layers. It also demonstrates an alternative way to generate a table in Figma from the same spreadsheet data.

## Things you'll need

- Figma
- CopyDoc Figma plugin
- A spreadsheet file in .xlsx or .csv format with matching image files

## Steps

1. [ ] Install and open the CopyDoc Figma plugin from Figma Resources or Saved Plugins.
2. [ ] Create Figma layers whose names match the spreadsheet headers, such as #Image, #Title, and #Genre.
3. [ ] Prepare a spreadsheet with matching column headers and place any referenced image files in a folder alongside it.
4. [ ] Compress the spreadsheet and the images folder into a zip file.
5. [ ] In CopyDoc, click Sync Content and drag the zip file into the upload area.
6. [ ] Select the Figma layers to sync, choose the row order, and click Sync Rows.
7. [ ] Optionally, click Generate Table to create a new Figma table from the spreadsheet data.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=4JV01bi8nOw)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-sync-a-folder-of-images-to-figma-layers-with-a-spreadsheet-using-copy-doc)
- [Read: Including image URLs in your spreadsheet](/copydoc/sync/images)
- [Next: Sync component variants in Figma using a spreadsheet](/copydoc/tutorials/sync-component-variants-in-figma-using-a-spreadsheet)
- [Open CopyDoc in the Figma Community](https://www.figma.com/community/plugin/900893606648879767)

---

---
url: "/copydoc/tutorials/sync-airtable-spreadsheet-content-to-figma.md"
description: "This tutorial shows how to use the CopyDoc Figma plugin to sync Airtable spreadsheet data into Figma layers. It also demonstrates repeating rows into duplicated layers, using the same data in an auto layout frame, and generating a table from Airtable content."
---

# Sync Airtable spreadsheet content to Figma

> This tutorial shows how to use the CopyDoc Figma plugin to sync Airtable spreadsheet data into Figma layers. It also demonstrates repeating rows into duplicated layers, using the same data in an auto layout frame, and generating a table from Airtable content.

[← Back to CopyDoc Video Tutorials](/copydoc/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/SFAjIzF6P9o)

## What this video covers

This tutorial shows how to use the CopyDoc Figma plugin to sync Airtable spreadsheet data into Figma layers. It also demonstrates repeating rows into duplicated layers, using the same data in an auto layout frame, and generating a table from Airtable content.

## Things you'll need

- A Figma file with the CopyDoc plugin available
- An Airtable base with column headers that match the Figma layer names
- An Airtable personal access token with the data.records.read scope

## Steps

1. [ ] Open your Figma file, find CopyDoc in Resources under the Plugins tab, and run or save the plugin.
2. [ ] In CopyDoc, open Sync Content, choose the Content tab, and change the source from CSV Excel file to sync from Airtable URL.
3. [ ] Paste your Airtable URL, create an Airtable personal access token with the data.records.read scope, grant access to the correct base, and paste the token into CopyDoc.
4. [ ] Name and save the Airtable source, then load the content preview to see the Airtable columns and rows.
5. [ ] Make sure your Airtable column headers match the Figma layer names exactly, such as #title, #genre, #minutes, and #poster.
6. [ ] Select the matching Figma layers and click sync rows with layers to map each Airtable row into the selected design.
7. [ ] To repeat a single card automatically, enable auto repeat, select the layer inside an auto layout frame if needed, and click sync and repeat selected layer; you can also switch to the Table tab and generate a table from rows.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=SFAjIzF6P9o)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/sync-airtable-spreadsheet-content-to-figma-using-copy-doc)
- [Read: Syncing content to Figma from a Airtable](/copydoc/sync/airtable)
- [Next: Sync a folder of images to Figma layers via a spreadsheet](/copydoc/tutorials/sync-a-folder-of-images-to-figma-layers-via-a-spreadsheet)
- [Open CopyDoc in the Figma Community](https://www.figma.com/community/plugin/900893606648879767)

---

---
url: "/copydoc/tutorials/sync-chart-data-to-figma-from-a-spreadsheet.md"
description: "This tutorial shows how to use the CopyDoc Figma plugin’s sync content feature to import charts into Figma from spreadsheet data. It demonstrates loading CSV files or a Google Sheets URL, previewing the chart, and inserting an editable chart into a Figma file."
---

# Sync chart data to Figma from a spreadsheet

> This tutorial shows how to use the CopyDoc Figma plugin’s sync content feature to import charts into Figma from spreadsheet data. It demonstrates loading CSV files or a Google Sheets URL, previewing the chart, and inserting an editable chart into a Figma file.

[← Back to CopyDoc Video Tutorials](/copydoc/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/SwgrrN9gY1Q)

## What this video covers

This tutorial shows how to use the CopyDoc Figma plugin’s sync content feature to import charts into Figma from spreadsheet data. It demonstrates loading CSV files or a Google Sheets URL, previewing the chart, and inserting an editable chart into a Figma file.

## Things you'll need

- A Figma file with the CopyDoc plugin available
- A CSV file or a Google Sheets URL with chart data

## Steps

1. [ ] Open the CopyDoc plugin in Figma from Resources or from Plugins > Saved plugins.
2. [ ] Click sync content, switch from the Content tab to the Chart tab, and choose a chart type such as bar chart or column chart.
3. [ ] Download the sample CSV for that chart, edit it with your own data in a spreadsheet app, and save it.
4. [ ] Drag and drop the updated CSV into the plugin Drop Zone to preview the chart.
5. [ ] Click insert chart to Figma to place the chart on the canvas as editable layers.
6. [ ] To use Google Sheets instead, switch the data source to Google Sheets, paste the sheet URL, select the tab, load the chart preview, and insert the chart to Figma.
7. [ ] Edit the inserted chart in Figma by changing layer properties such as colors, fonts, size, and other selection colors.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=SwgrrN9gY1Q)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/sync-chart-data-to-figma-from-a-spreadsheet-using-copy-doc)
- [Read: Importing charts from spreadsheet data](/copydoc/sync/charts)
- [Next: Sync SVG icons from a spreadsheet to your Figma layers](/copydoc/tutorials/sync-svg-icons-from-a-spreadsheet-to-your-figma-layers)
- [Open CopyDoc in the Figma Community](https://www.figma.com/community/plugin/900893606648879767)

---

---
url: "/copydoc/tutorials/sync-component-variants-in-figma-using-a-spreadsheet.md"
description: "This tutorial shows how to use the CopyDoc Figma plugin to sync component variants and other layer content in Figma from a spreadsheet. It walks through creating a Tag component set with genre variants, matching spreadsheet column names to Figma layer names, and using Sync Content to import rows into selected frames."
---

# Sync component variants in Figma using a spreadsheet

> This tutorial shows how to use the CopyDoc Figma plugin to sync component variants and other layer content in Figma from a spreadsheet. It walks through creating a Tag component set with genre variants, matching spreadsheet column names to Figma layer names, and using Sync Content to import rows into selected frames.

[← Back to CopyDoc Video Tutorials](/copydoc/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/pytew54ZZ_g)

## What this video covers

This tutorial shows how to use the CopyDoc Figma plugin to sync component variants and other layer content in Figma from a spreadsheet. It walks through creating a Tag component set with genre variants, matching spreadsheet column names to Figma layer names, and using Sync Content to import rows into selected frames.

## Things you'll need

- A saved CopyDoc Figma plugin
- A spreadsheet file prepared with matching column names and values

## Steps

1. [ ] Save and run the CopyDoc Figma plugin from the Plugins menu.
2. [ ] Create a frame component named Tag, then add variants to turn it into a component set.
3. [ ] Rename the variant property to Genre and rename each variant to match the spreadsheet values, such as Synthwave and Vaporwave.
4. [ ] Drag the Tag component into your design frames and set up matching layers for fields like #Album, #Artist, #Cover, and #Tag.
5. [ ] Double-click each variant layer name in Figma to copy its Property=Value label, then paste those labels into the spreadsheet.
6. [ ] Open CopyDoc, go to Sync Content, import the Excel file, select the frames to sync, and click Sync Rows with Layers.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=pytew54ZZ_g)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/sync-figma-component-variants-from-a-spreadsheet-using-copy-doc)
- [Read: Syncing Figma component variants from the spreadsheet](/copydoc/sync/variants)
- [Next: Sync merge tags in Figma text layers from a spreadsheet](/copydoc/tutorials/sync-merge-tags-in-figma-text-layers-from-a-spreadsheet)
- [Open CopyDoc in the Figma Community](https://www.figma.com/community/plugin/900893606648879767)

---

---
url: "/copydoc/tutorials/sync-content-with-advanced-merge-tags-in-spreadsheet-cells.md"
description: "The video shows how to use the CopyDoc Figma plugin’s Sync Content From Spreadsheet feature to pull data from an Excel file or Google Sheet into Figma. It demonstrates advanced merge tags for renaming layers, updating text, repeating frames for multiple rows, and overriding values by referencing specific spreadsheet rows."
---

# Sync content with advanced merge tags in spreadsheet cells

> The video shows how to use the CopyDoc Figma plugin’s Sync Content From Spreadsheet feature to pull data from an Excel file or Google Sheet into Figma. It demonstrates advanced merge tags for renaming layers, updating text, repeating frames for multiple rows, and overriding values by referencing specific spreadsheet rows.

[← Back to CopyDoc Video Tutorials](/copydoc/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/M3TCf3VWOlg)

## What this video covers

The video shows how to use the CopyDoc Figma plugin’s Sync Content From Spreadsheet feature to pull data from an Excel file or Google Sheet into Figma. It demonstrates advanced merge tags for renaming layers, updating text, repeating frames for multiple rows, and overriding values by referencing specific spreadsheet rows.

## Things you'll need

- A Figma file with the CopyDoc plugin saved
- A spreadsheet file such as an Excel file or Google Sheet

## Steps

1. [ ] Open the Figma file, search for CopyDoc from Actions, save it as a plugin, and run it from Plugins > Saved Plugins.
2. [ ] Prepare the Figma layers and frame names to match spreadsheet headers, using tags like #Frame, #firstName, #Headline, and #{firstName} in layer names or text.
3. [ ] Open CopyDoc’s Sync Content From Spreadsheet feature, drag and drop the Excel file into the plugin, and review the preview.
4. [ ] Select a frame or layer and click Sync Rows With Layers to sync the spreadsheet content into the Figma text and layer names.
5. [ ] Enable Auto Repeat if you want CopyDoc to duplicate the selected frame for each spreadsheet row, then click Sync and Repeat Selected Layer.
6. [ ] Use dot syntax with a row number, such as .2 or .3, in the spreadsheet to pull a value from a specific row instead of the current row, then resync.
7. [ ] Check the updated frame names and text layers to confirm the merge tags and row overrides were applied correctly.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=M3TCf3VWOlg)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-sync-figma-layers-with-advanced-merge-tags-in-spreadsheet-cells-using-copy-doc)
- [Read: Using merge tags in Figma to replace merge tag text with spreadsheet data](/copydoc/sync/merge-tags)
- [Next: Sync chart data to Figma from a spreadsheet](/copydoc/tutorials/sync-chart-data-to-figma-from-a-spreadsheet)
- [Open CopyDoc in the Figma Community](https://www.figma.com/community/plugin/900893606648879767)

---

---
url: "/copydoc/tutorials/sync-csv-spreadsheet-content-to-figma.md"
description: "This video shows how to install the CopyDoc Figma plugin and use its Sync Spreadsheet Content feature to populate repeated Figma layers from a CSV file. It demonstrates matching CSV headers to Figma layer names so text and image content can be synced across multiple duplicated designs."
---

# Sync CSV spreadsheet content to Figma

> This video shows how to install the CopyDoc Figma plugin and use its Sync Spreadsheet Content feature to populate repeated Figma layers from a CSV file. It demonstrates matching CSV headers to Figma layer names so text and image content can be synced across multiple duplicated designs.

[← Back to CopyDoc Video Tutorials](/copydoc/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/5qdxq629A48)

## What this video covers

This video shows how to install the CopyDoc Figma plugin and use its Sync Spreadsheet Content feature to populate repeated Figma layers from a CSV file. It demonstrates matching CSV headers to Figma layer names so text and image content can be synced across multiple duplicated designs.

## Things you'll need

- Figma
- CopyDoc Figma plugin
- A CSV spreadsheet file

## Steps

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

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=5qdxq629A48)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/sync-csv-spreadsheet-content-to-figma-using-copy-doc)
- [Read: Syncing content to Figma from a CSV/XLSX file](/copydoc/sync/spreadsheet-file)
- [Next: Sync Google Sheets spreadsheet content to Figma](/copydoc/tutorials/sync-google-sheets-spreadsheet-content-to-figma)
- [Open CopyDoc in the Figma Community](https://www.figma.com/community/plugin/900893606648879767)

---

---
url: "/copydoc/tutorials/sync-google-sheets-spreadsheet-content-to-figma.md"
description: "This tutorial shows how to use the CopyDoc Figma plugin to sync content from a public Google Sheets spreadsheet into matching Figma layers. It covers preparing spreadsheet headers and layer names, sharing the sheet publicly, and syncing text and image URLs into selected Figma instances or layers."
---

# Sync Google Sheets spreadsheet content to Figma

> This tutorial shows how to use the CopyDoc Figma plugin to sync content from a public Google Sheets spreadsheet into matching Figma layers. It covers preparing spreadsheet headers and layer names, sharing the sheet publicly, and syncing text and image URLs into selected Figma instances or layers.

[← Back to CopyDoc Video Tutorials](/copydoc/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/J67CDH5XkWk)

## What this video covers

This tutorial shows how to use the CopyDoc Figma plugin to sync content from a public Google Sheets spreadsheet into matching Figma layers. It covers preparing spreadsheet headers and layer names, sharing the sheet publicly, and syncing text and image URLs into selected Figma instances or layers.

## Things you'll need

- A Figma account with the CopyDoc plugin installed.
- A Google Sheet prepared with matching headers and, for images, public image URLs.

## Steps

1. [ ] Install CopyDoc from the Figma Community under the Plugins tab.
2. [ ] Set up a Google Sheet with a header row whose column names match Figma layer names such as #Title and #Poster.
3. [ ] For image fields, paste image URLs into the spreadsheet so CopyDoc can download and apply them as image fills.
4. [ ] In Google Sheets, use Share, change access from Restricted to Anyone with the link, and copy the link.
5. [ ] In Figma, open CopyDoc from Plugins and go to Sync Content, then choose Sync Public Google Sheet.
6. [ ] Paste the Google Sheets URL into the plugin and confirm the spreadsheet columns load correctly.
7. [ ] Select the matching Figma layers or instances, then click Sync Spreadsheet Rows with Figma Layers to populate the design.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=J67CDH5XkWk)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/sync-google-sheets-spreadsheet-content-to-figma-using-copy-doc)
- [Read: Syncing Google Sheets content to Figma](/copydoc/sync/google-sheets)
- [Next: Sync Airtable spreadsheet content to Figma](/copydoc/tutorials/sync-airtable-spreadsheet-content-to-figma)
- [Open CopyDoc in the Figma Community](https://www.figma.com/community/plugin/900893606648879767)

---

---
url: "/copydoc/tutorials/sync-merge-tags-in-figma-text-layers-from-a-spreadsheet.md"
description: "This tutorial shows how to use the CopyDoc Figma plugin to sync inline merge tags in text layers with data from a spreadsheet. It also covers syncing image fills from an artwork column and automatically repeating a selected layer for every spreadsheet row."
---

# Sync merge tags in Figma text layers from a spreadsheet

> This tutorial shows how to use the CopyDoc Figma plugin to sync inline merge tags in text layers with data from a spreadsheet. It also covers syncing image fills from an artwork column and automatically repeating a selected layer for every spreadsheet row.

[← Back to CopyDoc Video Tutorials](/copydoc/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/odONMaXerQQ)

## What this video covers

This tutorial shows how to use the CopyDoc Figma plugin to sync inline merge tags in text layers with data from a spreadsheet. It also covers syncing image fills from an artwork column and automatically repeating a selected layer for every spreadsheet row.

## Things you'll need

- A Figma file with text layers containing placeholder merge tags
- A spreadsheet file such as an Excel XLSX file, CSV, Google Sheets URL, or Airtable URL

## Steps

1. [ ] Open your Figma file, find CopyDoc from the actions menu, and save it to your Figma plugins list or run it from Saved Plugins.
2. [ ] Prepare a spreadsheet with column headings that match your placeholder merge tags, using the format #{column_name} in the text layers.
3. [ ] In CopyDoc, click sync content and choose a source such as an Excel XLSX file, CSV, Google Sheets URL, or Airtable URL.
4. [ ] Drag and drop the spreadsheet into the plugin to preview the matched columns, including any image URL column such as artwork.
5. [ ] Select the frames you want to update and click sync rows with layers to replace the placeholder merge tags with spreadsheet values and sync image fills.
6. [ ] For repeating content, turn on auto repeat on a selected frame and use sync and repeat selected layer to duplicate it for all spreadsheet rows.
7. [ ] If needed, use the layer-name method by renaming a text layer to match a spreadsheet heading, then sync rows with layers to replace the full layer content.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=odONMaXerQQ)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-replace-merge-tags-in-figma-text-layers-with-spreadsheet-files-using-copy-doc)
- [Read: Using merge tags in Figma to replace merge tag text with spreadsheet data](/copydoc/sync/merge-tags)
- [Next: Sync content with advanced merge tags in spreadsheet cells](/copydoc/tutorials/sync-content-with-advanced-merge-tags-in-spreadsheet-cells)
- [Open CopyDoc in the Figma Community](https://www.figma.com/community/plugin/900893606648879767)

---

---
url: "/copydoc/tutorials/sync-svg-icons-from-a-spreadsheet-to-your-figma-layers.md"
description: "This tutorial shows how to use the CopyDoc plugin to sync spreadsheet content into Figma layers, including text and SVG icons. It demonstrates two workflows: pulling data from a public Google Sheet with hosted SVG links or embedded SVG tags, and importing a local ZIP file containing an Excel/CSV spreadsheet plus SVG files."
---

# Sync SVG icons from a spreadsheet to your Figma layers

> This tutorial shows how to use the CopyDoc plugin to sync spreadsheet content into Figma layers, including text and SVG icons. It demonstrates two workflows: pulling data from a public Google Sheet with hosted SVG links or embedded SVG tags, and importing a local ZIP file containing an Excel/CSV spreadsheet plus SVG files.

[← Back to CopyDoc Video Tutorials](/copydoc/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/eybeymh7IdQ)

## What this video covers

This tutorial shows how to use the CopyDoc plugin to sync spreadsheet content into Figma layers, including text and SVG icons. It demonstrates two workflows: pulling data from a public Google Sheet with hosted SVG links or embedded SVG tags, and importing a local ZIP file containing an Excel/CSV spreadsheet plus SVG files.

## Things you'll need

- A Figma file with layers named to match the spreadsheet headers.
- A spreadsheet in Google Sheets, Excel, or CSV format.
- For Google Sheets, a shared link set to "anyone with the link can be a viewer".

## Steps

1. [ ] Open your Figma file, find CopyDoc from Resources, and run it from Saved plugins.
2. [ ] Click the sync spreadsheet button in CopyDoc and choose a Google Sheets link or a local Excel, CSV, or ZIP file.
3. [ ] Make sure the spreadsheet header names match the Figma layer names you want to sync, such as "hash title" and "hash icon".
4. [ ] For Google Sheets, set sharing to "anyone with the link can be a viewer," copy the link, and paste it into CopyDoc.
5. [ ] Select the parent frame layers in Figma, choose the sync order, and click sync rows.
6. [ ] For a local import, zip the spreadsheet together with the referenced SVG files, then drag and drop the ZIP into CopyDoc's Drop Zone and sync the rows.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=eybeymh7IdQ)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-sync-svg-icons-from-a-spreadsheet-to-your-figma-layers-using-copy-doc)
- [Read: Including image URLs in your spreadsheet](/copydoc/sync/images)
- [Next: Style Figma layers from a spreadsheet with CSS style sync](/copydoc/tutorials/style-figma-layers-from-a-spreadsheet-with-css-style-sync)
- [Open CopyDoc in the Figma Community](https://www.figma.com/community/plugin/900893606648879767)

---

---
url: "/copydoc/tutorials/sync-xlsx-excel-spreadsheet-content-to-figma.md"
description: "The video shows how to use the CopyDoc Figma plugin to sync content from an Excel spreadsheet into Figma designs. It explains how to name spreadsheet headers and Figma layers the same way so text and image content can be populated row by row into repeated layout blocks."
---

# Sync XLSX Excel spreadsheet content to Figma

> The video shows how to use the CopyDoc Figma plugin to sync content from an Excel spreadsheet into Figma designs. It explains how to name spreadsheet headers and Figma layers the same way so text and image content can be populated row by row into repeated layout blocks.

[← Back to CopyDoc Video Tutorials](/copydoc/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/7YmbMj8LGXI)

## What this video covers

The video shows how to use the CopyDoc Figma plugin to sync content from an Excel spreadsheet into Figma designs. It explains how to name spreadsheet headers and Figma layers the same way so text and image content can be populated row by row into repeated layout blocks.

## Things you'll need

- A Figma file with layers named to match the spreadsheet headers.
- An Excel spreadsheet formatted with headers in the first row and content rows below.
- Direct image URLs for any spreadsheet fields meant to populate image layers.

## Steps

1. [ ] Install the CopyDoc plugin from the Figma Community.
2. [ ] Prepare an Excel spreadsheet with headers in the first row that match the Figma layer names, and add content rows underneath.
3. [ ] In Figma, name the text and image layers to match the spreadsheet headers, using the same labels such as #Tag, #Title, #Min, #Reviews, and #Poster.
4. [ ] Duplicate the design block or component to create multiple repeated instances that all use the same named layers.
5. [ ] For image fields, paste a direct image URL into the spreadsheet cell after copying the image address from an image source.
6. [ ] Open CopyDoc from Plugins, use Sync Content to import the Excel file, then select the target layers in Figma.
7. [ ] Click Sync Spreadsheet Rows with Figma Layers to populate each selected block with one spreadsheet row, including text and images.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=7YmbMj8LGXI)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/sync-xlsx-excel-spreadsheet-content-to-figma-using-copy-doc)
- [Read: Syncing content to Figma from a CSV/XLSX file](/copydoc/sync/spreadsheet-file)
- [Next: Sync CSV spreadsheet content to Figma](/copydoc/tutorials/sync-csv-spreadsheet-content-to-figma)
- [Open CopyDoc in the Figma Community](https://www.figma.com/community/plugin/900893606648879767)

---

---
url: "/copydoc/tutorials/the-simplest-way-to-localize-any-figma-designs.md"
description: "This tutorial shows how to use the CopyDoc Figma plugin to localize a Figma frame by exporting its text to an Excel spreadsheet, translating it into multiple locales, and importing the translations back into Figma. It also shows that re-importing updated spreadsheets creates a new translated page without overwriting the existing one."
---

# The simplest way to localize any Figma designs

> This tutorial shows how to use the CopyDoc Figma plugin to localize a Figma frame by exporting its text to an Excel spreadsheet, translating it into multiple locales, and importing the translations back into Figma. It also shows that re-importing updated spreadsheets creates a new translated page without overwriting the existing one.

[← Back to CopyDoc Video Tutorials](/copydoc/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/BJ03GUCHTjg)

## What this video covers

This tutorial shows how to use the CopyDoc Figma plugin to localize a Figma frame by exporting its text to an Excel spreadsheet, translating it into multiple locales, and importing the translations back into Figma. It also shows that re-importing updated spreadsheets creates a new translated page without overwriting the existing one.

## Things you'll need

- Figma
- CopyDoc plugin
- Microsoft Excel or another spreadsheet tool

## Steps

1. [ ] Install the CopyDoc plugin from the Figma Community Plugins tab.
2. [ ] Open your Figma file, right-click, go to Plugins, and launch CopyDoc.
3. [ ] Choose “Localize Figma Frames,” then click “Localize Frames” to load the frames on the current page.
4. [ ] Select the frame you want to localize, add locales such as French, Japanese, and German, and click “Export to Excel Spreadsheet.”
5. [ ] Open the exported Excel file, fill in the translation columns for each locale, and save the completed spreadsheet.
6. [ ] Return to CopyDoc, drag and drop the translated Excel file into the plugin, then click “Localize Selected Frames” to import the translations.
7. [ ] Review the newly created translations page in Figma, and repeat the import process later if you want to update translations without overwriting the earlier page.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=BJ03GUCHTjg)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-easily-localize-and-translate-any-figma-designs-using-copy-doc)
- [Read: Localize your Figma design text layers](/copydoc/localization/export)
- [Next: Translate Figma text layers with XLIFF files](/copydoc/tutorials/translate-figma-text-layers-with-xliff-files)
- [Open CopyDoc in the Figma Community](https://www.figma.com/community/plugin/900893606648879767)

---

---
url: "/copydoc/tutorials/translate-figma-text-layers-with-xliff-files.md"
description: "This video shows how to localize and translate Figma text layers with the CopyDoc Figma plugin using XLIFF files. It demonstrates exporting text to XLIFF, translating the file, and importing it back into Figma to update the text layers."
---

# Translate Figma text layers with XLIFF files

> This video shows how to localize and translate Figma text layers with the CopyDoc Figma plugin using XLIFF files. It demonstrates exporting text to XLIFF, translating the file, and importing it back into Figma to update the text layers.

[← Back to CopyDoc Video Tutorials](/copydoc/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/LHIOqns7QU8)

If you searched for **Localize Figma Text**, **Localise Figma Text**, **Export/Import XLIFF**, or **XLF**, this tutorial covers that exact CopyDoc workflow.

## What this video covers

This video shows how to localize and translate Figma text layers with the CopyDoc Figma plugin using XLIFF files. It demonstrates exporting text to XLIFF, translating the file, and importing it back into Figma to update the text layers.

If you searched for **Localize Figma Text**, **Localise Figma Text**, **Export/Import XLIFF**, or **XLF**, this tutorial covers that exact CopyDoc workflow.

## Things you'll need

- CopyDoc Figma plugin installed
- A Figma file with text layers to translate
- An installed font for any text layers you want to update

## Steps

1. [ ] Install the CopyDoc Figma plugin from the Figma community if it is not already installed.
2. [ ] Open your Figma file, then right-click and go to Plugins to launch "CopyDoc Text Kit".
3. [ ] In "Localize Figma Text", click "Export/Import XLIFF", choose the source language, target language, optional design references, and an XLIFF format, then click "Export XLIFF" and download the file.
4. [ ] Open the exported XLIFF file in a text or code editor and translate the text from each <source> tag into the matching <target> tag, then save the file.
5. [ ] Return to Figma, open "Localize Figma Text" again, choose the import option, and drag and drop the translated XLIFF file into the import area.
6. [ ] Confirm the detected translated language and click "Update Figma text layers translation" to apply the translations to the design.
7. [ ] If needed, repeat the process to switch the text layers back to another language or export additional XLIFF files for other translations.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=LHIOqns7QU8)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-translate-figma-text-layers-with-xliff-files-using-copy-doc)
- [Read: Localize your Figma design text layers](/copydoc/localization/export)
- [Next: The simplest way to localize any Figma designs](/copydoc/tutorials/the-simplest-way-to-localize-any-figma-designs)
- [Open CopyDoc in the Figma Community](https://www.figma.com/community/plugin/900893606648879767)

---

---
url: "/copydoc/tutorials/update-figma-text-from-google-docs-with-docx-files.md"
description: "This tutorial shows how to use the CopyDoc Figma plugin to export Figma text layers as a DOCX file, edit the content in Google Docs, and then import the updated file back into Figma. It also demonstrates previewing the changes before applying them and notes that longer text may require manual layout adjustments if Auto Layout is not used."
---

# Update Figma text from Google Docs with DOCX files

> This tutorial shows how to use the CopyDoc Figma plugin to export Figma text layers as a DOCX file, edit the content in Google Docs, and then import the updated file back into Figma. It also demonstrates previewing the changes before applying them and notes that longer text may require manual layout adjustments if Auto Layout is not used.

[← Back to CopyDoc Video Tutorials](/copydoc/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/QA1mmImf7EI)

## What this video covers

This tutorial shows how to use the CopyDoc Figma plugin to export Figma text layers as a DOCX file, edit the content in Google Docs, and then import the updated file back into Figma. It also demonstrates previewing the changes before applying them and notes that longer text may require manual layout adjustments if Auto Layout is not used.

## Things you'll need

- Figma with the CopyDoc plugin available
- A Google Docs document for editing the exported DOCX file

## Steps

1. [ ] Open Figma’s Resources icon, search for CopyDoc under the plugins tab, and save or run the plugin.
2. [ ] In CopyDoc, choose Export text layers and set the format to DOCX.
3. [ ] Export and download the DOCX file, then upload it into Google Docs through File > Open > Upload.
4. [ ] Edit the text in Google Docs, including names, subheadings, tags, formatting, and links.
5. [ ] Download the edited file from Google Docs as Microsoft Word DOCX.
6. [ ] Back in Figma, open Import text layers and drag the updated DOCX file into the drop zone.
7. [ ] Review the preview of changes, then click Update Figma text layers to apply them.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=QA1mmImf7EI)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-update-figma-text-from-google-docs-with-docx-files-using-copy-doc)
- [Read: Re-importing text updates to Figma](/copydoc/update/import)
- [Next: Update Figma text from Office 365 with DOCX files](/copydoc/tutorials/update-figma-text-from-office-365-with-docx-files)
- [Open CopyDoc in the Figma Community](https://www.figma.com/community/plugin/900893606648879767)

---

---
url: "/copydoc/tutorials/update-figma-text-from-microsoft-word-with-docx-files.md"
description: "This video shows how to use the CopyDoc Figma plugin to export Figma text layers to a DOCX file, edit the copy in Microsoft Word, and then import the updates back into Figma. It also demonstrates that formatting changes and text edits in the Word document can be reflected in the Figma file."
---

# Update Figma text from Microsoft Word with DOCX files

> This video shows how to use the CopyDoc Figma plugin to export Figma text layers to a DOCX file, edit the copy in Microsoft Word, and then import the updates back into Figma. It also demonstrates that formatting changes and text edits in the Word document can be reflected in the Figma file.

[← Back to CopyDoc Video Tutorials](/copydoc/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/eULh-xz99NU)

## What this video covers

This video shows how to use the CopyDoc Figma plugin to export Figma text layers to a DOCX file, edit the copy in Microsoft Word, and then import the updates back into Figma. It also demonstrates that formatting changes and text edits in the Word document can be reflected in the Figma file.

## Things you'll need

- Figma
- CopyDoc Figma plugin
- Microsoft Word

## Steps

1. [ ] Open Figma Resources, search for CopyDoc under the Plugins tab, and save the plugin if desired.
2. [ ] Run CopyDoc from Saved Plugins in the Figma canvas.
3. [ ] Choose export text layers, select DOCX as the export format, pick the frames to include, and export the DOCX file.
4. [ ] Unzip the exported folder and open the DOCX file in Microsoft Word.
5. [ ] Edit the text content in Word, including text, links, and formatting such as bold and italic, then save the document.
6. [ ] Return to Figma, choose import text layers, and drag and drop the DOCX file into the plugin.
7. [ ] Review the preview of changes, then click update Figma text layers to apply the updates to the file.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=eULh-xz99NU)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-update-figma-text-from-microsoft-word-with-docx-files-using-copy-doc)
- [Read: Re-importing text updates to Figma](/copydoc/update/import)
- [Next: Update Figma text from Google Docs with DOCX files](/copydoc/tutorials/update-figma-text-from-google-docs-with-docx-files)
- [Open CopyDoc in the Figma Community](https://www.figma.com/community/plugin/900893606648879767)

---

---
url: "/copydoc/tutorials/update-figma-text-from-office-365-with-docx-files.md"
description: "This tutorial shows how to use the CopyDoc Figma plugin to export Figma text layers as a DOCX file, edit the content in Office 365 Word, and import the updated text back into Figma. It also shows how to preview the changes before applying them and notes that longer imported text may require manual adjustment if Auto Layout is not used."
---

# Update Figma text from Office 365 with DOCX files

> This tutorial shows how to use the CopyDoc Figma plugin to export Figma text layers as a DOCX file, edit the content in Office 365 Word, and import the updated text back into Figma. It also shows how to preview the changes before applying them and notes that longer imported text may require manual adjustment if Auto Layout is not used.

[← Back to CopyDoc Video Tutorials](/copydoc/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/Wj9_H2yhibg)

## What this video covers

This tutorial shows how to use the CopyDoc Figma plugin to export Figma text layers as a DOCX file, edit the content in Office 365 Word, and import the updated text back into Figma. It also shows how to preview the changes before applying them and notes that longer imported text may require manual adjustment if Auto Layout is not used.

## Things you'll need

- Figma
- CopyDoc Figma plugin
- Office 365 Word

## Steps

1. [ ] Open the Figma Resources icon, search for CopyDoc, and run or save the plugin from Plugins.
2. [ ] In Figma, open CopyDoc from Saved Plugins and choose export text layers with DOCX selected as the export format.
3. [ ] Select the frames to export and click export DOCX, then download the DOCX export and open the ZIP contents to access the file.
4. [ ] Upload the DOCX file to OneDrive in Office 365 and open it in Word to edit the text content and formatting.
5. [ ] In Word, make your changes, then use File > Save As > Download a copy to save the updated DOCX to your computer.
6. [ ] Return to CopyDoc in Figma, choose import text layers, drag and drop the updated DOCX file, review the previewed changes, and click update Figma text layers.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=Wj9_H2yhibg)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-update-figma-text-from-office-365-with-docx-files-using-copy-doc)
- [Read: Re-importing text updates to Figma](/copydoc/update/import)
- [Next: Update Figma text from Google Docs with DOCX files](/copydoc/tutorials/update-figma-text-from-google-docs-with-docx-files)
- [Open CopyDoc in the Figma Community](https://www.figma.com/community/plugin/900893606648879767)

---

---
url: "/copydoc/tutorials/update-figma-text-layer-content-with-markdown-files.md"
description: "This tutorial shows how to use the CopyDoc Figma plugin to export text layers to a Markdown file, edit the copy in a markdown editor, and import the file back to update Figma text layers. It also demonstrates grouped duplicate text layers for updating repeated text in multiple places at once."
---

# Update Figma text layer content with Markdown files

> This tutorial shows how to use the CopyDoc Figma plugin to export text layers to a Markdown file, edit the copy in a markdown editor, and import the file back to update Figma text layers. It also demonstrates grouped duplicate text layers for updating repeated text in multiple places at once.

[← Back to CopyDoc Video Tutorials](/copydoc/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/LIeoBRnuchM)

## What this video covers

This tutorial shows how to use the CopyDoc Figma plugin to export text layers to a Markdown file, edit the copy in a markdown editor, and import the file back to update Figma text layers. It also demonstrates grouped duplicate text layers for updating repeated text in multiple places at once.

## Things you'll need

- Figma
- CopyDoc Figma plugin

## Steps

1. [ ] Open Figma’s Resources icon, search for CopyDoc under the Plugins tab, and run or save the plugin.
2. [ ] In CopyDoc, choose Export text layers, select Markdown, and export the file.
3. [ ] Download and unzip the Markdown export, then edit the text content in a markdown editor while leaving the ID lines unchanged.
4. [ ] Return to CopyDoc, choose Import text layers, and drag the saved Markdown file into the drop zone.
5. [ ] Review the detected changes, optionally select or deselect items, and click Update Figma text layers to apply them.
6. [ ] To update repeated text in multiple layers, re-export with the group duplicate text layers toggle enabled, edit the grouped Markdown file, and import it again.
7. [ ] Optionally use Quick export with selected layers to export only specific text layers instead of an entire frame.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=LIeoBRnuchM)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-update-figma-text-layer-content-with-markdown-files-using-copy-doc)
- [Read: Re-importing text updates to Figma](/copydoc/update/import)
- [Next: Update Figma text from Microsoft Word with DOCX files](/copydoc/tutorials/update-figma-text-from-microsoft-word-with-docx-files)
- [Open CopyDoc in the Figma Community](https://www.figma.com/community/plugin/900893606648879767)

---

---
url: "/copydoc/tutorials/use-airtable-as-a-figma-text-content-library.md"
description: "This video shows how to connect Airtable to the CopyDoc Figma plugin so an Airtable spreadsheet can be used as a custom content library in Figma. It covers creating an Airtable personal access token, adding an Airtable URL in CopyDoc, applying text snippets to Figma text layers, and refreshing synced content when the spreadsheet changes."
---

# Use Airtable as a Figma text content library

> This video shows how to connect Airtable to the CopyDoc Figma plugin so an Airtable spreadsheet can be used as a custom content library in Figma. It covers creating an Airtable personal access token, adding an Airtable URL in CopyDoc, applying text snippets to Figma text layers, and refreshing synced content when the spreadsheet changes.

[← Back to CopyDoc Video Tutorials](/copydoc/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/Aw9wleHHvOs)

## What this video covers

This video shows how to connect Airtable to the CopyDoc Figma plugin so an Airtable spreadsheet can be used as a custom content library in Figma. It covers creating an Airtable personal access token, adding an Airtable URL in CopyDoc, applying text snippets to Figma text layers, and refreshing synced content when the spreadsheet changes.

## Things you'll need

- A Figma file with the CopyDoc plugin available
- An Airtable account with a base and a personal access token

## Steps

1. [ ] Open the Figma file, find CopyDoc in Resources under the Plugins tab, and run or save the plugin.
2. [ ] In CopyDoc, open Content Library, switch to the Integrations tab, and change the integration from Google Sheets to Airtable.
3. [ ] In Airtable, create a personal access token with the data records read scope and add the correct base, then copy the token into CopyDoc.
4. [ ] Create or open an Airtable base, add the content rows you want, and copy the Airtable URL into CopyDoc, then click ADD to load the sheet.
5. [ ] Select a Figma text layer and use Apply or choose a specific snippet from the panel to populate it from Airtable.
6. [ ] Select multiple text layers to apply snippets in order, random order, or alphabetical order.
7. [ ] If the Airtable content changes, refresh the loaded library in CopyDoc to sync new fields or updated snippets.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=Aw9wleHHvOs)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-use-airtable-as-a-figma-text-content-library-using-copy-doc)
- [Read: Integrating with content from Airtable](/copydoc/library/airtable)
- [Next: Use Figma Variables as a reusable text content library](/copydoc/tutorials/use-figma-variables-as-a-re-useable-text-content-library)
- [Open CopyDoc in the Figma Community](https://www.figma.com/community/plugin/900893606648879767)

---

---
url: "/copydoc/tutorials/use-figma-variables-as-a-re-useable-text-content-library.md"
description: "This video shows how to use Figma string variables as a reusable text content library in the CopyDoc Figma plugin. It covers creating local string variables in Figma, importing them into CopyDoc through the Integrations tab, and applying them to one or more text layers with ordered or random options."
---

# Use Figma Variables as a reusable text content library

> This video shows how to use Figma string variables as a reusable text content library in the CopyDoc Figma plugin. It covers creating local string variables in Figma, importing them into CopyDoc through the Integrations tab, and applying them to one or more text layers with ordered or random options.

[← Back to CopyDoc Video Tutorials](/copydoc/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/X6TDkfp0W8A)

## What this video covers

This video shows how to use Figma string variables as a reusable text content library in the CopyDoc Figma plugin. It covers creating local string variables in Figma, importing them into CopyDoc through the Integrations tab, and applying them to one or more text layers with ordered or random options.

## Things you'll need

- A Figma file with local string variables created
- The CopyDoc Figma plugin installed

## Steps

1. [ ] Open the CopyDoc Figma plugin from Resources or from Plugins on the canvas.
2. [ ] Go to Content Library, then open the Integrations tab and select the Figma option for Figma string variables.
3. [ ] Create local string variables in Figma using the create variable button, then name them and paste text into the value field.
4. [ ] Use double pipe symbols to split one variable value into multiple strings, or keep a single value for one item.
5. [ ] Click the refresh icon in CopyDoc to load the Figma variables into the Content Library.
6. [ ] Select one or more text layers in Figma and use Supply to apply a random string, or choose a specific string and apply it.
7. [ ] For multiple selected layers, apply the content in order, random order, alphabetical order, reverse alphabetical order, or the same value across selections.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=X6TDkfp0W8A)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-use-figma-variables-as-a-re-useable-text-content-library-using-copy-doc)
- [Read: Integrating with content from Figma Variables](/copydoc/library/figma)
- [Next: Add realistic placeholder text content in Figma](/copydoc/tutorials/add-realistic-placeholder-text-content-in-figma)
- [Open CopyDoc in the Figma Community](https://www.figma.com/community/plugin/900893606648879767)

---

---
url: "/copydoc/tutorials/use-google-sheets-as-a-figma-text-content-library.md"
description: "This video shows how to use the CopyDoc Figma plugin to connect a Google Sheets file as a Content Library and use the imported snippets to replace text layers in Figma. It also shows how edits in Google Sheets can be refreshed in CopyDoc to keep the library in sync."
---

# Use Google Sheets as a Figma text content library

> This video shows how to use the CopyDoc Figma plugin to connect a Google Sheets file as a Content Library and use the imported snippets to replace text layers in Figma. It also shows how edits in Google Sheets can be refreshed in CopyDoc to keep the library in sync.

[← Back to CopyDoc Video Tutorials](/copydoc/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/dBMsBeyncSk)

## What this video covers

This video shows how to use the CopyDoc Figma plugin to connect a Google Sheets file as a Content Library and use the imported snippets to replace text layers in Figma. It also shows how edits in Google Sheets can be refreshed in CopyDoc to keep the library in sync.

## Things you'll need

- A Figma file with the CopyDoc plugin available.
- A Google Sheets file containing the text content to use as snippets.

## Steps

1. [ ] Open your Figma file, find CopyDoc from Resources > Plugins, and either run it or save it to your Saved plugins list.
2. [ ] In CopyDoc, open Content Library and switch to the Integrations tab, where Google Sheets is selected by default.
3. [ ] In Google Sheets, set General access to "Anyone with the link can be a viewer" and copy the sheet link.
4. [ ] Paste the Google Sheets URL into the "Add new Google sheet" field in CopyDoc and wait for the content to load into the Content Library.
5. [ ] Select a Figma text layer or multiple text layers, then use a snippet’s Apply button or choose a specific item to replace the text.
6. [ ] Use the ordering options to apply content in order, randomly, or alphabetically reverse, depending on how you want the text mapped.
7. [ ] Update the Google Sheet, then click the refresh icon in CopyDoc to reload the latest rows and columns into the library.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=dBMsBeyncSk)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-use-google-sheets-as-a-figma-text-content-library-using-copy-doc)
- [Read: Using Google Sheets as a content library](/copydoc/library/google-sheets)
- [Next: Use Airtable as a Figma text content library](/copydoc/tutorials/use-airtable-as-a-figma-text-content-library)
- [Open CopyDoc in the Figma Community](https://www.figma.com/community/plugin/900893606648879767)

---

---
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 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). 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.

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.

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 text block in the `.md` file represents content from the Figma file. A line containing the corresponding `figma_text_id` appears before each block.

> **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, for example, `**Text to bold**`
- You can specify *Italic* text by using single underscores around the text, for example, `_Italic Text_`
- You can specify ***Bold Italic*** text by using double asterisks and one underscore around the text, for example, `**_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 text block in the `.docx` file represents content from the Figma file. A line containing the corresponding `figma_text_id` appears before each block.

> **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 walks through how to import/export Figma text layers with CSV files using the CopyDoc plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/16QHfpJ8M7E)

### Video Tutorial: Export & Re-Import Figma text content via Airtable sync

This video walks through how to export & re-import Figma text content via Airtable sync using the CopyDoc plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/ZoyLiC8riPc)

### Video Tutorial: Import/export Figma text layers with JSON files

This video walks through how to import/export Figma text layers with JSON files using the CopyDoc plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/Nn01U9o_D9o)

### Video Tutorial: Export and re-import selected text layers in Figma

This video walks through how to export and re-import selected text layers from Figma using the CopyDoc plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/gCQZiVV7HOM)

### Video Tutorial: Update Figma text layer content with Markdown files

This video walks through how to update Figma text layer content with Markdown files using the CopyDoc plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/LIeoBRnuchM)

### Video Tutorial: Update Figma text from Microsoft Word with DOCX files

This video walks through how to update Figma text from Microsoft Word with DOCX files using the CopyDoc plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/eULh-xz99NU)

### Video Tutorial: Update Figma text from Google Docs with DOCX files

This video walks through how to update Figma text from Google Docs with DOCX files using the CopyDoc plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/QA1mmImf7EI)

### Video Tutorial: Update Figma text from Office 365 with DOCX files

This video walks through how to update Figma text from Office 365 with DOCX files using the CopyDoc plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/Wj9_H2yhibg)

---

---
url: "/copydoc/update/export.md"
description: "After exporting text layers from your Figma frame(s), you can 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 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.

CopyDoc includes normal text layers and text placed on a path. It can also find supported text inside Figma sections when you use a selection-based export.

## 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).

### Ordering frames and text layers

Use the ordering controls to follow Figma layer order, layer names, visual rows, visual columns, or the available custom order. Visual sorting groups slightly misaligned items into the same row or column, and layer names sort naturally so names such as `Frame 2` appear before `Frame 10`.

These settings control the exported sequence without renaming or rearranging layers on your Figma canvas. Manual localization preview ordering remains controlled by drag and drop.

> **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 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 (for example, "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 (for example, 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 (for example, `.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:** 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 want 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 walks through how to import/export Figma text layers with CSV files using the CopyDoc plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/16QHfpJ8M7E)

### Video Tutorial: Export & Re-Import Figma text content via Airtable sync

This video walks through how to export & re-import Figma text content via Airtable sync using the CopyDoc plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/ZoyLiC8riPc)

### Video Tutorial: Import/export Figma text layers with JSON files

This video walks through how to import/export Figma text layers with JSON files using the CopyDoc plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/Nn01U9o_D9o)

### Video Tutorial: Export and re-import selected text layers in Figma

This video walks through how to export and re-import selected text layers from Figma using the CopyDoc plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/gCQZiVV7HOM)

### Video Tutorial: Update Figma text layer content with Markdown files

This video walks through how to update Figma text layer content with Markdown files using the CopyDoc plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/LIeoBRnuchM)

### Video Tutorial: Update Figma text from Microsoft Word with DOCX files

This video walks through how to update Figma text from Microsoft Word with DOCX files using the CopyDoc plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/eULh-xz99NU)

### Video Tutorial: Update Figma text from Google Docs with DOCX files

This video walks through how to update Figma text from Google Docs with DOCX files using the CopyDoc plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/QA1mmImf7EI)

### Video Tutorial: Update Figma text from Office 365 with DOCX files

This video walks through how to update Figma text from Office 365 with DOCX files using the CopyDoc plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/Wj9_H2yhibg)

## Related CopyDoc guides

- Use the [CopyDoc localization workflow](/copydoc/localization/export) to export, translate, and re-import text for multiple locales.
- Follow the [CopyDoc quick-start guide](/copydoc/overview/quickstart) for the complete setup workflow.
- Explore the [CopyDoc Figma plugin](https://www.hypermatic.com/copydoc/) for spreadsheet sync, text updates, and document exports.

---

---
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 walks through how to find and replace Figma text content in your design's layers using the CopyDoc plugin.
[Embedded media](https://www.youtube-nocookie.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 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 want 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 walks through how to import/export Figma text layers with CSV files using the CopyDoc plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/16QHfpJ8M7E)

### Video Tutorial: Export & Re-Import Figma text content via Airtable sync

This video walks through how to export & re-import Figma text content via Airtable sync using the CopyDoc plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/ZoyLiC8riPc)

### Video Tutorial: Import/export Figma text layers with JSON files

This video walks through how to import/export Figma text layers with JSON files using the CopyDoc plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/Nn01U9o_D9o)

### Video Tutorial: Export and re-import selected text layers in Figma

This video walks through how to export and re-import selected text layers from Figma using the CopyDoc plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/gCQZiVV7HOM)

### Video Tutorial: Update Figma text layer content with Markdown files

This video walks through how to update Figma text layer content with Markdown files using the CopyDoc plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/LIeoBRnuchM)

### Video Tutorial: Update Figma text from Microsoft Word with DOCX files

This video walks through how to update Figma text from Microsoft Word with DOCX files using the CopyDoc plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/eULh-xz99NU)

### Video Tutorial: Update Figma text from Google Docs with DOCX files

This video walks through how to update Figma text from Google Docs with DOCX files using the CopyDoc plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/QA1mmImf7EI)

### Video Tutorial: Update Figma text from Office 365 with DOCX files

This video walks through how to update Figma text from Office 365 with DOCX files using the CopyDoc plugin.
[Embedded media](https://www.youtube-nocookie.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 walks through how to spell check text in your Figma designs using the CopyDoc plugin.
[Embedded media](https://www.youtube-nocookie.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 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.

> **Note:** If a spelling check fails, CopyDoc displays the error and stops the progress indicator. Resolve the reported issue before running the check again.

## 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 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 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 the **Undo** button will instantly change the corrected word back to the original word in each of the locations where it exists.

---

---
url: "/crypto/ai-agents.md"
description: "Install the Hypermatic Agent Skill for Crypto and give Codex, Claude Code, Grok, and compatible agents the correct secure-sharing workflows."
---

# Use Crypto with AI agents

> Install the Hypermatic Agent Skill for Crypto and give Codex, Claude Code, Grok, and compatible agents the correct secure-sharing workflows.

Hypermatic Agent Skills give your AI agent a concise Crypto playbook. The Crypto skill guides password-protected publishing and export workflows while treating passwords, private links, and credentials as sensitive.

- [Install Hypermatic Agent Skills](https://hypermatic.ai/): Copy the terminal installer or the no-terminal prompt. One install includes all 12 Hypermatic plugin skills.

## Install the Crypto skill

1. Open [Hypermatic Agent Skills](https://hypermatic.ai/).
2. Copy the terminal command, or copy the no-terminal prompt into your agent.
3. Confirm that `hypermatic-crypto` appears in the installed skills.
4. Ask the agent to use the Crypto skill for your task.

## What the skill can help with

- Prepare password-protected design, prototype, recording, or PDF workflows.
- Confirm publishing, versioning, access, and revocation requirements.
- Keep passwords and credentials out of logs, screenshots, and exported evidence.
- Report the exact protected artifact and access checks that were observed.

## Keyboard Shortcuts

Use [Crypto Keyboard Shortcuts](/crypto/automation/parameters) for supported repeatable tasks with a hidden plugin panel. The reference includes plain-field examples, selection requirements and a machine-readable registry. Choose a supported action from the installed plugin’s Quick Actions list; results use normal notifications, document changes and saved files.

## Example prompts

- `Use the Crypto skill to prepare a password-protected review link for these frames.`
- `Use the Crypto skill to explain how I can revoke this shared design later.`
- `Use the Crypto skill to validate this protected PDF handoff.`

## Approval and verification

The agent can guide the workflow, or use available Figma and computer-control tools after you approve the requested changes. You should enter passwords and credentials in the trusted Crypto or provider interface, not in chat. The agent must ask before publishing, replacing, or revoking a shared artifact.

## Trial limits

If Crypto reports that its trial allowance is exhausted, the agent should stop retrying and send you to [Crypto pricing and purchase options](https://www.hypermatic.com/crypto/#pro). Complete checkout and license activation yourself, then tell the agent when Crypto is active.

## Keep the skill current

Return to [Hypermatic Agent Skills](https://hypermatic.ai/) and use the **Update** command to install the latest stable Crypto instructions.

---

---
url: "/crypto/automation/parameters.md"
description: "Run Crypto Quick Actions with simple named inputs and current-selection shortcuts."
---

# Crypto Keyboard Shortcuts

> Run Crypto Quick Actions with simple named inputs and current-selection shortcuts.

Run common Crypto tasks from Figma Quick Actions without opening the plugin panel. Choose a named shortcut below. Use the normal plugin panel for detailed settings and authoring.

## Run a keyboard shortcut

Every shortcut requires a verified valid license or remaining trials. If verification fails or your trials have expired, open the normal plugin panel to activate your license. Opening the panel remains available.

1. Select the layers you want to work with, if the shortcut uses a selection.
2. Open Figma Quick Actions with **Command + /** on Mac or **Ctrl + /** on Windows.
3. Search for the plugin and choose the named shortcut below.
4. Enter the fields shown. Optional fields may be skipped; use Tab to edit them. Run the shortcut and check the result or complete its save dialog.

Creation shortcuts ask for names or dimensions directly. Selected-layer shortcuts use the current selection automatically. These everyday shortcuts do not ask for Target or JSON. Choose **Open Crypto** for the normal plugin panel.

| Shortcut | Inputs |
| --- | --- |
| **Upload Selected Designs** | None; runs immediately |
| **Export Selected Designs as PDF (Custom Settings…)** | Password protection (optional), PDF quality (optional) |

Fixed-choice fields use readable labels. Search by the displayed label or the underlying value; agent inputs continue to use the values shown in the command reference.

## Run from the context menu

Select the intended layers, right-click, and choose **Plugins → Crypto** (development plugins appear under **Development**). Choose an action and its format or preset. A preset runs immediately when it needs no required input; finish the save dialog when one appears.

Each preset sets its named option. Omitted compatible options inherit the plugin’s saved settings; an explicit action or option takes priority over conflicting saved behavior. Only explicitly entered fields or the selected menu choice override them for that run. If a setting has never been saved, the normal setting or documented fallback applies. Export overrides are not saved back to your preferences. If a saved format is unavailable as a shortcut, choose a supported format explicitly or use the normal panel. To combine options, choose **Custom Settings…** within the action and enter the parameters. Actions needing text, URLs, names or dimensions still prompt for those required fields. **Open Crypto** opens the normal panel.

| Menu choice | Next step |
| --- | --- |
| **Upload Selected Designs** | Runs immediately |
| **Export Selected Designs as PDF → Use Saved Settings** | Runs immediately |
| **Export Selected Designs as PDF → Export Selected Designs as PDF (Custom Settings…)** | Enter Password protection (optional), PDF quality (optional) |

## Detailed editing

Use the normal plugin panel for detailed settings, longer content, bulk authoring and browsing components or templates. The shortcut menu contains only the everyday commands listed above.

Keep each pasted field below 150 characters: Figma desktop can truncate pasted input at that boundary. Longer input belongs in the normal panel.

If an older plugin shows Action, Target and Options instead, update it to use these named shortcuts. A Target value is a layer ID or selection, never the name of a new item.

## Crypto actions

| Action | What it does | Target |
| --- | --- | --- |
| [`publish`](#publish) | Upload selected frames as a new protected design version | One or more eligible layers |
| [`pdf`](#pdf) | Export selected frames as a PDF using saved protection settings | One or more eligible layers |

### publish

Upload selected frames as a new protected design version. Select one or more eligible layers.

This shortcut has no input fields.

This is an explicit external write to the plugin’s existing Hypermatic services. It reuses saved account setup and may create an account using the existing workflow. Do not retry automatically after an upload error; check the remote destination for partial output.

Choose **Upload Selected Designs**. It runs immediately using the current selection.

Agent host input

```json
{"command":"shortcut-publish","parameters":{}}
```

### pdf

Export selected frames as a PDF using saved protection settings. Select one or more eligible layers.

| Option | Type | Required / default | Meaning and accepted values |
| --- | --- | --- | --- |
| `protection` | string | Fallback: `"saved"` | Use a previously saved password, or explicitly export without protection. `saved`, `none` |
| `dpi` | string | Fallback: `"ebook"` | Existing PDF quality preset. `screen`, `ebook`, `printer`, `prepress`, `default` |

Nested required fields apply when their parent object or array item is supplied. Omitted optional values use the existing operation’s behavior unless a default is listed.

Choose **Export Selected Designs as PDF (Custom Settings…)**. Enter these plain fields; no JSON is required:

- **Password protection**: **Use Saved Password**
- **PDF quality**: **eBook (150 dpi)**

Agent host input

```json
{"command":"shortcut-pdf","parameters":{"protection":"saved","dpi":"ebook"}}
```

## Using shortcuts with an agent

Read the machine-readable registry linked below and choose an action offered by the installed plugin’s Quick Actions list. The registry uses Hypermatic option definitions rather than standard JSON Schema: `min` and `max` constrain string length, array length or numeric value according to the field type; nested definitions use `fields` and `item`. Unknown fields are rejected.

The agent needs a host that can invoke Figma Quick Actions and observe the normal plugin result. Parameters do not add a REST or MCP launcher. The expandable examples are input data for a compatible host, not executable API calls; shortcut inputs use plain strings in `parameters`, including numbers and format choices. Never claim that a shortcut ran from its prepared input alone.

Verify the visible outcome: the changed Figma layers, saved export, or published page. Read the normal success/error notification and any partial-export warning. Complete native save dialogs as needed; a download starting does not prove that the file was saved. Users do not need to open developer tools or read a console.

## Troubleshooting

| Symptom | Next step |
| --- | --- |
| Action is unavailable | Update the plugin and check its Quick Actions list; use the normal panel if the action is unavailable. |
| Options are invalid or may have been truncated | Use individual plain field values below 150 characters, with only fields accepted by that shortcut. |
| Target is missing or ineligible | Open the correct page, check the action’s layer requirements, and select the intended layers again. |
| A license or trial error appears | Complete the plugin’s normal activation flow before rerunning. |
| Download was requested but no saved file is visible | Check the native save dialog and download location. Inspect the actual file. |
| A command fails, times out or is cancelled | Check the document and remote destination before retrying; earlier changes or uploads may already exist. |

Commands have a five-minute deadline. Errors do not imply a full rollback. Automatically retrying a create, replacement or upload can duplicate or overwrite work.

[Machine-readable command registry](/automation/parameters/crypto.json) contains the same action IDs and option definitions.

## Current limits

Publish creates a new protected design version using the existing account setup and upload feature; it can create a remote account. Prototype publication, updates to existing versions and password rotation remain interactive. PDF export uses the saved password-protection state and quality. Choosing protection none disables protection for that export only. A saved enabled protection setting requires its saved password. Explicitly choosing Use Saved Password also requires a saved password and enables protection for that run.

## Related documentation

- [Install and run Crypto](/crypto/overview/install)
- [Figma plugin parameters](https://developers.figma.com/docs/plugins/plugin-parameters/)
- [Figma hidden UI options](https://developers.figma.com/docs/plugins/api/properties/figma-showui/)

---

---
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 walks through how to add password protection to your Figma designs using the Crypto plugin.
[Embedded media](https://www.youtube-nocookie.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.

Visual sorting tolerates small alignment differences and uses each frame's absolute canvas position, including frames nested inside different Figma Sections.

### Sort frames visually by Figma Layer Name

Selecting the **Sort frames by Figma Layer Name** option will automatically sort the order of your frames naturally according to their Figma layer names, so names such as `Frame 2` appear before `Frame 10`.

## 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 also copies its URL and password.** To generate different details for the duplicate, enter the Konami code (**Up**, **Up**, **Down**, **Down**, **Left**, **Right**, **Left**, **Right**, **B**, **A**) while the plugin is open. Crypto creates a new URL and password without deleting 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.

Each upload belongs to the Figma page it started from. Switching pages loads that page’s settings and version history; return to the original page to find an upload that completed there. Wait for an active upload or settings update to finish before starting another on the same page.

> **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 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 want 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 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 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 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 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 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://www.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://www.hypermatic.com/crypto/#pro).

- **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 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 (for example, a “find layer by name” plugin)
- Modify any data in your Figma document (for example, a “rename selected layers” plugin)
- Communicate with any server over the internet (for example, 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. 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](/tinyimage/downsize) 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 (for example, 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](/tinyimage/downsize) 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 [Figma bug](https://forum.figma.com/t/pdf-export-consistently-missing-elements/3547) that can show purple boxes instead of images. Crypto uses Figma's native PDF export, so the same problem can appear in Crypto exports.

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.

---

---
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-nocookie.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 a 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 of all of the Figma plugin features.

> **Warning:** 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.

> **Info:** If you ever need to use a different license key at any time (for example, 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: "Share Figma designs and prototypes through password-protected URLs or PDF files."
---

# Get started with Crypto

> Share Figma designs and prototypes through 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 and 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 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.
- View uploaded designs on browser-based preview pages.
- 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.
- Drag frames to change their display order.
- 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 lets you 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.

Keep the same Figma page open while the PDF is generated. If you switch pages, start the export again on the page you want to use. If an export fails, you can retry from the toolbar.

## 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 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 the exported `.pdf` file on your computer, and pasting the password from the Crypto plugin (which you specified in the settings); this lets you 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 walks through how to add password protection to your Figma prototype embeds using the Crypto plugin.
[Embedded media](https://www.youtube-nocookie.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.

Each upload belongs to the Figma page it started from. Switching pages loads that page’s settings and version history; return to the original page to find an upload that completed there. Wait for an active upload or settings update to finish before starting another on the same page.

> **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 want 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 this icon button will toggle the visibility of the icons. You can hover back over the **Visibility** icon button to reveal and click it again to toggle the toolbar back to being visible.

> **Tip:** **Refocus the Figma embed.** After toggling icon visibility or using another Crypto toolbar control, click the Figma prototype again before using its keyboard shortcuts.

---

---
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 walks through how to record your Figma prototype interactions to a video file using the Crypto plugin.
[Embedded media](https://www.youtube-nocookie.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 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 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 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: "Learn how to password-protect, encrypt, and securely share Figma designs and prototype embeds with Crypto."
---

# Crypto Video Tutorials

> Learn how to password-protect, encrypt, and securely share Figma designs and prototype embeds with Crypto.

## Video Tutorials

- [Password protect static designs](/crypto/tutorials/password-protect-static-designs)
- [Password protect Figma prototype embeds](/crypto/tutorials/password-protect-figma-prototype-embeds)
- [Record your Figma prototype to a video file](/crypto/tutorials/record-your-figma-prototype-to-a-video-file)

---

---
url: "/crypto/tutorials/password-protect-figma-prototype-embeds.md"
description: "This tutorial shows how to use the Crypto Password Protection Figma plugin to create a password-protected URL for a Figma prototype embed. It also demonstrates how to view the protected prototype, use the embed controls, and later delete the prototype URL or change Figma sharing permissions."
---

# Password protect Figma prototype embeds

> This tutorial shows how to use the Crypto Password Protection Figma plugin to create a password-protected URL for a Figma prototype embed. It also demonstrates how to view the protected prototype, use the embed controls, and later delete the prototype URL or change Figma sharing permissions.

[← Back to Crypto Video Tutorials](/crypto/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/xJ1IpxQgotU)

## What this video covers

This tutorial shows how to use the Crypto Password Protection Figma plugin to create a password-protected URL for a Figma prototype embed. It also demonstrates how to view the protected prototype, use the embed controls, and later delete the prototype URL or change Figma sharing permissions.

## Things you'll need

- A Figma file with prototype interactions already set up
- Access to the Figma Share menu to copy the file link

## Steps

1. [ ] Open Figma Community, search for Crypto, and install the Crypto Password Protection plugin.
2. [ ] In your Figma file, make sure the design has prototype interactions, then open Crypto Password Protection from Plugins.
3. [ ] Switch the plugin to Figma Prototype (Live Embed), click Share Prototype URL, and paste in the Figma file URL after setting the file to Anyone with the link and copying the link from the Share menu.
4. [ ] Choose the prototype options such as scaling and whether to show hotspot hints on click, then click Create Prototype URL.
5. [ ] Copy the generated secure prototype URL and password, open the URL in a browser, and log in with the password to view the embedded prototype.
6. [ ] Use the embed shortcuts like Z for size, R to reset, Left and Right to navigate, F for full screen, and Esc to exit full screen; use the hide and Eye icons to toggle the toolbar.
7. [ ] To remove access, either change Figma sharing back to Only people invited to this file or rerun the plugin and click Delete Prototype URL.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=xJ1IpxQgotU)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-password-protect-figma-prototypes-using-crypto)
- [Read: Uploading password protected Figma Prototypes](/crypto/prototypes)
- [Next: Record your Figma prototype to a video file](/crypto/tutorials/record-your-figma-prototype-to-a-video-file)
- [Open Crypto in the Figma Community](https://www.figma.com/community/plugin/819688895973707151)

---

---
url: "/crypto/tutorials/password-protect-static-designs.md"
description: "This tutorial shows how to use the Crypto Figma plugin to password protect Figma designs and share them as secure links. It also demonstrates how to update an existing upload or create a new version while keeping designs organized and accessible in the browser."
---

# Password protect static designs

> This tutorial shows how to use the Crypto Figma plugin to password protect Figma designs and share them as secure links. It also demonstrates how to update an existing upload or create a new version while keeping designs organized and accessible in the browser.

[← Back to Crypto Video Tutorials](/crypto/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/RXqpOgT0a04)

## What this video covers

This tutorial shows how to use the Crypto Figma plugin to password protect Figma designs and share them as secure links. It also demonstrates how to update an existing upload or create a new version while keeping designs organized and accessible in the browser.

## Things you'll need

- Figma
- Crypto Figma plugin

## Steps

1. [ ] Install the Crypto Figma plugin from Figma Community by searching for "Crypto" under Plugins.
2. [ ] Open the plugin from your Figma file by right-clicking and choosing Plugins > Crypto Password Protection, or relaunch it from the sidebar after it has been opened once.
3. [ ] Select the frames you want to include in the secure preview, then click "Securely Share Designs" to generate and upload the protected link.
4. [ ] Copy the secure link and password from the plugin, then open the link in a browser and log in with the password.
5. [ ] To change the shared preview without changing the link, reopen Crypto and choose "Update Last Uploaded Version" after selecting the updated frames.
6. [ ] To create a separate version, reorder frames if needed and click "Upload New Version" to generate a new secure URL and versioned preview.
7. [ ] Use the padlock icon in the plugin or the browser preview to quickly copy the password or URL later.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=RXqpOgT0a04)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-password-protect-figma-designs-using-crypto)
- [Read: Uploading password protected static Figma Designs](/crypto/designs)
- [Next: Password protect Figma prototype embeds](/crypto/tutorials/password-protect-figma-prototype-embeds)
- [Open Crypto in the Figma Community](https://www.figma.com/community/plugin/819688895973707151)

---

---
url: "/crypto/tutorials/record-your-figma-prototype-to-a-video-file.md"
description: "This tutorial shows how to use the Crypto Figma plugin to open a secure Figma prototype, record the prototype interactions in the browser, and download the result as a video file. It also shows how to preview the saved WebM recording and notes that you can convert it to another format if needed."
---

# Record your Figma prototype to a video file

> This tutorial shows how to use the Crypto Figma plugin to open a secure Figma prototype, record the prototype interactions in the browser, and download the result as a video file. It also shows how to preview the saved WebM recording and notes that you can convert it to another format if needed.

[← Back to Crypto Video Tutorials](/crypto/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/9XmuVFkxe28)

## What this video covers

This tutorial shows how to use the Crypto Figma plugin to open a secure Figma prototype, record the prototype interactions in the browser, and download the result as a video file. It also shows how to preview the saved WebM recording and notes that you can convert it to another format if needed.

## Things you'll need

- Figma
- Crypto Figma plugin
- A configured Figma Prototype (Live Embed) and secure prototype URL

## Steps

1. [ ] In Figma, open the Community page and search for "crypto" under Plugins, then install "Crypto Password Protection" if needed.
2. [ ] Back in your project, open the plugin from right-click > Plugins > Crypto Password Protection.
3. [ ] Use the existing Figma Prototype (Live Embed) setup, click "Share Prototype URL", copy the password, and open the secure URL in a web browser.
4. [ ] Log in with the password so the Figma prototype loads in the browser under the Figmatic domain.
5. [ ] Click the video camera icon in the browser toolbar, allow screen capture, and choose the Chrome tab for the Crypto URL by clicking "Share".
6. [ ] Interact with the prototype while recording, then click "Stop" to end the capture and download the video file automatically.
7. [ ] To preview the recording, drag the downloaded file into Chrome and play it; the file is saved as a WebM video.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=9XmuVFkxe28)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-record-your-figma-prototype-to-a-video-file-using-crypto)
- [Read: Recording Figma designs or prototypes to videos](/crypto/record)
- [Next: Password protect Figma prototype embeds](/crypto/tutorials/password-protect-figma-prototype-embeds)
- [Open Crypto in the Figma Community](https://www.figma.com/community/plugin/819688895973707151)

---

---
url: "/emailify/ai-agents.md"
description: "Install the Hypermatic Agent Skill for Emailify and give Codex, Claude Code, Grok, and compatible agents the correct email workflows."
---

# Use Emailify with AI agents

> Install the Hypermatic Agent Skill for Emailify and give Codex, Claude Code, Grok, and compatible agents the correct email workflows.

Hypermatic Agent Skills give your AI agent a concise Emailify playbook. The Emailify skill understands supported component structure, direct Figma-agent workflows, validation, export, ESP handoff, and the difference between a preview and real inbox evidence.

- [Install Hypermatic Agent Skills](https://hypermatic.ai/): Copy the terminal installer or the no-terminal prompt. One install includes all 12 Hypermatic plugin skills.

## Install the Emailify skill

1. Open [Hypermatic Agent Skills](https://hypermatic.ai/).
2. Copy the terminal command, or copy the no-terminal prompt into your agent.
3. Confirm that `hypermatic-emailify` appears in the installed skills.
4. Ask the agent to use the Emailify skill for your task.

## What the skill can help with

- Design or edit supported Emailify component structures.
- Use the current Figma MCP contract or AI Designer JSON workflow when appropriate.
- Validate responsive email content before HTML, MJML, AMP, PDF, or ESP export.
- Separate plugin preview, exported HTML, ESP-template, campaign, and inbox evidence.

## Keyboard Shortcuts

Use [Emailify Keyboard Shortcuts](/emailify/automation/parameters) for supported repeatable tasks with a hidden plugin panel. The reference includes plain-field examples, selection requirements and a machine-readable registry. Choose a supported action from the installed plugin’s Quick Actions list; results use normal notifications, document changes and saved files.

## Example prompts

- `Use the Emailify skill to validate this responsive email before HTML export.`
- `Use the Emailify skill to prepare this email for our ESP.`
- `Use the Emailify skill to diagnose this dark-mode or Outlook rendering issue.`

## Approval and verification

The agent can guide the workflow, or use available Figma and computer-control tools after you approve the requested changes. It must preserve Emailify component contracts and ask before uploading or replacing an ESP template. An Emailify preview is not proof of rendering in every inbox client.

## Trial limits

If Emailify reports that its trial allowance is exhausted, the agent should stop retrying and send you to [Emailify pricing and purchase options](https://www.hypermatic.com/emailify/#pro). Complete checkout and license activation yourself, then tell the agent when Emailify is active.

## Keep the skill current

Return to [Hypermatic Agent Skills](https://hypermatic.ai/) and use the **Update** command to install the latest stable Emailify instructions.

---

---
url: "/emailify/automation/parameters.md"
description: "Run Emailify Quick Actions with simple named inputs and current-selection shortcuts."
---

# Emailify Keyboard Shortcuts

> Run Emailify Quick Actions with simple named inputs and current-selection shortcuts.

Run common Emailify tasks from Figma Quick Actions without opening the plugin panel. Choose a named shortcut below. Use the normal plugin panel for detailed settings and authoring.

## Run a keyboard shortcut

Every shortcut requires a verified valid license or remaining trials. If verification fails or your trials have expired, open the normal plugin panel to activate your license. Opening the panel remains available.

1. Select the layers you want to work with, if the shortcut uses a selection.
2. Open Figma Quick Actions with **Command + /** on Mac or **Ctrl + /** on Windows.
3. Search for the plugin and choose the named shortcut below.
4. Enter the fields shown. Optional fields may be skipped; use Tab to edit them. Run the shortcut and check the result or complete its save dialog.

Creation shortcuts ask for names or dimensions directly. Selected-layer shortcuts use the current selection automatically. These everyday shortcuts do not ask for Target or JSON. Choose **Open Emailify** for the normal plugin panel.

| Shortcut | Inputs |
| --- | --- |
| **Export Selected Emails (Custom Settings…)** | Format (optional) |

Fixed-choice fields use readable labels. Search by the displayed label or the underlying value; agent inputs continue to use the values shown in the command reference.

Emailify shortcuts focus on exporting selected emails. Create emails and add components in the normal plugin panel.

## Run from the context menu

Select the intended layers, right-click, and choose **Plugins → Emailify** (development plugins appear under **Development**). Choose an action and its format or preset. A preset runs immediately when it needs no required input; finish the save dialog when one appears.

Each preset sets its named option. Omitted compatible options inherit the plugin’s saved settings; an explicit action or option takes priority over conflicting saved behavior. Only explicitly entered fields or the selected menu choice override them for that run. If a setting has never been saved, the normal setting or documented fallback applies. Export overrides are not saved back to your preferences. If a saved format is unavailable as a shortcut, choose a supported format explicitly or use the normal panel. To combine options, choose **Custom Settings…** within the action and enter the parameters. Actions needing text, URLs, names or dimensions still prompt for those required fields. **Open Emailify** opens the normal panel.

| Menu choice | Next step |
| --- | --- |
| **Export Selected Emails → Use Saved Settings** | Runs immediately |
| **Export Selected Emails → HTML Email** | Runs immediately |
| **Export Selected Emails → MJML Source Code** | Runs immediately |
| **Export Selected Emails → AMP Email** | Runs immediately |
| **Export Selected Emails → Export Selected Emails (Custom Settings…)** | Enter Format (optional) |

## Detailed editing

Use the normal plugin panel for detailed settings, longer content, bulk authoring and browsing components or templates. The shortcut menu contains only the everyday commands listed above.

Keep each pasted field below 150 characters: Figma desktop can truncate pasted input at that boundary. Longer input belongs in the normal panel.

If an older plugin shows Action, Target and Options instead, update it to use these named shortcuts. A Target value is a layer ID or selection, never the name of a new item.

## Emailify actions

| Action | What it does | Target |
| --- | --- | --- |
| [`export`](#export) | Export selected email frames without uploading | One or more eligible layers |

### export

Export selected email frames without uploading. Select one or more eligible layers.

| Option | Type | Required / default | Meaning and accepted values |
| --- | --- | --- | --- |
| `format` | string | Fallback: `"html"` | Local email export format. `html`, `mjml`, `amp` |

Nested required fields apply when their parent object or array item is supplied. Omitted optional values use the existing operation’s behavior unless a default is listed.

Choose **Export Selected Emails (Custom Settings…)**. Enter these plain fields; no JSON is required:

- **Format**: **HTML Email**

Agent host input

```json
{"command":"export-emails","parameters":{"format":"html"}}
```

## Using shortcuts with an agent

Read the machine-readable registry linked below and choose an action offered by the installed plugin’s Quick Actions list. The registry uses Hypermatic option definitions rather than standard JSON Schema: `min` and `max` constrain string length, array length or numeric value according to the field type; nested definitions use `fields` and `item`. Unknown fields are rejected.

The agent needs a host that can invoke Figma Quick Actions and observe the normal plugin result. Parameters do not add a REST or MCP launcher. The expandable examples are input data for a compatible host, not executable API calls; shortcut inputs use plain strings in `parameters`, including numbers and format choices. Never claim that a shortcut ran from its prepared input alone.

Verify the visible outcome: the changed Figma layers, saved export, or published page. Read the normal success/error notification and any partial-export warning. Complete native save dialogs as needed; a download starting does not prove that the file was saved. Users do not need to open developer tools or read a console.

## Troubleshooting

| Symptom | Next step |
| --- | --- |
| Action is unavailable | Update the plugin and check its Quick Actions list; use the normal panel if the action is unavailable. |
| Options are invalid or may have been truncated | Use individual plain field values below 150 characters, with only fields accepted by that shortcut. |
| Target is missing or ineligible | Open the correct page, check the action’s layer requirements, and select the intended layers again. |
| A license or trial error appears | Complete the plugin’s normal activation flow before rerunning. |
| Download was requested but no saved file is visible | Check the native save dialog and download location. Inspect the actual file. |
| A command fails, times out or is cancelled | Check the document and remote destination before retrying; earlier changes or uploads may already exist. |

Commands have a five-minute deadline. Errors do not imply a full rollback. Automatically retrying a create, replacement or upload can duplicate or overwrite work.

[Machine-readable command registry](/automation/parameters/emailify.json) contains the same action IDs and option definitions.

## Current limits

Shortcuts export selected emails as HTML, MJML or AMP. Email creation, component insertion, composition, styling, localization and provider uploads use the normal panel.

## Related documentation

- [Install and run Emailify](/emailify/overview/install)
- [Figma plugin parameters](https://developers.figma.com/docs/plugins/plugin-parameters/)
- [Figma hidden UI options](https://developers.figma.com/docs/plugins/api/properties/figma-showui/)

---

---
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 (for example, `#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 walks through how to add a
  countdown timer to HTML emails in Figma using the Emailify plugin.
  [Embedded media](https://www.youtube-nocookie.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 (for example, 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 (for example, `https://mycdn/img.jpg`) or a dynamic variable for your email platform's templating language (for example, `{ 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 lets you 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 lets you 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:** By default, 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.

For compact icon/text tables or checklist-style rows, select the main **Data Table** layer, click **Settings**, enable **Mobile Alignment**, and choose **Center**. This centers the exported table itself on mobile while keeping the icon/text spacing intact, which is more reliable than manually adding left/right padding to approximate centering across different mobile clients.

## Expanding Data Table images on mobile

Select an image inside your Data Table, open **Settings**, and enable **100% Width Image on Mobile**. Images wider than 150px in the desktop design can expand to fill their table cell on mobile, matching the minimum width used for Column images. Images 150px wide or smaller keep their size to avoid stretching small icons.

The width check uses the image layer's rendered width, not the width of a nested master component. Explicit mobile width or height overrides take precedence. To make the image fill a stacked row, configure the Data Table Row to stack its cells on mobile as well.

## 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 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:** Emailify needs permission to read the spreadsheet. In Google Sheets, select **Share** and change **Restricted** to **Anyone with the link** before copying the URL.

## Looping a Data Table Row with dynamic data

[Video](/assets/videos/emailify/content/looping-data-table-row.mp4)

To iterate over data from your email platform, select a **Data Table Row** and open **Settings**. Add the loop syntax to **Opening Code Wrapper** (for example, `{% for product in collection.products %}`) and **Closing Code Wrapper** (for example, `{% endfor %}`). Emailify inserts the tags around that row's `` element in the exported HTML.

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 walks through how to add dynamic content to HTML emails in Figma using the Emailify plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/0512urzUNTk)

### Video Tutorial: Adding a dynamic product feed to your Klaviyo emails in Figma

This video walks through how to add custom Klaviyo product feeds into custom HTML templates with the Emailify Figma Plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/PaRSIxVLYlo)
### Video Tutorial: Create Klaviyo abandoned cart flow email template in Figma

This video walks through how to add custom Klaviyo abandoned cart flows into custom HTML templates with the Emailify Figma Plugin.
[Embedded media](https://www.youtube-nocookie.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 (for example, 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 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 (for example, `https://mycdn/img.jpg`) or a dynamic variable for your email platform's templating language (for example, `{ 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 Emailify 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.

### Keep buttons narrow with long placeholder text

If a button contains a long variable or placeholder that will later be replaced with a shorter date or label, size its text layer for the final label. Otherwise, the placeholder can make the exported button too wide, and Outlook can keep that width even after your email platform replaces the placeholder.

1. Select the **Text layer inside the Button** in Figma.
2. Set that text layer's **Horizontal resizing** to **Fixed width**, and choose a width that fits the expected final date or label.
3. Open **Type settings**, enable **Truncate text**, and set **Max lines** to **1**.
4. Keep the full variable or placeholder in the text layer, then export the email again.
5. Send a test through your email platform to check the button with the final replacement text, including in Outlook if affected.

> **Note:** Truncation only changes how the placeholder appears on the Figma canvas. The full placeholder remains in the exported HTML for your email platform to replace. Allow enough width for the longest final label you expect to send.

## Adding dynamic color and font family variables

[Video](/assets/videos/emailify/content/dynamic-color-name-variables.mp4)

### Dynamic color variables

If you want to make any background color, text color or stroke color in your email designs render as a dynamic code snippet (for example, **&lcub;&lcub; primary_color &rcub;&rcub;**) instead of its normal hex value from the Figma color (for example, `#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 (for example, **&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 want to make any `font-family` CSS value color render as a dynamic code snippet (for example, **&lcub;&lcub; customer.font_family &rcub;&rcub;**) instead of its normal font value from the Figma color (for example, `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 (for example, **&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)

To iterate over data from your email platform, select a **Data Table Row** and open **Settings**. Add the loop syntax to **Opening Code Wrapper** (for example, `{% for product in collection.products %}`) and **Closing Code Wrapper** (for example, `{% endfor %}`). Emailify inserts the tags around that row's `` element in the exported HTML.

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 walks through 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-nocookie.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 slower export times.

## Why is my exported GIF larger than the original GIF?

If you change the GIF layer's aspect ratio in Figma, Emailify has to recreate the GIF frames into a new `.gif` file so the exported email matches the cropped image area. HTML email clients do not support CSS cropping for GIFs in the same way Figma previews them, so recreating the frames can increase the final file size and slow down export.

To keep the exported GIF closer to the original file size, resize the GIF proportionally and keep the original aspect ratio.

> **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, Add the word **Transparent** anywhere in your Figma layer's name (for example, `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, Add the word **Transparent** anywhere in your Figma layer's name (for example, `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 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 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 a destination URL."
---

# Adding links to buttons in your emails

> You can add clickable rich text buttons into your email designs that can be linked to a destination 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 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

For links added through Emailify's link fields or Figma text hyperlinks, the HTML export omits executable `javascript:` and `vbscript:` destinations. Dynamic template links and image source URLs keep their existing behavior.

> **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:** 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 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).

For links added through Emailify's link fields or Figma text hyperlinks, the HTML export omits executable `javascript:` and `vbscript:` destinations. Dynamic template links and image source URLs keep their existing behavior.

> **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.

For links added through Emailify's link fields or Figma text hyperlinks, the HTML export omits executable `javascript:` and `vbscript:` destinations. Dynamic template links and image source URLs keep their existing behavior.

> **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 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 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.

For links added through Emailify's link fields or Figma text hyperlinks, the HTML export omits executable `javascript:` and `vbscript:` destinations. Dynamic template links and image source URLs keep their existing behavior.

> **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.

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)**. 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 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.

For links added through Emailify's link fields or Figma text hyperlinks, the HTML export omits executable `javascript:` and `vbscript:` destinations. Dynamic template links and image source URLs keep their existing behavior.

> **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.

For links added through Emailify's link fields or Figma text hyperlinks, the HTML export omits executable `javascript:` and `vbscript:` destinations. Dynamic template links and image source URLs keep their existing behavior.

> **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 (for example, 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:** 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://www.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 walks through how to translate HTML email designs with localization in Figma using the Emailify plugin.
[Embedded media](https://www.youtube-nocookie.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 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 walks through how to localize HTML email designs with markdown text formatting in Figma using the Emailify plugin.
[Embedded media](https://www.youtube-nocookie.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, for example, `**Text to bold**`
- You can specify *Italic* text by using single underscores around the text, for example, `_Italic Text_`
- You can specify ***Bold Italic*** text by using double asterisks and one underscore around the text, for example, `**_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)
- [Locize API](/emailify/localization/locize)
- [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 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 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 walks through how to add UTM tracking code to HTML email links from Figma using the Emailify Figma plugin.
[Embedded media](https://www.youtube-nocookie.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/ai-designer.md"
description: "Create branded Emailify templates with an agent Skill, a copy-and-paste LLM workflow, or a connected AI provider."
---

# Creating emails with AI Designer

> Create branded Emailify templates with an agent Skill, a copy-and-paste LLM workflow, or a connected AI provider.

The **AI Designer** tab connects your Emailify component library to AI tools while keeping Emailify responsible for validating the result and creating the finished Figma template. Choose **Agent (Skill)**, **Copy & Paste Prompt**, or **LLM Provider API** depending on how you want to work.

> **Note:** AI Designer is currently in beta and is being actively improved. Its interface, downloaded Skill, agent instructions, prompts, validation, and workflow steps may change as we refine the experience based on customer feedback.

**Agent (Skill)** is the recommended default for repeat use and large branded libraries. The skill keeps your component catalog, editable slot references, brand profile, copy policy, response schema, and validator together. It uses a compact index and opens detailed component files only when required, so the complete catalog is not bundled into every brief.

> **Warning:** Agent (Skill) and Copy & Paste Prompt do not send your brief or component library to an AI model from inside the plugin. LLM Provider API sends the generated request to the AI provider you select using your own API key.

## How it works

1. Open Emailify in Figma.
2. Click the **+** icon in the plugin header to open the **New Email** modal.
3. Select **AI Designer**.
4. Choose one of the three workflow tabs:
   - **Agent (Skill):** download a reusable Skill, load it in Codex or Claude Code, then give the agent your brief.
   - **Copy & Paste Prompt:** add your brief, copy the generated prompt into any supported LLM, then paste its JSON response back into Emailify.
   - **LLM Provider API:** add your brief and generate the JSON directly through ChatGPT, Claude, or Gemini using your own API key.
5. Review or import the generated JSON in the final step.
6. When the response is valid, click **Create Email** or **Create Emails**.

Emailify validates the response before insertion, creates a new Emailify frame in Figma, inserts the selected component instances in the returned order, and applies supported text, link, image, alt text, and hidden-layer overrides. Branded components remain linked instances after their content is updated.

## Choose a workflow

### Agent (Skill)

Use **Agent (Skill)** when you regularly generate emails from the same branded component library, have a large catalog, or want your agent to validate files locally before returning them. This is the most token-efficient mode for repeat work because the catalog is installed once and inspected progressively.

### Copy & Paste Prompt

Use **Copy & Paste Prompt** for a quick manual workflow with ChatGPT, Claude, Gemini, or another capable LLM:

1. Paste your brief into **Add Email Brief**.
2. Click **Copy Prompt**.
3. Paste the prompt into your LLM and ask it to return only the requested JSON.
4. Paste or import the response in **Paste LLM Result**.
5. Click **Create Email** when validation passes.

For multi-email briefs, Emailify focuses the copied prompt on one email at a time. The button shows the current email number so each response stays complete and within the model's output limit.

### LLM Provider API

Use **LLM Provider API** when you want Emailify to handle prompt generation and JSON generation without copying between apps:

1. Paste your brief into **Add Email Brief**.
2. Select ChatGPT, Claude, or Gemini.
3. Add the provider API key if it has not already been configured in AI Designer.
4. Click **Generate Email Draft**.
5. Review the generated JSON, then click **Create Email** when validation passes.

The API key field is shown by default. After you save a key, Emailify displays it as a masked, read-only password field. Click the pencil **Edit** button to replace it. API keys are stored per Figma user on your device and are not written into the Figma file. Multi-email briefs are generated as separate provider requests and merged into one validated result to reduce truncated responses.

Emailify validates each generated result before enabling **Create Email**. If the provider returns valid JSON with incorrect component or editable-slot references, Emailify automatically sends one catalog-aware repair request to the same provider. The New Email modal remains disabled while generation and automatic repair are in progress. When the repaired result passes validation, **Create Email** becomes available without an extra action.

If automatic repair cannot resolve the response, Emailify keeps the generated JSON, displays the remaining validation issue, and shows **Repair** so you can retry. An automatic repair uses an additional provider API request only when the initial result has a blocking validation error.

> **Note:** API usage is billed by your selected provider. Emailify does not add model usage charges.

## Agent (Skill) workflow

### Step 1: Download Skill

AI Designer automatically uses Emailify components found in the current Figma file as the Skill's primary catalog. This includes local components and design-system component instances already used in the file, so there is no separate source-selection step.

If the current file does not contain any Emailify components, AI Designer automatically uses **Default Emailify Presets** instead. When branded Figma components are available, Emailify presets are not included as fallback, keeping the generated email in strict branded mode.

Step 1 intentionally has one action: **Download Skill**. Download it again whenever the current component library changes or **Copy Instructions** becomes disabled, then replace the older installed Skill with the fresh package.

> **Note:** For the most branded result, keep reusable headers, footers, hero rows, CTA rows, disclaimers, product rows, and content blocks in the same Figma file before downloading the skill.

### Protect fixed and legal content

To prevent an agent from changing fixed copy, lock the layer or its parent group in Figma. You can also prefix the layer or group name with `🔒`, such as `🔒 Legal`.

AI Designer exports these layers as protected slots. The downloaded Skill tells the agent not to override or hide them, its validator rejects any attempted change, and Emailify leaves the original component content unchanged during import. Use this for approved legal text, disclaimers, footer details, compliance copy, or other content that must remain fixed.

### Build directly with Figma MCP

When Figma write tools are available, the downloaded Skill can assemble or update an email directly in Figma while keeping its Emailify components linked to their original main components. The agent must follow Emailify's exact frame, instance, and subject/preheader metadata conventions before the plugin can adopt the result.

See [Using Emailify with Figma MCP](/emailify/design/figma-mcp) for the canonical agent instruction, naming contract, editing safeguards, and troubleshooting steps. The validated JSON import workflow remains available when direct Figma writing is unavailable.

### Step 2: Generate With Your Agent

The Emailify Skill downloaded in Step 1 is a versioned ZIP containing one ready-to-install `emailify-ai-designer` folder. Its unique filename includes the Skill version, millisecond UTC export time, catalog fingerprint, and configuration fingerprint, for example `emailify-ai-designer-v11-20260722T130512123Z-a1-5bixn7-k11-abc123.zip`.

- `SKILL.md` with the reusable agent workflow and output rules.
- `INSTALL.md` with Codex and Claude Code setup paths and the combined agent instruction.
- `manifest.json` with the exact package filename, Skill version, export time, catalog fingerprint, configuration fingerprint, source, fallback state, and active profile.
- `profile.json` with copy policy, required roles, approved links, and team instructions.
- `catalog-index.json`, a compact component index for discovery.
- `previews/*.jpg`, a 1x visual reference for each successfully exported component.
- `components/*.json`, grouped role files with exact component and slot references, including protected slots.
- `plan-schema.json` and `scripts/validate-plan.js` for validating the component plan before any copy is mapped.
- `response-schema.json` for schema-constrained generation.
- `scripts/search-components.js` and `scripts/inspect-component.js` for token-efficient catalog discovery without loading the full library into context.
- `scripts/create-response-skeleton.js` for creating the exact JSON envelope and override arrays from a validated plan.
- `scripts/validate-response.js`, a local validator the agent runs before returning a file.
- `scripts/self-test.js` and `integrity.json` for checking package files, catalog references, previews, and SHA-256 hashes.
- `data-inventory.json`, which states what the package contains and confirms that it includes no briefs, generated email copy, API keys, or Figma access tokens.
- `agents/openai.yaml` with current Codex skill metadata.
- `integration-contract.json`, a small operation map that includes the direct-to-Figma MCP frame contract and its canonical documentation URL.

The skill uses deterministic progressive loading. The agent searches the compact index with the bundled script, inspects only shortlisted components and their `previewFile` images, validates a compact component plan, creates a response skeleton, fills exact slot references, and validates the finished response. The full catalog does not need to enter the model context.

### Install the Skill

After downloading the current package, click **Copy Instructions**. The button changes to **Instructions Copied** and Emailify confirms the next action. Paste the copied instruction into a new Codex or Claude Code task. The instruction names the exact ZIP that was downloaded, installs or replaces the project Skill, and verifies its filename, version, export time, catalog fingerprint, and configuration fingerprint. The agent stops and asks for a fresh download if any value does not match. When the agent confirms that `emailify-ai-designer` is ready, send your email brief as the next message:

```text
Find the exact Emailify Skill ZIP named [filename copied by Emailify] in my Downloads folder; if it is not there, ask me where I saved it. Replace any existing project skill named emailify-email-assembler or emailify-ai-designer with the skill from that ZIP. Read its manifest.json and verify the exact package filename, Skill version, export time, catalog fingerprint, and configuration fingerprint supplied in this instruction. If any value does not match exactly, stop and ask me to download the current Skill again. Run the installed skill's scripts/self-test.js and stop if it reports an integrity or catalog error. Confirm the installed project-skill path and complete package identity, and that emailify-ai-designer is ready. Then use the emailify-ai-designer skill to turn my attached or pasted email brief into one validated .emailify-ai.json file per email. Preserve supplied copy, use only components from the installed catalog, and write the files locally instead of pasting JSON into chat. If this message does not include an email brief, ask me to attach or paste it before generating anything.
```

The combined instruction lets the current agent choose its supported project skill location and continue directly into the brief. Project scope keeps the Figma file's branded catalog and profile attached to the relevant workspace instead of replacing a global skill.

> **Note:** Skill version 11 adds subject-line and preheader ingestion to the guarded direct-to-Figma MCP workflow while retaining linked-instance checks, protected-slot enforcement, and exact package identity checks. Packages downloaded during an earlier AI Designer beta are intentionally marked stale after this update, so download and install the current Skill once before generating new emails.

To install it manually, extract the ZIP, then move the included `emailify-ai-designer` folder to one of these locations:

- **Codex personal skill:** `~/.agents/skills/emailify-ai-designer/`
- **Codex project skill:** `.agents/skills/emailify-ai-designer/`
- **Claude Code personal skill:** `~/.claude/skills/emailify-ai-designer/`
- **Claude Code project skill:** `.claude/skills/emailify-ai-designer/`

The folder itself must contain `SKILL.md`, `manifest.json`, `catalog-index.json`, `previews/`, `components/`, and the other downloaded resources. Start a new agent task after installing it if the skill does not appear immediately.

### Give the Agent Your Brief

Include the campaign goal, audience, lifecycle stage, timing, subject line, preheader, approved copy, CTA copy, links, image URLs, alt text, brand guidance, legal requirements, ESP requirements, merge tags, and preferred module order when available.

The skill writes a validated `.emailify-ai.json` file into your working directory. For large campaigns it prefers one complete file per email instead of producing partial or truncated JSON in chat.

You can optionally make component matching more explicit by adding lines such as `AI role: hero`, `AI intent: product launch`, `AI usage: use when an image and CTA are required`, or `AI notes: preserve the secondary legal line` to a Figma component description. These hints are optional; AI Designer also infers component roles and capacity from names, descriptions, editable layers, and Emailify metadata.

### Step 3: Import Agent Result

Paste raw JSON, drop one or more generated `.emailify-ai.json` files onto the response field, or click **Choose File**. Emailify validates the complete result automatically.

When the entire result is valid, **Create Email** becomes available. For a valid multi-email response, the button shows the number of emails that will be created. If any part is invalid, creation remains disabled and **Copy Fix Prompt** copies a compact repair request that you can paste back into the same agent task. The repair request uses the Skill already loaded by your agent instead of repeating the component catalog.

You can also run the bundled validator manually from inside the installed skill folder:

```sh
node scripts/validate-response.js /path/to/email.emailify-ai.json
```

Emailify warns you when the last downloaded skill no longer matches the current component catalog, source, profile, copy policy, fallback setting, or skill package version. Download and replace the installed skill whenever any of these inputs change. Your in-progress AI Designer result remains available if you switch to another tab in the same **New Email** modal.

Catalog freshness includes component names, roles, categories, descriptions, AI notes, capacities, editable-slot and protected-slot metadata, and a lightweight visual signature. Download and reinstall the skill whenever Emailify marks it as out of date. Unchanged preview images are reused during the current plugin session to make repeated package downloads faster.

Emailify Skill responses are catalog-bound rather than brief-bound, so they do not require a `requestFingerprint`. They must declare `workflowMode: "external"`, the active `contentPolicy`, an `unresolved` array for each email, and `source: "provided"` or `source: "generated"` for every text override.

## Example brief

```md
# Product Launch Email - Brief + Draft Copy

Audience: Trial users who created an account but have not exported an email.
Goal: Announce the new AI Designer beta and drive users to create a test template.
Tone: Practical, confident, helpful.

Subject: Build branded emails faster with AI Designer
Preheader: Turn approved Emailify components into ready-to-review templates.

Module order:
- Header: use the standard logo header.
- Hero: introduce AI Designer and the main value proposition.
- Content: explain that the workflow uses approved Emailify components first.
- CTA: button linking to https://www.hypermatic.com/emailify/
- Footer: keep the standard footer unchanged.

Hero copy:
Create on-brand emails from your approved components.

Body copy:
Brief your campaign in Codex or Claude Code, let the Emailify Skill create a validated JSON response, and import it into Figma using your reusable branded components.

CTA:
Try AI Designer

Compliance:
Do not invent claims, discounts, testimonials, or legal copy.
```

## Response validation and formats

The **JSON Response** field accepts raw JSON pasted from an AI tool, dropped files, or one or more imported `.json` or `.emailify-ai.json` files.

AI Designer accepts:

- One email draft as a single JSON object.
- Multiple email drafts in an `emails` array.
- Multiple email drafts in a `templates` array.

Emailify Skill responses are checked against the downloaded catalog fingerprint, so Emailify can block stale JSON if the component library changed after the Skill was downloaded.

Before enabling **Create Email**, Emailify checks component references, editable slots, URLs, approved links, image alt text, placeholder content, required roles, header/footer placement, copy policy, and fallback usage behind the scenes.

If the JSON is not valid, click **Copy Fix Prompt** and paste it back into the same Codex or Claude Code task that generated the result. Replace the response field with the agent's corrected JSON.

## Example JSON response

```json
{
  "schemaVersion": 1,
  "workflowMode": "external",
  "contentPolicy": "preserve",
  "catalogFingerprint": "a1-example",
  "emails": [
    {
      "name": "AI Designer Launch",
      "subject": "Build branded emails faster with AI Designer",
      "preheader": "Turn approved Emailify components into ready-to-review templates.",
      "timing": "",
      "job": "Introduce the feature and drive a test template",
      "unresolved": [],
      "components": [
        {
          "role": "hero",
          "componentRef": "c-example",
          "overrides": {
            "text": [
              {
                "slotRef": "t-example-title",
                "value": "Create on-brand emails from your approved components",
                "source": "provided"
              },
              {
                "slotRef": "t-example-body",
                "value": "Brief your campaign in Codex or Claude Code, let the Emailify Skill create a validated JSON response, and import it into Figma using your reusable branded components.",
                "source": "provided"
              },
              {
                "slotRef": "t-example-button",
                "value": "Try AI Designer",
                "source": "provided"
              }
            ],
            "links": [
              {
                "slotRef": "l-example-button",
                "value": "https://www.hypermatic.com/emailify/"
              }
            ],
            "images": [],
            "hidden": []
          }
        }
      ]
    }
  ]
}
```

The component and slot references above are illustrative. Always use the references exported in the current Emailify Skill.

## JSON fields

The top-level response includes:

- `schemaVersion`: the AI Designer response contract version.
- `workflowMode`: `external` for Emailify Skill responses.
- `contentPolicy`: the active profile policy: `preserve`, `light-edit`, or `draft-missing`.
- `catalogFingerprint`: identifies the detected component library exported in the Skill.
- `emails`: one or more complete email drafts. Focused multi-email prompts contain one email.

Each email draft includes:

- `name`: the Figma frame name for the generated email.
- `subject`: the email subject line.
- `preheader`: the email preheader text.
- `timing`: optional send timing from the brief, or an empty string.
- `job`: optional objective from the brief, or an empty string.
- `unresolved`: missing copy, links, images, claims, or legal content that must be resolved before insertion.
- `components`: the ordered list of Emailify components to insert.

Each component includes:

- `role`: a simple layout role such as `header`, `hero`, `content`, `cta`, `disclaimer`, or `footer`.
- `componentRef`: the compact component reference copied in the prompt. Emailify resolves it to the exact Figma component or built-in preset locally.
- `overrides.text`: an array of `{slotRef, value, source}` text replacements, where `source` is `provided` or `generated`.
- `overrides.links`: an array of `{slotRef, value}` link replacements using plain `http` or `https` URLs.
- `overrides.images`: an array of `{slotRef, url, alt, href}` image replacements.
- `overrides.hidden`: slot references to hide when a component has unused optional or placeholder content.

Older responses using exact `componentId`, `componentName`, `presetKey`, and named override objects remain supported for compatibility.

## Best practices

- Use exact component names from your Emailify component library when you want specific branded modules.
- Keep header components first and footer components last unless your brief says otherwise.
- Use a hero or feature component near the top when the campaign needs a strong opening message.
- Use one clear CTA per email unless the brief specifically asks for multiple CTAs.
- Use plain absolute URLs, not markdown-formatted links.
- Include useful alt text for every image URL.
- Preserve legal, compliance, discount, timing, merge tag, and disclaimer copy exactly where required.
- For multi-email campaigns, use a clear heading for each email. The Skill writes one complete response file per email.
- Review the generated Figma template before exporting it to your ESP.

## Troubleshooting

- If Emailify says **The JSON could not be parsed**, remove markdown fences, comments, trailing commas, or any text before or after the JSON.
- If a component does not match, download and reinstall the current skill, then make sure the agent uses only the exported `componentRef` and `slotRef` values.
- If placeholder content remains visible, add the unused layer or slot name to `overrides.hidden`, or choose a simpler component.
- If the output feels generic, make sure your branded Emailify components are in the current file before downloading the Skill. Preset fallback is automatically disabled when branded components are available.
- If Emailify says the component library changed, download and reinstall the current skill, then regenerate the JSON against its new fingerprint.
- If the agent cannot find the exact ZIP named in the copied instruction, tell it where you saved that file instead of asking it to choose a different or older download.
- If a reusable AI workflow uses too many tokens, confirm it runs `scripts/search-components.js` and `scripts/inspect-component.js` instead of loading `catalog-index.json` or every role file into context.
- If a downloaded package appears incomplete or modified, run `node scripts/self-test.js` from the installed skill folder and download a fresh Skill if any integrity check fails.
- If preflight reports generated copy under the preserve policy, change the text source, provide the missing copy, or use a profile that permits drafting.
- For a large multi-email campaign, ask the agent to write one complete `.emailify-ai.json` file per email and use headings such as `Email 1 - Welcome`, `Email 2 - Follow-up`, and `Email 3 - Offer` in the brief.

---

---
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 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 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 your text layer(s), then changing the Figma **Text Align** property to either Left, Center or Right.

## Related Emailify guides

- Start with the [Emailify design fundamentals](/emailify/design/fundamentals) to understand the required row, column, and content structure.
- Configure [responsive email styles](/emailify/design/responsive) after setting the desktop alignment.
- Explore the [Emailify Figma plugin](https://www.hypermatic.com/emailify/) for production-ready HTML email exports.

---

---
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:** 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 (for example, `#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 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 (for example, `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 want 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 (for example, Row, Column, Button etc) in your email designs by clicking 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:** 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 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:** 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 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:** 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 walks through 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-nocookie.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 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 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 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 (for example, 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 (for example, 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 fall back to the first solid color in your Figma gradient for any email clients that don't support gradient backgrounds (for example, Yahoo! Mail)."
---

# Adding a gradient background to your buttons

> Gradient button backgrounds exported from Emailify work in most email clients (including Outlook), but will fall back to the first solid color in your Figma gradient for any email clients that don't support gradient backgrounds (for example, Yahoo! Mail).

### Video Tutorial: Add Outlook-compatible gradient buttons to HTML emails with Figma

This video walks through how to add Outlook-compatible rounded gradient buttons to HTML emails using the Figma Emailify plugin.
  [Embedded media](https://www.youtube-nocookie.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 (for example, Yahoo! Mail).

> **Warning:** 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 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 start populating with content layers (for example, text, images, buttons, etc) and customizing the layer's styles (for example, changing the background color, adjusting [padding and spacing](/emailify/design/item-spacing), etc) in Figma as needed.

> **Note:** Note that each Row can only have a single row of Columns, so you 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 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 walks through 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-nocookie.com/embed/uAxQ5Psi1m4)

## Important design considerations for dark mode

![Email client support for dark mode CSS](/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 color overrides

[Video](/assets/videos/emailify/design/dark-mode-color-override.mp4)

Select an element such as a text layer, image, Button, Row, Column, or Wrapper, then click the **Settings** button in the plugin header. You can set dark mode text and background colors in the **Dark Mode Overrides** section at the bottom of the Settings panel.

For Button, Row, Column, and Wrapper layers, you can also set a **Border Color** override. This changes the border color in dark mode without changing the border width or style used in light mode.

These overrides 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 your Figma content layer (inside of a Column layer), then clicking 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

Open Preview and turn on the **Dark Mode** switch in the HTML Preview toolbar. Keep using the preview-width selector if you want to compare the same dark mode design at desktop or mobile widths. Dark Mode is unavailable while the combined **Desktop & Mobile** Hybrid view is selected.

The local preview uses a generic automatic dark mode treatment and activates the email's `prefers-color-scheme` styles. Its color adjustments provide a rough guide and do not target a particular email client. If the email contains Emailify dark mode overrides, use the adjacent **Overrides** switch to show or hide its explicit background, text, border, and image-swap styles.

> **Warning:** The toggle is a design aid, not a client or device emulator. It does not reproduce authenticated sanitizers, native rendering engines and fonts, app chrome, delivery processing, or every client/version difference.

## Testing your emails in dark mode

### Video Tutorial: Test HTML emails in dark mode with exports from Figma

This video walks through how to test HTML emails in dark mode with exports from Figma using the Emailify plugin and Litmus.com.
[Embedded media](https://www.youtube-nocookie.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 open the **New Email** modal so you can choose how you want to start.

The **New Email** modal opens on **Blank**, followed by **Templates**, **Layouts**, and **AI Designer**. Locally enabled development builds also show the experimental [Import tab](/emailify/design/import) at the end.

Under the **Blank** tab, give your email a name (for example, "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 use [Layouts](/emailify/design/starter-layouts), try the [Randomize](/emailify/design/random-layouts) subcategory, duplicate [Figma Templates](/emailify/design/templates), or use [AI Designer (BETA)](/emailify/design/ai-designer) from the **New Email** modal.

## Adding additional Emailify containers

Add as many Emailify container frames as you need. The plugin treats each container as a separate email.

If you've already added an Emailify frame to your page, you can add a new blank Emailify frame at any time by clicking 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 and paste** an existing Emailify frame if you don't want to start from scratch. Copying and pasting components from inside one Emailify frame into another works, too.

## Selecting an Emailify frame

To select an email and start adding components, use the dropdown box in the Emailify plugin header or click the parent frame on the Figma canvas.

Clicking 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 email width between 600px and 640px is typically recommended because some email client or app reader panels can be less than 700px wide. A narrower reader panel may render the mobile styles instead of the desktop layout. Keeping your Emailify frame between 600px and 640px wide helps the desktop layout render consistently across desktop and tablet email clients.

---

---
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/figma-mcp.md"
description: "The exact frame, component, and metadata contract agents must follow when creating or editing Emailify emails directly in Figma."
---

# Using Emailify with Figma MCP

> The exact frame, component, and metadata contract agents must follow when creating or editing Emailify emails directly in Figma.

This page is the canonical contract for agents that create or edit Emailify emails directly through Figma MCP. Follow the names and structure exactly so Emailify can recognize the result while keeping every component linked to its original main component.

Agents can read the compact [Markdown version of this contract](/emailify/design/figma-mcp.md) without loading the surrounding documentation interface.

> **Note:** This direct-to-Figma workflow is part of AI Designer (BETA). The contract may evolve while the feature is being improved, so agents should read this page before each MCP workflow.

## Agent instruction

Paste this into Codex, Claude Code, or another agent with Figma write access:

```text
Read and follow the current Emailify Figma MCP contract at https://docs.hypermatic.com/emailify/design/figma-mcp.md before writing to Figma. Create or edit the email using only linked Emailify component instances. Preserve protected content, component links, and existing instance overrides. For a new email, create a vertical auto-layout frame on the page or inside Figma sections named exactly "✉️ Emailify MCP: [email name]" and include at least one linked Emailify section, wrapper, hero, or code-only custom-code instance. Ordinary images and frame layers may also be direct children and export as images. Never detach Emailify instances. Create a separate sibling frame in the same page or section named exactly "✉️ Emailify MCP Metadata: [same email name]" with TEXT layers named exactly "Subject Line" and "Preheader Text", containing only their corresponding values. Replace the bracketed placeholders with the actual email name. When finished, tell me to open or refresh Emailify.
```

## Email frame contract

For each new email, create one frame that satisfies every rule below:

| Property | Required value |
| --- | --- |
| Name | `✉️ Emailify MCP: [email name]` |
| Position | Directly on the Figma page or inside Figma sections; never inside an ordinary frame or group |
| Layout | Vertical auto layout |
| Direct children | Linked Emailify component instances, optionally mixed with ordinary exportable visual layers |
| Allowed Emailify roots | `mj-section`, `mj-wrapper`, or `mj-hero`; custom-code instances containing only Emailify Custom Code text layers |
| Content | At least one valid Emailify component instance |

Replace `[email name]` with the actual name. The text after `✉️ Emailify MCP:` becomes the Emailify email name and must not be empty.

Do not detach Emailify instances or recreate their contents as raw layers. Make component content changes through instance overrides so design-system updates can still flow through every assembled email. Ordinary images, frames, groups, and other visual layers may be placed directly inside the email frame; Emailify exports these as images rather than editable email content.

## Subject line and preheader

Create a separate sibling frame in the same page or section for email metadata. Its email name must exactly match the email frame:

| Property | Required value |
| --- | --- |
| Frame name | `✉️ Emailify MCP Metadata: [same email name]` |
| Subject layer | A TEXT layer named `Subject Line` containing only the subject |
| Preheader layer | A TEXT layer named `Preheader Text` containing only the preheader |

Keep this metadata frame outside the email frame. Do not add labels, prefixes, notes, or alternative copy to the text values.

Emailify imports each field independently when the plugin opens or refreshes. Unchanged canvas metadata does not overwrite later manual edits made inside Emailify. If the agent changes a metadata value on the canvas, Emailify imports that changed field on the next refresh.

## Editing an existing email

When updating an email that already follows this contract:

- Modify existing linked instances in place whenever possible.
- Keep Emailify components linked when adding or reordering them. Ordinary visual layers may coexist with them and export as images.
- Preserve the email frame name and vertical auto-layout structure.
- Preserve existing component links and instance overrides unless the brief explicitly changes them.
- Never change, hide, or remove a locked layer or a layer whose name begins with `🔒`.
- Preserve existing links unless the brief provides an exact replacement URL.
- Update the matching metadata frame when the subject line or preheader changes.

## Adoption and validation

After the agent finishes, open or refresh Emailify. Emailify validates the candidate frame before applying its normal `mj-body` metadata and importing matching subject and preheader values.

Emailify rejects the frame if it is nested inside an ordinary frame or group, empty, not vertically arranged, contains a layer that cannot be exported, or lacks any linked Emailify section, wrapper, hero, or code-only custom-code component. Rejection is intentional: ordinary Figma layouts should never be converted into Emailify emails by accident.

## Troubleshooting

| Problem | Check |
| --- | --- |
| Email is not recognized | Confirm the exact `✉️ Emailify MCP:` name, page or section position, vertical auto layout, and at least one linked Emailify direct-child instance. |
| Subject or preheader is missing | Confirm the metadata frame uses the same email name and the text layers are named exactly `Subject Line` and `Preheader Text`. |
| A component is no longer linked | Replace the detached or rebuilt layers with an instance of the original Emailify main component. |
| Legal or fixed content changed | Lock the layer or prefix its name with `🔒`, then restore the approved content in the main component. |
| A manual Emailify value did not change | Edit the corresponding metadata text on the canvas, then refresh Emailify again. |

When Figma write tools are unavailable, use the validated JSON import workflow described in [Creating emails with AI Designer](/emailify/design/ai-designer).

Custom-code components may sit directly between email sections, for example to open and close conditional template logic. Both the main component and its instance must contain one or more Custom Code text layers only. Empty components, nested frames, ordinary text, and mixed visual content do not qualify. Keep these components linked to their masters.

Figma sections may contain your email frames, including nested sections. Keep each metadata frame alongside its email in the same section where possible. Emailify prefers matching metadata in the same container; existing matching metadata elsewhere on the page remains supported. Ordinary frames and groups are not email containers.

---

---
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 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:** If a long variable or placeholder makes your button too wide before it is replaced with a shorter label, set the **text layer inside the Button** to **Fixed width** and enable Figma's **Truncate text** option with **Max lines** set to **1**. Follow the [button placeholder sizing steps](/emailify/content/dynamic#keep-buttons-narrow-with-long-placeholder-text).

> **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 walks through 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-nocookie.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 need to add a link directly to the `.woff` or `.woff2` font file URL, which you can do by clicking the **Configure Fonts** button in the **Preview** panel of the plugin.

This lets you paste a link to each of the custom fonts used in your email designs (for example, `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 (for example, `https://fonts.cdnfonts.com/s/8766/SansThirteenBlack.woff`), which you can 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 (for example, 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.

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) (for example, "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**. 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:** 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 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 (for example, [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 (for example, 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 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 (for example, 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 walks through how to design and export production-ready, responsive HTML email from Figma using the Emailify plugin.
[Embedded media](https://www.youtube-nocookie.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 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.

## Next steps

- Follow the [Emailify quick-start guide](/emailify/overview/quickstart) to build your first email.
- Learn how to [align content in Emailify layouts](/emailify/design/alignment) and then add [responsive email styles](/emailify/design/responsive).
- Explore the [Emailify Figma plugin](https://www.hypermatic.com/emailify/) for production-ready HTML exports and platform integrations.

---

---
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 start populating it with content layers and customizing the styles (for example, 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 walks through how to add hover effects to buttons in HTML emails from Figma using the Emailify Figma plugin.
[Embedded media](https://www.youtube-nocookie.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 walks through how to add hover colors to text links in HTML emails from Figma using the Emailify Figma plugin.
[Embedded media](https://www.youtube-nocookie.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/import.md"
description: "Use Emailify's experimental Import tab to turn existing HTML or MJML into editable email layers in Figma."
---

# Importing HTML and MJML emails

> Use Emailify's experimental Import tab to turn existing HTML or MJML into editable email layers in Figma.

The **Import** tab in **New Email** lets you start with existing email code instead of building every Row and Column from scratch. Paste HTML or MJML, or choose a file, then review the source before creating an editable Emailify frame.

> **Note:** Import is experimental and currently available in locally enabled development builds. It is hidden in the standard plugin build. The steps below apply when your **New Email** modal includes **Import**.

## Supported sources

- **HTML:** paste email HTML or choose an `.html` or `.htm` file.
- **MJML XML:** paste a complete `` document or choose an `.mjml` or `.xml` file.
- **MJML JSON:** paste a standard MJML component tree or choose a `.json` file.
- **Copied email packages:** paste a package from the experimental **Copy to Emailify** extension.

Keep the input under **2 MB**. MJML must also compile to HTML within that limit. `.eml` messages, ZIP files and arbitrary JSON are not supported. For an `.eml` message, extract its HTML body and make its image assets accessible before importing.

Use accessible image URLs. Images that require a login, local files and attachment references such as `cid:` may need to be replaced with hosted assets.

> **Tip:** Looking for an email to try? Visit [Really Good Emails](https://reallygoodemails.com/), open an email, and select **Code** to view its HTML source. Copy the HTML, paste it into Emailify's **Email code** field in the **Import** tab, then click **Preview Import** to review it before creating the email.

## Import an email

1. Open Emailify in Figma.
2. Click the **+** icon in the plugin header to open **New Email**.
3. Select **Import**, at the end of the tab row.
4. Paste your email code into **Email code**, then click **Preview Import**. Alternatively, click **Choose file** to load and analyze a supported file.
5. Review **Preview** and any **Notes**. Check that the source contains the text, images and backgrounds you expect.
6. Enter an **Email name**, then click **Create Email**.
7. Inspect the created Emailify frame and its editable layers.
8. Use [Emailify's HTML preview](/emailify/design/preview) to check the generated desktop and mobile output before exporting.

> **Warning:** The Import panel previews the source email. It does not show the final HTML exported from the reconstructed Emailify layers. Always check the created frame and Emailify's generated preview separately.

Editing the source clears the previous import preparation. Click **Preview Import** again before creating the updated email.

## Import MJML

Provide one complete MJML document with one `mj-body`. For example:

```xml

        Hello from Emailify

```

The equivalent JSON uses `tagName`, `attributes`, `children` and `content`:

```json
{
  "tagName": "mjml",
  "children": [{
    "tagName": "mj-body",
    "attributes": { "width": "600px" },
    "children": [{
      "tagName": "mj-section",
      "children": [{
        "tagName": "mj-column",
        "children": [{ "tagName": "mj-text", "content": "Hello from Emailify" }]
      }]
    }]
  }]
}
```

Emailify validates MJML using **MJML4**, renders it to HTML, then reconstructs editable layers from that HTML. This is not a direct restoration of the original MJML component tree. Review custom CSS, fonts, spacing and responsive behavior after import.

- Inline `mj-include` content before importing; included files are not loaded.
- Replace `mj-raw` with editable MJML components, or import its rendered HTML for review.
- Use a static version of MJML accordions and carousels; interactive components are not supported as editable imports.
- Remove XML DOCTYPE and entity declarations. Fix invalid component structure or attributes before retrying.

## Check the result

Compare the created email with the source on desktop and at a narrow mobile width, such as **375px**. Check all text, images, background images, buttons and link destinations, then inspect column stacking, wrapping and padding.

Import attempts to map the source into Emailify's supported layout structure. Complex nesting, custom CSS and unavailable assets can require manual adjustments. Successful source preparation does not certify an exact visual match or delivery behavior in every email client.

If preparation fails, open **Notes** for the reported issue. Correct the source or replace inaccessible assets, then preview again. If the created layout needs adjustment, use [Rows](/emailify/design/rows), [Columns](/emailify/design/columns) and [responsive settings](/emailify/design/responsive), then follow the [email testing guide](/emailify/export/testing).

---

---
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 (for example, 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 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)

To keep one layer at the top of a Column and another at the bottom, set the Column's vertical Auto Layout sizing to **Fill container**. Then set **Item spacing** to **Auto**. Figma distributes the available space between the layers as the content length changes.

> **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 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:** Note that if you've added any extra paragraph lines (for example, 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 the **Library** icon button in the header tabs row.

## Does Emailify load components from the current Figma file only?

Yes. The **Library** tab loads Emailify components from the current Figma file you have open in Figma.

If a teammate opens a different file, Emailify will only show the Emailify components that already exist in that file. After adding or updating components in the current file, click **Load all Emailify Components from this Figma file** or use **Refresh** to scan the file again.

## Adding components from your Component Library tab

### Video Tutorial: Create a component library for HTML email designs in Figma

This video walks through how to design a Figma component library for HTML emails using the Emailify Figma plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/lQb9-_9maxs)

[Video](/assets/videos/emailify/load-component-library.mp4)

Clicking the **Load all Emailify Components from this Figma file** will find and load previews of any Emailify Figma components in your file; clicking 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 walks through how to add custom categories for Figma email components using the Emailify Figma plugin.
[Embedded media](https://www.youtube-nocookie.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 the **Pencil** icon button in the component library subheader tabs row.

This lets you 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 ←

Visual sorting groups slightly misaligned components into the same row or column. Layer-name sorting is numeric-aware, so names such as `Hero 2` appear before `Hero 10`.

### Adding metadata to your Figma components

[Video](/assets/videos/emailify/figma-component-metadata.mp4)

You can add metadata to your Figma components by clicking your component layer in Figma, and then clicking the **Component configuration** icon button in the Figma right-hand side column next to the component name. This lets you 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 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 also specify the **Alignemnt** (`Left`, `Center` or `Right`), the **Hamburger Icon Size** in pixels (for example, `44`) and the **Hamburger Icon Color** hex code (for example, `#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:** 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 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:** Note that if you've added any extra paragraph lines (for example, 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 each tab will reveal the components that the category contains, which you can 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 walks through how to use 500+ free HTML email components in your Figma designs with the Emailify Figma plugin.
[Embedded media](https://www.youtube-nocookie.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 lets you 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:** External components use Emailify's auto-layout structure. Drag a component up or down inside the Emailify container frame to reorder it.

## 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 text-based components such as paragraphs, quotes, testimonials, 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 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 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.

## Using the preview panel tabs

The preview panel includes three focused views:

- **HTML Preview** shows the current responsive HTML, updates as you edit the Figma layers, and includes a simple dark mode preview toggle.
- **Preflight** checks the production HTML for practical subject, preheader, accessibility, link, image, delivery, and Gmail clipping issues.
- **Test Send** prepares the production HTML so you can copy it into [htmltest.email](https://htmltest.email/) for a manual inbox test.

Preflight and Test Send use Emailify's production-HTML access, so they are available with an active Pro license or while free Pro trial uses remain. See [Testing your HTML emails before sending](/emailify/export/testing) for email-client testing options.

> **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 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 17 Pro Max (**440px** Wide)
- iPhone 16 Pro Max (**430px** Wide)
- iPhone Air (**420px** Wide)
- Google Pixel (**412px** Wide)
- iPhone 17 (**402px** Wide)
- iPhone 16 (**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 email width **between 600px and 640px** is typically recommended because some email client or app reader panels can be less than 700px wide and may render the mobile styles 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)

## Previewing dark mode

Turn on **Dark Mode** in the HTML Preview toolbar to compare the current email with Emailify's approximate local dark mode preview. The preview uses a generic automatic color treatment rather than a particular email client's colors. You can keep using the preview-width selector to review the same dark mode design at desktop or mobile widths. Dark Mode is unavailable while the combined **Desktop & Mobile** Hybrid view is selected.

If the email contains Emailify dark mode overrides, use the adjacent **Overrides** switch to show or hide its explicit background, text, border, and image-swap styles.

> **Warning:** The toggle is a design aid, not a client or device emulator. Email clients apply their own dark mode transformations, and the local preview does not reproduce authenticated sanitizers, native rendering engines and fonts, app chrome, delivery processing, or every client/version difference.

> **Warning:** The [support for dark mode override styles](https://www.caniemail.com/features/css-at-media-prefers-color-scheme/) in email clients is limited. Emailify's explicit overrides are intended for supporting Apple Mail versions; Gmail, Outlook, Windows Mail, Yahoo, and other clients may apply different automatic color behavior.

## 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 (for example, 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 (for example, 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 be manually moved, along with instructions for each item (for example, "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/random-layouts.md"
description: "Use the Randomize subcategory in the Layouts tab to generate and preview logical Emailify layouts from built-in preset components before inserting one into Figma."
---

# Creating email layouts with Randomize

> Use the Randomize subcategory in the Layouts tab to generate and preview logical Emailify layouts from built-in preset components before inserting one into Figma.

The **Randomize** subcategory in the **Layouts** tab creates a randomized Emailify frame from built-in preset components.

Randomize layouts are useful when you want to quickly explore a complete email structure without choosing every row manually. Emailify keeps the generated layout sensible by placing a header at the top, a footer at the bottom, and mixing hero, content, product, proof, and CTA sections in between.

## Generate a Randomize layout

1. Open Emailify in Figma.
2. Click the **+** icon in the plugin header to open the **New Email** modal.
3. Click the **Layouts** tab, then click the **Randomize** subcategory.
4. Click **Generate Layout** to preview a randomized stack of Emailify preset thumbnails.
5. Keep clicking **Generate Layout** until you find a structure you like.
6. Click **Insert to Figma** to create the Emailify frame in the current Figma page.

After the frame is inserted, you can edit the placeholder copy, images, colors, spacing, and layer settings just like any other Emailify design.

## How Randomize chooses layouts

Randomize layouts are generated client-side from Emailify's built-in preset components. The generator uses simple structure rules so the result feels like a usable email rather than a completely arbitrary stack:

- Header presets stay at the top.
- Footer presets stay at the bottom.
- Hero or intro sections are kept near the top.
- Content, product, checklist, proof, and CTA sections are mixed in the middle.
- Duplicate presets are avoided where possible.

The preview uses the same preset thumbnails shown in the **Layouts** tab, so you can review the rough shape before inserting it into Figma.

> **Note:** Randomize layouts do not use your written brief or call an external AI service. They are generated inside the plugin from built-in Emailify presets.

## When to use Randomize

Use Randomize when you want fast layout inspiration or a quick starting point to customize.

Use [Layouts](/emailify/design/starter-layouts) when you want to choose a specific composed layout. Use [Figma Templates](/emailify/design/templates) when you want to duplicate a complete Figma Community template file.

---

---
url: "/emailify/design/responsive.md"
description: "Emailify lets you 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 lets you 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)

## How do I make an Emailify email responsive on mobile?

Emailify exports responsive HTML automatically, and you can fine-tune mobile behavior with mobile override settings on individual Emailify layers. Start with the desktop email frame, then use the plugin preview to check the mobile version before exporting.

## Where do I set mobile overrides?

Select the Emailify layer you want to adjust, click the **Settings** button in the plugin header, then use the mobile override controls for that layer. Text layers, Column layers, Row layers, Hero layers, Wrapper layers, image layers, and button layers can expose different mobile controls depending on the selected layer type.

## Why does mobile layout start at a different width?

Emailify uses a single responsive breakpoint based on the width of the desktop Emailify frame in Figma. If your Emailify frame is 600px wide, mobile styles start at 599px and below. If your frame is wider, the mobile breakpoint will be wider too.

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 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 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 email width **between 600px and 640px** is typically recommended because some email client or app reader panels can be less than 700px wide and may render the mobile styles 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 (for example, 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 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 start populating with content layers and customizing the styles (for example, 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 want to hide a certain element on mobile or desktop for any reason, you can do this by clicking 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.

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)

## How do I stack columns on mobile?

Select the **Row** layer that contains the Column layers, click the **Settings** button in the plugin header, then turn on **Stack Columns in this Row**. By default, this stacks the Row's columns into a single column on mobile.

## Why are columns not stacking on mobile?

Columns will not stack if **Stack Columns in this Row** is turned off for that Row, or if the Row is configured to keep more than one column per row on mobile. Some preset components may also have mobile stacking turned off by default when that matches the preset design.

To fix it, select the Row, open **Settings**, enable **Stack Columns in this Row**, and choose **1 Column Per Row on Mobile** if you want each column to appear one below the other.

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 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/starter-layouts.md"
description: "Use the Layouts tab to create complete Emailify email frames from built-in preset components."
---

# Creating emails with Layouts

> Use the Layouts tab to create complete Emailify email frames from built-in preset components.

[Video](/assets/videos/emailify/design/emailify-layouts.mp4)

The **Layouts** tab in the **New Email** modal creates a new Emailify frame from built-in Emailify preset components.

Unlike the **Templates** tab, which opens complete Figma Community files, Layouts build a new email directly in your current Figma file using hardcoded placeholder content that you can immediately edit.

## Create a layout

1. Open Emailify in Figma.
2. Click the **+** icon in the plugin header to open the **New Email** modal.
3. Click the **Layouts** tab.
4. Choose a layout category, such as **Randomize**, **Promo**, **E-Com**, **Lifecycle**, **Newsletter**, or **Transactional**.
5. Click a layout thumbnail to create a new Emailify frame in the current Figma page.

After the frame is created, you can edit the copy, images, colors, spacing, and layer settings just like any other Emailify email design.

## Randomize layouts

The **Randomize** subcategory in **Layouts** generates a logical layout by mixing compatible built-in presets. It keeps the email structure sensible by placing header presets at the top, footer presets at the bottom, and mixing hero, content, product, proof, and CTA sections in between.

See [Randomize Layouts](/emailify/design/random-layouts) for the full workflow.

## When to use Layouts

Use Layouts when you want a fast in-file starting point for common email types, including announcements, product launches, abandoned carts, onboarding emails, newsletters, receipts, reminders, and account updates.

If you want a fully designed example file to duplicate and inspect, use [Figma Templates](/emailify/design/templates). If you want Emailify to generate a randomized built-in structure with Randomize, use [Randomize Layouts](/emailify/design/random-layouts).

---

---
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: "Browse free Emailify-ready Figma templates from the New Email modal, duplicate them into your Figma account, and use them as a starting point for your own HTML emails."
---

# Duplicating Figma Templates

> Browse free Emailify-ready Figma templates from the New Email modal, duplicate them into your Figma account, and use them as a starting point for your own HTML emails.

### Video Tutorial: Use free Figma email templates to design HTML emails

This video walks through how to use free Figma email templates to design HTML emails with the Emailify Figma Plugin.
  [Embedded media](https://www.youtube-nocookie.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.

The **Templates** tab in the **New Email** modal lets you browse free, pre-designed Emailify-ready Figma Community files from inside the plugin.

If you're looking for inspiration or would like to copy, paste, and customize pre-designed Emailify-ready layouts or components with your own brand and content, click the **Templates** tab, then click any template thumbnail to open that Figma Community file.

Once the Figma Community file page loads, duplicate the Figma email template by clicking the **Open in Figma** button, then choose the Figma account you'd like the Figma file to be duplicated into as a new draft.

After you open the duplicated Figma file containing the Emailify frame, re-run the Emailify plugin to preview it as HTML. You can customize the design however you like, or copy and paste specific Row layers or elements into your own Emailify frame to mix and match parts from different Emailify starter templates.

> **Note:** The **Templates** tab opens full Figma Community files. If you want Emailify to create a new frame directly in your current file, use [Layouts](/emailify/design/starter-layouts) instead.

---

---
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 (for example, `#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 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 lets you 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 your 🔗 **Button** layer; this lets you 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 lets you 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 lets you 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 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:** **Outlook only displays the first carousel image.** Outlook does not support the features required for an interactive image carousel. Use your most important image as the first slide, and do not place essential information only in later slides.

## 🎠 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 lets you 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 lets you 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 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 lets you 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 lets you 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 lets you 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 lets you 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. 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 lets you 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 lets you 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 your 📷 **Image** layer; this lets you 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 lets you 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 lets you 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 your 🔗 Navigation Link layer; this lets you 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 lets you 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. 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 lets you 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 want 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 any row in your Emailify container frame with the settings panel open, then clicking 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 lets you 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 your 🔗 Social Icon Link layer; this lets you 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 lets you 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 lets you 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 (for example, 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 lets you 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 walks through 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-nocookie.com/embed/CB3tRj0GtW4)

The **🧾 Spreadsheet** option lets you 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.

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 lets you 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 lets you 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.

By default, 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.

For compact icon/text tables or checklist-style rows, select the main **🪑 Data Table** layer, open **Settings**, enable **Mobile Alignment**, and choose **Center** to center the actual table structure on mobile instead of relying on left/right padding. This keeps the table's icon/text spacing intact while centering the grouped content.

## Using the "Quick Add" feature to add new Emailify layers

[Video](/assets/videos/emailify/element-contexts.mp4)

Emailify lets you 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 lets you 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 lets you 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. 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 lets you 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 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 (for example, 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 (for example, `#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 want 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.

### Why a hosted image can be larger than the source file

Emailify renders the image bytes used by the exported email and optimizes the generated PNG or JPG before adding that same file to the export and, when enabled, uploading it. Hosting changes the URL; it does not apply a separate compression pass.

Because Figma supplies rendered export bytes rather than the original uploaded file, the hosted file is not a byte-for-byte copy of the source JPG or PNG. Its size can be different, including larger. To reduce the result, use an appropriately sized source layer and a suitable image format before exporting; Emailify cannot preserve the original file's exact compression bytes through this workflow.

## 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 (for example, [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 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` attributes of your HTML `` tags) during the export process:

- Region (for example, `us-east-1`)
- Access Key  (for example, `003g8...`)
- Secret Access Key (for example, `K454q...`)
- Bucket Name (for example, `my-emailify-bucket`)
- Bucket URL (for example, `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

### Cloudflare R2 addresses

R2 uses two separate addresses. Enter both in the image hosting settings:

- **S3 API endpoint:** copy the endpoint from your Cloudflare account, such as `https://accountid.r2.cloudflarestorage.com`. Keep any jurisdiction segment shown by Cloudflare, such as `.eu`. Enter your bucket name in **R2 Bucket Name**.
- **Public image URL:** use a custom domain connected to the bucket, such as `https://images.example.com/`, or its enabled public `r2.dev` URL. The S3 API endpoint is authenticated and cannot serve as the public image URL in an email.

If you previously saved the S3 API endpoint in the URL field, Emailify moves it into **S3 API endpoint**. Add your public image URL before exporting again. If you already saved a public domain, it is kept; add the separate API endpoint if it is missing. Your access keys and bucket name are kept.

See Cloudflare's [S3 API endpoint guide](https://developers.cloudflare.com/r2/api/) and [public bucket access guide](https://developers.cloudflare.com/r2/buckets/public-buckets/).

### Mailchimp image hosting errors

When exporting directly to Mailchimp, Emailify checks the image folder, existing files and uploaded image URLs. If Mailchimp rejects an image request, the export reports the error and does not create the template with unconfirmed image URLs. Check your Mailchimp connection and API key, then export again.

### 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 (for example, `img/ceb3f891b78815897e04299f93eef255.jpg`); this lets you 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.

### Why are images not rendering in my exported HTML email?

Email images usually fail to render after sending when the image files are not hosted at public online URLs, the email was sent from a tool that rewrote the HTML, or the recipient email client blocked remote images.

If you export HTML with local `img/` paths, the images are saved next to the `.html` file and must be uploaded with the email template or hosted separately. If you enable **Upload Hosted Image URLs**, Emailify uploads the images and swaps the HTML image URLs to hosted links automatically.

### Why do images work locally but not after sending?

A local HTML preview can load images from the exported `img/` folder on your computer. Once the email is sent, recipients cannot access files on your computer, so the images need to be hosted online or uploaded through your ESP.

Gmail and Outlook are not reliable ways to send exported custom HTML because they can change the markup and do not handle image hosting for a bulk HTML email workflow. Use an ESP or one of Emailify's built-in integrations instead.

### What should I check first if exported images are broken?

- Make sure the images are hosted at public `https://` URLs, or upload the exported `img/` folder through your ESP.
- Enable **Upload Hosted Image URLs** if you want Emailify to upload image assets for you.
- If using a custom bucket or CDN, make sure the bucket allows public read access for the uploaded image URLs.
- If an upload fails, check whether a VPN, firewall, proxy, or company network is blocking the upload request.
- Wait for Figma images to finish loading in the file before exporting.
- Remember that some email clients block remote images until the recipient chooses to display them.

### Custom hosting connection errors

For Amazon S3, Emailify constructs the upload endpoint from your selected **Region** and **Bucket Name**. The **Bucket URL** is the public base URL used for images in your exported email; changing it does not change the upload endpoint.

Enter the complete bucket name, including any account ID and region suffix. For example, an account regional bucket named `my-email-images-123456789012-ap-southeast-2-an` uses region `ap-southeast-2` and a bucket URL of `https://my-email-images-123456789012-ap-southeast-2-an.s3.ap-southeast-2.amazonaws.com/`. [AWS supports both global and account regional bucket names](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html).

The IAM identity behind your access key needs `s3:PutObject` on `arn:aws:s3:::YOUR-BUCKET-NAME/*` to upload images. Emailify does not need public write access or permission to create or delete buckets. Additional restrictions in your AWS policies or encryption settings can still prevent uploads; see [AWS permissions guidance](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security_iam_service-with-iam.html).

The exported image URLs must also be readable without signing in. Use a public image bucket or a public CDN backed by your bucket, and check an individual uploaded image URL in a private browser window. Keep unrelated private files in separate storage; do not make them public to enable email images.

If an export reports **Image hosting failed**, retry the export after fixing the connection or permissions. A successful email template upload does not mean its images were uploaded successfully. If the error persists, send the error message or a screenshot to [support](mailto:adam@hypermatic.com), without including your access key or secret key.

---

---
url: "/emailify/export/mailgun-inspect.md"
description: "How to upload Emailify HTML exports from Figma directly to Mailgun Inspect for email client and device preview testing."
---

# Testing HTML emails with Mailgun Inspect

> How to upload Emailify HTML exports from Figma directly to Mailgun Inspect for email client and device preview testing.

### Video Tutorial: Export HTML emails from Figma to Mailgun Inspect

This video walks through how to upload HTML email tests from the Figma Emailify plugin to Mailgun Inspect.
[Embedded media](https://www.youtube-nocookie.com/embed/U8d3z-0_ELw)

Emailify includes a dedicated Mailgun Inspect integration for uploading HTML email tests directly from Figma. This is separate from both the Email on Acid integration and Emailify's Mailgun sending integration.

[Video](/assets/videos/emailify/export/mailgun-inspect.mp4)

## Before you start

You'll need:

- A Mailgun account with access to Inspect email previews
- A Mailgun private API key
- The region associated with your Mailgun account: **US** or **EU**

You can copy your private API key from the [Mailgun API Security settings](https://app.mailgun.com/settings/api_security). Mailgun uses **api** as the API username and your private API key as the password.

> **Warning:** Treat your private API key like a password. Don't paste it into your Figma design, email content, or a file you plan to share.

## Upload an email test

1. Open Emailify in Figma and select the email frames you want to test.
2. Open the **Export** panel.
3. Select **Mailgun Inspect** under **Upload For Testing**.
4. Choose the **US** or **EU** Mailgun region for your account.
5. Paste your Mailgun private API key.
6. Click **Send To Mailgun Inspect**.
7. Log in to your [Mailgun account](https://app.mailgun.com/) to review the generated email previews.

Emailify creates a separate Mailgun Inspect preview test for each selected email. The request contains the generated HTML and subject line, while Mailgun Inspect determines the preview clients available for your account.

## Troubleshooting

If the upload fails:

- Confirm you selected the region that matches your Mailgun account.
- Check that you're using a current **private API key**, not a public validation key.
- Confirm your Mailgun plan includes Inspect email previews.
- Make sure any remotely hosted images in the email can be accessed publicly.

The Emailify export confirmation shows the error returned by Mailgun Inspect. You can still download the generated HTML files if an upload fails.

## Related documentation

- [Mailgun Inspect](https://www.mailgun.com/products/inspect/)
- [Mailgun Inspect API overview](https://documentation.mailgun.com/docs/inspect/api-reference/api-overview)
- [Testing your HTML emails before sending](/emailify/export/testing)
- [Email on Acid integration](/emailify/tutorials/export-html-email-tests-from-figma-to-email-on-acid)

---

---
url: "/emailify/export/make.md"
description: "Emailify includes a built-in integration with Make, which lets you 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 lets you 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/manual-inbox-test-sends.md"
description: "How to send an Emailify HTML export to real inboxes for manual testing with htmltest.email."
---

# Sending manual HTML email inbox tests

> How to send an Emailify HTML export to real inboxes for manual testing with htmltest.email.

You can use [htmltest.email](https://htmltest.email/) to send an Emailify HTML export to real inboxes without setting up an email campaign. This is useful for checking a specific Gmail, Outlook, Apple Mail, or other inbox that you can access.

> **Tip:** New recipient addresses must complete a one-time approval before htmltest.email can send them test emails. Approval messages are sent from **test@htmltest.email**.

## Before you start

You'll need:

- Your final Emailify HTML export
- Publicly hosted image URLs in the exported HTML
- Access to each inbox you want to test

Keep **Upload Hosted Image URLs** enabled when exporting from Emailify. If your HTML uses local `img/` paths, host those images and update the paths before sending the test.

## Send a manual inbox test

1. Export your selected email from Emailify as **HTML**.
2. Unzip the downloaded export and open the email's `index.html` file in a text editor.
3. Copy the complete HTML source.
4. Open [htmltest.email](https://htmltest.email/).
5. Enter up to five recipient email addresses.
6. Complete the one-time recipient approval if htmltest.email requests it.
7. Enter a subject line and keep **HTML** selected.
8. Paste the Emailify HTML into the **Email Content** field.
9. Optionally add a plain-text version. If you leave it empty, htmltest.email generates one from the HTML.
10. Click **Send Test Email**.
11. Open each recipient inbox and inspect the email on the intended device and email client.

## What to check

- The email arrives and opens without broken images.
- Desktop and mobile layouts respond as expected.
- Text, buttons, links, spacing, and backgrounds render correctly.
- Light and dark mode remain readable.
- Subject and preheader text appear as intended.

> **Warning:** A manual test only shows how the email rendered in the inboxes and clients you actually opened. It does not test every client, guarantee future delivery, measure campaign deliverability, or reproduce changes that your production ESP may make to the HTML.

For broader client coverage, use [Mailgun Inspect](/emailify/export/mailgun-inspect) or [Email on Acid](/emailify/tutorials/export-html-email-tests-from-figma-to-email-on-acid). For general guidance, see [Testing your HTML emails before sending](/emailify/export/testing).

---

---
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 walks through how to export emails from the Figma Emailify plugin to MJML code.
[Embedded media](https://www.youtube-nocookie.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.

## Choose an MJML version

Use the **MJML Version** dropdown to choose whether the exported `index.mjml` uses **MJML 4**, **MJML 5**, or **MJML 6**. MJML 4 is selected by default for compatibility with existing MJML workflows; choose MJML 5 when your downstream compiler and tooling support MJML 5.

**MJML 6** uses MJML 6.0.0-alpha.1 and is intended for testing with compatible downstream tooling. The alpha changes generated HTML and some default styles, so review your preview and exported email before using it in a campaign. You can switch back to MJML 4 or MJML 5 at any time.

When using custom CSS with MJML 6, selectors with more than six optional `> tbody >` segments retain only the forms with all or none of those segments. Mixed nesting at that depth may need a simpler selector. Comments and formatting are preserved, so exported CSS can differ from earlier versions even when the selectors match the same elements.

While **MJML Source Code** is selected, **Preview HTML** and the companion `index.html` use the same MJML version you choose in the dropdown.

> **Info:** The MJML Version setting only applies to **MJML Source Code** exports. MJML 5 and MJML 6 are opt-in and do not change your other Emailify export formats.

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 if 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 emails.

---

---
url: "/emailify/export/netlify.md"
description: "Emailify includes a built-in integration with Netlify, which lets you 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 lets you 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 walks through how to upload preview links for HTML emails from Figma to Netlify using Emailify.
[Embedded media](https://www.youtube-nocookie.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 lets you 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 lets you 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 separate JPG images

### Video Tutorial: Exporting your emails to PDF

This video walks through how to export HTML emails from the Figma Emailify plugin to PDF files.
[Embedded media](https://www.youtube-nocookie.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 want 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 walks through how to export emails as grayscale wireframe previews from the Figma Emailify plugin to PDF files.
[Embedded media](https://www.youtube-nocookie.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 (for example, platform API keys and settings) as custom presets that you can 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 (for example, `My MailChimp Client 1`) and then click the **Create Saved Preset** button to save your custom settings preset.

You can 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 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 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 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.

## Can I send exported HTML directly from Gmail or Outlook?

No. Do not send exported Emailify HTML directly from Gmail or Outlook. They are not designed for importing and sending bulk custom HTML email, and they can rewrite or break the HTML. Images may also fail because email images need to be hosted online.

## What should I use instead of Gmail or Outlook?

Use an email service provider that supports custom HTML templates, such as Klaviyo, MailChimp, Campaign Monitor, Customer.io, HubSpot, Braze, SendGrid, Brevo, or another ESP. Emailify also includes built-in upload integrations for many ESPs listed below.

> **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.

## Can I use Emailify with an ESP that does not have a built-in integration?

Yes, if that ESP lets you import or paste custom HTML.

1. Export your email from Emailify as HTML.
2. Keep **Upload Hosted Image URLs** enabled, or host the exported `img/` assets yourself.
3. In your ESP, create a custom HTML template or code-based email, then import the exported HTML or ZIP.
4. Add any platform-specific unsubscribe links, merge tags, footer requirements, or layout wrappers required by that ESP before sending.

If the platform does not accept custom HTML templates, Emailify cannot upload to it directly. In that case, use one of Emailify's built-in integrations below or switch to an ESP that supports custom HTML imports.

For image-hosting details, see [Hosting your exported email images](/emailify/export/images). If your platform is covered below, open its guide for the Emailify-specific setup and export steps.

## Built-In Emailify Platform Integrations

These are the email service providers/platforms that Emailify has built-in export/upload integrations with:

Choose a platform to open its Emailify setup, export, and upload guide.

### A–F

- [Acoustic](/emailify/integrations/acoustic)
- [ActiveCampaign](/emailify/integrations/activecampaign)
- [ActiveTrail](/emailify/integrations/activetrail)
- [Amazon SES](/emailify/integrations/amazon-ses)
- [Aweber](/emailify/integrations/aweber)
- [Bazaarvoice](/emailify/integrations/bazaarvoice)
- [Benchmark Email](/emailify/integrations/benchmark-email)
- [beehiiv](/emailify/integrations/beehiiv)
- [Bento](/emailify/integrations/bento)
- [Bloomreach](/emailify/integrations/bloomreach)
- [BlueShift](/emailify/integrations/blueshift)
- [Braze](/emailify/integrations/braze)
- [Brevo](/emailify/integrations/brevo)
- [Buttondown](/emailify/integrations/buttondown)
- [Campaign Monitor](/emailify/integrations/campaign-monitor)
- [Cheetah Digital](/emailify/integrations/cheetah-digital)
- [Constant Contact](/emailify/integrations/constant-contact)
- [Contlo](/emailify/integrations/contlo)
- [ConvertKit](/emailify/integrations/convertkit)
- [Customer.io](/emailify/integrations/customer-io)
- [Dotdigital](/emailify/integrations/dotdigital)
- [Drip](/emailify/integrations/drip)
- [EmailOctopus](/emailify/integrations/emailoctopus)
- [Emarsys](/emailify/integrations/emarsys)

### G–M

- [GetResponse](/emailify/integrations/getresponse)
- [Ghost](/emailify/integrations/ghost)
- [HubSpot](/emailify/integrations/hubspot)
- [Insider](/emailify/integrations/insider)
- [Intercom](/emailify/integrations/intercom)
- [Iterable](/emailify/integrations/iterable)
- [Klaviyo](/emailify/integrations/klaviyo)
- [Loops.so](/emailify/integrations/loops)
- [MailChimp](/emailify/integrations/mailchimp)
- [Mailercloud](/emailify/integrations/mailercloud)
- [MailerLite](/emailify/integrations/mailerlite)
- [Mailgun](/emailify/integrations/mailgun)
- [MailJet](/emailify/integrations/mailjet)
- [Mailmodo](/emailify/integrations/mailmodo)
- [Marketo](/emailify/integrations/marketo)
- [Mautic](/emailify/integrations/mautic)
- [Microsoft Dynamics 365](/emailify/integrations/microsoft-dynamics-365)
- [Moosend](/emailify/integrations/moosend)

### N–Z

- [Omnisend](/emailify/integrations/omnisend)
- [OneSignal](/emailify/integrations/onesignal)
- [Ongage](/emailify/integrations/ongage)
- [Oracle Eloqua](/emailify/integrations/oracle-eloqua)
- [Oracle Responsys](/emailify/integrations/oracle-responsys)
- [Pardot](/emailify/integrations/pardot)
- [Postmark](/emailify/integrations/postmark)
- [Resend](/emailify/integrations/resend)
- [Sailthru](/emailify/integrations/sailthru)
- [Salesforce Marketing Cloud](/emailify/integrations/salesforce)
- [SARE](/emailify/integrations/sare)
- [Selzy](/emailify/integrations/selzy)
- [SendGrid](/emailify/integrations/sendgrid)
- [SendPulse](/emailify/integrations/sendpulse)
- [Sendwithus](/emailify/integrations/sendwithus)
- [SendX](/emailify/integrations/sendx)
- [Sendy](/emailify/integrations/sendy)
- [Shopify](/emailify/integrations/shopify)
- [Spotler](/emailify/integrations/spotler)
- [Stripo](/emailify/integrations/stripo)
- [SugarCRM (Sugar Market)](/emailify/integrations/sugarcrm)
- [Webex](/emailify/integrations/webex)
- [Yotpo](/emailify/integrations/yotpo)
- [Zeta](/emailify/integrations/zeta)
- [Zoho Campaigns](/emailify/integrations/zoho-campaigns)

---

---
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 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.

### Klaviyo preview text should only be set in one place

If you're uploading to Klaviyo, set the preview text either in Emailify or in Klaviyo's own preview text field, but not both. Using both can duplicate the inbox preview text or cause Klaviyo to override the preheader embedded by Emailify.

If you want Emailify to control the inbox preview, enter the preheader in Emailify and leave Klaviyo's own preview text field empty. If your workflow requires using Klaviyo's field instead, leave Emailify's preheader blank for that export.

### Add extra whitespace to the preheader text

You can optionally include the [whitespace preheader trick](https://parcel.io/blog/preheader-spacing) to reduce the chance of body content appearing after your intended preview text in the recipient's inbox. Turn on **Add Whitespace to Preview Text** in the email export options and Emailify will add a separate hidden compatibility spacer after your preheader text.

The spacer uses a mix of invisible characters for broader support across email clients. It is only added when the email has non-empty preheader text, and it remains a best-effort compatibility technique because inbox and email-marketing-platform behavior can change.

If you use an email marketing platform's own Preview Text field, avoid setting the same preview text in both places. Some platforms automatically add their own spacing, which can duplicate or override the preview text embedded by Emailify.

If Klaviyo or another email marketing platform is still showing extra body copy after your intended preview text, turn on **Add Whitespace to Preview Text** and re-export the email before testing again.

---

---
url: "/emailify/export/testing.md"
description: "How to test Emailify HTML emails across clients using Mailgun Inspect, Litmus, Email on Acid, and test sends."
---

# Testing your HTML emails before sending

> How to test Emailify HTML emails across clients using Mailgun Inspect, Litmus, Email on Acid, and test sends.

### Video Tutorial: Test HTML emails in different clients with exports from Figma

This video walks through how to test HTML emails in different clients with exports from Figma using the Emailify plugin and Litmus.com.
[Embedded media](https://www.youtube-nocookie.com/embed/vZkuFfpkh1Q)

### Video Tutorial: Test HTML emails in dark mode with exports from Figma

This video walks through how to test HTML emails in dark mode with exports from Figma using the Emailify plugin and Litmus.com.
[Embedded media](https://www.youtube-nocookie.com/embed/h5Gq9apZrxk)

### Video Tutorial: Test HTML emails in Gmail with exports from Figma

This video walks through how to test HTML emails in Gmail with exports from Figma using the Emailify plugin and Litmus.com.
[Embedded media](https://www.youtube-nocookie.com/embed/Jlm1YBOioM0)

### Video Tutorial: Test HTML emails on mobile with exports from Figma

This video walks through how to test HTML emails on mobile with exports from Figma using the Emailify plugin and Litmus.com.
[Embedded media](https://www.youtube-nocookie.com/embed/yz2KQPFBzA0)

### Video Tutorial: Test HTML emails in Outlook with exports from Figma

This video walks through how to test HTML emails in Microsoft Outlook with exports from Figma using the Emailify plugin and Litmus.com.
[Embedded media](https://www.youtube-nocookie.com/embed/5MJzh5rbfdY)

### Video Tutorial: Send yourself tests of HTML emails from Figma with PutsMail

This video walks through how to send yourself tests of HTML emails from Figma using the Emailify plugin and PutsMail.com.
[Embedded media](https://www.youtube-nocookie.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 [Mailgun Inspect](https://www.mailgun.com/products/inspect/), [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 the exported HTML to inboxes you can access using a service like htmltest.email. See [Sending manual HTML email inbox tests](/emailify/export/manual-inbox-test-sends) for the complete workflow and its limitations.

## Using Email Previews in the plugin

Open an email's HTML preview, then select **Email Previews** to request email-client screenshots from inside Emailify.

1. Use the client selector above the checkboxes. **Recommended Clients (Default)** is selected on the first load; you can also choose **Mobile Clients**, **Desktop Clients**, **Outlook Clients**, **Apple Clients**, **Web Clients** or **All Clients**, then adjust individual checkboxes.
2. Enter a **Preview Name** and **Subject Line**.
3. Click **Run Email Preview Test**. Completed screenshots appear as each client finishes.
4. Review the results, then click **Download ZIP** to save the screenshots and their HTML gallery.

Each test supports up to **12 clients**. If a group contains more, the panel tells you how many were selected; test the remaining clients separately. Presets only include clients available in Emailify's supported service catalogue. Manual checkbox changes display **Custom Selection**. Gmail web is available as **Gmail (Firefox)** and is included in Recommended when the service returns that client. Its sender-row mask replaces provider branding while preserving the email content.

Use **Recent Tests** to reopen saved tests, **Change Clients** to adjust the client selection, or **New Test** to prepare another test. Access depends on your current Emailify license or trial allowance. These screenshots test email-client rendering; they do not establish inbox placement or delivery to your recipients.

## Using the Mailgun Inspect integration

Emailify includes a dedicated Mailgun Inspect integration that uploads the generated HTML directly from Figma for preview testing across the email clients and devices available to your Mailgun account.

See [Testing HTML emails with Mailgun Inspect](/emailify/export/mailgun-inspect) for setup and upload instructions.

## Using the Email on Acid integration

> **Tip:** Beginning in June 2026, current Email on Acid subscription customers will start transitioning to [Mailgun Inspect](https://www.mailgun.com/products/inspect/).

### Video Tutorial: Export HTML email tests from Figma to Email on Acid

This video walks through how to upload HTML email tests from the Figma Emailify plugin to Email on Acid.
[Embedded media](https://www.youtube-nocookie.com/embed/ThlA2CpDI9U)

Emailify includes a built-in integration with Email on Acid, which lets you 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: "Send generated HTML or MJML source from Emailify to your own endpoint in a JSON webhook payload."
---

# Uploading your emails to a custom Webhook URL

> Send generated HTML or MJML source from Emailify to your own endpoint in a JSON webhook payload.

[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 export the emails you've selected from Figma and send them 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 is exported as HTML by default. You can select **MJML Source Code** or a platform-specific format from the Webhook export options when your endpoint needs a different handoff.

## The JSON payload object sent via POST to your URL

The JSON payload sent from Emailify contains the object keys/values below; you need to ensure that your custom webhook URL has been created to handle this payload, which you can 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"
}
```

### Send MJML source to a CI workflow

Choose **MJML Source Code** from the Webhook format selector when your endpoint needs the generated source MJML for validation or compilation. Select the same MJML version your CI workflow uses. Emailify adds the `mjml` and `mjmlVersion` fields while retaining the compiled `html` field:

```json
{
  "name": "Name of the Figma frame",
  "subject": "Subject line set in Emailify settings",
  "preheader": "Preheader text set in Emailify settings",
  "html": "Compiled email HTML",
  "mjml": "Generated source MJML",
  "mjmlVersion": "mjml4"
}
```

The `mjmlVersion` value is `mjml4` or `mjml5`, matching the version selected in Emailify. Your endpoint can store the MJML, trigger CI validation, and let CI control any later upload to your email platform. You can use the custom JSON fields below to add workflow metadata such as an app, template, environment, or language name.

### 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 (for example, `{ "Authorization": "Bearer xyz" }`)
- You can set custom body `data` object properties **Custom Extra JSON Data (Optional)** (for example, `{ "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)** (for example, `{ "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** (for example, 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 lets you 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 lets you 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 walks through how to upload HTML emails from the Figma Emailify plugin to Zapier (Google Drive).
[Embedded media](https://www.youtube-nocookie.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 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).

## If the export finished but the ZIP did not download

If you reached Emailify's finished export screen, the email export itself has already been generated. Start by clicking **Download your .zip file** again from that finished screen.

Then check the download path that matches how you are running Figma:

- In the Figma desktop app, look for the native save prompt from Figma and make sure it is not hidden behind another window or desktop.
- In Figma in a web browser, check your browser's downloads list and your computer's default **Downloads** folder.

If the ZIP still does not appear:

1. Re-run the export once after checking the correct download location.
2. If you are on a work network, try a different Wi-Fi network or a browser/private window in case the download handoff is being interrupted locally.
3. If one attempt used a free Pro trial run but no file arrived, stop retrying and email [adam@hypermatic.com](mailto:adam@hypermatic.com) with the product name, whether you were using Figma desktop or browser, and a screenshot of the finished export screen or missing download prompt.

If the export completed on your last free Pro trial run, the finished export screen should still allow the ZIP to be downloaded. For general trial rules, see [Use Hypermatic free Pro trial runs](/faq/trials). For private help with trial-use or account-specific checks, see [Choose the right Hypermatic support channel](/faq/contact-and-account-help).

> **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.

## Hidden characters in pasted text

Emailify cleans accidental zero-width joiners and non-joiners between ordinary English letters or digits in text, button and navigation labels during preview and export. It also removes non-printing control codes and a leading byte-order mark, without editing your original Figma text layers.

Characters used for other languages, emoji, text direction and intentional spacing are preserved. If a sent email still shows unexpected characters, retype the affected word in Figma, re-export, and check that your email platform sends it using UTF-8 encoding. Test the final email through your sending platform before sending a campaign.

## 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 each email's `index.html` file and image assets in a separate folder. A generated `index.html` file at the root lets you review every exported email from one preview page. You can also [upload it as a Netlify preview link](/emailify/export/netlify) for clients or teammates.

Double clicking 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://www.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://www.hypermatic.com/emailify/#pro).

- **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 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.

Standard Emailify design, preview, code generation, and local export processing happens inside the Figma plugin. Data leaves the plugin only when you choose an optional network feature, such as a built-in email-platform integration, automatic image hosting, or a webhook.

If you decide to use a [built-in platform integration](/emailify/integrations/activecampaign) or automatic image hosting, image assets may be stored and linked via the [Backblaze B2](https://www.backblaze.com/b2/cloud-storage.html) storage CDN service.

## 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 an external server for its standard local image-compression and code-generation paths. Optional upload, platform, webhook, AI, and localization workflows have their own network boundaries and run only when you choose them.

Files created by Emailify's standard local export workflows are generated directly in the plugin and downloaded 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 (for example, 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 HTML or image data from your Figma file during standard local design and export processing. Optional email-platform, image-hosting, webhook, AI, and localization features send only the data required for the workflow you choose.
- Store HTML or images from standard local exports. Optional hosting workflows can store submitted assets in their respective services.
- Use cloud storage for standard local exports. Optional image-hosting workflows can use cloud storage to make assets available to the selected destination.
- Read unrelated Figma files, private team data, or document content outside the file and workflows made available to the running plugin.

## 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 (for example, a “find layer by name” plugin)
- Modify any data in your Figma document (for example, a “rename selected layers” plugin)
- Communicate with any server over the internet (for example, 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

Create the email layout with Emailify's design tools before exporting production-ready HTML. These tools add the Row, Column, Button, and other structured layers Emailify needs to generate HTML. You can customize their content and styles after adding them.

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.

![Figma scroll wheel zoom and drag to pan preferences](/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)**. 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 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.

### Button or link labels are visible in Figma but missing from the preview or export

If a button is empty or a navigation link is missing even though its text is visible in Figma, the cause can be an export issue with mixed font data, including variable fonts. A correct link URL does not guarantee that its label was exported.

Keep the labels as editable text inside their original Emailify Button or navigation components. Close and reopen Emailify, refresh the preview, and export again. Check the downloaded HTML before uploading it to your email platform.

If the labels are still missing, [contact support](https://www.hypermatic.com/contact/) with the affected Figma email frame and the exported HTML or ZIP so we can inspect the text layers and reproduce the issue.

### 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 (for example, `sup`) or subscript (for example, `sub`) tags in the HTML export from the plugin.

### Using heading tags (for example, 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 number of Row components has the biggest effect on exported HTML size because each Row creates another set of table elements. Reuse a Row when its content can fit inside the same structure.

For example, a heading, subheading, body, and button can share one Column inside one Row. They do not need four separate Row layers.

### Emailify settings panel options not appearing when clicking an Emailify Figma layer

If you're clicking 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 query parameters are stripped when sending an 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](/tinyimage/downsize) 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

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.

### 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 (for example, 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

### New Outlook may rewrite styles after an email loads

New Outlook for Windows has a reported post-processing issue that can cause an email to display correctly at first, then change after it has loaded. Outlook appears to rewrite parts of the email's CSS during this second rendering step, which can cause issues such as desktop columns unexpectedly stacking vertically.

This behaviour is inconsistent: one recipient may be affected while everyone else sees the expected layout, and identical test sends may render differently in the same mailbox. Customer.io has documented these symptoms and the current findings in [New Outlook, same headache](https://customer.io/learn/message-composing/new-outlook-rendering-issues).

New Emailify exports include a defensive compatibility layer for the known column-stacking case. Emailify keeps MJML's original responsive styles and classic Outlook table fallbacks, then places a second copy of only the generated desktop column-width rules inside the email body. This helps web-based Outlook variants that remove styles from the email head, while preserving MJML's normal mobile stacking and breakpoint behaviour for other clients.

You do not need to rebuild the design. Update Emailify and re-export the email so the generated HTML contains the fallback before sending another test.

If you encounter this issue:

- Open the affected email in a separate window instead of the Outlook reading/preview pane. Reported cases often render correctly in the separate window.
- Send the same exported HTML to another recipient or email client to check whether the issue is isolated to one Outlook user.
- If identical sends render differently, download both received messages as `.eml` files and compare their HTML before changing the Emailify design or export.

> **Note:** The fallback reduces the reported desktop column-stacking failure, but Emailify cannot control every style rewrite performed after delivery. If the issue persists and the received HTML is unchanged, avoid making major design changes solely to address one inconsistent Outlook preview.

### 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 links that are not essential, including unnecessary 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 (for example, “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.

The [Gmail white-button-text workaround](#buttons-with-white-text-turning-black-in-gmail-mobile-app-in-dark-mode) has a narrower purpose: preserving pure-white button text. It does not provide a way to keep black text on a pale background unchanged in Gmail dark mode.

### 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 (for example, 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 (for example, "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**. 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 (for example, 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 (for example, `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 (for example, `padding-bottm` instead of `padding-bottom`) or if there's a line-break in the middle of a style property (for example, `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

Emailify limits exported HTML to 500 characters per line. Although the formal limit is 998 characters, shorter lines avoid rendering and delivery problems seen in Outlook and some 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 (for example, 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 (for example, `[replaceLinkInHere]` instead of a real URL like `https://google.com`). Setting a real URL on your button component by clicking 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](/emailify/design/reverse-columns) 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 (for example, Ä, Ö, Ü) 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 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 (for example, 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 (for example, 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 (for example, "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.

For buttons intended to have white text in both light and dark mode:

1. Set the button text layer to pure white (`#FFFFFF`) in Figma.
2. Select the **Button** component, open **Settings**, and set its dark mode override text color to pure white (`#FFFFFF`) too.
3. Export the email again and send a test to the Gmail mobile app where you saw the issue.

With both colors set to pure white, Emailify adds extra compatibility code intended to preserve the white button text. This workaround does not preserve black or other non-white text, or lock the button's background color. If your design needs black text on a pale background, keep those intended colors and test that design separately; changing the text to white would change the design rather than solve that requirement.

If the result still differs from your design, [contact support](/faq/contact-and-account-help) with the exported HTML or ZIP, a screenshot, the email app and device, and the text/background colors you want to keep. Include the settings you've already tried. See [dark mode design and testing](/emailify/design/dark-mode) for the broader workflow and limitations.

### 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 (for example, `padding-bottm` instead of `padding-bottom`) or if there's a line-break in the middle of a style property (for example, `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](/emailify/tutorials/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, Add the word **Transparent** anywhere in your Figma layer's name (for example, `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 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.

### Klaviyo preview text is duplicated or shows extra body copy

Set the preview text in one place only. If you've already entered **Preheader Text** in Emailify, leave Klaviyo's own preview text field empty. If you prefer to manage preview text in Klaviyo, leave Emailify's preheader blank for that export.

If Klaviyo is still showing extra body copy after your intended preview text, turn on **Add Whitespace to Preview Text** in Emailify's export options and re-export the email. This adds a hidden compatibility spacer after a non-empty preheader, but inbox handling can still vary between Klaviyo and different email clients.

See [Set a subject line and preheader text for your HTML emails](/emailify/export/subject-and-preheader) for the full preheader workflow.

## 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 removes hyperlink styling when embedding Typekit font <link> 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.

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.md"
description: "Choose how to move an Emailify HTML email into your sending platform, automation, or development workflow."
---

# Choose an Emailify platform integration

> Choose how to move an Emailify HTML email into your sending platform, automation, or development workflow.

Choose the handoff that matches your destination. A named Emailify option may upload through an API, create a draft or template, or generate a platform-formatted export; open the exact platform guide before entering credentials or delivering the result.

These workflows move generated email assets into another system. Campaign setup, recipients, approvals, testing, scheduling, and sending still happen in that system.

## Choose a handoff

| When you need | Start with | Result and boundary |
| --- | --- | --- |
| A named email or marketing platform | [Find its platform guide](#platform-guide-directory) | The guide states the exact Emailify option, required credentials or manual steps, and where the result is created |
| A local package for a platform that accepts custom HTML | [Export an HTML ZIP](/emailify/export/zip) | Compiled HTML, image assets, a preview page, and a plain-text version in a downloadable package |
| Your own API, CI, or internal delivery service | [Use a custom webhook](/emailify/export/webhook) | A JSON `POST` containing generated HTML, with optional MJML and custom headers or data; your endpoint controls the downstream workflow |
| An automation that receives a ZIP | [Use Zapier](/emailify/export/zapier) or [Make](/emailify/export/make) | The exported ZIP is sent to the webhook you configure |
| Editable source for a developer-controlled compiler | [Export MJML](/emailify/export/mjml) | An `index.mjml` file alongside compiled HTML, using the selected MJML version |
| An AMP for Email package | [Export AMP Email HTML](/emailify/export/amp) | An `index.html`, plain-text version, and image assets; the sender and receiving client must support AMP for Email |
| Control over where email images are hosted | [Choose an image-hosting workflow](/emailify/export/images) | Local image files, Emailify-hosted URLs, supported object storage, or a custom base URL, depending on your settings |

If your platform is not listed, follow [the custom HTML guidance](/emailify/export/sending#can-i-use-emailify-with-an-esp-that-does-not-have-a-built-in-integration). The destination must accept imported or pasted custom HTML.

## Common method differences

| Platform | Documented handoff | What the guide tells you to review |
| --- | --- | --- |
| [Klaviyo](/emailify/integrations/klaviyo) | Private API key upload to saved templates | Update-in-place applies to the saved template, not copies already used in a campaign or flow; editable content has platform-specific padding considerations |
| [MailChimp](/emailify/integrations/mailchimp) | API upload to templates or a manual ZIP workflow | Editable images are exported at 1x; MailChimp can modify uploaded HTML before sending |
| [Customer.io](/emailify/integrations/customer-io) | API upload to a Design Studio email or reusable template, or a manual ZIP workflow | Choose the correct region and output type; update-in-place and asset hosting have documented conditions |
| [beehiiv](/emailify/integrations/beehiiv) | API upload to a draft post | The upload does not publish, schedule, or send; beehiiv wraps the imported content and removes `` and `` tags |
| [Ghost](/emailify/integrations/ghost) | Admin API upload to an unpublished email-only draft | The upload does not publish, schedule, or send; Ghost may simplify or remove email-specific markup |
| [Shopify](/emailify/integrations/shopify) | Platform-formatted HTML for manual import | Paste the exported HTML into Shopify's code-based email import workflow |

## Check these details in the platform guide

- **Handoff method:** API upload, OAuth connection, ZIP, pasted HTML, webhook, draft, or another platform-specific flow.
- **Credentials and permissions:** create the narrow credentials and scopes documented for that platform.
- **Destination:** confirm whether the result becomes a template, email, draft, asset, or downloadable package.
- **Editability:** some platforms provide editable regions, while others use a code editor or transform imported HTML.
- **Image hosting:** confirm whether images are uploaded automatically or must be hosted with the exported HTML.
- **Repeat uploads:** only rely on update-in-place behavior when the platform guide documents it.

> **Warning:** A successful Emailify export or API response does not prove that a campaign has been approved, scheduled, sent, or rendered correctly in every email client. Review the result inside the destination platform and test it before sending.

## Platform guide directory

### A–F

- [Acoustic](/emailify/integrations/acoustic)
- [ActiveCampaign](/emailify/integrations/activecampaign)
- [ActiveTrail](/emailify/integrations/activetrail)
- [Amazon SES](/emailify/integrations/amazon-ses)
- [Aweber](/emailify/integrations/aweber)
- [Bazaarvoice](/emailify/integrations/bazaarvoice)
- [Benchmark Email](/emailify/integrations/benchmark-email)
- [beehiiv](/emailify/integrations/beehiiv)
- [Bento](/emailify/integrations/bento)
- [Bloomreach](/emailify/integrations/bloomreach)
- [BlueShift](/emailify/integrations/blueshift)
- [Braze](/emailify/integrations/braze)
- [Brevo](/emailify/integrations/brevo)
- [Buttondown](/emailify/integrations/buttondown)
- [Campaign Monitor](/emailify/integrations/campaign-monitor)
- [Cheetah Digital](/emailify/integrations/cheetah-digital)
- [Constant Contact](/emailify/integrations/constant-contact)
- [Contlo](/emailify/integrations/contlo)
- [ConvertKit](/emailify/integrations/convertkit)
- [Customer.io](/emailify/integrations/customer-io)
- [Dotdigital](/emailify/integrations/dotdigital)
- [Drip](/emailify/integrations/drip)
- [EmailOctopus](/emailify/integrations/emailoctopus)
- [Emarsys](/emailify/integrations/emarsys)

### G–M

- [GetResponse](/emailify/integrations/getresponse)
- [Ghost](/emailify/integrations/ghost)
- [HubSpot](/emailify/integrations/hubspot)
- [Insider](/emailify/integrations/insider)
- [Intercom](/emailify/integrations/intercom)
- [Iterable](/emailify/integrations/iterable)
- [Klaviyo](/emailify/integrations/klaviyo)
- [Loops.so](/emailify/integrations/loops)
- [MailChimp](/emailify/integrations/mailchimp)
- [Mailercloud](/emailify/integrations/mailercloud)
- [MailerLite](/emailify/integrations/mailerlite)
- [Mailgun](/emailify/integrations/mailgun)
- [MailJet](/emailify/integrations/mailjet)
- [Mailmodo](/emailify/integrations/mailmodo)
- [Marketo](/emailify/integrations/marketo)
- [Mautic](/emailify/integrations/mautic)
- [Microsoft Dynamics 365](/emailify/integrations/microsoft-dynamics-365)
- [Moosend](/emailify/integrations/moosend)

### N–Z

- [Omnisend](/emailify/integrations/omnisend)
- [OneSignal](/emailify/integrations/onesignal)
- [Ongage](/emailify/integrations/ongage)
- [Oracle Eloqua](/emailify/integrations/oracle-eloqua)
- [Oracle Responsys](/emailify/integrations/oracle-responsys)
- [Pardot](/emailify/integrations/pardot)
- [Postmark](/emailify/integrations/postmark)
- [Resend](/emailify/integrations/resend)
- [Sailthru](/emailify/integrations/sailthru)
- [Salesforce Marketing Cloud](/emailify/integrations/salesforce)
- [SARE](/emailify/integrations/sare)
- [Selzy](/emailify/integrations/selzy)
- [SendGrid](/emailify/integrations/sendgrid)
- [SendPulse](/emailify/integrations/sendpulse)
- [Sendwithus](/emailify/integrations/sendwithus)
- [SendX](/emailify/integrations/sendx)
- [Sendy](/emailify/integrations/sendy)
- [Shopify](/emailify/integrations/shopify)
- [Spotler](/emailify/integrations/spotler)
- [Stripo](/emailify/integrations/stripo)
- [SugarCRM (Sugar Market)](/emailify/integrations/sugarcrm)
- [Webex](/emailify/integrations/webex)
- [Yotpo](/emailify/integrations/yotpo)
- [Zeta](/emailify/integrations/zeta)
- [Zoho Campaigns](/emailify/integrations/zoho-campaigns)

## Before sending

Review the exported result inside your platform, confirm image URLs and platform-specific merge tags, then [test the HTML email across clients](/emailify/export/testing).

---

---
url: "/emailify/integrations/acoustic.md"
description: "Emailify includes a Acoustic export option, which lets you 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 lets you 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 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 lets you 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 lets you upload HTML emails directly from the Figma plugin directly to your ActiveCampaign templates.

### Video Tutorial: Uploading your emails to ActiveCampaign

This video walks through how to upload HTML emails from the Figma Emailify plugin to ActiveCampaign.
[Embedded media](https://www.youtube-nocookie.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 lets you 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 lets you 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 lets you 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 lets you 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 walks through how to upload HTML emails from the Figma Emailify plugin to Amazon Simple Email Service (SES).
[Embedded media](https://www.youtube-nocookie.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 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: "Upload an Emailify email to AWeber as a draft through its API, or export a ZIP for manual import."
---

# Uploading your emails to AWeber

> Upload an Emailify email to AWeber as a draft through its API, or export a ZIP for manual import.

## Upload with the API

1. In the Emailify export panel, select **AWeber (API)**.
2. Enter an OAuth access token with `email.write` access, plus the destination account ID and list ID.
3. Enter the subject and preheader, then click **Upload Draft To AWeber**.

Emailify hosts the email images first and creates an unscheduled broadcast draft. Review the draft in AWeber before scheduling or sending it.

## Export a ZIP

### Video Tutorial: Export HTML emails from Figma to AWeber

This video walks through how to upload HTML emails from the Figma Emailify plugin to Aweber.
[Embedded media](https://www.youtube-nocookie.com/embed/WpBJ0B8XrUc)

In the Emailify export panel, select **AWeber (Zip)**, then click **Export For AWeber** to download the selected emails.

Once the HTML has been exported, you 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 lets you 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 lets you 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 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/beehiiv.md"
description: "Upload an Emailify email to beehiiv as a draft post through its API."
---

# Uploading your emails to beehiiv

> Upload an Emailify email to beehiiv as a draft post through its API.

The beehiiv API upload is available to publications on the Max and Enterprise plans.

## Upload a draft

1. In the Emailify export panel, select **beehiiv (API)**.
2. Enter the beehiiv API key and publication ID, which starts with `pub_`.
3. Enter the subject and preheader, then click **Upload Draft To beehiiv**.

Emailify hosts the email images first and creates a draft post. It does not publish, schedule, or send the post.

## HTML limitations

beehiiv wraps the imported content in its own email layout and removes `` and `` tags. Inline styles are preserved, but the draft may not match Emailify's preview exactly. Review the created draft in beehiiv before sending it.

---

---
url: "/emailify/integrations/benchmark-email.md"
description: "Emailify includes a Benchmark Email export option, which lets you 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 lets you 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 walks through how to upload HTML emails from the Figma Emailify plugin to Benchmark Email.
[Embedded media](https://www.youtube-nocookie.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 need to manually upload your HTML templates to Benchmark Email, by following the video tutorial above.

> **Note:** 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: "Upload an Emailify email to Bento as a draft through its API, or export a ZIP for manual import."
---

# Uploading your emails to Bento

> Upload an Emailify email to Bento as a draft through its API, or export a ZIP for manual import.

## Upload with the API

1. In the Emailify export panel, select **Bento (API)**.
2. Enter the publishable key, secret key, site UUID, and an existing Bento author name and email.
3. Enter the subject and preheader, then click **Upload Draft To Bento**.

Emailify hosts the email images first and creates a raw-HTML broadcast draft without approval or a send time. Review the draft in Bento before approving or scheduling it.

## Export a ZIP

### Video Tutorial: Export HTML emails from Figma to Bento

This video walks through how to upload HTML emails from the Figma Emailify plugin to Bento.
[Embedded media](https://www.youtube-nocookie.com/embed/iv2PWcrxthQ)

In the Emailify export panel, select **Bento (Zip)**, then click **Export For Bento** to download the selected emails.

Once the HTML has been exported, you need to manually upload your HTML templates to Bento, by following the video tutorial above.

---

---
url: "/emailify/integrations/bloomreach.md"
description: "Emailify's Bloomreach export creates complete HTML emails ready to manually import into Bloomreach's HTML Builder."
---

# Uploading your emails to Bloomreach

> Emailify's Bloomreach export creates complete HTML emails ready to manually import into Bloomreach's HTML Builder.

In the Emailify export panel, select the **Bloomreach** option from the dropdown list. When you're ready, click the **Export For Bloomreach** button to export the emails you've selected from Figma to HTML.

## Importing a complete Emailify template

Use Bloomreach's **HTML Builder** when importing a complete Emailify email:

1. Unzip the Emailify export.
2. Open the email's `index.html` file in a text or code editor.
3. Create or open an email in Bloomreach's **HTML Builder**.
4. Switch to **Code** mode and replace the existing code with the complete contents of `index.html`, including its `` and ``.
5. Save the email and send a test before using it in a campaign.

> **Warning:** Use the **HTML Builder**, rather than an **HTML content block** inside Bloomreach's Design Builder, when importing a complete Emailify export.

Emailify includes responsive CSS in the email's `` to apply desktop column widths, along with conditional table markup for versions of Outlook that need a separate fallback. Bloomreach's Design Builder treats its HTML content block as a body fragment, so it may move the responsive styles into the email body and remove the Outlook-specific markup. When that happens, columns can stack on desktop instead of displaying side by side.

See Bloomreach's guide to [using the HTML Builder](https://documentation.bloomreach.com/engagement/docs/email-editors#html-builder) for more details.

## Using an Emailify section in the Design Builder

If you need to place an Emailify section inside a Design Builder email, you can try splitting the exported code:

1. Copy the `` tags from the exported `` into **Settings** -> **Custom Head HTML** in Bloomreach.
2. Copy only the content between the exported `` and `` tags into the Design Builder's HTML content block.

> **Note:** This can restore the responsive CSS for email clients that support it, but the Design Builder may still remove Emailify's Outlook-specific conditional markup. Test the result in Gmail, Apple Mail, and desktop Outlook before sending. For the most reliable compatibility, use the complete export in Bloomreach's HTML Builder.

See Bloomreach's guide to [Custom Head HTML](https://documentation.bloomreach.com/engagement/docs/email-editors#custom-head-html) for more details.

---

---
url: "/emailify/integrations/blueshift.md"
description: "Emailify includes a built-in integration with Blueshift, which lets you 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 lets you 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 lets you 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 lets you upload HTML emails directly from the Figma plugin directly to your Braze templates.

### Video Tutorial: Uploading your emails to Braze

This video walks through how to upload HTML emails from the Figma Emailify plugin to Braze.
[Embedded media](https://www.youtube-nocookie.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 Global Inline CSS toggle (to turn off) in **Manage Settings** -> **Email Settings** -> **Inline CSS**

## Updating Braze Templates uploaded from Emailify

If you want 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:** 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 (for example, `http://www.example.com[[data-msys-sublink='open-in-app']]`), which will automatically include that `data-msys-sublink` data attribute in your `` link tag (for example, ``).

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 (for example, `http://www.example.com[[universal='true']]`), which will automatically include that `universal` data attribute in your `` link tag (for example, ``).

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 lets you 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 lets you 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 walks through how to upload HTML emails from the Figma Emailify plugin to Brevo (formerly called "Sendinblue").
[Embedded media](https://www.youtube-nocookie.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/buttondown.md"
description: "Emailify includes a built-in integration with Buttondown, which lets you upload HTML emails directly from the Figma plugin to Buttondown drafts."
---

# Uploading your emails to Buttondown

> Emailify includes a built-in integration with Buttondown, which lets you upload HTML emails directly from the Figma plugin to Buttondown drafts.

In the Emailify export panel, select the **Buttondown** option from the dropdown list, then paste in a valid Buttondown API key.

When you're ready, click the **Upload To Buttondown** button to start exporting the emails you've selected from Figma to HTML, and have them automatically be uploaded to Buttondown as draft emails.

---

---
url: "/emailify/integrations/campaign-monitor.md"
description: "Emailify includes a built-in integration with Campaign Monitor, which lets you 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 lets you upload HTML emails directly from the Figma plugin directly to your Campaign Monitor templates.

### Video Tutorial: Uploading your emails to Campaign Monitor

This video walks through how to upload HTML emails from the Figma Emailify plugin to Campaign Monitor.
[Embedded media](https://www.youtube-nocookie.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 lets you 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 lets you 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 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: "Upload an Emailify email to Constant Contact as a draft through its API, or export a ZIP for manual import."
---

# Uploading your emails to Constant Contact

> Upload an Emailify email to Constant Contact as a draft through its API, or export a ZIP for manual import.

## Upload with the API

1. In the Emailify export panel, select **Constant Contact (API)**.
2. Enter an OAuth access token with campaign write access, a sender name, a verified sender email, and a verified reply-to email.
3. Enter the subject and preheader, then click **Upload Draft To Constant Contact**.

Emailify hosts the email images first and creates a custom-code campaign in draft status. It does not select recipients, schedule, or send the campaign. Review the draft in Constant Contact before using it.

## Export a ZIP

### Video Tutorial: Export HTML emails from Figma to Constant Contact

This video walks through how to upload HTML emails from the Figma Emailify plugin to Constant Contact.
[Embedded media](https://www.youtube-nocookie.com/embed/XDjtuc0XWKI)

In the Emailify export panel, select **Constant Contact (Zip)**, then click **Export For Constant Contact** to download the selected emails.

Once the HTML has been exported, you 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 lets you 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 lets you 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 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: "Upload an Emailify email to Kit as a draft through its API, or export a ZIP for manual import."
---

# Uploading your emails to Kit (ConvertKit)

> Upload an Emailify email to Kit as a draft through its API, or export a ZIP for manual import.

## Upload with the API

1. In the Emailify export panel, select **Kit / ConvertKit (API)**.
2. Enter a Kit API v4 key.
3. Enter the subject and preheader, then click **Upload Draft To Kit**.

Emailify hosts the email images first and creates a private broadcast with no send time. Kit applies the account's default email template because the API does not support starting-point templates. Review the draft before scheduling or sending it.

## Export a ZIP

### Video Tutorial: Export HTML emails from Figma to ConvertKit

This video walks through how to upload HTML emails from the Figma Emailify plugin to ConvertKit.
[Embedded media](https://www.youtube-nocookie.com/embed/I8kwRdvwf8k)

In the Emailify export panel, select **Kit / ConvertKit (Zip)**, then click **Export For ConvertKit** to download the selected emails.

Once the HTML has been exported, you need to manually upload your HTML templates to ConvertKit, by following the video tutorial above.

---

---
url: "/emailify/integrations/customer-io.md"
description: "Emailify includes a direct Customer.io API upload option for Design Studio emails or reusable templates, plus a ZIP export option for manually copying HTML into Customer.io."
---

# Uploading your emails to Customer.io

> Emailify includes a direct Customer.io API upload option for Design Studio emails or reusable templates, plus a ZIP export option for manually copying HTML into Customer.io.

### Video Tutorial: Uploading your emails to Customer.io

This video walks through how to manually upload HTML emails from the Figma Emailify plugin to Customer.io.
[Embedded media](https://www.youtube-nocookie.com/embed/KQyaQy6gYps)

Emailify includes two Customer.io export options:

- **Customer.io (API)** uploads your emails directly to Customer.io Design Studio as emails or reusable email templates.
- **Customer.io (Zip)** exports a ZIP file that you can manually copy into Customer.io.

## Uploading directly to Customer.io Design Studio

In the Emailify export panel, select the **Customer.io (API)** option from the dropdown list, then paste in a valid Customer.io [App API Key](https://docs.customer.io/integrations/api/app/) and choose the matching Customer.io region for your workspace.

> **Note:** If your Customer.io workspace is hosted in the EU, choose the **EU** region in Emailify. Otherwise, keep the default **US** region selected.

Use the **Upload As** setting to choose whether Emailify creates reusable email templates or regular Design Studio emails in Customer.io. This defaults to **Template** for backwards compatibility. When you're ready, click the **Upload To Customer.io** button to start exporting the emails you've selected from Figma to HTML, and have them automatically uploaded to Customer.io Design Studio.

> **Note:** You’ll need a Customer.io App API key that can create Design Studio emails in your Customer.io workspace.

When uploading via the Customer.io API, Emailify uploads supported email images to [Customer.io Assets](https://docs.customer.io/integrations/api/app/#tag/assets/createAsset) by default. It will use an `emailify` folder in Customer.io Assets, creating that folder automatically if it does not already exist. Images that Customer.io Assets cannot accept, including images over Customer.io's 2 MB file limit, are uploaded to Hypermatic as a fallback so the Design Studio email or template can still reference a hosted image URL.

## Updating Customer.io emails and templates uploaded from Emailify

If you want to have your Customer.io emails or templates automatically _update_ instead of being created as new items each time, you can optionally enable the **Enable Updatable Templates** toggle in the plugin's export settings (or **Enable Updatable Emails** when the **Upload As** setting is set to **Email**).

This will automatically append a `customerioEmailId` or `customerioTemplateId` 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 Customer.io via the API upon the next export from the plugin.

> **Tip:** Note, you will need to **ensure the _Enable Updatable Templates_ or _Enable Updatable Emails_ toggle is also enabled _prior_ to uploading your initial email or template**, as this will append the original Customer.io email or template ID into your Figma frame name; this ID will then be used for any future re-uploads to update that same item in your Customer.io account (instead of creating a new one each time), provided that the updatable toggle remains enabled, too.

> **Note:** To _update_ emails or templates in Customer.io, you’ll need to use an App API key for the same Customer.io workspace and region that originally received the upload.

## Manually uploading a ZIP export to Customer.io

In the Emailify export panel, select the **Customer.io (Zip)** 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` file 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 (for example, head, body, etc) to any new layout created; you 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 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.

![Selecting a Customer.io email layout](/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)

![Default HTML in a Customer.io layout](/assets/images/emailify/customer-io-two.jpg)

To fix this, you need to manually remove any HTML that Customer.io adds to your blank Layout, and only leave the `content` tag (below).

![Blank Customer.io layout with only the content tag](/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 lets you 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 lets you 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: "Upload an Emailify email to Drip as a draft through its API, or export a ZIP for manual import."
---

# Uploading your emails to Drip

> Upload an Emailify email to Drip as a draft through its API, or export a ZIP for manual import.

## Upload with the API

1. In the Emailify export panel, select **Drip (API)**.
2. Enter the Drip API token and account ID.
3. Enter the subject and preheader, then click **Upload Draft To Drip**.

Emailify hosts the email images first and creates a single-email campaign draft containing the HTML and plain-text versions. Review it in Drip before choosing recipients or sending it.

## Export a ZIP

### Video Tutorial: Export HTML emails from Figma to Drip

This video walks through how to upload HTML emails from the Figma Emailify plugin to Drip.
[Embedded media](https://www.youtube-nocookie.com/embed/T-VmrIW9e7c)

In the Emailify export panel, select **Drip (Zip)**, then click **Export For Drip** to download the selected emails.

Once the HTML has been exported, you 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 lets you 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 lets you 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 walks through how to upload HTML emails from the Figma Emailify plugin to EmailOctopus.
[Embedded media](https://www.youtube-nocookie.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 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 lets you 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 lets you 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 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) (Note that you 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 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 want 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:** Note, you will _need_ to enable the `campaign.update` permission on your Emarsys WWSE key for this to work.

> **Tip:** 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: "Upload an Emailify transactional template through the GetResponse MAX API, or export a ZIP for manual import."
---

# Uploading your emails to GetResponse

> Upload an Emailify transactional template through the GetResponse MAX API, or export a ZIP for manual import.

## Upload with the API

This option requires the GetResponse MAX Transactional Email add-on.

1. In the Emailify export panel, select **GetResponse MAX (API)**.
2. Enter the GetResponse API key.
3. Enter the subject and preheader, then click **Upload Template To GetResponse**.

Emailify hosts the email images first and creates a transactional email template. It does not create or send a standard newsletter campaign.

## Export a ZIP

### Video Tutorial: Export HTML emails from Figma to GetResponse

This video walks through how to upload HTML emails from the Figma Emailify plugin to GetResponse.
[Embedded media](https://www.youtube-nocookie.com/embed/_WtsjQmQV-I)

In the Emailify export panel, select **GetResponse (Zip)**, then click **Export For GetResponse** to download the selected emails.

Once the HTML has been exported, you need to manually upload your HTML templates to GetResponse, by following the video tutorial above.

---

---
url: "/emailify/integrations/ghost.md"
description: "Upload an Emailify email to Ghost as an unpublished email-only draft through its Admin API."
---

# Uploading your emails to Ghost

> Upload an Emailify email to Ghost as an unpublished email-only draft through its Admin API.

## Upload a draft

1. In Ghost Admin, create a custom integration and copy its Admin API key.
2. In the Emailify export panel, select **Ghost (API)**.
3. Enter the Ghost Admin URL and Admin API key in `id:secret` format.
4. Enter the subject and preheader, then click **Upload Draft To Ghost**.

Emailify hosts the email images first and creates an unpublished, email-only post draft. It does not publish, schedule, or send the post.

## HTML limitations

Ghost converts imported HTML into editor content. Some email-specific markup may be simplified or removed, so the Ghost draft may not match Emailify's preview exactly. Review the draft in Ghost before choosing a newsletter or sending it.

---

---
url: "/emailify/integrations/hubspot.md"
description: "Emailify includes a built-in integration with HubSpot, which lets you 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 lets you 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 (for example, **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 lets you 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 lets you 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 walks through how to upload HTML emails from the Figma Emailify plugin to Insider (UseInsider).
[Embedded media](https://www.youtube-nocookie.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 lets you 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 lets you 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 walks through how to upload HTML emails from the Figma Emailify plugin to Intercom.
[Embedded media](https://www.youtube-nocookie.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 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 lets you 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 lets you 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 lets you 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 lets you upload HTML emails directly from the Figma plugin directly to your Klaviyo templates.

### Video Tutorial: Uploading your emails to Klaviyo

This video walks through how to upload HTML emails from the Figma Emailify plugin to Klaviyo.
[Embedded media](https://www.youtube-nocookie.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 (for example, "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.

## A/B testing custom HTML templates in Klaviyo

Klaviyo supports A/B testing custom HTML emails, but creating the test automatically makes Variation B an identical copy of Variation A. To test two different Emailify designs:

1. In Figma, give the two Emailify frames clear names, for example, **Summer Sale - Test A** and **Summer Sale - Test B**. Emailify uses these frame names for the saved template names in Klaviyo.
2. Upload both frames to Klaviyo as separate saved templates.
3. Use the Test A template to create your Klaviyo campaign, then click **Create A/B test** above the subject line. Klaviyo will create Variation B as a copy of Variation A.
4. In another browser tab, open the saved Test B template under **Content > Templates**, open its code editor, and copy all of the HTML.
5. Return to the campaign, open Variation B, click **Edit**, replace the copied Test A HTML with the Test B HTML, and save your changes.
6. Give both variations descriptive names, then preview or test-send each version and review the plain-text version before scheduling the campaign.

> **Tip:** If you are testing the email design or content, keep the subject line and sender details the same so only one variable changes.

For more information about configuring the test and selecting a winning metric, read Klaviyo's [A/B testing guide](https://help.klaviyo.com/hc/en-us/articles/115005228148).

## 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 want 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 walks through how to add custom Klaviyo product feeds into custom HTML templates with the Emailify Figma Plugin.
[Embedded media](https://www.youtube-nocookie.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 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 lets you 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 lets you 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 walks through how to upload HTML emails from the Figma Emailify plugin to Loops.so.
[Embedded media](https://www.youtube-nocookie.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 lets you 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 lets you upload HTML emails directly from the Figma plugin directly to your MailChimp templates.

### Video Tutorial: Uploading your emails to MailChimp

This video walks through how to upload HTML emails from the Figma Emailify plugin to MailChimp.
[Embedded media](https://www.youtube-nocookie.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 **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 (for example, `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 lets you 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 lets you export HTML emails directly from the Figma plugin ready to manually add to their platform.

### Video Tutorial: Uploading your emails to Mailercloud

This video walks through how to upload HTML emails from the Figma Emailify plugin to Mailercloud.
[Embedded media](https://www.youtube-nocookie.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 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: "Upload an Emailify email to MailerLite as a draft through its API, or export a ZIP for manual import."
---

# Uploading your emails to MailerLite

> Upload an Emailify email to MailerLite as a draft through its API, or export a ZIP for manual import.

## Upload with the API

Uploading custom HTML content through the MailerLite API requires an Advanced plan.

1. In the Emailify export panel, select **MailerLite (API)**.
2. Enter the API token, sender name, and a verified sender email. A verified reply-to email is optional.
3. Enter the subject and preheader, then click **Upload Draft To MailerLite**.

Emailify hosts the email images first and creates a regular campaign draft. MailerLite adds its default footer when required account or unsubscribe details are missing. Review the draft before sending it.

## Export a ZIP

### Video Tutorial: Export HTML emails from Figma to MailerLite

This video walks through how to upload HTML emails from the Figma Emailify plugin to MailerLite.
[Embedded media](https://www.youtube-nocookie.com/embed/5eKKe7M2-yo)

In the Emailify export panel, select **MailerLite (Zip)**, then click **Export For MailerLite** to download the selected emails.

Once the HTML has been exported, you 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 lets you 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 lets you upload HTML emails directly from the Figma plugin directly to your Mailgun templates.

### Video Tutorial: Uploading your emails to Mailgun

This video walks through how to upload HTML emails from the Figma Emailify plugin to Mailgun.
[Embedded media](https://www.youtube-nocookie.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 the **Templates** link.

---

---
url: "/emailify/integrations/mailjet.md"
description: "Emailify includes a built-in integration with MailJet, which lets you 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 lets you upload HTML emails directly from the Figma plugin directly to your MailJet templates.

### Video Tutorial: Uploading your emails to MailJet

This video walks through how to upload HTML emails from the Figma Emailify plugin to Mailjet.
[Embedded media](https://www.youtube-nocookie.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.

## Updating Mailjet templates

Enable **Updatable Templates** in the **Mailjet (API)** export settings to reuse templates on later uploads. After the first successful upload, Emailify adds a `[mailjetTemplateId:123456]` tag to each email frame name. Keep this tag on the frame so later uploads update that template's HTML.

To update a template you already have in Mailjet, add its numeric template ID to the corresponding Figma email frame name in the same format, then enable **Updatable Templates** and upload. Use a template intended for custom HTML and check that the ID belongs to the account associated with your API key.

Updates preserve the template's existing name, subject, sender headers and plain-text content. Review these in Mailjet if they also need changing. An update failure is reported without creating a replacement template.

Remove the tag to create a new linked template on the next upload. Turning off **Updatable Templates** creates a new template on every upload and leaves any existing frame tag unchanged. Duplicating a tagged Figma frame also copies its template ID; remove the copied tag if the duplicate should use a separate Mailjet template.

## 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 lets you 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 lets you 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 walks through how to upload HTML emails from the Figma Emailify plugin to Mailmodo.
[Embedded media](https://www.youtube-nocookie.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 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 lets you 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 lets you upload HTML emails directly from the Figma plugin directly to your Marketo templates.

### Video Tutorial: Uploading your emails to Marketo

This video walks through how to upload HTML emails from the Figma Emailify plugin to Marketo.
[Embedded media](https://www.youtube-nocookie.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 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

![Marketo Admin page](/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)

![Marketo REST API endpoint](/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

![Marketo Admin page](/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**

![Creating a Marketo API role](/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**

![Marketo Read Write Assets role permissions](/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**

![Creating a Marketo LaunchPoint service](/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**.

![Marketo custom API service settings](/assets/images/emailify/marketo/06-marketo-api-new-service.jpg)

6. Under the **Installed Services**, click the **View Details** link for your service

![Marketo service View Details link](/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)

![Marketo Client ID and Client Secret](/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

![Emailify Export HTML button](/assets/images/emailify/marketo/09-marketo-api-emailify.jpg)

2. Select the **Marketo (API)** option from the export platform options list

![Marketo API export option in Emailify](/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

![Marketo API credentials in Emailify](/assets/images/emailify/marketo/11-marketo-api-credentials.jpg)

4. Click on the **Upload To Marketo** button to upload your template(s)

![Upload to Marketo button in Emailify](/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

![Marketo template folder link in Emailify](/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

![Uploaded email template in Marketo Design Studio](/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/mautic.md"
description: "Emailify includes a built-in integration with Mautic, which lets you upload HTML emails directly from the Figma plugin to Mautic email templates."
---

# Uploading your emails to Mautic

> Emailify includes a built-in integration with Mautic, which lets you upload HTML emails directly from the Figma plugin to Mautic email templates.

In the Emailify export panel, select the **Mautic** option from the dropdown list, then paste in your Mautic URL, username and password.

When you're ready, click the **Upload To Mautic** button to start exporting the emails you've selected from Figma to HTML, and have them automatically be uploaded to Mautic as unpublished email templates using code mode.

---

---
url: "/emailify/integrations/microsoft-dynamics-365.md"
description: "Emailify includes a built-in integration with Microsoft Dynamics 365, which lets you upload HTML emails directly from the Figma plugin to your Dynamics 365 account."
---

# Uploading your emails to Microsoft Dynamics 365

> Emailify includes a built-in integration with Microsoft Dynamics 365, which lets you upload HTML emails directly from the Figma plugin to your Dynamics 365 account.

In the Emailify export panel, select the **Microsoft Dynamics 365** option from the dropdown list, then paste in your Organization URL, Tenant ID, Client ID and Client Secret.

When you're ready, click the **Upload To Microsoft Dynamics 365** button to start exporting the emails you've selected from Figma to HTML, and have them automatically be uploaded to your Dynamics 365 account.

---

---
url: "/emailify/integrations/moosend.md"
description: "Upload an Emailify email to Moosend as a draft through its API, or export a ZIP for manual import."
---

# Uploading your emails to Moosend

> Upload an Emailify email to Moosend as a draft through its API, or export a ZIP for manual import.

## Upload with the API

1. In the Emailify export panel, select **Moosend (API)**.
2. Enter the API key, verified sender email, and reply-to email.
3. Enter the subject and preheader, then click **Upload Draft To Moosend**.

Emailify hosts the email images first and creates a regular campaign draft. It does not add a mailing list, schedule, or send the campaign.

## Export a ZIP

### Video Tutorial: Uploading your emails to Moosend

This video walks through how to upload HTML emails from the Figma Emailify plugin to Moosend.
[Embedded media](https://www.youtube-nocookie.com/embed/ByG957iMh6c)

In the Emailify export panel, select **Moosend (Zip)**, then click **Export For Moosend** to download the selected emails.

Once the HTML has been exported, you 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: "Upload an Emailify template directly through the Omnisend API, or export a ZIP for manual import."
---

# Uploading your emails to Omnisend

> Upload an Emailify template directly through the Omnisend API, or export a ZIP for manual import.

## Upload with the API

1. In the Emailify export panel, select **Omnisend (API)**.
2. Enter an Omnisend API key with email-template write access.
3. Enter the subject and preheader, then click **Upload Template To Omnisend**.

Emailify hosts the email images first, ensures the required Omnisend unsubscribe link is present, and imports the HTML as a saved template. It does not create, schedule, or send a campaign.

## Export a ZIP

### Video Tutorial: Uploading your emails to Omnisend

This video walks through how to upload HTML emails from the Figma Emailify plugin to Omnisend.
[Embedded media](https://www.youtube-nocookie.com/embed/Zl8DZWbyrt8)

In the Emailify export panel, select **Omnisend (Zip)**, then click **Export For Omnisend** to download the selected emails.

Once the HTML has been exported, you 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 lets you 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 lets you upload HTML emails directly from the Figma plugin directly to your OneSignal templates.

### Video Tutorial: Uploading your emails to OneSignal

This video walks through how to upload HTML emails from the Figma Emailify plugin to OneSignal.
[Embedded media](https://www.youtube-nocookie.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 lets you 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 lets you export HTML emails directly from the Figma plugin ready to manually add to their platform.

### Video Tutorial: Uploading your emails to Ongage

This video walks through how to upload HTML emails from the Figma Emailify plugin to Ongage.
[Embedded media](https://www.youtube-nocookie.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 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/oracle-eloqua.md"
description: "Emailify includes a built-in integration with Oracle Eloqua, which lets you upload HTML emails directly from the Figma plugin to Eloqua email assets."
---

# Uploading your emails to Oracle Eloqua

> Emailify includes a built-in integration with Oracle Eloqua, which lets you upload HTML emails directly from the Figma plugin to Eloqua email assets.

In the Emailify export panel, select the **Oracle Eloqua** option from the dropdown list, then paste in your Eloqua base URL, username and password.

You can also optionally enter an **Email Group ID** if you want Emailify to create the uploaded email asset inside a specific Eloqua email group.

When you're ready, click the **Upload To Oracle Eloqua** button to start exporting the emails you've selected from Figma to HTML, and have them automatically be uploaded to your Eloqua email assets.

---

---
url: "/emailify/integrations/oracle-responsys.md"
description: "Emailify includes a built-in integration with Oracle Responsys, which lets you upload HTML emails directly from the Figma plugin to Responsys Content Library documents."
---

# Uploading your emails to Oracle Responsys

> Emailify includes a built-in integration with Oracle Responsys, which lets you upload HTML emails directly from the Figma plugin to Responsys Content Library documents.

In the Emailify export panel, select the **Oracle Responsys** option from the dropdown list, then paste in your Responsys endpoint, username, password and Content Library folder path.

The folder path should point to the Content Library folder where Emailify should create the uploaded HTML document, for example `/contentlibrary/name`.

When you're ready, click the **Upload To Oracle Responsys** button to start exporting the emails you've selected from Figma to HTML, and have them automatically be uploaded to Responsys as HTML documents.

---

---
url: "/emailify/integrations/pardot.md"
description: "Emailify includes a built-in integration with Pardot, which lets you 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 lets you 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 walks through how to upload HTML emails from the Figma Emailify plugin to Pardot.
[Embedded media](https://www.youtube-nocookie.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 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 (for example, _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 a way 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 [Pardot test account option](#different-pardot-api-endpoint-options-in-emailify), 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)** (for example, `0UvXXXXXXXXXXXXXXX`)
- **Pardot Username** that you use to login (for example, `name@domain.com`)
- **Pardot Password** that you use to login (for example, `*********`)
- **Consumer Key** from [your Connected App](#_1-create-a-connected-app-in-pardot) (for example, `y0Zd2jVHJ5Cc1wQg0l5yMJsXpPs...`)
- **Consumer Secret** from [your Connected App](#_1-create-a-connected-app-in-pardot)  (for example, `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** (for example, `#` `%` `&`, etc), and can only be letters and numbers (for example, `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 optionally add [Pardot content region tags](https://help.salesforce.com/s/articleView?id=mktg.mcae_classic_email_content_regions.htm&type=5) to the exported template:

- **Editable Regions** lets users edit text, images, and buttons.
- **Repeatable Regions** lets users copy or move unlocked top-level content blocks. These blocks share one repeatable region name (`body_content`), so different blocks can move past each other.
- **Removable Regions** lets users remove unlocked top-level content blocks.

Enable any combination of these options before uploading or exporting the template. When **Repeatable Regions** and **Removable Regions** are both enabled, Emailify puts both attributes on the same wrapper for each unlocked block. The repeatable wrappers share the `body_content` name and sit alongside one another, allowing different blocks to move within the group. There is no separate removable wrapper around each repeatable block.

### Keep headers and footers fixed

In Figma, lock the header, footer, or other parent layer directly inside your Emailify email frame before exporting. Emailify exports locked top-level layers without repeatable or removable region tags, including all blocks generated from a locked parent group. Leave the body layers unlocked to let users reorder them with **Repeatable Regions** enabled.

Lock the top-level layer itself; locking only a nested text or image layer does not lock its parent block. This controls copying, moving, and removing whole blocks. **Editable Regions** still controls editing text, images, and buttons inside them. Unlock the parent layer and export again to make the block repeatable or removable again.

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 lets you 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 lets you upload HTML emails directly from the Figma plugin directly to your Postmark templates.

### Video Tutorial: Uploading your emails to Postmark

This video walks through how to upload HTML emails from the Figma Emailify plugin to Postmark.
[Embedded media](https://www.youtube-nocookie.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/resend.md"
description: "Emailify includes a built-in integration with Resend, which lets you upload HTML emails directly from the Figma plugin to Resend templates."
---

# Uploading your emails to Resend

> Emailify includes a built-in integration with Resend, which lets you upload HTML emails directly from the Figma plugin to Resend templates.

### Video Tutorial: Uploading your emails to Resend

This video walks through how to upload HTML emails from the Figma Emailify plugin to Resend.
[Embedded media](https://www.youtube-nocookie.com/embed/c9eMv9-q7jY)

In the Emailify export panel, select the **Resend** option from the dropdown list, then paste in a valid Resend API key.

If you want Emailify to publish the template immediately after it is uploaded, enable the **Publish Template** toggle before exporting.

When you're ready, click the **Upload To Resend** button to start exporting the emails you've selected from Figma to HTML, and have them automatically be uploaded to your Resend templates.

---

---
url: "/emailify/integrations/sailthru.md"
description: "Emailify includes a built-in integration with Sailthru, which lets you upload HTML emails directly from the Figma plugin to Sailthru templates."
---

# Uploading your emails to Sailthru

> Emailify includes a built-in integration with Sailthru, which lets you upload HTML emails directly from the Figma plugin to Sailthru templates.

In the Emailify export panel, select the **Sailthru** option from the dropdown list, then paste in your Sailthru API key and Sailthru secret.

When you're ready, click the **Upload To Sailthru** button to start exporting the emails you've selected from Figma to HTML, and have them automatically be uploaded to your Sailthru templates.

---

---
url: "/emailify/integrations/salesforce.md"
description: "Emailify includes a built-in integration with Salesforce, which lets you upload HTML emails directly from the Figma plugin to your Salesforce emails or templates."
---

# Uploading your emails to Salesforce Marketing Cloud

> Emailify includes a built-in integration with Salesforce, which lets you upload HTML emails directly from the Figma plugin to your Salesforce emails or templates.

### Video Tutorial: Uploading your emails to Salesforce Marketing Cloud

This video walks through how to upload HTML emails from the Figma Emailify plugin to Salesforce Marketing Cloud.
[Embedded media](https://www.youtube-nocookie.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 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 can copy/paste the following required details from your new integration created above into your Emailify export settings:

- **Client ID** (for example, 3e8poc4erkli6ghjavq8kuio)
- **Client Secret** (for example, EOjPb4HPWwtyUkcb5CnCpo5C)
- **REST Base URL** (for example, https://mcvb5-qrzy845tggex49976pmz38.rest.marketingcloudapis.com/)

When you're ready, choose **Template** or **HTML Email** from the **Upload As** dropdown, then click the **Upload To Marketing Cloud** button to export the selected Figma emails to Marketing Cloud. The default **Template** option keeps the previous template-based email behavior. Choose **HTML Email** if you want the uploaded asset to open as an editable HTML email in Content Builder.

If you'd prefer Emailify to place the uploaded Salesforce email or 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 or template.

The **Template Folder** and image **Content Builder** folder can be different, which is useful if your team keeps HTML emails, 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. This option is available when uploading as a **Template**; **HTML Email** uploads omit the slot container.

### 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 lets you specify aliases for those `` tag links in your exported HTML to help tracking data by naming them something relevant to the design (for example, "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 RedirectTo AMPscript

Enable **RedirectTo** to automatically wrap absolute `http://` and `https://` link destinations in AMPscript when exporting to Salesforce Marketing Cloud. Your team can enter normal web URLs in Emailify without writing AMPscript in each component:

```html
Read more
```

This option is off by default and is available for Marketing Cloud ZIP and API exports, including templates and HTML emails. It also applies to individual HTML block files and Outlook button links. Existing aliases and conversion attributes are retained.

Existing AMPscript links and URLs containing dynamic template code are left unchanged, along with Salesforce unsubscribe/profile tokens, email addresses, telephone links, relative URLs and page anchors. Other AMPscript in your email is unaffected. Preview links and the plain text version keep their ordinary URLs.

After importing or uploading your email, send a test from Salesforce Marketing Cloud and check that the links reach the expected destinations, including any query parameters.

### 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

Enable **Blocks** to include additional `.html` files in the ZIP. Emailify exports each row as a separate HTML file so you can use it as a reusable module 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 need to spend some time extracting those if you are taking this approach.

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 lets you 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 lets you 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 walks through how to upload HTML emails from the Figma Emailify plugin to SARE.
[Embedded media](https://www.youtube-nocookie.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 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 lets you 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 lets you upload HTML emails directly from the Figma plugin directly to your Selzy templates.

### Video Tutorial: Uploading your emails to Selzy

This video walks through how to upload HTML emails from the Figma Emailify plugin to Selzy.
[Embedded media](https://www.youtube-nocookie.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: "Download SendGrid-compatible HTML as a ZIP without an API key, or upload emails directly to your SendGrid Design Library."
---

# Exporting your emails to SendGrid

> Download SendGrid-compatible HTML as a ZIP without an API key, or upload emails directly to your SendGrid Design Library.

### Video Tutorial: Uploading your emails to SendGrid

This video walks through how to upload HTML emails from the Figma Emailify plugin to SendGrid.
[Embedded media](https://www.youtube-nocookie.com/embed/cYYVO_3HT1U)

## Download a ZIP

1. In the Emailify export panel, choose **SendGrid (Zip)** and select your email frames. No SendGrid API key is required.
2. Choose whether to upload your images using the [image hosting options](/emailify/export/images).
3. Click **Export For SendGrid**, then download and unzip the file.
4. Copy each email's `index.html` into SendGrid's HTML code editor. If you exported local image paths, host the images and replace those paths with public URLs before sending.
5. Send a test through SendGrid and check it in your recipients' email clients.

Both SendGrid options omit the special rounded-button fallback for older Outlook clients. Those clients display square button corners; clients that support CSS rounded corners retain them. This compatibility choice does not guarantee that every Outlook rendering issue is resolved.

## Upload through the API

In the Emailify export panel, select the **SendGrid (API)** 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 lets you 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 lets you upload HTML emails directly from the Figma plugin directly to your SendPulse templates.

### Video Tutorial: Uploading your emails to SendPulse

This video walks through how to upload HTML emails from the Figma Emailify plugin to SendPulse.
[Embedded media](https://www.youtube-nocookie.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 lets you 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 lets you upload HTML emails directly from the Figma plugin directly to your Sendwithus templates.

### Video Tutorial: Uploading your emails to Sendwithus

This video walks through how to upload HTML emails from the Figma Emailify plugin to Sendwithus.
[Embedded media](https://www.youtube-nocookie.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: "Upload an Emailify email to SendX as an unscheduled campaign through its API, or export a ZIP for manual import."
---

# Uploading your emails to SendX

> Upload an Emailify email to SendX as an unscheduled campaign through its API, or export a ZIP for manual import.

## Upload with the API

1. In the Emailify export panel, select **SendX (API)**.
2. Enter the SendX Team API key and a verified sender ID.
3. Enter the subject and preheader, then click **Upload Draft To SendX**.

Emailify hosts the email images first and creates an unscheduled campaign. It does not add an audience or send the campaign. Add the intended lists or tags and review the campaign in SendX before sending it.

## Export a ZIP

### Video Tutorial: Uploading your emails to SendX

This video walks through how to upload HTML emails from the Figma Emailify plugin to SendX.
[Embedded media](https://www.youtube-nocookie.com/embed/uVTTIoT4Lk4)

In the Emailify export panel, select **SendX (Zip)**, then click **Export For SendX** to download the selected emails.

Once the HTML has been exported, you 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/sendy.md"
description: "Emailify includes a built-in integration with Sendy, which lets you upload HTML emails directly from the Figma plugin to Sendy draft campaigns."
---

# Uploading your emails to Sendy

> Emailify includes a built-in integration with Sendy, which lets you upload HTML emails directly from the Figma plugin to Sendy draft campaigns.

In the Emailify export panel, select the **Sendy** option from the dropdown list, then paste in your Sendy URL, API key, Brand ID, From Name, From Email and Reply-To Email.

When you're ready, click the **Upload To Sendy** button to start exporting the emails you've selected from Figma to HTML, and have them automatically be uploaded to Sendy as draft campaigns.

---

---
url: "/emailify/integrations/shopify.md"
description: "Emailify includes a Shopify export option, which lets you 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 lets you 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 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 lets you 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 lets you 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 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 lets you specify aliases for those `` tag links in your exported HTML to help tracking data by naming them something relevant to the design (for example, "Hero CTA Button").

---

---
url: "/emailify/integrations/stripo.md"
description: "Emailify includes Stripo export options for direct MJML API import or manual HTML upload."
---

# Uploading your emails to Stripo

> Emailify includes Stripo export options for direct MJML API import or manual HTML upload.

### Video Tutorial: Export HTML emails from Figma to Stripo

This video walks through how to upload HTML emails from the Figma Emailify plugin to Stripo.
[Embedded media](https://www.youtube-nocookie.com/embed/98oeeXB7FNI)

In the Emailify export panel, select the **Stripo (API)** option from the dropdown list to import your Emailify MJML into Stripo as an editable email or template. Add your Stripo API token, choose **Email** or **Template** from the **Import As** dropdown, choose a Stripo folder from the loaded folder list if you do not want to use the root folder, then click the **Upload To Stripo** button.

Stripo API tokens can be generated from your Stripo project settings. Per Stripo's [API authentication docs](https://api.stripo.email/docs/authentication), go to your Stripo project settings, scroll down to **Access the REST API**, generate the JWT token, then paste that token into Emailify.

> **Note:** The token required by Emailify is the Stripo REST API JWT from **Access the REST API**. This is different from the Stripo Plugin API authentication token generated via `plugin.stripo.email`.

The API import uses Stripo's [Create an email from MJML](https://api.stripo.email/reference/importemailfrommjml) endpoint when **Email** is selected, and Stripo's [Create a template from MJML](https://api.stripo.email/reference/importtemplatefrommjml) endpoint when **Template** is selected.

If you prefer the existing manual workflow, select **Stripo (Zip)**, then click **Export For Stripo**. Once the HTML has been exported, 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 lets you 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 lets you 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 walks through how to upload HTML emails from the Figma Emailify plugin to SugarCRM (Sugar Market).
[Embedded media](https://www.youtube-nocookie.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 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 lets you 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 lets you 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 need to manually upload your HTML templates to Webex.

---

---
url: "/emailify/integrations/yotpo.md"
description: "Emailify includes a Yotpo export option, which lets you 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 lets you 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 walks through how to upload HTML emails from the Figma Emailify plugin to Yotpo.
[Embedded media](https://www.youtube-nocookie.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 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 lets you 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 lets you 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 lets you 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 lets you 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 walks through how to upload HTML emails from the Figma Emailify plugin to Zoho Campaigns.
[Embedded media](https://www.youtube-nocookie.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 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 walks through how to Translate email designs in Figma with ChatGPT (automatically).
[Embedded media](https://www.youtube-nocookie.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 walks through how to translate HTML email designs with the Crowdin API and Figma by using the Emailify plugin.
[Embedded media](https://www.youtube-nocookie.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/locize.md"
description: "Use Emailify with the Locize API to upload source text from Figma and import translated email variants from a Locize namespace."
---

# Translating your email designs with Locize

> Use Emailify with the Locize API to upload source text from Figma and import translated email variants from a Locize namespace.

## Use the Locize API with Emailify

If you use [Locize](https://www.locize.com/), Emailify can upload the source copy from your email designs to a Locize namespace and import translated variants back into Figma.

### Before you start

You will need:

- A Locize project with a reference language and at least one target language.
- An existing version and namespace for your email translations.
- A project-scoped [Locize API key](https://www.locize.com/docs/integration/api#authentication).

### Step 1: Connect your Locize project

1. Click the **Localize** button in Emailify.
2. Choose **Locize API** from the localization options.
3. Enter your **Project ID** and **API Key**.
4. Enter the Locize **Version** you want to use, such as `latest` or `production`.
5. Enter the **Namespace** that contains your email translations, such as `emails`.
6. Choose the **Standard CDN** or **Pro CDN** option that matches your Locize project.
7. Choose how Emailify should create Locize string keys under **String Key Source**.

After Emailify connects, it displays the reference language and target languages configured in your Locize project.

> **Tip:** Make sure the CDN type matches your Locize project. The Standard CDN is public and uses a fixed one-hour cache, while the Pro CDN supports private publishing and configurable caching. See [Locize's CDN comparison](https://www.locize.com/docs/integration/cdn-types-standard-vs-pro) for more detail.

### Choose how Locize string keys are created

**Figma Node ID (Default)** keeps the existing Emailify behavior and uses generated Figma node IDs for Locize keys. Existing Locize workflows continue using this option unless you change it.

Choose **Figma Text Layer Name** when your Figma text layer names already match the string keys in your Locize namespace. Emailify preserves the complete layer name, including dots, so a layer named `templates.assistant_invited.h01` uses that exact Locize key.

Every included text layer name must be present and unique across the selected emails. Emailify stops the upload or import and identifies duplicate keys before any source strings are sent to Locize. Link and image alt-text keys use the text or image layer name with Emailify's `_LINK` or `_ALT_TEXT` suffix. Subject and preheader rows continue using their generated Emailify keys because they are email metadata rather than Figma text layers.

### Step 2: Select your emails and target locales

Choose the Emailify frames you want to localize, then select the Locize target languages you want to import later.

Keep **Import Markdown Formatting** enabled if your email copy contains bold, italic, linked text, or line breaks that you want to preserve during the translation round trip.

### Step 3: Upload the reference copy to Locize

Click **Upload** to send the selected Emailify text to your namespace using the reference language configured in Locize. If you update the source copy in Figma later, upload it again to update the corresponding Locize keys.

### Step 4: Translate in Locize

Open your Locize project and translate or review the uploaded keys for each target language.

### Step 5: Import translated emails into Figma

Return to Emailify, select the target locales you want, and click **Import Translations**. Emailify matches the translated Locize keys to the selected source emails and creates cloned email frames for each imported locale.

> **Tip:** Emailify stores your Locize API key in Figma's local client storage for your current user instead of saving it in the shared Figma file. Use a project-scoped API key rather than a broader personal access token.

---

---
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 walks through how to translate HTML email designs with the Lokalise API and Figma by using the Emailify plugin.
[Embedded media](https://www.youtube-nocookie.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-nocookie.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 an 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 of all of the Figma plugin features.

> **Warning:** 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.

> **Info:** If you ever need to use a different license key at any time (for example, 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: "Design and export responsive, production-ready HTML emails from Figma."
---

# Get started with Emailify

> Design and export responsive, production-ready HTML emails 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 and 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 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

- Start new emails from a blank template, layout, Randomize layout, or Emailify Figma template.
- Quickly design emails using dozens of included common components.
- Add your own reusable 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.
- Set responsive mobile overrides for individual layers.
- Translate and localize your Figma email designs via OpenAI, Claude, Gemini, Excel (XLSX) file export/import, or using the Lokalise API, Crowdin API, or Locize 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 configurable web-safe fallbacks for [unsupported](https://www.caniemail.com/search/?s=font) clients).
- Design and export HTML email signatures.
- Export responsive, production-ready HTML without writing code.
- 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, Kit (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, beehiiv, Ghost, Buttondown, Resend, Sailthru, Mautic, Sendy, Microsoft Dynamics 365, Oracle Eloqua, Oracle Responsys, Cheetah Digital by Marigold, Zeta, SARE, Netlify, Zapier, Make, PDF, Mailgun Inspect, 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 (for example, 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 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 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 walks through how to design
  and export production-ready, responsive HTML email from Figma using the
  Emailify plugin.
  [Embedded media](https://www.youtube-nocookie.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 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 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 walks through how to design
  and export production-ready, responsive HTML email from Figma using the
  Emailify plugin.
  [Embedded media](https://www.youtube-nocookie.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.

Images appear blank in this preview, but they load when you compose an email.

![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 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 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 walks through how to design
  and export production-ready, responsive HTML email from Figma using the
  Emailify plugin.
  [Embedded media](https://www.youtube-nocookie.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 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 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 walks through how to design
  and export production-ready, responsive HTML email from Figma using the
  Emailify plugin.
  [Embedded media](https://www.youtube-nocookie.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 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? Make sure your signature is selected under **For New Emails Use** in Gmail webmail settings. See 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 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 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 walks through how to design
  and export production-ready, responsive HTML email from Figma using the
  Emailify plugin.
  [Embedded media](https://www.youtube-nocookie.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 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 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 walks through how to design
  and export production-ready, responsive HTML email from Figma using the
  Emailify plugin.
  [Embedded media](https://www.youtube-nocookie.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 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 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 walks through how to design
  and export production-ready, responsive HTML email from Figma using the
  Emailify plugin.
  [Embedded media](https://www.youtube-nocookie.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 an 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 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 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 walks through how to design
  and export production-ready, responsive HTML email from Figma using the
  Emailify plugin.
  [Embedded media](https://www.youtube-nocookie.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 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 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 walks through how to design
  and export production-ready, responsive HTML email from Figma using the
  Emailify plugin.
  [Embedded media](https://www.youtube-nocookie.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 an 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 '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 shows red borders around elements in your email signature while editing. Recipients will not see these borders.

![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 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 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 walks through how to design
  and export production-ready, responsive HTML email from Figma using the
  Emailify plugin.
  [Embedded media](https://www.youtube-nocookie.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 an 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 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 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 walks through how to design
  and export production-ready, responsive HTML email from Figma using the
  Emailify plugin.
  [Embedded media](https://www.youtube-nocookie.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 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 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 walks through how to design
  and export production-ready, responsive HTML email from Figma using the
  Emailify plugin.
  [Embedded media](https://www.youtube-nocookie.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)

## Related Emailify guides

- Review the [Emailify design fundamentals](/emailify/design/fundamentals) before building a reusable signature layout.
- Follow the [design and export HTML emails tutorial](/emailify/tutorials/design-and-export-emails-from-figma-to-html) for the complete workflow.
- Explore the [Emailify Figma plugin](https://www.hypermatic.com/emailify/) for HTML emails and signatures designed in Figma.

---

---
url: "/emailify/signatures/spark-mac.md"
description: "Emailify includes an option for exporting HTML signatures, which you can 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 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 walks through how to design
  and export production-ready, responsive HTML email from Figma using the
  Emailify plugin.
  [Embedded media](https://www.youtube-nocookie.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 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 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 walks through how to design
  and export production-ready, responsive HTML email from Figma using the
  Emailify plugin.
  [Embedded media](https://www.youtube-nocookie.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 recipients 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: "Learn how to design responsive HTML emails in Figma, build reusable components, test layouts, and export to email platforms with Emailify."
---

# Emailify Video Tutorials

> Learn how to design responsive HTML emails in Figma, build reusable components, test layouts, and export to email platforms with Emailify.

## Designing Emails

- [Design and export Emails from Figma to HTML](/emailify/tutorials/design-and-export-emails-from-figma-to-html)
- [Create a component library for HTML email designs in Figma](/emailify/tutorials/create-a-component-library-for-html-email-designs-in-figma)
- [Use 500+ free HTML email components in your Figma designs](/emailify/tutorials/use-500-free-html-email-components-in-your-figma-designs)
- [Add elements to HTML email designs in Figma](/emailify/tutorials/easily-add-elements-to-html-email-designs-in-figma)
- [Create custom components for HTML email exports](/emailify/tutorials/create-custom-components-for-html-email-exports)
- [Add custom categories for Figma email components](/emailify/tutorials/add-custom-categories-for-figma-email-components)
- [Use free Figma email templates to design HTML emails](/emailify/tutorials/use-free-figma-email-templates-to-design-html-emails)
- [Add UTM tracking code to HTML email links from Figma](/emailify/tutorials/add-utm-tracking-code-to-html-email-links-from-figma)
- [Add Outlook-compatible gradient buttons to HTML emails with Figma](/emailify/tutorials/add-outlook-compatible-gradient-buttons-to-html-emails-with-figma)
- [Add hover effects to buttons in HTML emails from Figma](/emailify/tutorials/add-hover-effects-to-buttons-in-html-emails-from-figma)
- [Add hover colors to text links in HTML emails from Figma](/emailify/tutorials/add-hover-colors-to-text-links-in-html-emails-from-figma)
- [Add animated GIFs from Figma to HTML email exports](/emailify/tutorials/add-animated-gifs-from-figma-to-html-email-exports)
- [Embed custom web fonts in HTML email exports from Figma](/emailify/tutorials/embed-custom-web-fonts-in-html-email-exports-from-figma)
- [Add dark mode styles to HTML email designs](/emailify/tutorials/add-dark-mode-styles-to-html-email-designs)
- [Design and export HTML Email Signatures from Figma](/emailify/tutorials/design-and-export-html-email-signatures-from-figma)
- [Add a countdown timer to HTML emails in Figma](/emailify/tutorials/add-a-countdown-timer-to-html-emails-in-figma)

## Email Content

- [Add dynamic content to HTML emails in Figma](/emailify/tutorials/add-dynamic-content-to-html-emails-in-figma)
- [Create Klaviyo abandoned cart flow email template in Figma](/emailify/tutorials/create-klaviyo-abandoned-cart-flow-email-template-in-figma)
- [Adding a dynamic product feed to your Klaviyo emails](/emailify/tutorials/adding-a-dynamic-product-feed-to-your-klaviyo-emails)
- [Translate HTML email designs with localization in Figma](/emailify/tutorials/translate-html-email-designs-with-localization-in-figma)
- [Localize HTML email designs (with text formatting) in Figma](/emailify/tutorials/localize-html-email-designs-with-text-formatting-in-figma)
- [Translate email designs in Figma with ChatGPT](/emailify/tutorials/translate-email-designs-in-figma-with-chatgpt)
- [Translate email designs in Figma with the Lokalise API](/emailify/tutorials/translate-email-designs-in-figma-with-the-lokalise-api)
- [Translate email designs in Figma with the Crowdin API](/emailify/tutorials/translate-email-designs-in-figma-with-the-crowdin-api)
- [Import spreadsheets to tables for HTML emails in Figma](/emailify/tutorials/import-spreadsheets-to-tables-for-html-emails-in-figma)

## Platform Integrations

- [Export HTML emails from Figma to MailChimp](/emailify/tutorials/export-html-emails-from-figma-to-mailchimp)
- [Export HTML emails from Figma to Campaign Monitor](/emailify/tutorials/export-html-emails-from-figma-to-campaign-monitor)
- [Export HTML emails from Figma to Klaviyo](/emailify/tutorials/export-html-emails-from-figma-to-klaviyo)
- [Export HTML emails from Figma to Zapier (Google Drive)](/emailify/tutorials/export-html-emails-from-figma-to-zapier-google-drive)
- [Export HTML emails from Figma to Postmark](/emailify/tutorials/export-html-emails-from-figma-to-postmark)
- [Export HTML emails from Figma to Salesforce Marketing Cloud](/emailify/tutorials/export-html-emails-from-figma-to-salesforce-marketing-cloud)
- [Export HTML emails from Figma to Pardot (Marketing Cloud Account Engagement)](/emailify/tutorials/export-html-emails-from-figma-to-pardot-marketing-cloud-account-engagement)
- [Export HTML emails from Figma to SendGrid](/emailify/tutorials/export-html-emails-from-figma-to-sendgrid)
- [Export HTML emails from Figma to Resend](/emailify/tutorials/export-html-emails-from-figma-to-resend)
- [Export HTML emails from Figma to Mailjet](/emailify/tutorials/export-html-emails-from-figma-to-mailjet)
- [Export HTML emails from Figma to SendPulse](/emailify/tutorials/export-html-emails-from-figma-to-sendpulse)
- [Uploading your emails to Sendwithus](/emailify/tutorials/uploading-your-emails-to-sendwithus)
- [Export HTML emails from Figma to Brevo](/emailify/tutorials/export-html-emails-from-figma-to-brevo)
- [Export HTML emails from Figma to Mailmodo](/emailify/tutorials/export-html-emails-from-figma-to-mailmodo)
- [Export HTML emails from Figma to Yotpo](/emailify/tutorials/export-html-emails-from-figma-to-yotpo)
- [Export HTML emails from Figma to Bento](/emailify/tutorials/export-html-emails-from-figma-to-bento)
- [Export HTML emails from Figma to Intercom](/emailify/tutorials/export-html-emails-from-figma-to-intercom)
- [Export HTML emails from Figma to SARE](/emailify/tutorials/export-html-emails-from-figma-to-sare)
- [Export HTML emails from Figma to Mailgun](/emailify/tutorials/export-html-emails-from-figma-to-mailgun)
- [Export HTML emails from Figma to Customer.io](/emailify/tutorials/export-html-emails-from-figma-to-customer-io)
- [Export HTML emails from Figma to HubSpot](/emailify/tutorials/export-html-emails-from-figma-to-hubspot)
- [Export HTML emails from Figma to Braze](/emailify/tutorials/export-html-emails-from-figma-to-braze)
- [Export HTML emails from Figma to ActiveCampaign](/emailify/tutorials/export-html-emails-from-figma-to-activecampaign)
- [Export HTML emails from Figma to OneSignal](/emailify/tutorials/export-html-emails-from-figma-to-onesignal)
- [Export HTML emails from Figma to Selzy](/emailify/tutorials/export-html-emails-from-figma-to-selzy)
- [Export HTML emails from Figma to Omnisend](/emailify/tutorials/export-html-emails-from-figma-to-omnisend)
- [Export HTML emails from Figma to Zoho Campaigns](/emailify/tutorials/export-html-emails-from-figma-to-zoho-campaigns)
- [Export HTML emails from Figma to Stripo](/emailify/tutorials/export-html-emails-from-figma-to-stripo)
- [Export HTML emails from Figma to MailerLite](/emailify/tutorials/export-html-emails-from-figma-to-mailerlite)
- [Export HTML emails from Figma to EmailOctopus](/emailify/tutorials/export-html-emails-from-figma-to-emailoctopus)
- [Export HTML emails from Figma to Loops.so](/emailify/tutorials/export-html-emails-from-figma-to-loops-so)
- [Export HTML emails from Figma to GetResponse](/emailify/tutorials/export-html-emails-from-figma-to-getresponse)
- [Export HTML emails from Figma to ConvertKit](/emailify/tutorials/export-html-emails-from-figma-to-convertkit)
- [Export HTML emails from Figma to Constant Contact](/emailify/tutorials/export-html-emails-from-figma-to-constant-contact)
- [Export HTML emails from Figma to Drip](/emailify/tutorials/export-html-emails-from-figma-to-drip)
- [Export HTML emails from Figma to Aweber](/emailify/tutorials/export-html-emails-from-figma-to-aweber)
- [Export HTML emails from Figma to SugarCRM (Sugar Market)](/emailify/tutorials/export-html-emails-from-figma-to-sugarcrm-sugar-market)
- [Export HTML emails from Figma to Benchmark Email](/emailify/tutorials/export-html-emails-from-figma-to-benchmark-email)
- [Export HTML emails from Figma to Insider (UseInsider)](/emailify/tutorials/export-html-emails-from-figma-to-insider-useinsider)
- [Export HTML emails from Figma to Moosend](/emailify/tutorials/export-html-emails-from-figma-to-moosend)
- [Export HTML emails from Figma to SendX](/emailify/tutorials/export-html-emails-from-figma-to-sendx)
- [Export HTML emails from Figma to Ongage](/emailify/tutorials/export-html-emails-from-figma-to-ongage)
- [Export HTML emails from Figma to Mailercloud](/emailify/tutorials/export-html-emails-from-figma-to-mailercloud)
- [Export HTML emails from Figma to Marketo](/emailify/tutorials/export-html-emails-from-figma-to-marketo)
- [Export HTML emails from Figma to Amazon Simple Email Service (SES)](/emailify/tutorials/export-html-emails-from-figma-to-amazon-simple-email-service-ses)
- [Export emails from Figma to MJML code](/emailify/tutorials/export-emails-from-figma-to-mjml-code)
- [Export HTML emails from Figma to Plain Text format](/emailify/tutorials/export-html-emails-from-figma-to-plain-text-format)

## Preview Links/PDFs

- [Upload preview links for HTML emails from Figma to Netlify](/emailify/tutorials/upload-preview-links-for-html-emails-from-figma-to-netlify)
- [Export HTML emails from Figma to PDF previews](/emailify/tutorials/export-html-emails-from-figma-to-pdf-previews)
- [Export emails from Figma to grayscale wireframe previews](/emailify/tutorials/export-emails-from-figma-to-grayscale-wireframe-previews)

## Testing Emails

- [Export HTML emails from Figma to Mailgun Inspect](/emailify/tutorials/export-html-emails-from-figma-to-mailgun-inspect)
- [Export HTML email tests from Figma to Email on Acid](/emailify/tutorials/export-html-email-tests-from-figma-to-email-on-acid)
- [Test HTML emails in different clients with exports from Figma](/emailify/tutorials/test-html-emails-in-different-clients-with-exports-from-figma)
- [Test HTML emails in dark mode with exports from Figma](/emailify/tutorials/test-html-emails-in-dark-mode-with-exports-from-figma)
- [Test HTML emails in Gmail with exports from Figma](/emailify/tutorials/test-html-emails-in-gmail-with-exports-from-figma)
- [Test HTML emails on mobile with exports from Figma](/emailify/tutorials/test-html-emails-on-mobile-with-exports-from-figma)
- [Test HTML emails in Outlook with exports from Figma](/emailify/tutorials/test-html-emails-in-outlook-with-exports-from-figma)
- [Send yourself tests of HTML emails from Figma with PutsMail](/emailify/tutorials/send-yourself-tests-of-html-emails-from-figma-with-putsmail)

## More video tutorials

- [How to export HTML emails from Figma to Sendinblue using Emailify](/emailify/tutorials/how-to-export-html-emails-from-figma-to-sendinblue-using-emailify)
- [How to export HTML emails with RTL (right-to-left) text from Figma using Emailify](/emailify/tutorials/how-to-export-html-emails-with-rtl-right-to-left-text-from-figma-using-emailify)

---

---
url: "/emailify/tutorials/add-a-countdown-timer-to-html-emails-in-figma.md"
description: "This tutorial shows how to add a dynamic countdown timer to an HTML email in Figma using the Emailify plugin. It uses a countdown image URL from a timer service, overrides the image source in Emailify, previews the result, and exports the email to HTML."
---

# Add a countdown timer to HTML emails in Figma

> This tutorial shows how to add a dynamic countdown timer to an HTML email in Figma using the Emailify plugin. It uses a countdown image URL from a timer service, overrides the image source in Emailify, previews the result, and exports the email to HTML.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/1IOfvsZTTXM)

## What this video covers

This tutorial shows how to add a dynamic countdown timer to an HTML email in Figma using the Emailify plugin. It uses a countdown image URL from a timer service, overrides the image source in Emailify, previews the result, and exports the email to HTML.

## Things you'll need

- Figma
- Emailify plugin

## Steps

1. [ ] Open a new Figma file and run the Emailify plugin from the Resources icon or Saved plugins.
2. [ ] Create an Emailify email frame and add a simple content layout with a Column layer.
3. [ ] Generate a countdown timer on sendtric.com, copy the timer image URL from the src attribute, and paste or place the timer image into Figma.
4. [ ] Select the image layer, open Emailify "HTML & Mobile Settings," and use "Override image source" to paste in the dynamic countdown URL.
5. [ ] Preview the email to confirm the countdown timer loads dynamically in the HTML preview.
6. [ ] Export using "Export HTML" and the "HTML Email" option, then open the exported files to verify the countdown timer appears in the HTML output.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=1IOfvsZTTXM)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-add-a-countdown-timer-to-html-emails-in-figma-using-emailify)
- [Read: Adding countdown timer GIF embeds to your email designs](/emailify/content/countdown-timers)
- [Next: Design and export HTML Email Signatures from Figma](/emailify/tutorials/design-and-export-html-email-signatures-from-figma)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/add-animated-gifs-from-figma-to-html-email-exports.md"
description: "The video shows how to install the Emailify Figma plugin and use it to add animated GIFs to HTML email designs from Figma. It demonstrates GIFs as hero backgrounds, inline images, and standalone content layers, then exports the email to HTML to confirm the GIFs render in the output."
---

# Add animated GIFs from Figma to HTML email exports

> The video shows how to install the Emailify Figma plugin and use it to add animated GIFs to HTML email designs from Figma. It demonstrates GIFs as hero backgrounds, inline images, and standalone content layers, then exports the email to HTML to confirm the GIFs render in the output.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/Jmy2Tuzzwjg)

## What this video covers

The video shows how to install the Emailify Figma plugin and use it to add animated GIFs to HTML email designs from Figma. It demonstrates GIFs as hero backgrounds, inline images, and standalone content layers, then exports the email to HTML to confirm the GIFs render in the output.

## Things you'll need

- Figma
- Emailify
- A GIF file to place into the design

## Steps

1. [ ] Install Emailify from the Figma Community under the Plugins tab.
2. [ ] Open a Figma file, run the Emailify plugin, create a new frame, and click Add New Emailify Container.
3. [ ] Add a GIF as a hero background by selecting a Hero Background-style module such as Full Width Background Image or Hero CTAs, then replace the image fill with a GIF.
4. [ ] Add GIFs as inline images by drilling into an image component or image layer and replacing the image fill with a GIF.
5. [ ] Drag a GIF directly into a content frame to add it as its own inline layer, and optionally add text or other layers inside a frame-based module.
6. [ ] Use additional fills such as opacity or gradients on top of GIFs, and adjust image sizing in the settings icon if needed.
7. [ ] Click Export to Code, download the .zip file, and open the exported HTML preview to verify the GIFs rendered correctly.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=Jmy2Tuzzwjg)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-add-animated-gi-fs-from-figma-to-html-email-exports-using-emailify)
- [Read: Adding animated GIFs to your email designs](/emailify/content/gifs)
- [Next: Embed custom web fonts in HTML email exports from Figma](/emailify/tutorials/embed-custom-web-fonts-in-html-email-exports-from-figma)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/add-custom-categories-for-figma-email-components.md"
description: "The video shows how to use the Emailify Figma plugin to organize email components into custom categories like Footers, Headers, Hero, and Content. It also demonstrates how to remove categories without deleting components and how to add descriptions and documentation links to components."
---

# Add custom categories for Figma email components

> The video shows how to use the Emailify Figma plugin to organize email components into custom categories like Footers, Headers, Hero, and Content. It also demonstrates how to remove categories without deleting components and how to add descriptions and documentation links to components.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/M6p5AY2-g54)

## What this video covers

The video shows how to use the Emailify Figma plugin to organize email components into custom categories like Footers, Headers, Hero, and Content. It also demonstrates how to remove categories without deleting components and how to add descriptions and documentation links to components.

## Things you'll need

- Emailify must be installed as a Figma plugin.
- The Figma file should already contain Emailify components to organize.

## Steps

1. [ ] Open Emailify from Figma’s Resources icon or from Saved Plugins and run the plugin.
2. [ ] Click the Library icon in Emailify and load all Emailify components from the current Figma file.
3. [ ] Click the edit/pencil icon to create new custom categories such as Footers, Headers, and Hero.
4. [ ] Select components in Uncategorized and use Move components to place them into the appropriate category.
5. [ ] Repeat the process until all components are organized and the Uncategorized tab is removed.
6. [ ] Use Remove category to delete a category without deleting the components, which sends those components back to Uncategorized.
7. [ ] Select a component layer in Figma, open the component configuration icon, add a description and documentation link, then click Refresh in Emailify to show the updated label and tooltip.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=M6p5AY2-g54)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-add-custom-categories-for-figma-email-components-using-emailify)
- [Read: Creating a reusable component library](/emailify/design/library)
- [Next: Use free Figma email templates to design HTML emails](/emailify/tutorials/use-free-figma-email-templates-to-design-html-emails)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/add-dark-mode-styles-to-html-email-designs.md"
description: "This video shows how to add dark mode style overrides to HTML email designs in Figma using the Emailify Figma plugin. It covers applying overrides to sections, columns, text, buttons, and images, then testing the result in Emailify’s Preview with dark mode enabled."
---

# Add dark mode styles to HTML email designs

> This video shows how to add dark mode style overrides to HTML email designs in Figma using the Emailify Figma plugin. It covers applying overrides to sections, columns, text, buttons, and images, then testing the result in Emailify’s Preview with dark mode enabled.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/uAxQ5Psi1m4)

## What this video covers

This video shows how to add dark mode style overrides to HTML email designs in Figma using the Emailify Figma plugin. It covers applying overrides to sections, columns, text, buttons, and images, then testing the result in Emailify’s Preview with dark mode enabled.

## Things you'll need

- Emailify must be installed from the Figma Community.
- An HTML email design must already exist in the Figma file.

## Steps

1. [ ] Install Emailify from the Figma Community if it is not already installed.
2. [ ] Open your Figma file, right-click, go to Plugins, and launch Emailify.
3. [ ] Select a layer such as a section, column, text layer, button layer, or image layer, then use the Settings panel to find Dark Mode Overrides.
4. [ ] Set dark mode-specific text and background colors for the selected layer. Button, Row, Column, and Wrapper layers also include a Border Color override that keeps the light mode border width and style.
5. [ ] Open Preview in the header, then turn on Show Dark Mode Overrides to see the dark mode version.
6. [ ] For text, apply more granular overrides on individual text layers to fine-tune contrast.
7. [ ] For images, use Only Hide on Dark Mode or Only Show in Dark Mode to swap image versions between regular and dark mode.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=uAxQ5Psi1m4)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-add-dark-mode-styles-to-html-email-designs-using-emailify)
- [Read: Adding dark mode design overrides (only supported in Apple Mail on iOS/MacOS)](/emailify/design/dark-mode)
- [Next: Design and export HTML Email Signatures from Figma](/emailify/tutorials/design-and-export-html-email-signatures-from-figma)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/add-dynamic-content-to-html-emails-in-figma.md"
description: "The video shows how to use the Emailify Figma plugin to add dynamic personalized content to HTML emails, then export the design to an email platform such as Klaviyo. It demonstrates adding platform-specific personalization tags, dynamic image and link content, and conditional blocks or text using custom code."
---

# Add dynamic content to HTML emails in Figma

> The video shows how to use the Emailify Figma plugin to add dynamic personalized content to HTML emails, then export the design to an email platform such as Klaviyo. It demonstrates adding platform-specific personalization tags, dynamic image and link content, and conditional blocks or text using custom code.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/0512urzUNTk)

## What this video covers

The video shows how to use the Emailify Figma plugin to add dynamic personalized content to HTML emails, then export the design to an email platform such as Klaviyo. It demonstrates adding platform-specific personalization tags, dynamic image and link content, and conditional blocks or text using custom code.

## Things you'll need

- Figma
- Emailify Figma plugin
- An email marketing platform that supports personalization tags, such as Klaviyo or MailChimp

## Steps

1. [ ] Open Figma Resources, search for Emailify under the Plugins tab, and run the plugin.
2. [ ] Create a new email in Emailify and add basic content such as text, an image, and a footer.
3. [ ] Look up the personalization tags for your email platform in the Emailify documentation, such as Klaviyo variables or MailChimp merge tags.
4. [ ] Paste a platform-specific variable into a Figma text layer to personalize content like a first name.
5. [ ] Use Export HTML to upload the email to the selected platform, such as Klaviyo, with the API key set up.
6. [ ] In the platform, create or open a campaign, choose the uploaded template, and preview it to confirm the variable is replaced with real customer data.
7. [ ] Optionally add dynamic image sources, links, alt text, or conditional content using HTML & Mobile Settings, Quick add > Custom Code, and platform-specific template syntax.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=0512urzUNTk)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-add-dynamic-personalized-content-to-html-emails-in-figma-using-emailify)
- [Read: Adding dynamic and personalized content using Emailify](/emailify/content/dynamic)
- [Next: Create Klaviyo abandoned cart flow email template in Figma](/emailify/tutorials/create-klaviyo-abandoned-cart-flow-email-template-in-figma)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/add-hover-colors-to-text-links-in-html-emails-from-figma.md"
description: "This tutorial shows how to add hover states to text links and navigation link rows in HTML email designs made in Figma using the Emailify Figma plugin. It also covers applying a hover color, optional Fade Transition, and checking email client support before relying on the effect."
---

# Add hover colors to text links in HTML emails from Figma

> This tutorial shows how to add hover states to text links and navigation link rows in HTML email designs made in Figma using the Emailify Figma plugin. It also covers applying a hover color, optional Fade Transition, and checking email client support before relying on the effect.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/T-HSfOhTTTw)

## What this video covers

This tutorial shows how to add hover states to text links and navigation link rows in HTML email designs made in Figma using the Emailify Figma plugin. It also covers applying a hover color, optional Fade Transition, and checking email client support before relying on the effect.

## Things you'll need

- A finished Emailify email design in Figma
- Emailify installed in Figma

## Steps

1. [ ] Open the Emailify Figma plugin from Resources or from saved plugins.
2. [ ] Select an Emailify text layer, highlight the text, and use the create link icon to add a URL.
3. [ ] Open the HTML and mobile settings panel and enter a hex value in the Links Hover State field for the selected text layer.
4. [ ] Optionally enable Fade Transition, then preview the HTML to confirm the hover color appears.
5. [ ] For navigation components, select the parent navigation layer and set the same Links Hover State value so all link items inherit the hover color.
6. [ ] Preview the result and check the supported email clients list to see where hover states are supported.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=T-HSfOhTTTw)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-add-hover-colors-to-text-links-in-html-emails-from-figma-using-emailify)
- [Read: Adding inline links to paragraph text content in your emails](/emailify/content/link-paragraphs)
- [Next: Add animated GIFs from Figma to HTML email exports](/emailify/tutorials/add-animated-gifs-from-figma-to-html-email-exports)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/add-hover-effects-to-buttons-in-html-emails-from-figma.md"
description: "This tutorial shows how to add hover effects to Emailify button components in Figma for HTML emails. It covers setting hover background and text colors, adding transitions like fade or grow, and exporting the result to HTML for previewing in supported email clients."
---

# Add hover effects to buttons in HTML emails from Figma

> This tutorial shows how to add hover effects to Emailify button components in Figma for HTML emails. It covers setting hover background and text colors, adding transitions like fade or grow, and exporting the result to HTML for previewing in supported email clients.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/8pydrphK6bU)

## What this video covers

This tutorial shows how to add hover effects to Emailify button components in Figma for HTML emails. It covers setting hover background and text colors, adding transitions like fade or grow, and exporting the result to HTML for previewing in supported email clients.

## Things you'll need

- Figma
- Emailify Figma plugin
- An Emailify button component already added to the email

## Steps

1. [ ] Open the Emailify Figma plugin from Resources, then run it from Saved Plugins.
2. [ ] Create or open an email layout and make sure the button is an Emailify button component.
3. [ ] Select the button layer and open HTML and mobile settings to reveal the button hover state options.
4. [ ] Set the hover background color and hover text color using hex values.
5. [ ] Optionally choose a transition such as fade, grow, or bounce to animate the hover effect.
6. [ ] If desired, add a stroke to the button in Figma to create an outlined or ghost-button hover look.
7. [ ] Export the email to HTML, download the zip file, and check the generated hover effects in the preview or browser.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=8pydrphK6bU)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-add-hover-effects-to-buttons-in-html-emails-from-figma-using-emailify)
- [Read: Adding hover states](/emailify/design/hover)
- [Next: Add hover colors to text links in HTML emails from Figma](/emailify/tutorials/add-hover-colors-to-text-links-in-html-emails-from-figma)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/add-outlook-compatible-gradient-buttons-to-html-emails-with-figma.md"
description: "This tutorial shows how to turn a solid Emailify button in Figma into an Outlook-compatible gradient button for HTML emails. It also demonstrates exporting the design to HTML and testing the result in Litmus to confirm the gradient and corner radius render in Outlook and other email clients."
---

# Add Outlook-compatible gradient buttons to HTML emails with Figma

> This tutorial shows how to turn a solid Emailify button in Figma into an Outlook-compatible gradient button for HTML emails. It also demonstrates exporting the design to HTML and testing the result in Litmus to confirm the gradient and corner radius render in Outlook and other email clients.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/P-faEnzef20)

## What this video covers

This tutorial shows how to turn a solid Emailify button in Figma into an Outlook-compatible gradient button for HTML emails. It also demonstrates exporting the design to HTML and testing the result in Litmus to confirm the gradient and corner radius render in Outlook and other email clients.

## Things you'll need

- A Figma file with an Emailify email design already set up
- An Emailify button layer that currently uses a solid fill
- Litmus for email client testing

## Steps

1. [ ] Open Figma, find Emailify in Resources under the Plugins tab, and run it from Saved plugins.
2. [ ] Select the Emailify button layer in your email design and open the fills panel.
3. [ ] Change the button fill from solid to gradient, then adjust the gradient colors and angle as needed.
4. [ ] Adjust the Border radius to the desired value, then use Emailify preview to check the HTML button appearance.
5. [ ] Export the design with Export HTML, enable automatic image upload if needed, and download the ZIP file.
6. [ ] Open the exported index.html in a browser or test it in Litmus to verify the button renders correctly in Outlook and other email clients.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=P-faEnzef20)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-add-outlook-compatible-gradient-buttons-to-html-emails-with-figma-using-emailify)
- [Read: Adding a gradient background to your buttons](/emailify/design/button-gradient-background)
- [Next: Add hover effects to buttons in HTML emails from Figma](/emailify/tutorials/add-hover-effects-to-buttons-in-html-emails-from-figma)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/add-utm-tracking-code-to-html-email-links-from-figma.md"
description: "The video shows how to add UTM tracking code to links in HTML emails built in Figma with the Emailify Figma plugin. It covers adding UTM parameters directly to individual links, setting a global URL query string for all links, overriding UTM values per button or text link, and exporting the email to HTML."
---

# Add UTM tracking code to HTML email links from Figma

> The video shows how to add UTM tracking code to links in HTML emails built in Figma with the Emailify Figma plugin. It covers adding UTM parameters directly to individual links, setting a global URL query string for all links, overriding UTM values per button or text link, and exporting the email to HTML.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/LrNKatzJo6g)

## What this video covers

The video shows how to add UTM tracking code to links in HTML emails built in Figma with the Emailify Figma plugin. It covers adding UTM parameters directly to individual links, setting a global URL query string for all links, overriding UTM values per button or text link, and exporting the email to HTML.

## Things you'll need

- Emailify must be available as a Figma plugin
- An email design should already be built in Figma
- A UTM query string or tracked URL should be ready to paste

## Steps

1. [ ] Open Figma, find Emailify from the Resources icon under the Plugins tab, and run or save the Emailify Figma plugin.
2. [ ] Select a button or link layer, open HTML and mobile settings, and paste the UTM query string into the clickable link URL field for a single link.
3. [ ] To apply tracking across the whole email, select the Emailify frame and use the Append global URL query string setting to add a shared UTM string.
4. [ ] If needed, override the global parameters on specific buttons by adding a custom query string directly to that button's clickable link URL.
5. [ ] Add a link to text by selecting text, clicking the link icon, choosing create link, and pasting in the tracked URL.
6. [ ] Use export HTML to export the email as an HTML zip file and verify the links and UTM tags in the output.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=LrNKatzJo6g)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-add-utm-tracking-code-to-html-email-links-from-figma-using-emailify)
- [Read: Adding query string or UTM parameters to links](/emailify/content/utm)
- [Next: Add Outlook-compatible gradient buttons to HTML emails with Figma](/emailify/tutorials/add-outlook-compatible-gradient-buttons-to-html-emails-with-figma)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/adding-a-dynamic-product-feed-to-your-klaviyo-emails.md"
description: "This tutorial shows how to build a custom HTML email in Figma with Emailify, add a Klaviyo dynamic product grid, and upload the template to Klaviyo. It also explains the extra Klaviyo setup needed to make the feed data render in the template preview and in campaigns."
---

# Adding a dynamic product feed to your Klaviyo emails

> This tutorial shows how to build a custom HTML email in Figma with Emailify, add a Klaviyo dynamic product grid, and upload the template to Klaviyo. It also explains the extra Klaviyo setup needed to make the feed data render in the template preview and in campaigns.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/PaRSIxVLYlo)

## What this video covers

This tutorial shows how to build a custom HTML email in Figma with Emailify, add a Klaviyo dynamic product grid, and upload the template to Klaviyo. It also explains the extra Klaviyo setup needed to make the feed data render in the template preview and in campaigns.

## Things you'll need

- A Figma file with the Emailify plugin installed.
- A Klaviyo account with access to Products and API keys.

## Steps

1. [ ] Open your Figma file, run the Emailify plugin, and create a new Emailify container.
2. [ ] Add a Klaviyo footer from the Footers tab, then switch to the Ecom tab and insert a Klaviyo product grid component.
3. [ ] Create a product feed in Klaviyo under Products and Manage product feeds, then copy the feed name into the Emailify component fields where it says feeds.YOUR_KLAVIYO_PRODUCT_FEED_NAME_HERE.
4. [ ] In Emailify’s HTML and mobile settings, confirm the product links, alt text, and image source are set to the dynamic item fields, then export HTML with the Klaviyo integration selected and paste in your API key.
5. [ ] Enable editable content and, if needed, force Klaviyo editor padding to zero, then upload the template to Klaviyo.
6. [ ] In Klaviyo, open the uploaded template from Saved templates, click Use template, save it, then return to the campaign editor.
7. [ ] To make the dynamic feed render, add a Klaviyo product block in an editable region, set it to the same product feed, and set its show/hide logic to false before previewing again.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=PaRSIxVLYlo)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-add-dynamic-klaviyo-product-feeds-to-custom-html-email-designs-in-figma-using-emailify)
- [Read: Uploading your emails to Klaviyo](/emailify/integrations/klaviyo)
- [Next: Translate HTML email designs with localization in Figma](/emailify/tutorials/translate-html-email-designs-with-localization-in-figma)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/create-a-component-library-for-html-email-designs-in-figma.md"
description: "The video shows how to use the Emailify Figma plugin to build a reusable component library for HTML emails inside Figma. It covers creating an Emailify frame, turning customized layouts into library components, reusing them across new email designs, and exporting the final emails to production-ready HTML."
---

# Create a component library for HTML email designs in Figma

> The video shows how to use the Emailify Figma plugin to build a reusable component library for HTML emails inside Figma. It covers creating an Emailify frame, turning customized layouts into library components, reusing them across new email designs, and exporting the final emails to production-ready HTML.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/lQb9-_9maxs)

## What this video covers

The video shows how to use the Emailify Figma plugin to build a reusable component library for HTML emails inside Figma. It covers creating an Emailify frame, turning customized layouts into library components, reusing them across new email designs, and exporting the final emails to production-ready HTML.

## Things you'll need

- A Figma file
- The Emailify Figma plugin

Emailify loads the component library from the current Figma file. If teammates need the same reusable Emailify components, make sure those components already exist in the file they open before loading the library in the plugin.

## Steps

1. [ ] Open Emailify from Figma plugins and create a new Emailify container with a name.
2. [ ] Use the starter components and replace the default content with your own images, text, button labels, and styling.
3. [ ] Break customized layouts out into separate components, then click the component library icon and load all Emailify components into the plugin.
4. [ ] Reuse those saved components in new Emailify frames, and override instance content such as images and text when needed.
5. [ ] Adjust spacing and sizing with Auto layout padding and item spacing, and keep rows and columns set to hug contents.
6. [ ] Use HTML and mobile settings to add links, alt text, visibility options, and other layer-specific settings.
7. [ ] When ready, click export HTML, choose the emails to export, and download the zip file with the HTML and preview files.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=lQb9-_9maxs)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-design-a-figma-component-library-for-html-emails-using-emailify)
- [Read: Creating a reusable component library](/emailify/design/library)
- [Next: Use 500+ free HTML email components in your Figma designs](/emailify/tutorials/use-500-free-html-email-components-in-your-figma-designs)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/create-custom-components-for-html-email-exports.md"
description: "This tutorial shows how to use the Emailify HTML Builder Figma plugin to create custom HTML email components, including reusable native Figma components, custom HTML blocks, and code wrappers. It also demonstrates previewing the generated HTML in Figma and exporting the final email as HTML."
---

# Create custom components for HTML email exports

> This tutorial shows how to use the Emailify HTML Builder Figma plugin to create custom HTML email components, including reusable native Figma components, custom HTML blocks, and code wrappers. It also demonstrates previewing the generated HTML in Figma and exporting the final email as HTML.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/vczegDic1Do)

## What this video covers

This tutorial shows how to use the Emailify HTML Builder Figma plugin to create custom HTML email components, including reusable native Figma components, custom HTML blocks, and code wrappers. It also demonstrates previewing the generated HTML in Figma and exporting the final email as HTML.

## Things you'll need

- Figma
- Emailify installed from the Figma Community

## Steps

1. [ ] Install Emailify from the Figma Community, then open a new Figma file and run Emailify HTML Builder from Plugins.
2. [ ] Name the email and click Add new Emailify Container to create a blank email frame.
3. [ ] Open the Custom tab, click Create New Component, and build a custom component by adding elements like titles, body copy, buttons, images, and column layouts.
4. [ ] Choose whether to update the saved component or create a new component from an existing one, then insert the component into the email design.
5. [ ] Use the settings button on components, rows, columns, text layers, and the email frame to edit alignment, mobile overrides, links, CSS rules, merge tags, templating tags, and custom HTML.
6. [ ] Add custom HTML blocks or code wrappers for raw code, then use Preview to check the real HTML output and mobile/desktop behavior.
7. [ ] Click Export, choose HTML if needed, enter subject line and pre-header text, and use Export to Code to download the zip file with the HTML and images.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=vczegDic1Do)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-create-custom-components-for-html-email-exports-in-figma-using-emailify)
- [Read: Creating your own custom components](/emailify/design/builder)
- [Next: Add custom categories for Figma email components](/emailify/tutorials/add-custom-categories-for-figma-email-components)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/create-klaviyo-abandoned-cart-flow-email-template-in-figma.md"
description: "This tutorial shows how to build a custom HTML abandoned cart email template in Figma with the Emailify plugin, upload it to Klaviyo, and use it in a Klaviyo flow. It also demonstrates previewing the template with real checkout data and turning the flow live."
---

# Create Klaviyo abandoned cart flow email template in Figma

> This tutorial shows how to build a custom HTML abandoned cart email template in Figma with the Emailify plugin, upload it to Klaviyo, and use it in a Klaviyo flow. It also demonstrates previewing the template with real checkout data and turning the flow live.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/MHPCkb1n8XM)

## What this video covers

This tutorial shows how to build a custom HTML abandoned cart email template in Figma with the Emailify plugin, upload it to Klaviyo, and use it in a Klaviyo flow. It also demonstrates previewing the template with real checkout data and turning the flow live.

## Things you'll need

- A Figma file with the Emailify plugin available
- A Klaviyo account with access to create a Private API Key
- A Shopify store for the Shopify abandoned cart template shown in the tutorial

## Steps

1. [ ] Open a new Figma file, run the Emailify plugin, name the email, and add a new Emailify container.
2. [ ] In the Ecom tab, choose the Klaviyo Abandoned Cart Items Shopify template and then add the Klaviyo footer from the Footer tab.
3. [ ] Preview the template in mobile and desktop, then export HTML and select the Klaviyo export option.
4. [ ] In Klaviyo, create a Private API Key with Custom Key access and give Templates read-write access, then paste the key into Emailify and upload the template.
5. [ ] In Klaviyo Flows, create a new flow with the Checkout Started trigger, add a 4-hour time delay, and add an email step.
6. [ ] Open the email step, select the saved template, preview it with a recent checkout event, and verify the dynamic product data and links.
7. [ ] Review the flow settings and turn the flow from draft to live when ready.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=MHPCkb1n8XM)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-create-a-klaviyo-abandoned-cart-flow-custom-html-email-template-in-figma-using-emailify)
- [Read: Uploading your emails to Klaviyo](/emailify/integrations/klaviyo)
- [Next: Adding a dynamic product feed to your Klaviyo emails](/emailify/tutorials/adding-a-dynamic-product-feed-to-your-klaviyo-emails)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/design-and-export-emails-from-figma-to-html.md"
description: "This tutorial shows how to install and use the Emailify Figma plugin to build HTML emails directly in Figma. It also demonstrates customizing modules, applying responsive overrides and links, and exporting the finished email as HTML or HTML and MJML."
---

# Design and export Emails from Figma to HTML

> This tutorial shows how to install and use the Emailify Figma plugin to build HTML emails directly in Figma. It also demonstrates customizing modules, applying responsive overrides and links, and exporting the finished email as HTML or HTML and MJML.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/OWv4WX3eqvU)

## What this video covers

This tutorial shows how to install and use the Emailify Figma plugin to build HTML emails directly in Figma. It also demonstrates customizing modules, applying responsive overrides and links, and exporting the finished email as HTML or HTML and MJML.

## Things you'll need

- A Figma file
- The Emailify Figma plugin installed from Figma Community

## Steps

1. [ ] Install the Emailify HTML Email Builder plugin from Figma Community and run it from Plugins in a blank Figma file.
2. [ ] Create a new Emailify container, name it, and add modules from categories like Header, Images, Content, CTAs, Footer, and Favorites.
3. [ ] Customize the email by editing text, buttons, images, spacing, padding, alignment, and component order directly in Figma.
4. [ ] Use the Settings icon to set mobile overrides, hide elements on mobile, reverse column display order on desktop, or render a block as an image.
5. [ ] Add clickable URLs to link layers, button elements, and image layers, and set alt text and image width or height overrides where needed.
6. [ ] Click Export, choose HTML or HTML and MJML, select one or more email containers, enter subject line and preheader text, then export to code.
7. [ ] Download the zip file, open the generated index.html preview and index.mjml source file, and review the exported assets and responsive output.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=OWv4WX3eqvU)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-design-and-export-emails-from-figma-to-html-using-emailify)
- [Read: Understanding how the Emailify plugin works](/emailify/design/fundamentals)
- [Next: Create a component library for HTML email designs in Figma](/emailify/tutorials/create-a-component-library-for-html-email-designs-in-figma)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/design-and-export-html-email-signatures-from-figma.md"
description: "The video shows how to use the Emailify Figma plugin to design an HTML email signature in Figma, customize its text, logo, styling, and social links, and then export it as an HTML signature package. It also explains how to copy the generated HTML and follow the Emailify documentation to paste it into a supported email client."
---

# Design and export HTML Email Signatures from Figma

> The video shows how to use the Emailify Figma plugin to design an HTML email signature in Figma, customize its text, logo, styling, and social links, and then export it as an HTML signature package. It also explains how to copy the generated HTML and follow the Emailify documentation to paste it into a supported email client.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/dmjDTWiphWk)

## What this video covers

The video shows how to use the Emailify Figma plugin to design an HTML email signature in Figma, customize its text, logo, styling, and social links, and then export it as an HTML signature package. It also explains how to copy the generated HTML and follow the Emailify documentation to paste it into a supported email client.

## Things you'll need

- A Figma file
- The Emailify Figma plugin
- An email client supported in the Emailify documentation

## Steps

1. [ ] Open Figma, find Emailify from Resources or Saved plugins, and run the Emailify plugin.
2. [ ] Create a new Emailify frame, name it, and click add new Emailify container.
3. [ ] Go to the footage tab, open signatures, and insert a preset email signature starter.
4. [ ] Customize the signature by replacing the logo, editing text, changing typography or color, and adjusting spacing.
5. [ ] Add elements such as social icons from the column layer settings, then apply clickable URLs to images or icons through the icon layer settings.
6. [ ] Preview the signature in the plugin, then export it by choosing HTML email signature and clicking export to HTML signature.
7. [ ] Download and unzip the generated package, use the copy HTML signature button in the preview page, and follow the Emailify documentation for your email client to paste the HTML signature.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=dmjDTWiphWk)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-design-and-export-email-signatures-from-figma-using-emailify)
- [Read: Export and install custom HTML email signatures for Gmail (Web Mail)](/emailify/signatures/gmail-webmail)
- [Next: Add a countdown timer to HTML emails in Figma](/emailify/tutorials/add-a-countdown-timer-to-html-emails-in-figma)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/easily-add-elements-to-html-email-designs-in-figma.md"
description: "This video shows how to install and use the Emailify Figma plugin to build and customize HTML email designs in Figma. It focuses on adding elements contextually to selected layers, previewing the email, and exporting the finished design to HTML."
---

# Add elements to HTML email designs in Figma

> This video shows how to install and use the Emailify Figma plugin to build and customize HTML email designs in Figma. It focuses on adding elements contextually to selected layers, previewing the email, and exporting the finished design to HTML.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/un_EgOdAdUQ)

## What this video covers

This video shows how to install and use the Emailify Figma plugin to build and customize HTML email designs in Figma. It focuses on adding elements contextually to selected layers, previewing the email, and exporting the finished design to HTML.

## Things you'll need

- Figma
- Emailify Figma plugin

## Steps

1. [ ] Install Emailify from the Figma Community by searching for "Emailify" under the Plugins tab and clicking Install.
2. [ ] Open your Figma file, right-click, go to Plugins, and launch Emailify.
3. [ ] Create a new email frame with the plus icon, then add preset elements or modules to the email.
4. [ ] Select an existing layer such as a row, social layer, or email frame, then use "Quick add element to selected layer" to add content columns, social networks, hero backgrounds, content rows, row wrappers, or navigation links.
5. [ ] Customize added elements in Figma, including text, buttons, images, spacing, alignment, colors, borders, overlays, and mobile-specific settings through "HTML and Mobile Settings".
6. [ ] Use the "Preview" button to view the rendered HTML in desktop and mobile layouts, and override mobile text settings if needed.
7. [ ] Click "Export HTML", then download the .zip file containing the HTML, images, and preview page.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=un_EgOdAdUQ)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-easily-add-elements-to-html-email-designs-in-figma-using-emailify)
- [Read: Understanding how the Emailify plugin works](/emailify/design/fundamentals)
- [Next: Create custom components for HTML email exports](/emailify/tutorials/create-custom-components-for-html-email-exports)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/embed-custom-web-fonts-in-html-email-exports-from-figma.md"
description: "This tutorial shows how to use the Emailify Figma plugin to add custom web fonts to HTML email designs and assign web-safe fallback fonts for unsupported email clients. It also shows how to preview those fallbacks in Emailify and export the finished email as HTML."
---

# Embed custom web fonts in HTML email exports from Figma

> This tutorial shows how to use the Emailify Figma plugin to add custom web fonts to HTML email designs and assign web-safe fallback fonts for unsupported email clients. It also shows how to preview those fallbacks in Emailify and export the finished email as HTML.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/dtTNDXeO3FA)

## What this video covers

This tutorial shows how to use the Emailify Figma plugin to add custom web fonts to HTML email designs and assign web-safe fallback fonts for unsupported email clients. It also shows how to preview those fallbacks in Emailify and export the finished email as HTML.

## Things you'll need

- The Emailify Figma plugin
- Custom fonts installed locally in Figma for design work
- A hosted WOFF or WOFF2 font file URL for any custom font you want to embed

## Steps

1. [ ] Open Figma, find Emailify in Resources, and run or save the plugin from the Plugins menu.
2. [ ] Add a new Emailify template and place a few text components to use different font examples.
3. [ ] Apply fonts in Figma, including custom fonts like Echelon and Spline Sans Mono, plus a web-safe font such as Arial.
4. [ ] Open the preview tab, then click Configure Fonts to see the list of fonts used in the email.
5. [ ] Set fallback fonts for the custom fonts, and paste the direct WOFF font file URL for each custom font; Google Fonts are embedded automatically.
6. [ ] Toggle Show Fallback Fonts to preview how the email will look in clients that do not support custom web fonts.
7. [ ] When finished, click Export HTML to download the HTML .zip file and inspect the exported index.html and preview files.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=dtTNDXeO3FA)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-embed-custom-web-fonts-in-html-email-exports-from-figma-using-emailify)
- [Read: Using web fonts and adding web safe fallback fonts in your emails](/emailify/design/fonts)
- [Next: Add dark mode styles to HTML email designs](/emailify/tutorials/add-dark-mode-styles-to-html-email-designs)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-emails-from-figma-to-grayscale-wireframe-previews.md"
description: "This tutorial shows how to use the Emailify Figma plugin to export HTML email designs as grayscale wireframe PDF previews. It explains how to enable Wireframe Mode, export the previews, and use the generated PDF and JPG files for early client review."
---

# Export emails from Figma to grayscale wireframe previews

> This tutorial shows how to use the Emailify Figma plugin to export HTML email designs as grayscale wireframe PDF previews. It explains how to enable Wireframe Mode, export the previews, and use the generated PDF and JPG files for early client review.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/JCYA2oQ4O2U)

## What this video covers

This tutorial shows how to use the Emailify Figma plugin to export HTML email designs as grayscale wireframe PDF previews. It explains how to enable Wireframe Mode, export the previews, and use the generated PDF and JPG files for early client review.

## Things you'll need

- An Emailify email design already prepared in Figma

## Steps

1. [ ] Open the Figma Resources icon, search for Emailify under the Plugins tab, and run or save the plugin.
2. [ ] In your Figma canvas, open Emailify from Plugins > Saved plugins.
3. [ ] Click Export HTML in Emailify and change the export setting from HTML Email to PDF Previews.
4. [ ] Turn on Enable Wireframe Mode to export a grayscale wireframe version.
5. [ ] Click Export to PDF, then download the zip file when the export finishes.
6. [ ] Open the zip file to access the main PDF, individual email PDFs, and JPG folders.
7. [ ] Use the exported grayscale PDFs or JPGs for client previews or other mockups.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=JCYA2oQ4O2U)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-emails-from-figma-to-grayscale-wireframe-previews-using-emailify)
- [Read: Previewing your HTML email in Figma](/emailify/design/preview)
- [Next: Export HTML emails from Figma to PDF previews](/emailify/tutorials/export-html-emails-from-figma-to-pdf-previews)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-emails-from-figma-to-mjml-code.md"
description: "The video shows how to use the Emailify Figma plugin to build an email layout in Figma and export it as MJML source code. It also demonstrates previewing the design in the plugin and checking the exported MJML file in the MJML online editor."
---

# Export emails from Figma to MJML code

> The video shows how to use the Emailify Figma plugin to build an email layout in Figma and export it as MJML source code. It also demonstrates previewing the design in the plugin and checking the exported MJML file in the MJML online editor.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/_y9-1IvtlH8)

## What this video covers

The video shows how to use the Emailify Figma plugin to build an email layout in Figma and export it as MJML source code. It also demonstrates previewing the design in the plugin and checking the exported MJML file in the MJML online editor.

## Things you'll need

- Figma
- The Emailify Figma plugin
- An existing email design built with Emailify layout tools

## Steps

1. [ ] Open a Figma file, search for Emailify in the Resources icon, and run or save the Emailify plugin.
2. [ ] Create a new email container by naming it and clicking Add New Emailify Container.
3. [ ] Build the email using Emailify components, rows, columns, and layers that map to MJML structure, then preview desktop and mobile in the plugin.
4. [ ] Click Export HTML, change the export type to MJML source code under Download To Your Computer, and choose the template to export.
5. [ ] Enable Upload image URLs, optionally turn off HTML minification for readability, and click Export to MJML.
6. [ ] Download the .zip file, then open the MJML file and inspect the generated MJML, index.html, and images folder.
7. [ ] Paste the MJML into the MJML Try it live editor to confirm it compiles to HTML correctly.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=_y9-1IvtlH8)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-emails-from-figma-to-mjml-code-using-emailify)
- [Read: Exporting your emails to MJML](/emailify/export/mjml)
- [Next: Export HTML emails from Figma to Plain Text format](/emailify/tutorials/export-html-emails-from-figma-to-plain-text-format)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-html-email-tests-from-figma-to-email-on-acid.md"
description: "This video shows how to use the Emailify Figma plugin to upload an HTML email from Figma directly to Email on Acid for testing across mobile, desktop, and web email clients. It walks through installing the plugin, entering your Email on Acid API key and password, and sending the design for testing."
---

# Export HTML email tests from Figma to Email on Acid

> This video shows how to use the Emailify Figma plugin to upload an HTML email from Figma directly to Email on Acid for testing across mobile, desktop, and web email clients. It walks through installing the plugin, entering your Email on Acid API key and password, and sending the design for testing.

> **Tip:** Workflow note (reviewed August 2026): Email on Acid account and API availability can change. Confirm that the Email on Acid upload option is available in your account before following this workflow. See [Mailgun Inspect](https://www.mailgun.com/products/inspect/) for Mailgun's current email testing product.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/ThlA2CpDI9U)

## What this video covers

This video shows how to use the Emailify Figma plugin to upload an HTML email from Figma directly to Email on Acid for testing across mobile, desktop, and web email clients. It walks through installing the plugin, entering your Email on Acid API key and password, and sending the design for testing.

## Things you'll need

- Emailify installed in Figma
- An Email on Acid account with an API key
- Your Email on Acid account password

## Steps

1. [ ] Install the Emailify Figma plugin from the Figma Community by searching for Emailify under the Plugins tab and clicking Install.
2. [ ] Open Emailify in Figma by right-clicking the canvas, choosing Plugins, and selecting Emailify.
3. [ ] Click Export and change the export option from HTML to Upload For Testing, then choose Email on Acid.
4. [ ] Enter your Email on Acid password and paste in your Email on Acid API key from your account page.
5. [ ] Click Send To Email on Acid to generate the HTML, export the images, and upload the test.
6. [ ] Open the uploaded test from the Email on Acid Projects page to review how the email renders on different devices and email clients.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=ThlA2CpDI9U)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-email-tests-from-figma-to-email-on-acid-using-emailify)
- [Read: Testing your HTML emails before sending](/emailify/export/testing)
- [Next: Test HTML emails in different clients with exports from Figma](/emailify/tutorials/test-html-emails-in-different-clients-with-exports-from-figma)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-html-emails-from-figma-to-activecampaign.md"
description: "This tutorial shows how to use the Emailify Figma plugin to export an HTML email from Figma directly into an ActiveCampaign account. It covers installing the plugin, entering the ActiveCampaign URL and API key, uploading the template, and confirming it appears in ActiveCampaign under Campaigns and Manage Templates."
---

# Export HTML emails from Figma to ActiveCampaign

> This tutorial shows how to use the Emailify Figma plugin to export an HTML email from Figma directly into an ActiveCampaign account. It covers installing the plugin, entering the ActiveCampaign URL and API key, uploading the template, and confirming it appears in ActiveCampaign under Campaigns and Manage Templates.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/TgCROp1QHsg)

## What this video covers

This tutorial shows how to use the Emailify Figma plugin to export an HTML email from Figma directly into an ActiveCampaign account. It covers installing the plugin, entering the ActiveCampaign URL and API key, uploading the template, and confirming it appears in ActiveCampaign under Campaigns and Manage Templates.

## Things you'll need

- A Figma file with an email design created using Emailify
- An ActiveCampaign account

## Steps

1. [ ] Install Emailify from the Figma Community, then run it from Plugins in your Figma file.
2. [ ] Open the email design in Emailify and click Export.
3. [ ] Change the export option to Upload To Platform and select ActiveCampaign.
4. [ ] In ActiveCampaign, go to Settings, open Developer, and copy the URL and API key from API Access.
5. [ ] Paste the ActiveCampaign URL and API key into the Emailify plugin fields.
6. [ ] Click Upload to ActiveCampaign to export the HTML and images into ActiveCampaign.
7. [ ] In ActiveCampaign, go to Campaigns, then Manage Templates, and open the uploaded template to review it.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=TgCROp1QHsg)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-from-figma-to-active-campaign-using-emailify)
- [Read: Uploading your emails to ActiveCampaign](/emailify/integrations/activecampaign)
- [Next: Export HTML emails from Figma to OneSignal](/emailify/tutorials/export-html-emails-from-figma-to-onesignal)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-html-emails-from-figma-to-amazon-simple-email-service-ses.md"
description: "This tutorial shows how to use the Emailify Figma plugin to export an HTML email design from Figma directly into Amazon SES (Simple Email Service). It covers previewing the email, entering AWS credentials and region, then uploading the template so it appears in your SES templates list."
---

# Export HTML emails from Figma to Amazon Simple Email Service (SES)

> This tutorial shows how to use the Emailify Figma plugin to export an HTML email design from Figma directly into Amazon SES (Simple Email Service). It covers previewing the email, entering AWS credentials and region, then uploading the template so it appears in your SES templates list.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/6kC4wbapV88)

## What this video covers

This tutorial shows how to use the Emailify Figma plugin to export an HTML email design from Figma directly into Amazon SES (Simple Email Service). It covers previewing the email, entering AWS credentials and region, then uploading the template so it appears in your SES templates list.

## Things you'll need

- A Figma file with an Emailify frame or Emailify template.
- An AWS account with SES access and IAM access key and secret key.
- The correct AWS region for your SES instance.

## Steps

1. [ ] Open your Figma file, find Emailify in Resources, save or run the plugin, and launch it from Plugins.
2. [ ] Preview the email in Emailify to check the HTML layout and mobile behavior before exporting.
3. [ ] Click export HTML, then choose SES (Simple Email Service) under platform integrations.
4. [ ] Enter your AWS region, access key, and secret key from your AWS account and IAM settings.
5. [ ] Set the template name from the Emailify frame name, add a subject line, and optionally add preheader text.
6. [ ] Click upload to SES (Simple Email Service) to generate the HTML, upload images, and create the template in Amazon SES.
7. [ ] Open the SES templates page in AWS to confirm the new template appears in your list.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=6kC4wbapV88)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-from-figma-to-amazon-simple-email-service-ses-using-emailify)
- [Read: Uploading your emails to Amazon SES](/emailify/integrations/amazon-ses)
- [Next: Export emails from Figma to MJML code](/emailify/tutorials/export-emails-from-figma-to-mjml-code)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-html-emails-from-figma-to-aweber.md"
description: "The video shows how to use the Emailify Figma plugin to design an HTML email in Figma and export it for use in Aweber. It covers adding an Aweber footer, exporting the design as HTML, and importing the generated index.html file into Aweber as either a message or a reusable template."
---

# Export HTML emails from Figma to Aweber

> The video shows how to use the Emailify Figma plugin to design an HTML email in Figma and export it for use in Aweber. It covers adding an Aweber footer, exporting the design as HTML, and importing the generated index.html file into Aweber as either a message or a reusable template.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/WpBJ0B8XrUc)

## What this video covers

The video shows how to use the Emailify Figma plugin to design an HTML email in Figma and export it for use in Aweber. It covers adding an Aweber footer, exporting the design as HTML, and importing the generated index.html file into Aweber as either a message or a reusable template.

## Things you'll need

- A Figma file with an Emailify email design
- An Aweber account

## Steps

1. [ ] Open Emailify from Figma using Resources or Saved plugins, then create a new Emailify container and build the email design.
2. [ ] In the Footer tab, add the Aweber footer so the unsubscribe link and viewing browser link are included.
3. [ ] Preview the email in Emailify, then click export HTML, choose Aweber, add the subject line and preheader text, and download the zip file.
4. [ ] Unzip the export and locate the index.html file for the frame.
5. [ ] In Aweber, go to Messages, click Create a message, choose raw HTML editor, click Source, delete the default content, and drag in index.html.
6. [ ] Save, preview and test, add the subject line in Aweber, then save and exit before scheduling the message.
7. [ ] To save the design as a reusable template, go to Email template manager, choose Design my own template, select Import a template, paste or drag in index.html, then click Template Builder and Save and exit.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=WpBJ0B8XrUc)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-from-figma-to-aweber-using-emailify)
- [Read: Uploading your emails to AWeber](/emailify/integrations/aweber)
- [Next: Export HTML emails from Figma to SugarCRM (Sugar Market)](/emailify/tutorials/export-html-emails-from-figma-to-sugarcrm-sugar-market)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-html-emails-from-figma-to-benchmark-email.md"
description: "The video shows how to use the Emailify Figma plugin to export an HTML email from Figma and import it into Benchmark Email as a custom HTML email. It also covers adding the Benchmark email footer preset, previewing the design, and adjusting Benchmark footer settings before scheduling the email."
---

# Export HTML emails from Figma to Benchmark Email

> The video shows how to use the Emailify Figma plugin to export an HTML email from Figma and import it into Benchmark Email as a custom HTML email. It also covers adding the Benchmark email footer preset, previewing the design, and adjusting Benchmark footer settings before scheduling the email.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/KYIdqjManjg)

## What this video covers

The video shows how to use the Emailify Figma plugin to export an HTML email from Figma and import it into Benchmark Email as a custom HTML email. It also covers adding the Benchmark email footer preset, previewing the design, and adjusting Benchmark footer settings before scheduling the email.

## Things you'll need

- A Figma file with the Emailify plugin available
- A paid Benchmark Email account with access to the code editor

## Steps

1. [ ] Open Figma, find Emailify from Resources under the Plugins tab, and run or save the plugin.
2. [ ] Create a new Emailify container for your email template and add the Benchmark email footer preset from the Footer tab.
3. [ ] Preview the email in Emailify, then click export HTML, choose Benchmark email, enter the subject line and optional preheader text, and download the zip file.
4. [ ] Unzip the export and locate the index.html file inside the exported folder.
5. [ ] In Benchmark Email, go to Emails, create a new Regular email, choose the code editor, and open the editor page.
6. [ ] Clear the default source code, then drag and drop the exported index.html file into the Benchmark source code window.
7. [ ] Use Benchmark settings to remove or adjust footer items as needed, then save and continue to add the subject line again before scheduling the email.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=KYIdqjManjg)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-from-figma-to-benchmark-email-using-emailify)
- [Read: Uploading your emails to Benchmark Email](/emailify/integrations/benchmark-email)
- [Next: Export HTML emails from Figma to Insider (UseInsider)](/emailify/tutorials/export-html-emails-from-figma-to-insider-useinsider)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-html-emails-from-figma-to-bento.md"
description: "This tutorial shows how to use the Emailify Figma plugin to design an HTML email, preview it in Figma, and export it for the Bento email marketing platform. It then walks through copying the exported HTML into Bento Code Mode and preparing the email as a custom HTML broadcast."
---

# Export HTML emails from Figma to Bento

> This tutorial shows how to use the Emailify Figma plugin to design an HTML email, preview it in Figma, and export it for the Bento email marketing platform. It then walks through copying the exported HTML into Bento Code Mode and preparing the email as a custom HTML broadcast.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/iv2PWcrxthQ)

## What this video covers

This tutorial shows how to use the Emailify Figma plugin to design an HTML email, preview it in Figma, and export it for the Bento email marketing platform. It then walks through copying the exported HTML into Bento Code Mode and preparing the email as a custom HTML broadcast.

## Things you'll need

- Figma
- Emailify
- Bento

## Steps

1. [ ] Open Figma, find Emailify from the Resources icon, and run or save the plugin from the Plugins menu.
2. [ ] Create or clone an Emailify template, then preview the email in Figma to check desktop and mobile versions.
3. [ ] Add a Bento footer from the Footers tab so the unsubscribe and view-in-browser links are pre-populated.
4. [ ] Click Export HTML, choose Bento under Platform Integrations, enter the subject line and preheader text, and click Export for Bento.
5. [ ] Download the zip file, open the exported folder, and open the index.html file in a browser.
6. [ ] In Bento, go to Emails > Broadcasts, create a broadcast, choose Code Mode, and paste the HTML source from the exported file.
7. [ ] Save changes, preview the email in Bento, and add the subject line and any preview text as needed before sending.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=iv2PWcrxthQ)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-from-figma-to-bento-using-emailify)
- [Read: Uploading your emails to Bento](/emailify/integrations/bento)
- [Next: Export HTML emails from Figma to Intercom](/emailify/tutorials/export-html-emails-from-figma-to-intercom)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-html-emails-from-figma-to-braze.md"
description: "This video shows how to export an HTML email designed in Figma to Braze using the Emailify Figma plugin. It covers saving and running the plugin, selecting the Braze integration, entering the Braze API key and endpoint, and uploading the email template into Braze."
---

# Export HTML emails from Figma to Braze

> This video shows how to export an HTML email designed in Figma to Braze using the Emailify Figma plugin. It covers saving and running the plugin, selecting the Braze integration, entering the Braze API key and endpoint, and uploading the email template into Braze.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/6GnG-rTdQl8)

## What this video covers

This video shows how to export an HTML email designed in Figma to Braze using the Emailify Figma plugin. It covers saving and running the plugin, selecting the Braze integration, entering the Braze API key and endpoint, and uploading the email template into Braze.

## Things you'll need

- A Figma file with an Emailify email template ready to export.
- A Braze account with access to API keys and email templates.

## Steps

1. [ ] Open your Figma file, find Emailify from the Resources icon, and save or run the plugin from the Plugins tab.
2. [ ] Run Emailify from Saved plugins and prepare your email template in Figma, including the Braze footer so the unsubscribe link is included.
3. [ ] Click export HTML, switch from standard HTML email export to Platform Integrations, and choose Braze.
4. [ ] In Braze, find your API endpoint region and set the matching endpoint in Emailify, then create a new API key with the templates.email.create permission.
5. [ ] Copy the Braze API key, paste it into the Emailify REST API key field, add a subject line, and click upload to Braze.
6. [ ] In Braze, open Templates > Email templates and select the HTML editor tab to refresh and view the uploaded template.
7. [ ] Open the uploaded template to confirm the subject line and email body, then use preview and test or the mobile HTML view if needed.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=6GnG-rTdQl8)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-from-figma-to-braze-using-emailify)
- [Read: Uploading your emails to Braze](/emailify/integrations/braze)
- [Next: Export HTML emails from Figma to ActiveCampaign](/emailify/tutorials/export-html-emails-from-figma-to-activecampaign)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-html-emails-from-figma-to-brevo.md"
description: "This video shows how to use the Emailify Figma plugin to export a designed HTML email from Figma directly to Brevo. It covers generating a Brevo API key, entering sender details, uploading the template, and then using that uploaded template in a Brevo marketing campaign."
---

# Export HTML emails from Figma to Brevo

> This video shows how to use the Emailify Figma plugin to export a designed HTML email from Figma directly to Brevo. It covers generating a Brevo API key, entering sender details, uploading the template, and then using that uploaded template in a Brevo marketing campaign.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/8BJN16U_IHg)

## What this video covers

This video shows how to use the Emailify Figma plugin to export a designed HTML email from Figma directly to Brevo. It covers generating a Brevo API key, entering sender details, uploading the template, and then using that uploaded template in a Brevo marketing campaign.

## Things you'll need

- A Figma file with an email already designed in Emailify
- A Brevo account with access to API Keys and approved sender email addresses

## Steps

1. [ ] Open your Figma file, find Emailify from Resources, and save or run the plugin from your saved plugins list.
2. [ ] Finish your email design in Emailify, then click export HTML and choose the Brevo integration from Integrations.
3. [ ] In Brevo, generate a new API key from the API Keys page and copy it into the Emailify API key field.
4. [ ] Open the senders page in Brevo, choose an approved sender email, and enter it into Emailify.
5. [ ] Select the email, add a subject line and optional preheader text, then click upload to Brevo.
6. [ ] After the upload completes, open the Brevo templates page to confirm the template appears and preview it.
7. [ ] In a Brevo campaign, go to the design step, reset the design if needed, choose start designing, and select the uploaded template from My templates.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=8BJN16U_IHg)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-from-figma-to-brevo-using-emailify)
- [Read: Uploading your emails to Brevo](/emailify/integrations/brevo)
- [Next: Export HTML emails from Figma to Mailmodo](/emailify/tutorials/export-html-emails-from-figma-to-mailmodo)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-html-emails-from-figma-to-campaign-monitor.md"
description: "This video shows how to use the Emailify Figma plugin to export an HTML email from Figma directly to Campaign Monitor. It covers adding the required Campaign Monitor footer, entering your Campaign Monitor API key and client ID, uploading the template, and then using that template in a Campaign Monitor campaign."
---

# Export HTML emails from Figma to Campaign Monitor

> This video shows how to use the Emailify Figma plugin to export an HTML email from Figma directly to Campaign Monitor. It covers adding the required Campaign Monitor footer, entering your Campaign Monitor API key and client ID, uploading the template, and then using that template in a Campaign Monitor campaign.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/vyAsh8v8GLE)

## What this video covers

This video shows how to use the Emailify Figma plugin to export an HTML email from Figma directly to Campaign Monitor. It covers adding the required Campaign Monitor footer, entering your Campaign Monitor API key and client ID, uploading the template, and then using that template in a Campaign Monitor campaign.

## Things you'll need

- A Figma file with an email design created in Emailify
- A Campaign Monitor account with access to API keys

## Steps

1. [ ] Open your Figma file, find Emailify under Resources > Plugins, and run or save the plugin.
2. [ ] Build or open your email design in Emailify and make sure the Campaign Monitor footer is added under the Footer tab.
3. [ ] Preview the email in the plugin, then go to Export HTML and change the HTML Email option to Campaign Monitor under Platform Integrations.
4. [ ] In Campaign Monitor, open Account Settings > API keys, copy your client ID and API key, and paste them into Emailify.
5. [ ] Optionally add a subject line, confirm the Figma file name you want for the template, and click Upload to Campaign Monitor.
6. [ ] In Campaign Monitor, go to My templates to verify the uploaded template, then create a campaign, choose Design email > Use a template, and select the uploaded template.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=vyAsh8v8GLE)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-from-figma-to-campaign-monitor-using-emailify)
- [Read: Uploading your emails to Campaign Monitor](/emailify/integrations/campaign-monitor)
- [Next: Export HTML emails from Figma to Klaviyo](/emailify/tutorials/export-html-emails-from-figma-to-klaviyo)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-html-emails-from-figma-to-constant-contact.md"
description: "This tutorial shows how to use the Emailify Figma plugin to design an HTML email in Figma, export it as responsive HTML for Constant Contact, and paste that code into a Constant Contact email campaign. It also shows how to preview the email, include the Constant Contact unsubscribe footer, and finish the campaign setup in Constant Contact."
---

# Export HTML emails from Figma to Constant Contact

> This tutorial shows how to use the Emailify Figma plugin to design an HTML email in Figma, export it as responsive HTML for Constant Contact, and paste that code into a Constant Contact email campaign. It also shows how to preview the email, include the Constant Contact unsubscribe footer, and finish the campaign setup in Constant Contact.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/XDjtuc0XWKI)

## What this video covers

This tutorial shows how to use the Emailify Figma plugin to design an HTML email in Figma, export it as responsive HTML for Constant Contact, and paste that code into a Constant Contact email campaign. It also shows how to preview the email, include the Constant Contact unsubscribe footer, and finish the campaign setup in Constant Contact.

## Things you'll need

- A Figma file with the Emailify Figma plugin available
- A Constant Contact account with access to email campaigns

## Steps

1. [ ] Open the Figma file, find Emailify in Resources or Saved plugins, and run the Emailify Figma plugin.
2. [ ] Create a new Emailify frame and build the email design in Figma.
3. [ ] In the footer tab, add the Constant Contact footer so the unsubscribe tag is included.
4. [ ] Preview the email in the Emailify plugin, including the mobile view if needed.
5. [ ] Click export HTML, choose the Constant Contact platform option, add the subject line and preheader text, and export the zip file.
6. [ ] Open the downloaded zip file, find index.html, and copy the HTML from the browser page source.
7. [ ] In Constant Contact, create a new email with Use your own HTML, replace the placeholder content with the copied HTML, save, preview, and continue to the campaign steps.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=XDjtuc0XWKI)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-from-figma-to-constant-contact-using-emailify)
- [Read: Uploading your emails to Constant Contact](/emailify/integrations/constant-contact)
- [Next: Export HTML emails from Figma to Drip](/emailify/tutorials/export-html-emails-from-figma-to-drip)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-html-emails-from-figma-to-convertkit.md"
description: "This tutorial shows how to design an HTML email in Figma with the Emailify plugin, export it as production-ready code, and import it into ConvertKit as a custom email template. It also explains the required ConvertKit footer tags and how to use the exported .zip file and index.html content inside ConvertKit."
---

# Export HTML emails from Figma to ConvertKit

> This tutorial shows how to design an HTML email in Figma with the Emailify plugin, export it as production-ready code, and import it into ConvertKit as a custom email template. It also explains the required ConvertKit footer tags and how to use the exported .zip file and index.html content inside ConvertKit.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/I8kwRdvwf8k)

## What this video covers

This tutorial shows how to design an HTML email in Figma with the Emailify plugin, export it as production-ready code, and import it into ConvertKit as a custom email template. It also explains the required ConvertKit footer tags and how to use the exported .zip file and index.html content inside ConvertKit.

## Things you'll need

- Emailify installed in Figma.
- An Emailify email design ready to export.
- Access to ConvertKit's custom-template import flow.

## Steps

1. [ ] Open Figma, find Emailify under the Plugins tab in Resources, and run it from Saved plugins.
2. [ ] Create an Emailify container for your email and, before exporting, add the ConvertKit footer from the Footers tab.
3. [ ] Use the preview button to check the HTML email on mobile and desktop, then close the preview.
4. [ ] Click export HTML, choose ConvertKit under platform options, add a subject line and preheader text, and export the .zip file.
5. [ ] Unzip the file, open the folder for your email, and locate the index.html file.
6. [ ] In ConvertKit, create a new email template using the import code flow, name the template, and paste in the source from index.html.
7. [ ] Save the template, then use it in a new broadcast under the send menu.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=I8kwRdvwf8k)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-from-figma-to-convertkit-using-emailify)
- [Read: Uploading your emails to Kit (ConvertKit)](/emailify/integrations/convertkit)
- [Next: Export HTML emails from Figma to Constant Contact](/emailify/tutorials/export-html-emails-from-figma-to-constant-contact)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-html-emails-from-figma-to-customer-io.md"
description: "The video shows how to use the Emailify Figma plugin to export an HTML email and manually paste it into Customer.io as a new email layout. It also explains the Customer.io-specific footer and content tag requirements that need to be included in the template."
---

# Export HTML emails from Figma to Customer.io

> The video shows how to use the Emailify Figma plugin to export an HTML email and manually paste it into Customer.io as a new email layout. It also explains the Customer.io-specific footer and content tag requirements that need to be included in the template.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/KQyaQy6gYps)

## What this video covers

The video shows how to use the Emailify Figma plugin to export an HTML email and manually paste it into Customer.io as a new email layout. It also explains the Customer.io-specific footer and content tag requirements that need to be included in the template.

## Things you'll need

- A Figma file with the Emailify plugin available
- A Customer.io account

## Steps

1. [ ] Find and run the Emailify Figma plugin from Resources, or save it for later from Saved Plugins.
2. [ ] Design or open an Emailify email frame in Figma and add the Customer.io footer from the Footer tab.
3. [ ] Make sure the template includes a {{content}} tag in the email, or let Emailify add one automatically if it is missing.
4. [ ] Click Export HTML, choose Customer.io under platform integration, then click Export for Customer.io and download the zip file.
5. [ ] Unzip the file and copy the HTML from the index.html file.
6. [ ] In Customer.io, go to Content, then Email Layouts, create a layout from scratch, paste in the HTML, and save changes.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=KQyaQy6gYps)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-from-figma-to-customer-io-using-emailify)
- [Read: Uploading your emails to Customer.io](/emailify/integrations/customer-io)
- [Next: Export HTML emails from Figma to HubSpot](/emailify/tutorials/export-html-emails-from-figma-to-hubspot)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-html-emails-from-figma-to-drip.md"
description: "This tutorial shows how to export an HTML email made in Figma with the Emailify Figma plugin and upload it into Drip as a custom HTML campaign. It also covers adding the required Drip footer preset, exporting the HTML ZIP, and pasting the generated code into Drip's custom HTML editor."
---

# Export HTML emails from Figma to Drip

> This tutorial shows how to export an HTML email made in Figma with the Emailify Figma plugin and upload it into Drip as a custom HTML campaign. It also covers adding the required Drip footer preset, exporting the HTML ZIP, and pasting the generated code into Drip's custom HTML editor.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/T-VmrIW9e7c)

## What this video covers

This tutorial shows how to export an HTML email made in Figma with the Emailify Figma plugin and upload it into Drip as a custom HTML campaign. It also covers adding the required Drip footer preset, exporting the HTML ZIP, and pasting the generated code into Drip's custom HTML editor.

## Things you'll need

- A Figma file with an email designed using the Emailify Figma plugin
- A Drip account

## Steps

1. [ ] Open Emailify from Figma by searching it in Resources, then run or save the plugin and add a template frame.
2. [ ] Before exporting, go to the footer tab and select the Drip footer preset so the required unsubscribe link, viewing browser URL, and HTML postal address tag are included.
3. [ ] Preview the email in Emailify, then open export HTML, choose the Drip platform, and enter the subject line and preheader text.
4. [ ] Click export for Drip, download the ZIP file, unzip it, and use the index.html file inside the exported folder.
5. [ ] In Drip, create a new text/html campaign, switch to custom HTML, and open the code editor.
6. [ ] Open the exported index.html in a browser, view page source, copy all the code, delete the existing code in Drip, and paste in the copied HTML.
7. [ ] Save the campaign, review the preview and plain text options if needed, then click done editing when finished.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=T-VmrIW9e7c)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-from-figma-to-drip-using-emailify)
- [Read: Uploading your emails to Drip](/emailify/integrations/drip)
- [Next: Export HTML emails from Figma to Aweber](/emailify/tutorials/export-html-emails-from-figma-to-aweber)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-html-emails-from-figma-to-emailoctopus.md"
description: "This tutorial shows how to use the Emailify Figma plugin to design an HTML email, export it as production-ready code, and import it into EmailOctopus as a custom template. It also covers adding the EmailOctopus footer, previewing the email, and saving the finished template in EmailOctopus."
---

# Export HTML emails from Figma to EmailOctopus

> This tutorial shows how to use the Emailify Figma plugin to design an HTML email, export it as production-ready code, and import it into EmailOctopus as a custom template. It also covers adding the EmailOctopus footer, previewing the email, and saving the finished template in EmailOctopus.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/SxoknO-JXSM)

## What this video covers

This tutorial shows how to use the Emailify Figma plugin to design an HTML email, export it as production-ready code, and import it into EmailOctopus as a custom template. It also covers adding the EmailOctopus footer, previewing the email, and saving the finished template in EmailOctopus.

## Things you'll need

- A Figma file with the Emailify Figma plugin available
- An EmailOctopus account

## Steps

1. [ ] Open Figma, find Emailify in Resources, save the plugin, and run it from Plugins > Saved plugins.
2. [ ] Create a new Emailify container, then choose the EmailOctopus footer option from the footer tab so unsubscribe, viewing browser, and address tags are added automatically.
3. [ ] Preview the design in the plugin, including mobile view if needed, and then close the preview.
4. [ ] Click Export HTML, choose the EmailOctopus platform option, enter the subject line and preheader text, and export the template.
5. [ ] Download the zip file, open it, and use the index.html file for the email template.
6. [ ] In EmailOctopus, go to Templates, create a new template, choose code your own, remove the default code, and drag and drop the exported index.html into the editor.
7. [ ] Preview or send a test, then click Save to store the custom HTML template in EmailOctopus.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=SxoknO-JXSM)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-from-figma-to-emailoctopus-using-emailify)
- [Read: Uploading your emails to EmailOctopus](/emailify/integrations/emailoctopus)
- [Next: Export HTML emails from Figma to Loops.so](/emailify/tutorials/export-html-emails-from-figma-to-loops-so)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-html-emails-from-figma-to-getresponse.md"
description: "This tutorial shows how to use the Emailify Figma plugin to export an HTML email design and upload it into GetResponse as a custom template. It covers adding a GetResponse footer in Emailify, exporting the design as a zip file, and importing that zip into GetResponse's HTML editor."
---

# Export HTML emails from Figma to GetResponse

> This tutorial shows how to use the Emailify Figma plugin to export an HTML email design and upload it into GetResponse as a custom template. It covers adding a GetResponse footer in Emailify, exporting the design as a zip file, and importing that zip into GetResponse's HTML editor.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/_WtsjQmQV-I)

## What this video covers

This tutorial shows how to use the Emailify Figma plugin to export an HTML email design and upload it into GetResponse as a custom template. It covers adding a GetResponse footer in Emailify, exporting the design as a zip file, and importing that zip into GetResponse's HTML editor.

## Things you'll need

- A Figma file with the Emailify plugin available.
- A logged-in GetResponse account.

## Steps

1. [ ] Open the Emailify Figma plugin from Resources or from Saved plugins in Figma.
2. [ ] Create a new email and add a GetResponse footer preset so the unsubscribe and viewing browser links are included automatically.
3. [ ] Preview the email in Emailify on mobile or desktop, then open Export HTML and select the GetResponse platform.
4. [ ] Enter the subject line and preheader text, then export for GetResponse and download the zip file.
5. [ ] In GetResponse, go to Create template, enter a title, and choose the HTML editor tab.
6. [ ] Select Upload from zip, then drag and drop the exported zip from the Emailify folder into the upload window.
7. [ ] Upload the file, then save and exit once the custom HTML template appears in My templates.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=_WtsjQmQV-I)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-from-figma-to-getresponse-using-emailify)
- [Read: Uploading your emails to GetResponse](/emailify/integrations/getresponse)
- [Next: Export HTML emails from Figma to ConvertKit](/emailify/tutorials/export-html-emails-from-figma-to-convertkit)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-html-emails-from-figma-to-hubspot.md"
description: "This video shows how to use the Emailify Figma plugin to export an HTML email from Figma directly into HubSpot. It also explains how to add the HubSpot footer template, find the HubSpot API key, and verify the uploaded template inside HubSpot."
---

# Export HTML emails from Figma to HubSpot

> This video shows how to use the Emailify Figma plugin to export an HTML email from Figma directly into HubSpot. It also explains how to add the HubSpot footer template, find the HubSpot API key, and verify the uploaded template inside HubSpot.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/AOSWquXuhRA)

## What this video covers

This video shows how to use the Emailify Figma plugin to export an HTML email from Figma directly into HubSpot. It also explains how to add the HubSpot footer template, find the HubSpot API key, and verify the uploaded template inside HubSpot.

## Things you'll need

- A Figma file with an email already designed in Emailify
- A HubSpot account with an API key
- The HubSpot platform-specific footer template added to the email

## Steps

1. [ ] Install Emailify from the Figma Community and run it from Plugins in your Figma file.
2. [ ] Open the Emailify export panel, change the export destination from downloading locally to HubSpot Marketing Hub, and paste in your HubSpot API key.
3. [ ] In your email design, add the HubSpot platform-specific footer template from the Footer category so the required unsubscribe, web, and company details are included.
4. [ ] Click Upload to HubSpot to generate the HTML, upload the images, and send the template to HubSpot.
5. [ ] In HubSpot, go to Marketing > Email > Create email > Regular, then open the Custom tab to find the uploaded template and preview it.
6. [ ] To inspect the uploaded file, go to Marketing > Files and templates > Design Tools and look for the automatically created emailify folder and HTML file.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=AOSWquXuhRA)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-from-figma-to-hub-spot-using-emailify)
- [Read: Uploading your emails to HubSpot](/emailify/integrations/hubspot)
- [Next: Export HTML emails from Figma to Braze](/emailify/tutorials/export-html-emails-from-figma-to-braze)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-html-emails-from-figma-to-insider-useinsider.md"
description: "This tutorial shows how to use the Emailify Figma plugin to export an HTML email from Figma directly into the Insider email marketing platform. It covers adding an Insider footer, previewing the email, generating an Insider API key, and uploading the template with subject line and preview text."
---

# Export HTML emails from Figma to Insider (UseInsider)

> This tutorial shows how to use the Emailify Figma plugin to export an HTML email from Figma directly into the Insider email marketing platform. It covers adding an Insider footer, previewing the email, generating an Insider API key, and uploading the template with subject line and preview text.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/uZAXjEmKhJ0)

## What this video covers

This tutorial shows how to use the Emailify Figma plugin to export an HTML email from Figma directly into the Insider email marketing platform. It covers adding an Insider footer, previewing the email, generating an Insider API key, and uploading the template with subject line and preview text.

## Things you'll need

- A Figma file with an email designed in Emailify
- An Insider account with access to generate an Email Content API key

## Steps

1. [ ] Open your Figma file, search for Emailify in Resources, and run the plugin from the saved plugins list.
2. [ ] Create an email by clicking Add Emailify Container and name the frame or template.
3. [ ] Add the Insider footer from the footer tab so the unsubscribe link is pre-populated.
4. [ ] Preview the email in the plugin to check the HTML on mobile and desktop.
5. [ ] Click Export HTML, choose Insider under Platform Integrations, and paste in your Insider API key.
6. [ ] In Insider, go to Settings, open Inone Settings, find Integration Settings, and generate an Email Content API key.
7. [ ] Enter the subject line and optional preheader text in Emailify, then click Upload to Insider to send the template, images, and HTML to Insider.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=uZAXjEmKhJ0)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-from-figma-to-insider-using-emailify)
- [Read: Uploading your emails to Insider](/emailify/integrations/insider)
- [Next: Export HTML emails from Figma to Moosend](/emailify/tutorials/export-html-emails-from-figma-to-moosend)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-html-emails-from-figma-to-intercom.md"
description: "This tutorial shows how to use the Emailify Figma plugin to export an HTML email and import it into Intercom as an outbound email template. It covers adding the required Intercom unsubscribe URL and content tag, exporting the HTML zip, and pasting the generated index.html source into Intercom’s Create from HTML workflow."
---

# Export HTML emails from Figma to Intercom

> This tutorial shows how to use the Emailify Figma plugin to export an HTML email and import it into Intercom as an outbound email template. It covers adding the required Intercom unsubscribe URL and content tag, exporting the HTML zip, and pasting the generated index.html source into Intercom’s Create from HTML workflow.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/U14GJx6k4mM)

## What this video covers

This tutorial shows how to use the Emailify Figma plugin to export an HTML email and import it into Intercom as an outbound email template. It covers adding the required Intercom unsubscribe URL and content tag, exporting the HTML zip, and pasting the generated index.html source into Intercom’s Create from HTML workflow.

## Things you'll need

- A Figma email template already designed in Emailify
- An Intercom account with access to Email settings and templates

## Steps

1. [ ] Open Emailify from Figma by searching for it in Actions or from Saved Plugins.
2. [ ] Prepare the email template in Figma and add the Intercom footer so the unsubscribe URL is included; leave or rely on the hidden content tag if needed.
3. [ ] In Emailify, choose Export HTML, switch the export option to Intercom under Platform Integrations, enter the subject line and pre-header text, then click Export for Intercom.
4. [ ] Download the zip file, open the exported folder, and use the index.html file to view or copy the generated HTML source.
5. [ ] In Intercom, go to Settings, Channels, Email, then Email Settings, and open Create or Manage Templates under Email Templates for Outbound Email.
6. [ ] Create a New Template from HTML, replace the placeholder HTML with the copied source from index.html, name the template, and save it.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=U14GJx6k4mM)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-from-figma-to-intercom-using-emailify)
- [Read: Uploading your emails to Intercom](/emailify/integrations/intercom)
- [Next: Export HTML emails from Figma to SARE](/emailify/tutorials/export-html-emails-from-figma-to-sare)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-html-emails-from-figma-to-klaviyo.md"
description: "The video shows how to use the Emailify Figma plugin to export a designed HTML email directly into Klaviyo as a template. It walks through installing Emailify, connecting a Klaviyo private API key, and uploading one or more emails into the Klaviyo templates list."
---

# Export HTML emails from Figma to Klaviyo

> The video shows how to use the Emailify Figma plugin to export a designed HTML email directly into Klaviyo as a template. It walks through installing Emailify, connecting a Klaviyo private API key, and uploading one or more emails into the Klaviyo templates list.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/7OCqmOsrAYk)

## What this video covers

The video shows how to use the Emailify Figma plugin to export a designed HTML email directly into Klaviyo as a template. It walks through installing Emailify, connecting a Klaviyo private API key, and uploading one or more emails into the Klaviyo templates list.

## Things you'll need

- A Figma file with an email already designed using Emailify
- A Klaviyo account with a private API key

## Steps

1. [ ] Install the Emailify plugin from the Figma Community and run it from Plugins in your Figma file.
2. [ ] Open an email already designed in Emailify and click the Export button in the plugin header.
3. [ ] Change the export option from HTML download to the Klaviyo upload option.
4. [ ] Open the Klaviyo private API key page, create a private API key, label it, and copy the key.
5. [ ] Paste the private API key into the Emailify plugin, then fill in the subject line and pre-header text if needed.
6. [ ] Click Upload to Klaviyo to generate the HTML, upload the assets, and create the template in Klaviyo.
7. [ ] Open the Klaviyo templates list and refresh it to confirm the new template was created and preview it.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=7OCqmOsrAYk)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-from-figma-to-klaviyo-using-emailify)
- [Read: Uploading your emails to Klaviyo](/emailify/integrations/klaviyo)
- [Next: Export HTML emails from Figma to Zapier (Google Drive)](/emailify/tutorials/export-html-emails-from-figma-to-zapier-google-drive)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-html-emails-from-figma-to-loops-so.md"
description: "This tutorial shows how to use the Emailify Figma plugin to export an HTML email from Figma to the Loops email marketing and transactional email platform. It covers setting the Loops footer, previewing the email, exporting a zip package, and uploading that zip into Loops as a custom email."
---

# Export HTML emails from Figma to Loops.so

> This tutorial shows how to use the Emailify Figma plugin to export an HTML email from Figma to the Loops email marketing and transactional email platform. It covers setting the Loops footer, previewing the email, exporting a zip package, and uploading that zip into Loops as a custom email.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/tPKd8R7gH1Q)

## What this video covers

This tutorial shows how to use the Emailify Figma plugin to export an HTML email from Figma to the Loops email marketing and transactional email platform. It covers setting the Loops footer, previewing the email, exporting a zip package, and uploading that zip into Loops as a custom email.

## Things you'll need

- Figma
- Emailify Figma plugin
- A Loops account

## Steps

1. [ ] Open Figma, find Emailify in Resources, and run the Emailify Figma plugin from your saved plugins.
2. [ ] Create a new Emailify container and, if building for Loops, choose the Loops footer in the Footer tab so the unsubscribe link is included.
3. [ ] Preview the email in the plugin and check the desktop and mobile output.
4. [ ] Click export HTML, choose the Loops platform, and enter the subject line and preheader text.
5. [ ] Export for Loops, download the zip file, and keep the generated _zips (For upload to Loops) folder.
6. [ ] In Loops, go to Templates, create a blank campaign, click upload a custom email, and drag and drop the zip file into the upload field.
7. [ ] Upload the template, then add the subject line and campaign name in Loops.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=tPKd8R7gH1Q)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-from-figma-to-loops-using-emailify)
- [Read: Uploading your emails to Loops.so](/emailify/integrations/loops)
- [Next: Export HTML emails from Figma to GetResponse](/emailify/tutorials/export-html-emails-from-figma-to-getresponse)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-html-emails-from-figma-to-mailchimp.md"
description: "This video shows how to use the Emailify Figma plugin to export an HTML email directly from Figma into MailChimp as a MailChimp template. It also explains how to create a MailChimp API key, upload the template, and view the result in MailChimp."
---

# Export HTML emails from Figma to MailChimp

> This video shows how to use the Emailify Figma plugin to export an HTML email directly from Figma into MailChimp as a MailChimp template. It also explains how to create a MailChimp API key, upload the template, and view the result in MailChimp.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/FgPl-a_z59A)

## What this video covers

This video shows how to use the Emailify Figma plugin to export an HTML email directly from Figma into MailChimp as a MailChimp template. It also explains how to create a MailChimp API key, upload the template, and view the result in MailChimp.

## Things you'll need

- A Figma file with an email already designed in Emailify.
- A MailChimp account with access to create an API key.

## Steps

1. [ ] Install Emailify from the Figma Community under the Plugins tab.
2. [ ] Open your Figma file, right-click, and launch Emailify from Plugins.
3. [ ] Click Export, change the export destination from the default HTML package to MailChimp, and open the MailChimp API Key link.
4. [ ] In MailChimp, create a new API key, label it if desired, and copy the generated key.
5. [ ] Paste the API key into the Emailify plugin, select the email you want to upload, and make sure it has a subject line and pre-header.
6. [ ] Click Upload to MailChimp to generate the HTML, upload the images, and create the template in MailChimp.
7. [ ] Open the MailChimp templates page to confirm the uploaded template, preview it, and switch between desktop and mobile views if needed.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=FgPl-a_z59A)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-from-figma-to-mail-chimp-using-emailify)
- [Read: Uploading your emails to MailChimp](/emailify/integrations/mailchimp)
- [Next: Export HTML emails from Figma to Campaign Monitor](/emailify/tutorials/export-html-emails-from-figma-to-campaign-monitor)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-html-emails-from-figma-to-mailercloud.md"
description: "This tutorial shows how to use the Emailify Figma plugin to design an HTML email, add the Mailercloud footer, export the template as HTML, and upload it into Mailercloud. It also covers matching the subject line and preheader text between Emailify and Mailercloud before saving the template."
---

# Export HTML emails from Figma to Mailercloud

> This tutorial shows how to use the Emailify Figma plugin to design an HTML email, add the Mailercloud footer, export the template as HTML, and upload it into Mailercloud. It also covers matching the subject line and preheader text between Emailify and Mailercloud before saving the template.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/vtVd9ng97w8)

## What this video covers

This tutorial shows how to use the Emailify Figma plugin to design an HTML email, add the Mailercloud footer, export the template as HTML, and upload it into Mailercloud. It also covers matching the subject line and preheader text between Emailify and Mailercloud before saving the template.

## Things you'll need

- A Figma file with the Emailify plugin available
- A Mailercloud account with a sender ID already set up

## Steps

1. [ ] Open Figma, search for Emailify in Resources, save or run the plugin, and add a new Emailify container to the canvas.
2. [ ] In the Footer tab, scroll to Mailercloud and add the Mailercloud footer component with the prepopulated unsubscribe and view in browser links.
3. [ ] Preview the email in Emailify and switch between mobile and desktop to check the layout.
4. [ ] Click Export HTML, choose the HTML email option, then select Mailercloud under platform integrations.
5. [ ] Enter the subject line and preheader text, then export for Mailercloud and download the zip file.
6. [ ] Unzip the export, open the nested index.html file, and confirm the HTML preview looks correct.
7. [ ] In Mailercloud, create a new campaign, select the HTML editor option, drag and drop the index.html file into the editor, then continue and save the template.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=vtVd9ng97w8)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-from-figma-to-mailercloud-using-emailify)
- [Read: Uploading your emails to Mailercloud](/emailify/integrations/mailercloud)
- [Next: Export HTML emails from Figma to Marketo](/emailify/tutorials/export-html-emails-from-figma-to-marketo)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-html-emails-from-figma-to-mailerlite.md"
description: "This tutorial shows how to use the Emailify Figma plugin to export a designed HTML email, then import that HTML into MailerLite as a Regular Campaign. It also covers adding the MailerLite footer, copying the exported index.html code, and optionally adding a plain text version."
---

# Export HTML emails from Figma to MailerLite

> This tutorial shows how to use the Emailify Figma plugin to export a designed HTML email, then import that HTML into MailerLite as a Regular Campaign. It also covers adding the MailerLite footer, copying the exported index.html code, and optionally adding a plain text version.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/5eKKe7M2-yo)

## What this video covers

This tutorial shows how to use the Emailify Figma plugin to export a designed HTML email, then import that HTML into MailerLite as a Regular Campaign. It also covers adding the MailerLite footer, copying the exported index.html code, and optionally adding a plain text version.

## Things you'll need

- A Figma file with Emailify components already designed
- A MailerLite account

## Steps

1. [ ] Open your Figma file, find Emailify in Resources under the Plugins tab, and run or save the plugin from Saved plugins.
2. [ ] Add your email components in Figma and check that you include a MailerLite footer from the footer tab so the unsubscribe and view-in-browser tags are pre-populated.
3. [ ] Preview the email in Emailify, then click export HTML and choose MailerLite as the export option.
4. [ ] Set the email name, optional subject line, and preheader text, then click export for MailerLite and download the zip file.
5. [ ] Open the zip, copy the contents of the exported index.html file, and log into MailerLite.
6. [ ] In MailerLite, create a new Regular Campaign, choose Custom HTML editor, import HTML, and paste the copied code into the editor.
7. [ ] Optionally add the plain text version from plain text version.txt, then save it and continue with review and scheduling.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=5eKKe7M2-yo)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-from-figma-to-mailerlite-using-emailify)
- [Read: Uploading your emails to MailerLite](/emailify/integrations/mailerlite)
- [Next: Export HTML emails from Figma to EmailOctopus](/emailify/tutorials/export-html-emails-from-figma-to-emailoctopus)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-html-emails-from-figma-to-mailgun-inspect.md"
description: "This tutorial shows how to use the Emailify Figma plugin to upload an HTML email test directly from Figma to Mailgun Inspect. It covers creating a private API key, choosing the correct account region, uploading the test, and reviewing its email client and device previews."
---

# Export HTML emails from Figma to Mailgun Inspect

> This tutorial shows how to use the Emailify Figma plugin to upload an HTML email test directly from Figma to Mailgun Inspect. It covers creating a private API key, choosing the correct account region, uploading the test, and reviewing its email client and device previews.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/U8d3z-0_ELw)

## What this video covers

This tutorial shows how to use the Emailify Figma plugin to upload an HTML email test directly from Figma to Mailgun Inspect. It covers creating a private API key, choosing the correct account region, uploading the test, and reviewing its email client and device previews.

## Things you'll need

- A completed HTML email design in a Figma file
- Emailify installed or available from Figma's Resources menu
- A Mailgun account with access to Inspect email previews and permission to create private API keys

## Steps

1. [ ] Open your Figma file, find Emailify from the actions icon, and run it from Saved Plugins.
2. [ ] Open the HTML preview and check that the email design, links, and content are ready to test.
3. [ ] Click **Export HTML**, scroll to **Upload For Testing**, and choose **Mailgun Inspect**.
4. [ ] In Mailgun, create a private API key, copy it securely, and paste it into the **Mailgun API Key** field in Emailify.
5. [ ] Choose the **US** or **EU** region that matches your Mailgun account, then add a subject line and optional preheader text.
6. [ ] Select the email and click **Send To Mailgun Inspect** so Emailify can upload its images and generated HTML.
7. [ ] Open **Inspect → Email Testing** in Mailgun and review the uploaded test across the available email clients and devices.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=U8d3z-0_ELw)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-from-figma-to-mailgun-inspect-using-emailify)
- [Read: Testing HTML emails with Mailgun Inspect](/emailify/export/mailgun-inspect)
- [Next: Export HTML email tests from Figma to Email on Acid](/emailify/tutorials/export-html-email-tests-from-figma-to-email-on-acid)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-html-emails-from-figma-to-mailgun.md"
description: "This video shows how to use the Emailify Figma plugin to export an HTML email from Figma directly into a Mailgun account. It covers saving and opening the plugin, selecting the Mailgun integration, entering the Mailgun domain and private API key, and uploading the template so it appears in Mailgun."
---

# Export HTML emails from Figma to Mailgun

> This video shows how to use the Emailify Figma plugin to export an HTML email from Figma directly into a Mailgun account. It covers saving and opening the plugin, selecting the Mailgun integration, entering the Mailgun domain and private API key, and uploading the template so it appears in Mailgun.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/hrsveAlzzZo)

## What this video covers

This video shows how to use the Emailify Figma plugin to export an HTML email from Figma directly into a Mailgun account. It covers saving and opening the plugin, selecting the Mailgun integration, entering the Mailgun domain and private API key, and uploading the template so it appears in Mailgun.

## Things you'll need

- A Figma file with an email designed in Emailify
- A Mailgun account with a domain and private API key

## Steps

1. [ ] Open Figma, use the Resources icon to search for Emailify, and save it to Figma plugins or run it from the Plugins menu.
2. [ ] In Emailify, make sure your email design is already created, then click Export HTML.
3. [ ] Change the export target from HTML Email to Mailgun under Platform Integrations.
4. [ ] Copy your Mailgun domain name and private API key from Mailgun and paste them into the Emailify fields.
5. [ ] Click Upload to Mailgun to generate the HTML, upload images, and send the template to Mailgun.
6. [ ] In Mailgun, open Sending and then Templates to find the uploaded template and view the available code snippets.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=hrsveAlzzZo)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-from-figma-to-mailgun-using-emailify)
- [Read: Uploading your emails to Mailgun](/emailify/integrations/mailgun)
- [Next: Export HTML emails from Figma to Customer.io](/emailify/tutorials/export-html-emails-from-figma-to-customer-io)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-html-emails-from-figma-to-mailjet.md"
description: "This video shows how to use the Emailify Figma plugin to export an HTML email design directly into Mailjet. It covers installing Emailify, previewing the HTML, entering Mailjet API credentials, uploading the template, and confirming it appears in Mailjet Marketing templates."
---

# Export HTML emails from Figma to Mailjet

> This video shows how to use the Emailify Figma plugin to export an HTML email design directly into Mailjet. It covers installing Emailify, previewing the HTML, entering Mailjet API credentials, uploading the template, and confirming it appears in Mailjet Marketing templates.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/LwkH-A3pAYE)

## What this video covers

This video shows how to use the Emailify Figma plugin to export an HTML email design directly into Mailjet. It covers installing Emailify, previewing the HTML, entering Mailjet API credentials, uploading the template, and confirming it appears in Mailjet Marketing templates.

## Things you'll need

- A Figma email design created in Emailify
- A Mailjet account with an API key and secret key

## Steps

1. [ ] Open Figma, use the Resources icon to search for Emailify, and install or run the plugin.
2. [ ] Open an existing email design in Emailify and click Preview to check the HTML output.
3. [ ] Click Export HTML and select the Mailjet export option instead of the default HTML Email download.
4. [ ] Open Mailjet API Key Management from the plugin link, then copy the Primary API Key and secret key.
5. [ ] Paste the API key and secret into Emailify, select the email to upload, and click Upload to Mailjet.
6. [ ] Open Mailjet and go to Marketing templates to confirm the uploaded template appears, then Preview or Edit it if needed.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=LwkH-A3pAYE)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-from-figma-to-mailjet-using-emailify)
- [Read: Uploading your emails to MailJet](/emailify/integrations/mailjet)
- [Next: Export HTML emails from Figma to SendPulse](/emailify/tutorials/export-html-emails-from-figma-to-sendpulse)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-html-emails-from-figma-to-mailmodo.md"
description: "This tutorial shows how to use the Emailify Figma plugin to design an HTML email, export it as a Mailmodo-ready ZIP, and upload the index.html file into Mailmodo as a custom template. It also shows how to reuse the uploaded template in a campaign and notes that Mailmodo currently strips custom unsubscribe links from custom HTML templates."
---

# Export HTML emails from Figma to Mailmodo

> This tutorial shows how to use the Emailify Figma plugin to design an HTML email, export it as a Mailmodo-ready ZIP, and upload the index.html file into Mailmodo as a custom template. It also shows how to reuse the uploaded template in a campaign and notes that Mailmodo currently strips custom unsubscribe links from custom HTML templates.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/WstlHCpO8L4)

## What this video covers

This tutorial shows how to use the Emailify Figma plugin to design an HTML email, export it as a Mailmodo-ready ZIP, and upload the index.html file into Mailmodo as a custom template. It also shows how to reuse the uploaded template in a campaign and notes that Mailmodo currently strips custom unsubscribe links from custom HTML templates.

## Things you'll need

- A Figma file with the Emailify plugin installed or saved
- A Mailmodo account

## Steps

1. [ ] In Figma, search for Emailify under the plugins tab, save it, and run it from Plugins > Saved Plugins.
2. [ ] Create a new email template, add a new Emailify container, and use the plugin’s design tools and preview button to check desktop and mobile HTML previews.
3. [ ] Open Export HTML, choose the Mailmodo platform integration, enter the subject line and preview text, then click Export for Mailmodo and download the ZIP file.
4. [ ] Unzip the downloaded file and locate the index.html file inside the exported folder.
5. [ ] In Mailmodo, go to Templates, choose Create New Email Template > Upload Template, and drag and drop the index.html file into the upload area.
6. [ ] Add a template name and select an email type, then save and upload the template.
7. [ ] Optionally use the uploaded template in a campaign, fill in the subject line and sender details, and send a test campaign before sending to your list.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=WstlHCpO8L4)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-from-figma-to-mailmodo-using-emailify)
- [Read: Uploading your emails to Mailmodo](/emailify/integrations/mailmodo)
- [Next: Export HTML emails from Figma to Yotpo](/emailify/tutorials/export-html-emails-from-figma-to-yotpo)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-html-emails-from-figma-to-marketo.md"
description: "The video shows how to use the Emailify Figma plugin to export a designed HTML email from Figma to Adobe Marketo. It covers two export methods: downloading a Marketo zip file for manual import, or connecting Emailify to the Marketo API to upload the template directly."
---

# Export HTML emails from Figma to Marketo

> The video shows how to use the Emailify Figma plugin to export a designed HTML email from Figma to Adobe Marketo. It covers two export methods: downloading a Marketo zip file for manual import, or connecting Emailify to the Marketo API to upload the template directly.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/GBU_cdxPBfA)

## What this video covers

The video shows how to use the Emailify Figma plugin to export a designed HTML email from Figma to Adobe Marketo. It covers two export methods: downloading a Marketo zip file for manual import, or connecting Emailify to the Marketo API to upload the template directly.

## Things you'll need

- An Emailify-designed email in Figma
- A Marketo account
- For the API method, Marketo admin access to create roles and LaunchPoint services

## Steps

1. [ ] Open Figma, find Emailify from Resources or Saved plugins, and run the plugin.
2. [ ] Create a new Emailify container and design the email, then add the Marketo footer under the Footers tab so the unsubscribe link is included.
3. [ ] Preview the email in Emailify to check the HTML layout on mobile and desktop.
4. [ ] In export HTML, choose either the Marketo zip option or the Marketo API option under platform Integrations.
5. [ ] For the zip method, enable add Marketo editable content tags, export the template, download the zip file, then in Marketo create a new email template in Design Studio and paste the exported HTML into the code editor.
6. [ ] For the API method, get the Marketo REST API endpoint from Admin > Web Services, then create a role and LaunchPoint service to obtain the client ID and client secret, enter them in Emailify, and upload to Marketo.
7. [ ] In Marketo, open the uploaded template, preview or approve the draft, and create a new email from that template.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=GBU_cdxPBfA)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-from-figma-to-marketo-using-emailify)
- [Read: Uploading your emails to Marketo](/emailify/integrations/marketo)
- [Next: Export HTML emails from Figma to Amazon Simple Email Service (SES)](/emailify/tutorials/export-html-emails-from-figma-to-amazon-simple-email-service-ses)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-html-emails-from-figma-to-moosend.md"
description: "The tutorial shows how to use the Emailify Figma plugin to create an HTML email, add the Moosend footer, export the template as HTML, and import it into a Moosend campaign. It also demonstrates previewing the email, copying the exported index.html code, and loading it into Moosend as an imported campaign template."
---

# Export HTML emails from Figma to Moosend

> The tutorial shows how to use the Emailify Figma plugin to create an HTML email, add the Moosend footer, export the template as HTML, and import it into a Moosend campaign. It also demonstrates previewing the email, copying the exported index.html code, and loading it into Moosend as an imported campaign template.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/ByG957iMh6c)

## What this video covers

The tutorial shows how to use the Emailify Figma plugin to create an HTML email, add the Moosend footer, export the template as HTML, and import it into a Moosend campaign. It also demonstrates previewing the email, copying the exported index.html code, and loading it into Moosend as an imported campaign template.

## Things you'll need

- A Figma file with the Emailify plugin available
- A Moosend account

## Steps

1. [ ] Open Emailify in Figma from Resources or Saved Plugins and create a new email frame.
2. [ ] Add the Moosend footer from the Footer tab so the unsubscribe and view in browser links use the correct Moosend tags.
3. [ ] Preview the HTML in Emailify to check the desktop and mobile layout, then open Export HTML and choose the Moosend platform integration.
4. [ ] Enter the subject line and optional preheader text, then click Export for Moosend and download the zip file.
5. [ ] Unzip the export, open the email template folder, and locate the index.html file.
6. [ ] In Moosend, create a new regular campaign, enter the campaign name and subject line, choose your list, and open the design step.
7. [ ] Turn on Imported campaign template, paste the full HTML from the exported index.html source into the HTML code field, and click Import.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=ByG957iMh6c)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-from-figma-to-moosend-using-emailify)
- [Read: Uploading your emails to Moosend](/emailify/integrations/moosend)
- [Next: Export HTML emails from Figma to SendX](/emailify/tutorials/export-html-emails-from-figma-to-sendx)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-html-emails-from-figma-to-omnisend.md"
description: "The video shows how to use the Emailify Figma plugin to export an HTML email, then import it into Omnisend as a custom template. It also covers adding the required Omnisend unsubscribe link, previewing the template, and using it in a campaign."
---

# Export HTML emails from Figma to Omnisend

> The video shows how to use the Emailify Figma plugin to export an HTML email, then import it into Omnisend as a custom template. It also covers adding the required Omnisend unsubscribe link, previewing the template, and using it in a campaign.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/Zl8DZWbyrt8)

## What this video covers

The video shows how to use the Emailify Figma plugin to export an HTML email, then import it into Omnisend as a custom template. It also covers adding the required Omnisend unsubscribe link, previewing the template, and using it in a campaign.

## Things you'll need

- A designed email built with Emailify in Figma.
- An Omnisend account with access to Store settings and Saved templates.

## Steps

1. [ ] Open your Figma file, find Emailify in Resources under Plugins, save it if needed, and run it from Saved plugins.
2. [ ] Make sure the email includes the Omnisend footer preset so the required unsubscribe tag is added, then check it in HTML and mobile settings.
3. [ ] Click export HTML, enable upload hosted image URLs, and export the email as a zip file.
4. [ ] Unzip the download and use the folder’s index.html file, not the previews page, for the import.
5. [ ] In Omnisend, go to Store settings, open Saved templates, choose Import template, name it, and upload the index.html file.
6. [ ] After importing, preview the saved template, then create a campaign, choose the saved template, and adjust the default padding if needed before sending.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=Zl8DZWbyrt8)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-from-figma-to-omnisend-using-emailify)
- [Read: Uploading your emails to Omnisend](/emailify/integrations/omnisend)
- [Next: Export HTML emails from Figma to Zoho Campaigns](/emailify/tutorials/export-html-emails-from-figma-to-zoho-campaigns)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-html-emails-from-figma-to-onesignal.md"
description: "The video shows how to use the Emailify Figma plugin to export an HTML email from Figma and upload it directly to OneSignal. It covers selecting the OneSignal integration, entering the app ID and REST API key, and confirming the uploaded template in OneSignal."
---

# Export HTML emails from Figma to OneSignal

> The video shows how to use the Emailify Figma plugin to export an HTML email from Figma and upload it directly to OneSignal. It covers selecting the OneSignal integration, entering the app ID and REST API key, and confirming the uploaded template in OneSignal.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/haQHdEan54Q)

## What this video covers

The video shows how to use the Emailify Figma plugin to export an HTML email from Figma and upload it directly to OneSignal. It covers selecting the OneSignal integration, entering the app ID and REST API key, and confirming the uploaded template in OneSignal.

## Things you'll need

- An Emailify Figma plugin saved in Figma
- A OneSignal app with access to the app ID and REST API key
- An existing HTML email design in Figma

## Steps

1. [ ] Open the Figma file, find Emailify in Resources, and run the plugin from Plugins.
2. [ ] Click Export HTML, switch to HTML Email, and choose OneSignal under Platform Integrations.
3. [ ] In OneSignal, open the app dashboard, go to Keys and IDs, and copy the app ID and REST API key.
4. [ ] Paste the app ID and API key into Emailify, then make sure the subject line is set and optionally add pre-header text.
5. [ ] Click Upload to OneSignal in Emailify to export the HTML email and upload the images and template.
6. [ ] In OneSignal, open Messages, then Templates, and select the uploaded template to view the HTML and subject line.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=haQHdEan54Q)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-from-figma-to-one-signal-using-emailify)
- [Read: Uploading your emails to OneSignal](/emailify/integrations/onesignal)
- [Next: Export HTML emails from Figma to Selzy](/emailify/tutorials/export-html-emails-from-figma-to-selzy)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-html-emails-from-figma-to-ongage.md"
description: "This tutorial shows how to use the Emailify Figma plugin to design an HTML email, export it as production-ready code for Ongage, and paste the generated HTML into a new Ongage campaign. It also covers adding the Ongage footer, previewing the email, and using the WYSIWYG editor only for small text changes."
---

# Export HTML emails from Figma to Ongage

> This tutorial shows how to use the Emailify Figma plugin to design an HTML email, export it as production-ready code for Ongage, and paste the generated HTML into a new Ongage campaign. It also covers adding the Ongage footer, previewing the email, and using the WYSIWYG editor only for small text changes.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/ApcOT2WG_cc)

## What this video covers

This tutorial shows how to use the Emailify Figma plugin to design an HTML email, export it as production-ready code for Ongage, and paste the generated HTML into a new Ongage campaign. It also covers adding the Ongage footer, previewing the email, and using the WYSIWYG editor only for small text changes.

## Things you'll need

- A Figma file with the Emailify plugin available
- An Ongage account
- A finished or mostly finished email design to export

## Steps

1. [ ] Open the Emailify Figma plugin from Resources or saved Figma plugins, then create a new Emailify container for your email design.
2. [ ] Add your email content, then insert the Ongage footer component so the unsubscribe link and address tag are populated automatically.
3. [ ] Use the Preview button to check the responsive HTML preview on mobile and desktop, and adjust mobile overrides if needed.
4. [ ] Click Export HTML, choose the Ongage platform integration, enter the subject line and preheader, then export and download the zip file.
5. [ ] Unzip the download and open the index.html file from the email template folder to copy the full HTML source.
6. [ ] In Ongage, create a new email campaign, paste the same subject line, switch to the HTML tab, replace the existing HTML with the copied index.html code, and keep Auto beautify HTML unchecked.
7. [ ] Save or continue the campaign, add your lists and other campaign fields, optionally send a test, and schedule the campaign when ready.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=ApcOT2WG_cc)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-from-figma-to-ongage-using-emailify)
- [Read: Uploading your emails to Ongage](/emailify/integrations/ongage)
- [Next: Export HTML emails from Figma to Mailercloud](/emailify/tutorials/export-html-emails-from-figma-to-mailercloud)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-html-emails-from-figma-to-pardot-marketing-cloud-account-engagement.md"
description: "This tutorial shows how to use the Emailify Figma plugin to export an HTML email from Figma and upload it directly to Salesforce Pardot, also labeled Marketing Cloud Account Engagement. It walks through finding the required Pardot credentials, selecting the campaign, folder, and tracking domain, and then uploading the template from Figma."
---

# Export HTML emails from Figma to Pardot (Marketing Cloud Account Engagement)

> This tutorial shows how to use the Emailify Figma plugin to export an HTML email from Figma and upload it directly to Salesforce Pardot, also labeled Marketing Cloud Account Engagement. It walks through finding the required Pardot credentials, selecting the campaign, folder, and tracking domain, and then uploading the template from Figma.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/VtVuPmb57cw)

## What this video covers

This tutorial shows how to use the Emailify Figma plugin to export an HTML email from Figma and upload it directly to Salesforce Pardot, also labeled Marketing Cloud Account Engagement. It walks through finding the required Pardot credentials, selecting the campaign, folder, and tracking domain, and then uploading the template from Figma.

## Things you'll need

- A Figma file with the Emailify plugin available
- A Pardot or Marketing Cloud Account Engagement account with a connected app that can provide a Consumer Key and Consumer Secret

## Steps

1. [ ] Open the Figma file, find Emailify in Resources under the Plugins tab, and run or save the plugin.
2. [ ] Create an Emailify container in a frame, optionally add the Pardot footer, and preview the email before exporting.
3. [ ] Click Export HTML, choose Pardot API upload, and enter the Business Unit ID, Pardot email, password, Consumer Key, and Consumer Secret.
4. [ ] In Pardot, find the Business Unit ID in Marketing setup > Business Unit Setup, and find the Consumer Key and Consumer Secret in Setup > App Manager > your connected app > Manage Consumer Details.
5. [ ] Back in Emailify, select the campaign, folder, and tracker domain, then enter the sender name and sender email.
6. [ ] Optionally set the subject line and pre-header, enable **Editable Regions**, **Repeatable Regions**, or **Removable Regions** as needed, and click Upload to Pardot.
7. [ ] In Pardot, open Account Engagement Email and confirm the uploaded template appears in the published templates list.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=VtVuPmb57cw)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-from-figma-to-pardot-marketing-cloud-account-engagement-using-emailify)
- [Read: Uploading your emails to Pardot](/emailify/integrations/pardot)
- [Next: Export HTML emails from Figma to SendGrid](/emailify/tutorials/export-html-emails-from-figma-to-sendgrid)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-html-emails-from-figma-to-pdf-previews.md"
description: "The video shows how to use the Emailify Figma plugin to export HTML email designs as PDF previews. It explains where to find the plugin in Figma, how to choose the new \"PDF Previews\" export option, and what files are generated after export."
---

# Export HTML emails from Figma to PDF previews

> The video shows how to use the Emailify Figma plugin to export HTML email designs as PDF previews. It explains where to find the plugin in Figma, how to choose the new "PDF Previews" export option, and what files are generated after export.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/Wmub2cYLHcQ)

## What this video covers

The video shows how to use the Emailify Figma plugin to export HTML email designs as PDF previews. It explains where to find the plugin in Figma, how to choose the new "PDF Previews" export option, and what files are generated after export.

## Things you'll need

- Emailify must be installed in Figma.
- Email designs must already be set up and rendering as desired.

## Steps

1. [ ] Open Figma, click the "Resources" icon, search for "Emailify" under the "Plugins" tab, and save or run the plugin.
2. [ ] Open Emailify from "Plugins" > "Saved Plugins" if it is already saved.
3. [ ] Close the preview and click the "Export HTML" button.
4. [ ] Change the export type from "HTML Email" to "PDF Previews" under the "Download To Ccmputer" group.
5. [ ] Select the emails on the page that you want to include in the export.
6. [ ] Click "Export to PDF" to generate the PDF previews and related files.
7. [ ] Download the .zip file, unzip it, and use the combined PDF, per-email PDFs, individual mobile or desktop PDFs, or JPEGs as needed.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=Wmub2cYLHcQ)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-from-figma-to-pdf-previews-using-emailify)
- [Read: Exporting your emails to PDF](/emailify/export/pdf)
- [Next: Export emails from Figma to grayscale wireframe previews](/emailify/tutorials/export-emails-from-figma-to-grayscale-wireframe-previews)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-html-emails-from-figma-to-plain-text-format.md"
description: "This tutorial shows how to use the Emailify Figma plugin to export an HTML email design and automatically include a plain text version. It also shows where to find the exported .txt file and notes that supported platform integrations can upload the plain text version automatically."
---

# Export HTML emails from Figma to Plain Text format

> This tutorial shows how to use the Emailify Figma plugin to export an HTML email design and automatically include a plain text version. It also shows where to find the exported .txt file and notes that supported platform integrations can upload the plain text version automatically.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/jUca0A7A7_8)

## What this video covers

This tutorial shows how to use the Emailify Figma plugin to export an HTML email design and automatically include a plain text version. It also shows where to find the exported .txt file and notes that supported platform integrations can upload the plain text version automatically.

## Things you'll need

- A Figma file with an Emailify email template ready to export
- The Emailify Figma plugin saved in Figma

## Steps

1. [ ] Open your Figma file and find Emailify through the Resources icon, then save or run the plugin from the Plugins tab.
2. [ ] Run Emailify from right-click > Plugins > Saved plugins > Emailify.
3. [ ] Prepare an email template in Figma, such as one from the template Gallery, with links and content ready to export.
4. [ ] Click export HTML, choose the HTML option or another platform integration, then export the design to a zip file.
5. [ ] Open the exported folder and locate the index.html file for the HTML email and the plain text version.txt file for the plain text version.
6. [ ] Open the plain text version.txt file in a text editor to review the converted content and links in plain text.
7. [ ] If using a supported integration such as Salesforce, Pardot, or Klaviyo, let the plugin upload the HTML and plain text version automatically.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=jUca0A7A7_8)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-plain-text-emails-from-figma-using-emailify)
- [Read: Export production ready HTML emails from Figma to a local .zip file](/emailify/export/zip)
- [Next: Export emails from Figma to MJML code](/emailify/tutorials/export-emails-from-figma-to-mjml-code)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-html-emails-from-figma-to-postmark.md"
description: "This video shows how to use the Emailify Figma plugin to export an HTML email from Figma directly into Postmark. It covers installing the plugin, adding a Postmark API key, uploading the template, and viewing the result in Postmark."
---

# Export HTML emails from Figma to Postmark

> This video shows how to use the Emailify Figma plugin to export an HTML email from Figma directly into Postmark. It covers installing the plugin, adding a Postmark API key, uploading the template, and viewing the result in Postmark.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/BD7dghnkeKM)

## What this video covers

This video shows how to use the Emailify Figma plugin to export an HTML email from Figma directly into Postmark. It covers installing the plugin, adding a Postmark API key, uploading the template, and viewing the result in Postmark.

## Things you'll need

- Figma
- Emailify Figma plugin
- A Postmark account with access to a server and API Tokens

## Steps

1. [ ] Install the Emailify Figma plugin from the Figma Community and run it from Plugins in your Figma file.
2. [ ] Open the Export menu in Emailify, change the export option from HTML to Postmark, and reveal the API key field.
3. [ ] In Postmark, go to Servers, open your server, click API Tokens, and copy your API token.
4. [ ] Paste the Postmark API key into the Emailify plugin using Command + V or Control + V.
5. [ ] Click Upload to Postmark to generate the HTML, export the image assets, and send the template to Postmark.
6. [ ] In Postmark, open Servers, choose the same server, and go to Templates to find the uploaded template.
7. [ ] Open the template to review the subject line, HTML, and Preview, or upload again to create a new version if needed.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=BD7dghnkeKM)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-from-figma-to-postmark-using-emailify)
- [Read: Uploading your emails to Postmark](/emailify/integrations/postmark)
- [Next: Export HTML emails from Figma to Salesforce Marketing Cloud](/emailify/tutorials/export-html-emails-from-figma-to-salesforce-marketing-cloud)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-html-emails-from-figma-to-resend.md"
description: "This tutorial shows how to use the Emailify Figma plugin to upload an HTML email directly from Figma to Resend. It covers creating a Resend API key, choosing whether to publish the template, adding a subject line and preheader, and verifying the uploaded template in Resend."
---

# Export HTML emails from Figma to Resend

> This tutorial shows how to use the Emailify Figma plugin to upload an HTML email directly from Figma to Resend. It covers creating a Resend API key, choosing whether to publish the template, adding a subject line and preheader, and verifying the uploaded template in Resend.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/c9eMv9-q7jY)

## What this video covers

This tutorial shows how to use the Emailify Figma plugin to upload an HTML email directly from Figma to Resend. It covers creating a Resend API key, choosing whether to publish the template, adding a subject line and preheader, and verifying the uploaded template in Resend.

## Things you'll need

- A completed HTML email design in a Figma file
- Emailify Figma plugin
- A Resend account with permission to create API keys and templates

## Steps

1. [ ] Open your Figma file, find Emailify from the actions icon, and run it from Saved Plugins.
2. [ ] Open the HTML preview and check that the email design, links, and content are ready to export.
3. [ ] Click **Export HTML**, scroll to **Platform Integrations**, and choose **Resend**.
4. [ ] In Resend, create an API key with access to templates, copy it securely, and paste it into the **Resend API Key** field in Emailify.
5. [ ] Choose whether to publish the template immediately, then add the subject line and optional preheader text.
6. [ ] Select the email and click **Upload To Resend** so Emailify can upload its images and HTML template.
7. [ ] Open **Templates** in Resend, refresh the list, and inspect the uploaded template to verify its HTML, images, and subject line.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=c9eMv9-q7jY)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-from-figma-to-resend-using-emailify)
- [Read: Uploading your emails to Resend](/emailify/integrations/resend)
- [Next: Export HTML emails from Figma to Mailjet](/emailify/tutorials/export-html-emails-from-figma-to-mailjet)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-html-emails-from-figma-to-salesforce-marketing-cloud.md"
description: "The video shows how to use the Emailify Figma plugin to export an HTML email from Figma and automatically upload it to Salesforce Marketing Cloud (SFMC). It also explains how to create the required SFMC Installed Package credentials and then reuse them in Emailify for future uploads."
---

# Export HTML emails from Figma to Salesforce Marketing Cloud

> The video shows how to use the Emailify Figma plugin to export an HTML email from Figma and automatically upload it to Salesforce Marketing Cloud (SFMC). It also explains how to create the required SFMC Installed Package credentials and then reuse them in Emailify for future uploads.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/Q4QD3GTxD9s)

## What this video covers

The video shows how to use the Emailify Figma plugin to export an HTML email from Figma and automatically upload it to Salesforce Marketing Cloud (SFMC). It also explains how to create the required SFMC Installed Package credentials and then reuse them in Emailify for future uploads.

## Things you'll need

- A Figma file with an email design ready in Emailify
- A Salesforce Marketing Cloud (SFMC) account with access to Setup and Installed Packages

## Steps

1. [ ] Open the Resources icon in Figma, search for Emailify under Plugins, and run or save the plugin.
2. [ ] Create or finish your email design in Emailify, optionally adding the Salesforce Marketing Cloud footer from the Footers tab.
3. [ ] Click Export HTML, choose the HTML email option, and select Marketing Cloud under platform integrations.
4. [ ] In Salesforce Marketing Cloud (SFMC), go to Setup, then Platform Tools > Apps > Installed Packages, and create a new package.
5. [ ] Add an API Integration component, set it to Server to Server, and grant the required Read and Write permissions for Email and Assets.
6. [ ] Copy the REST Base URL, Client ID, and Client Secret from SFMC into Emailify, then enter a subject line and pre-header if needed.
7. [ ] Click Upload to Marketing Cloud and then verify the uploaded template in Content Builder.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=Q4QD3GTxD9s)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-from-figma-to-salesforce-marketing-cloud-using-emailify)
- [Read: Uploading your emails to Salesforce Marketing Cloud](/emailify/integrations/salesforce)
- [Next: Export HTML emails from Figma to Pardot (Marketing Cloud Account Engagement)](/emailify/tutorials/export-html-emails-from-figma-to-pardot-marketing-cloud-account-engagement)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-html-emails-from-figma-to-sare.md"
description: "This tutorial shows how to export an HTML email from Figma with the Emailify Figma plugin and import it into the SARE email marketing platform. It also demonstrates previewing the email in Emailify, downloading the export zip, and uploading the template into SARE."
---

# Export HTML emails from Figma to SARE

> This tutorial shows how to export an HTML email from Figma with the Emailify Figma plugin and import it into the SARE email marketing platform. It also demonstrates previewing the email in Emailify, downloading the export zip, and uploading the template into SARE.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/_-9AIr6dE0U)

## What this video covers

This tutorial shows how to export an HTML email from Figma with the Emailify Figma plugin and import it into the SARE email marketing platform. It also demonstrates previewing the email in Emailify, downloading the export zip, and uploading the template into SARE.

## Things you'll need

- A Figma file with Emailify available as a plugin
- A SARE account

## Steps

1. [ ] Open your Figma file, find Emailify from the Actions menu or Saved plugins, and run the plugin.
2. [ ] Use a template from Emailify’s new email templates, then preview the email with the Preview button.
3. [ ] Click Export HTML, change the export type to the SARE platform integration, and select Export for SARE.
4. [ ] Download the generated zip file, unzip it on your computer, and locate the folder marked for upload to SARE.
5. [ ] Log into SARE, go to Mailing, click New, and choose Import mailing template.
6. [ ] Enter a template name, upload the zip file from the _zips for upload to SARE folder, and click Import.
7. [ ] Open the new template under My templates to verify the HTML email and mobile preview.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=_-9AIr6dE0U)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-from-figma-to-sare-using-emailify)
- [Read: Uploading your emails to SARE](/emailify/integrations/sare)
- [Next: Export HTML emails from Figma to Mailgun](/emailify/tutorials/export-html-emails-from-figma-to-mailgun)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-html-emails-from-figma-to-selzy.md"
description: "This video shows how to export an HTML email from Figma to Selzy using the Emailify Figma plugin. It walks through saving Emailify in Figma, setting the Selzy unsubscribe link, entering a Selzy API key, and uploading the template to Selzy."
---

# Export HTML emails from Figma to Selzy

> This video shows how to export an HTML email from Figma to Selzy using the Emailify Figma plugin. It walks through saving Emailify in Figma, setting the Selzy unsubscribe link, entering a Selzy API key, and uploading the template to Selzy.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/5w2qyBTYToY)

## What this video covers

This video shows how to export an HTML email from Figma to Selzy using the Emailify Figma plugin. It walks through saving Emailify in Figma, setting the Selzy unsubscribe link, entering a Selzy API key, and uploading the template to Selzy.

## Things you'll need

- An existing email design made with Emailify in Figma
- A Selzy account with access to the API key page

## Steps

1. [ ] Open the Figma file, find Emailify in Resources under the Plugins tab, and run or save the plugin.
2. [ ] Open Emailify from the Figma plugins list and make sure the email design is ready to export.
3. [ ] In the footer tab, select the Selzy item to ensure the unsubscribe link is set correctly.
4. [ ] Click export HTML, change the export target from HTML email to the Selzy platform integration, and open the API key page from the Selzy link.
5. [ ] In Selzy, show the full API key, copy it, and paste it into the Emailify plugin.
6. [ ] Add a subject line, then click upload to Selzy to export the HTML, upload the images, and create the template.
7. [ ] Open My templates in Selzy to confirm the uploaded template and preview the result.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=5w2qyBTYToY)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-from-figma-to-selzy-using-emailify)
- [Read: Uploading your emails to Selzy](/emailify/integrations/selzy)
- [Next: Export HTML emails from Figma to Omnisend](/emailify/tutorials/export-html-emails-from-figma-to-omnisend)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-html-emails-from-figma-to-sendgrid.md"
description: "This video shows how to use the Emailify Figma plugin to export an email design from Figma as an HTML template and upload it directly to SendGrid. It also shows how to create a SendGrid API key, add the Emailify SendGrid footer, and verify the uploaded template in SendGrid’s Design Library."
---

# Export HTML emails from Figma to SendGrid

> This video shows how to use the Emailify Figma plugin to export an email design from Figma as an HTML template and upload it directly to SendGrid. It also shows how to create a SendGrid API key, add the Emailify SendGrid footer, and verify the uploaded template in SendGrid’s Design Library.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/cYYVO_3HT1U)

## What this video covers

This video shows how to use the Emailify Figma plugin to export an email design from Figma as an HTML template and upload it directly to SendGrid. It also shows how to create a SendGrid API key, add the Emailify SendGrid footer, and verify the uploaded template in SendGrid’s Design Library.

## Things you'll need

- A Figma file with an email design already created.
- A SendGrid account with an API key created.

## Steps

1. [ ] Install Emailify from the Figma Community under the Plugins tab.
2. [ ] Open your Figma file, right-click, and run Plugins > Emailify.
3. [ ] Add the SendGrid footer from the Footer category so the unsubscribe link is pre-filled.
4. [ ] Click Export HTML, change the upload target from HTML to SendGrid, and enter your SendGrid API key.
5. [ ] In SendGrid, go to Settings > API Keys, create a key named Emailify with Full Access, and copy it.
6. [ ] Paste the API key into Emailify and click Upload to SendGrid.
7. [ ] Open SendGrid Design Library to view, edit, and preview the uploaded template; optionally download the zip file.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=cYYVO_3HT1U)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-from-figma-to-send-grid-using-emailify)
- [Read: Uploading your emails to SendGrid](/emailify/integrations/sendgrid)
- [Next: Export HTML emails from Figma to Resend](/emailify/tutorials/export-html-emails-from-figma-to-resend)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-html-emails-from-figma-to-sendpulse.md"
description: "The video shows how to use the Emailify Figma plugin to export an HTML email from Figma into SendPulse. It covers adding the SendPulse footer, previewing the email, entering the SendPulse API ID and secret, and uploading the finished template into SendPulse templates."
---

# Export HTML emails from Figma to SendPulse

> The video shows how to use the Emailify Figma plugin to export an HTML email from Figma into SendPulse. It covers adding the SendPulse footer, previewing the email, entering the SendPulse API ID and secret, and uploading the finished template into SendPulse templates.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/lLH2aHdVSN4)

## What this video covers

The video shows how to use the Emailify Figma plugin to export an HTML email from Figma into SendPulse. It covers adding the SendPulse footer, previewing the email, entering the SendPulse API ID and secret, and uploading the finished template into SendPulse templates.

## Things you'll need

- A Figma file with an email design ready to upload
- An Emailify plugin installed or saved in Figma
- A SendPulse account with access to the API ID and secret

## Steps

1. [ ] Open your Figma file and run the Emailify plugin from Resources or from Saved plugins.
2. [ ] Create or open your email design, then add the SendPulse item from the Footage tab to include the unsubscribe link footer.
3. [ ] Use the preview button to check the HTML email layout.
4. [ ] Click Export HTML, choose the SendPulse integration, and enter the SendPulse API ID and secret from your SendPulse account settings API tab.
5. [ ] Add a subject line for the upload.
6. [ ] Click Upload to SendPulse to generate the HTML, upload images, and send the template into your SendPulse templates.
7. [ ] Open the email templates page in SendPulse to confirm the uploaded template and use it for a campaign or further editing.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=lLH2aHdVSN4)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-from-figma-to-send-pulse-using-emailify)
- [Read: Uploading your emails to SendPulse](/emailify/integrations/sendpulse)
- [Next: Uploading your emails to Sendwithus](/emailify/tutorials/uploading-your-emails-to-sendwithus)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-html-emails-from-figma-to-sendx.md"
description: "This tutorial shows how to use the Emailify Figma plugin to design an HTML email, export it as a zip file, and import the resulting custom HTML template into SendX. It also shows how to apply the template to a SendX newsletter campaign and send a test email."
---

# Export HTML emails from Figma to SendX

> This tutorial shows how to use the Emailify Figma plugin to design an HTML email, export it as a zip file, and import the resulting custom HTML template into SendX. It also shows how to apply the template to a SendX newsletter campaign and send a test email.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/uVTTIoT4Lk4)

## What this video covers

This tutorial shows how to use the Emailify Figma plugin to design an HTML email, export it as a zip file, and import the resulting custom HTML template into SendX. It also shows how to apply the template to a SendX newsletter campaign and send a test email.

## Things you'll need

- A Figma file with the Emailify plugin available
- A SendX account

## Steps

1. [ ] Open your Figma file, find Emailify in Resources, save or run the plugin, and click Add New Emailify Container.
2. [ ] Build the email design, then add the SendX footer from the Footer tab so the unsubscribe and viewing browser links are pre-populated.
3. [ ] Use Preview to check the email, then click Export HTML, choose the SendX platform integration, enter the subject line and preheader text, and click Export for SendX.
4. [ ] Download the zip file, unzip it, and locate the index.html file inside the folder named after your Figma frame.
5. [ ] In SendX, go to Settings > Templates, create a New Email Template, remove the default rows, set the content area width to 600 pixels, and drag in the HTML block.
6. [ ] Open the exported index.html in a browser, use View Page Source to copy the HTML, paste it into the SendX HTML block, and submit the template.
7. [ ] Create a Newsletter Campaign in SendX, apply the custom template, add the email subject line, and send a test before finishing the campaign.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=uVTTIoT4Lk4)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-from-figma-to-sendx-using-emailify)
- [Read: Uploading your emails to SendX](/emailify/integrations/sendx)
- [Next: Export HTML emails from Figma to Ongage](/emailify/tutorials/export-html-emails-from-figma-to-ongage)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-html-emails-from-figma-to-stripo.md"
description: "This tutorial shows how to export HTML email templates from Figma with the Emailify Figma plugin and import them into Stripo. It covers generating the export, copying the HTML from the index.html file, and pasting it into Stripo’s My HTML template for further editing."
---

# Export HTML emails from Figma to Stripo

> This tutorial shows how to export HTML email templates from Figma with the Emailify Figma plugin and import them into Stripo. It covers generating the export, copying the HTML from the index.html file, and pasting it into Stripo’s My HTML template for further editing.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/98oeeXB7FNI)

## What this video covers

This tutorial shows how to export HTML email templates from Figma with the Emailify Figma plugin and import them into Stripo. It covers generating the export, copying the HTML from the index.html file, and pasting it into Stripo’s My HTML template for further editing.

## Things you'll need

- A Figma file with the Emailify plugin available
- A Stripo account

## Steps

1. [ ] Open Figma, find Emailify in Resources under the Plugins tab, and run it from Saved plugins.
2. [ ] Create a new Emailify container and, when ready, click Export HTML and choose Stripo as the platform.
3. [ ] Add a subject line and preheader text if needed, then export for Stripo and download the zip file.
4. [ ] Unzip the file, open the index.html file, and view page source in the browser to copy all the HTML.
5. [ ] In Stripo, go to Email messages, choose Basic templates, and open My HTML.
6. [ ] Click the code icon, select the default code, and paste in the copied HTML.
7. [ ] Review the imported email in Stripo and make any small text, link, or image changes as needed.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=98oeeXB7FNI)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-from-figma-to-stripo-using-emailify)
- [Read: Uploading your emails to Stripo](/emailify/integrations/stripo)
- [Next: Export HTML emails from Figma to MailerLite](/emailify/tutorials/export-html-emails-from-figma-to-mailerlite)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-html-emails-from-figma-to-sugarcrm-sugar-market.md"
description: "The video shows how to design a simple HTML email in the Emailify Figma plugin, export it as a SugarCRM-ready ZIP, and then import the generated index.html into Sugar Market using the custom code editor. It also demonstrates adding the SugarCRM footer, previewing the email, and setting the subject line and preheader text before export."
---

# Export HTML emails from Figma to SugarCRM (Sugar Market)

> The video shows how to design a simple HTML email in the Emailify Figma plugin, export it as a SugarCRM-ready ZIP, and then import the generated index.html into Sugar Market using the custom code editor. It also demonstrates adding the SugarCRM footer, previewing the email, and setting the subject line and preheader text before export.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/dudacdc97vQ)

## What this video covers

The video shows how to design a simple HTML email in the Emailify Figma plugin, export it as a SugarCRM-ready ZIP, and then import the generated index.html into Sugar Market using the custom code editor. It also demonstrates adding the SugarCRM footer, previewing the email, and setting the subject line and preheader text before export.

## Things you'll need

- Access to Figma with the Emailify Figma plugin
- Access to SugarCRM Sugar Market

## Steps

1. [ ] Open your Figma file, run the Emailify plugin from Resources or Saved plugins, and add a new Emailify frame for your email design.
2. [ ] Add the SugarCRM footer from the footer tab under Platforms so the unsubscribe link and viewing browser link are pre-populated.
3. [ ] Preview the email in Emailify if needed, then click export HTML, choose SugarCRM, enter the subject line and preheader text, and export for SugarCRM.
4. [ ] Download the ZIP file, unzip it, and locate the index.html file inside the folder named after the email.
5. [ ] In Sugar Market, use Quick Create to create a new Email, fill in the campaign details, and continue to the design step.
6. [ ] Switch from the Themes tab to the Code tab, choose Blank, delete the default code, and drag and drop index.html into the editor.
7. [ ] Review the rendered email, optionally send a test, save the template, and continue through the normal SugarCRM email flow.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=dudacdc97vQ)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-from-figma-to-sugarcrm-using-emailify)
- [Read: Uploading your emails to SugarCRM (Sugar Market)](/emailify/integrations/sugarcrm)
- [Next: Export HTML emails from Figma to Benchmark Email](/emailify/tutorials/export-html-emails-from-figma-to-benchmark-email)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-html-emails-from-figma-to-yotpo.md"
description: "This tutorial shows how to use the Emailify Figma plugin to design an HTML email, export it as a ZIP, and import the exported code into Yotpo as a custom HTML template. It also shows how to add the Yotpo footer requirements, preview the email, and reuse the saved template for campaigns."
---

# Export HTML emails from Figma to Yotpo

> This tutorial shows how to use the Emailify Figma plugin to design an HTML email, export it as a ZIP, and import the exported code into Yotpo as a custom HTML template. It also shows how to add the Yotpo footer requirements, preview the email, and reuse the saved template for campaigns.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/lRU0Wjw9vHQ)

## What this video covers

This tutorial shows how to use the Emailify Figma plugin to design an HTML email, export it as a ZIP, and import the exported code into Yotpo as a custom HTML template. It also shows how to add the Yotpo footer requirements, preview the email, and reuse the saved template for campaigns.

## Things you'll need

- A Figma file with the Emailify plugin available.
- Access to the Yotpo platform.

## Steps

1. [ ] Open a Figma file, find Emailify in the Resources icon, and run or save the plugin from the Plugins tab.
2. [ ] Create a new template, click Add New Emailify Container, and build your email design in the Emailify frame.
3. [ ] In the Footer tab under Platforms, choose the Yotpo footer option so the required unsubscribe link, View in Browser link, and full address are added.
4. [ ] Use the Preview icon to check the rendered HTML on desktop and mobile, then click Export HTML and choose the Yotpo Platform Integration option.
5. [ ] Enter the subject line and preheader text, then click Export for Yotpo and download the ZIP file.
6. [ ] Unzip the file, open index.html, copy the page source, and paste it into Yotpo under Campaigns > Email Templates > My Templates > Start From Scratch > HTML Editor.
7. [ ] Save and close the template in Yotpo, then use it to create a campaign and add the subject line; only enter the preheader in one place to avoid duplication.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=lRU0Wjw9vHQ)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-from-figma-to-yotpo-using-emailify)
- [Read: Uploading your emails to Yotpo](/emailify/integrations/yotpo)
- [Next: Export HTML emails from Figma to Bento](/emailify/tutorials/export-html-emails-from-figma-to-bento)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-html-emails-from-figma-to-zapier-google-drive.md"
description: "This tutorial shows how to export HTML emails from the Emailify Figma plugin to Zapier, then automatically upload the exported zip file to a Google Drive folder. It walks through creating a Zapier webhook trigger, connecting it to Emailify, and finishing the workflow with a Google Drive Upload File action."
---

# Export HTML emails from Figma to Zapier (Google Drive)

> This tutorial shows how to export HTML emails from the Emailify Figma plugin to Zapier, then automatically upload the exported zip file to a Google Drive folder. It walks through creating a Zapier webhook trigger, connecting it to Emailify, and finishing the workflow with a Google Drive Upload File action.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/cI93RXk9MV0)

## What this video covers

This tutorial shows how to export HTML emails from the Emailify Figma plugin to Zapier, then automatically upload the exported zip file to a Google Drive folder. It walks through creating a Zapier webhook trigger, connecting it to Emailify, and finishing the workflow with a Google Drive Upload File action.

## Things you'll need

- A Figma file with the Emailify Figma plugin installed
- A Zapier account
- A connected Google Drive account

## Steps

1. [ ] Open Figma, run the Emailify plugin from Plugins > Saved plugins, and use an Emailify-ready template or design to preview the email.
2. [ ] In Emailify, click Export HTML, change the export option from the default HTML email zip download to Webhooks > Zapier, and paste in a Zapier webhook URL.
3. [ ] In Zapier, create a new Zap, add Webhooks as the Trigger, choose Catch Hook, and copy the generated webhook URL.
4. [ ] Paste the webhook URL into Emailify, then click Upload to Zapier to send a test export and confirm Zapier receives the file and file name.
5. [ ] Add a Google Drive action in Zapier, connect Google Drive, choose Upload File, and select a folder such as Emailify template uploads.
6. [ ] Map the webhook File and File name fields to Google Drive, leave Convert to document set to false, and test the step to upload the zip file to the folder.
7. [ ] Publish the Zap and rename it if needed so future Emailify exports are automatically sent to the connected Google Drive folder.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=cI93RXk9MV0)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-from-figma-to-zapier-using-emailify)
- [Read: Uploading your emails to Zapier (as a .zip file)](/emailify/export/zapier)
- [Next: Export HTML emails from Figma to Postmark](/emailify/tutorials/export-html-emails-from-figma-to-postmark)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/export-html-emails-from-figma-to-zoho-campaigns.md"
description: "This tutorial shows how to export an HTML email template from Figma with the Emailify Figma plugin and import it into Zoho Campaigns. It also covers adding the Zoho Campaigns footer, downloading the ZIP export, and uploading the index.html file into a regular email campaign."
---

# Export HTML emails from Figma to Zoho Campaigns

> This tutorial shows how to export an HTML email template from Figma with the Emailify Figma plugin and import it into Zoho Campaigns. It also covers adding the Zoho Campaigns footer, downloading the ZIP export, and uploading the index.html file into a regular email campaign.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/UQ2va7H6RN0)

## What this video covers

This tutorial shows how to export an HTML email template from Figma with the Emailify Figma plugin and import it into Zoho Campaigns. It also covers adding the Zoho Campaigns footer, downloading the ZIP export, and uploading the index.html file into a regular email campaign.

## Things you'll need

- A Figma file with the Emailify Figma plugin available
- A Zoho Campaigns account

## Steps

1. [ ] Open the Figma file, find Emailify in Resources under the Plugins tab, and run or save the plugin from Saved plugins.
2. [ ] Create a new Emailify container or use a template, then design the email and choose the Zoho Campaigns footer in the footer tab so the unsubscribe, view in browser, and company address tags are added.
3. [ ] Click Export HTML, choose HTML email, select Zoho Campaigns under platform integration, optionally add preheader text and subject line, then export for Zoho Campaigns and download the ZIP file.
4. [ ] Unzip the file, open the preview page if needed, and locate the named folder containing the index.html file.
5. [ ] In Zoho Campaigns, go to Campaigns, then Email Campaigns, create a new regular email campaign, name it, and save and proceed.
6. [ ] In Create content, choose Import Upload HTML, upload the index.html file from your computer, and click upload.
7. [ ] Review the imported email, optionally add a plain text version, and save the campaign.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=UQ2va7H6RN0)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-from-figma-to-zoho-campaigns-using-emailify)
- [Read: Uploading your emails to Zoho Campaigns](/emailify/integrations/zoho-campaigns)
- [Next: Export HTML emails from Figma to Stripo](/emailify/tutorials/export-html-emails-from-figma-to-stripo)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/how-to-export-html-emails-from-figma-to-sendinblue-using-emailify.md"
description: "The video shows how to use the Emailify Figma plugin to export an HTML email from Figma directly into the Sendinblue platform. It covers setting up the plugin, entering a Sendinblue API key and verified sender email, adding an optional subject line, and uploading the template to Sendinblue."
---

# How to export HTML emails from Figma to Sendinblue using Emailify

> The video shows how to use the Emailify Figma plugin to export an HTML email from Figma directly into the Sendinblue platform. It covers setting up the plugin, entering a Sendinblue API key and verified sender email, adding an optional subject line, and uploading the template to Sendinblue.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/R_86CGNsyH4)

## What this video covers

The video shows how to use the Emailify Figma plugin to export an HTML email from Figma directly into the Sendinblue platform. It covers setting up the plugin, entering a Sendinblue API key and verified sender email, adding an optional subject line, and uploading the template to Sendinblue.

## Things you'll need

- A Figma account with the Emailify plugin available
- A Sendinblue account with a verified sender email
- A Sendinblue API key

## Steps

1. [ ] Open a new Figma file and find the Emailify plugin from the Resources icon, then run or save it as a Figma plugin.
2. [ ] Create a new blank email in Emailify and preview the design if needed.
3. [ ] Click Export HTML, then change the export destination to Sendinblue under Platform Integration.
4. [ ] Copy or generate a Sendinblue API key and paste it into the Sendinblue API key field in Figma.
5. [ ] Select a verified sender email from the Senders page in Sendinblue and paste it into the sender email field.
6. [ ] Optionally add a subject line, then click Upload to Sendinblue.
7. [ ] Open the Sendinblue marketing templates page to confirm the uploaded template appears with the sender, subject line, and HTML content.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=R_86CGNsyH4)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-from-figma-to-sendinblue-using-emailify)
- [Read: Uploading your emails to Brevo](/emailify/integrations/brevo)
- [Next: Export HTML emails to Brevo](/emailify/tutorials/export-html-emails-from-figma-to-brevo)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/how-to-export-html-emails-with-rtl-right-to-left-text-from-figma-using-emailify.md"
description: "This video shows how to use the Emailify Figma plugin to export HTML emails with RTL right-to-left text formatting. It covers enabling the RTL Text option, previewing the result, and downloading the generated HTML zip file."
---

# How to export HTML emails with RTL (right-to-left) text from Figma using Emailify

> This video shows how to use the Emailify Figma plugin to export HTML emails with RTL right-to-left text formatting. It covers enabling the RTL Text option, previewing the result, and downloading the generated HTML zip file.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/q0CDGHzx2zg)

## What this video covers

This video shows how to use the Emailify Figma plugin to export HTML emails with RTL right-to-left text formatting. It covers enabling the RTL Text option, previewing the result, and downloading the generated HTML zip file.

## Things you'll need

- Figma
- Emailify Figma plugin
- An email already designed in Figma

## Steps

1. [ ] Install or run the Emailify Figma plugin from the Resources icon, or open it from Saved plugins.
2. [ ] Set any text layers that need RTL by going to the Figma icon, then Text, then Text Direction, and choosing Right to Left.
3. [ ] In the Emailify plugin, open Export HTML and turn on the RTL Text toggle.
4. [ ] Click Preview to confirm the email renders with the correct right-to-left text order.
5. [ ] Select the email you want to export and click Export to HTML.
6. [ ] Download the zip file, then open the exported HTML or preview file to view the email.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=q0CDGHzx2zg)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-with-rtl-right-to-left-text-from-figma-using-emailify)
- [Read: Localizing your email designs with text translations](/emailify/content/localization)
- [Next: Translate HTML email designs in Figma](/emailify/tutorials/translate-html-email-designs-with-localization-in-figma)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/import-spreadsheets-to-tables-for-html-emails-in-figma.md"
description: "This tutorial shows how to use the Emailify Figma plugin to import spreadsheet data into a table component for HTML email designs. It covers importing from an Excel (XLSX) or CSV file, or from a public Google Sheet URL, then customizing the table and exporting the email to HTML."
---

# Import spreadsheets to tables for HTML emails in Figma

> This tutorial shows how to use the Emailify Figma plugin to import spreadsheet data into a table component for HTML email designs. It covers importing from an Excel (XLSX) or CSV file, or from a public Google Sheet URL, then customizing the table and exporting the email to HTML.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/CB3tRj0GtW4)

## What this video covers

This tutorial shows how to use the Emailify Figma plugin to import spreadsheet data into a table component for HTML email designs. It covers importing from an Excel (XLSX) or CSV file, or from a public Google Sheet URL, then customizing the table and exporting the email to HTML.

## Things you'll need

- A Figma file with the Emailify plugin installed
- A spreadsheet file in Excel (XLSX) or CSV format, or a public Google Sheet

## Steps

1. [ ] Open Figma, go to Resources, search for Emailify in the Plugins tab, and install it.
2. [ ] Run Emailify from Plugins > Installed Figma Plugins, create a new email frame, and click Add new Emailify container.
3. [ ] Select the email frame or column, choose Add spreadsheet from Quick add element to selected layer, and import either a spreadsheet file or a public Google Sheet URL.
4. [ ] For a Google Sheet, set General Access to Anyone with the link and copy the share link before pasting it into the plugin.
5. [ ] Click Add to generate the table, including any image links from the spreadsheet, and open the table component page to adjust column widths, image sizing, vertical alignment, borders, or hidden columns.
6. [ ] Use Preview to view the HTML version in Figma, then click Export HTML, choose HTML, and download the zip file.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=CB3tRj0GtW4)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-import-spreadsheets-to-tables-for-html-emails-in-figma-using-emailify)
- [Read: Spreadsheet (Import)](/emailify/elements/spreadsheet)
- [Next: Translate email designs in Figma with the Crowdin API](/emailify/tutorials/translate-email-designs-in-figma-with-the-crowdin-api)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/localize-html-email-designs-with-text-formatting-in-figma.md"
description: "This tutorial shows how to localize HTML email designs in Figma using the Emailify plugin and Markdown formatting. It demonstrates exporting email content to Excel, editing translations and formatting per locale, then importing the localized content back into Figma and exporting the finished emails to HTML."
---

# Localize HTML email designs (with text formatting) in Figma

> This tutorial shows how to localize HTML email designs in Figma using the Emailify plugin and Markdown formatting. It demonstrates exporting email content to Excel, editing translations and formatting per locale, then importing the localized content back into Figma and exporting the finished emails to HTML.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/OngJvgE6Aeg)

## What this video covers

This tutorial shows how to localize HTML email designs in Figma using the Emailify plugin and Markdown formatting. It demonstrates exporting email content to Excel, editing translations and formatting per locale, then importing the localized content back into Figma and exporting the finished emails to HTML.

## Things you'll need

- Figma
- Emailify Figma plugin
- Microsoft Excel or another spreadsheet tool

## Steps

1. [ ] Open the Emailify Figma plugin from Resources or Saved plugins.
2. [ ] Create or open an email design and add example formatting such as bold, italics, and links.
3. [ ] In Emailify, click Localize, choose the Excel export option, enter the locales you want, and enable Add Markdown.
4. [ ] Export the content as XLSX, then open the spreadsheet and edit each locale’s text, links, and Markdown formatting as needed.
5. [ ] Return to Emailify, open Localize again, enable Import Markdown Formatting, and drag in the edited Excel file.
6. [ ] Click Localize Selected Frames to generate translated email frames on a new Email Translations page.
7. [ ] Use Export HTML to export the localized emails and preview the generated HTML files in a browser.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=OngJvgE6Aeg)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-localize-html-email-designs-with-markdown-text-formatting-in-figma-using-emailify)
- [Read: Localizing your email designs with text translations](/emailify/content/localization)
- [Next: Translate email designs in Figma with ChatGPT](/emailify/tutorials/translate-email-designs-in-figma-with-chatgpt)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/send-yourself-tests-of-html-emails-from-figma-with-putsmail.md"
description: "The video shows how to export an HTML email from the Emailify Figma plugin and use PutsMail.com to send that unmodified HTML to your own email address for testing. It also shows how to review the message in an inbox like Gmail to check the rendered email before broader client testing."
---

# Send yourself tests of HTML emails from Figma with PutsMail

> The video shows how to export an HTML email from the Emailify Figma plugin and use PutsMail.com to send that unmodified HTML to your own email address for testing. It also shows how to review the message in an inbox like Gmail to check the rendered email before broader client testing.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/CxdlzgUaCMM)

## What this video covers

The video shows how to export an HTML email from the Emailify Figma plugin and use PutsMail.com to send that unmodified HTML to your own email address for testing. It also shows how to review the message in an inbox like Gmail to check the rendered email before broader client testing.

## Things you'll need

- A Figma file with an email already designed in Emailify
- A free PutsMail account
- An email inbox to receive the test message

## Steps

1. [ ] Open your Figma file, run the Emailify plugin from Plugins > Saved plugins, and make sure your email design is ready.
2. [ ] Click export HTML, keep upload hosted images URL selected, and export to HTML.
3. [ ] Download the zip file, unzip it, and open the generated folder to find the index.html file.
4. [ ] Open index.html in a code editor and copy the full HTML to your clipboard.
5. [ ] Go to PutsMail.com, create a free account if needed, and click create a new test email.
6. [ ] Paste the HTML into the body, add a subject line, enter your email address, leave move my CSS inline unchecked, complete the I’m not a robot check, and click send email.
7. [ ] Open your inbox, find the test email from Litmus PutsMail, and inspect the rendered HTML email.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=CxdlzgUaCMM)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-send-yourself-tests-of-html-emails-from-figma-with-puts-mail-using-emailify)
- [Read: Sending manual HTML email inbox tests](/emailify/export/manual-inbox-test-sends)
- [Next: Test HTML emails in Outlook with exports from Figma](/emailify/tutorials/test-html-emails-in-outlook-with-exports-from-figma)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/test-html-emails-in-dark-mode-with-exports-from-figma.md"
description: "This tutorial shows how to export an HTML email from Figma with Emailify and test how it renders in dark mode using Litmus.com. It demonstrates copying the exported index.html into Litmus, selecting email clients, and running previews to compare dark mode behavior across clients like Gmail, Apple Mail, and Outlook."
---

# Test HTML emails in dark mode with exports from Figma

> This tutorial shows how to export an HTML email from Figma with Emailify and test how it renders in dark mode using Litmus.com. It demonstrates copying the exported index.html into Litmus, selecting email clients, and running previews to compare dark mode behavior across clients like Gmail, Apple Mail, and Outlook.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/h5Gq9apZrxk)

## What this video covers

This tutorial shows how to export an HTML email from Figma with Emailify and test how it renders in dark mode using Litmus.com. It demonstrates copying the exported index.html into Litmus, selecting email clients, and running previews to compare dark mode behavior across clients like Gmail, Apple Mail, and Outlook.

## Things you'll need

- A Figma file with an email design set up in Emailify
- An exported HTML email from the Emailify Figma plugin
- A Litmus.com account

## Steps

1. [ ] Open the Figma file, find Emailify from Resources, and save it to your Figma plugins list if needed.
2. [ ] Run the Emailify plugin from Saved plugins and prepare the email design in Figma.
3. [ ] Click export HTML, keep upload hosted image URLs enabled, and export the HTML.
4. [ ] Download the zip file, open the exported folder, and copy the contents of the index.html file in a code editor.
5. [ ] Go to Litmus.com, create a new test under the test tab, choose test, and use bring in your email.
6. [ ] Click view more ways to create an email, paste the copied HTML, add a subject line, and click done.
7. [ ] Use choose email clients to select dark mode previews such as Apple Mail, Outlook, Gmail, and iOS mail, then click run previews.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=h5Gq9apZrxk)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-test-html-emails-in-dark-mode-with-exports-from-figma-using-emailify)
- [Read: Adding dark mode design overrides (only supported in Apple Mail on iOS/MacOS)](/emailify/design/dark-mode)
- [Next: Test HTML emails in Gmail with exports from Figma](/emailify/tutorials/test-html-emails-in-gmail-with-exports-from-figma)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/test-html-emails-in-different-clients-with-exports-from-figma.md"
description: "This video shows how to export an HTML email from the Emailify Figma plugin and test it in Litmus across different email clients. It demonstrates how to paste the exported HTML into a Litmus test and review real client previews such as Outlook, Gmail, and mobile apps."
---

# Test HTML emails in different clients with exports from Figma

> This video shows how to export an HTML email from the Emailify Figma plugin and test it in Litmus across different email clients. It demonstrates how to paste the exported HTML into a Litmus test and review real client previews such as Outlook, Gmail, and mobile apps.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/vZkuFfpkh1Q)

## What this video covers

This video shows how to export an HTML email from the Emailify Figma plugin and test it in Litmus across different email clients. It demonstrates how to paste the exported HTML into a Litmus test and review real client previews such as Outlook, Gmail, and mobile apps.

## Things you'll need

- Emailify should already be installed or saved as a Figma plugin.
- The email should already be designed in Figma using Emailify.
- A Litmus account or access to Litmus is needed to run the email tests.

## Steps

1. [ ] Open Figma, find Emailify under Resources > Plugins, and save or run the plugin from Saved plugins.
2. [ ] Use Emailify to design the email, then click Export HTML and make sure Upload hosted image URLs is enabled.
3. [ ] Click Export to HTML, then download and save the zip file containing the HTML email.
4. [ ] Open the HTML file from the exported folder, select all of the code, and copy it to the clipboard.
5. [ ] In Litmus, click Create New, name the test, choose Tests, and click Bring in your email.
6. [ ] Choose More ways to create an email, paste the HTML into the code block, add a subject line, and click Done.
7. [ ] Review the Previews and QA tab, open different client previews, and rerun previews with other email client selections if needed.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=vZkuFfpkh1Q)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-test-html-emails-in-different-clients-with-exports-from-figma-using-emailify)
- [Read: Testing your HTML emails before sending](/emailify/export/testing)
- [Next: Test HTML emails in dark mode with exports from Figma](/emailify/tutorials/test-html-emails-in-dark-mode-with-exports-from-figma)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/test-html-emails-in-gmail-with-exports-from-figma.md"
description: "The video shows how to export an email design from Figma with Emailify and test the resulting HTML in Gmail using Litmus.com. It then narrows the Litmus preview set to Gmail clients on desktop and mobile, including web, Android, iOS, and dark mode views."
---

# Test HTML emails in Gmail with exports from Figma

> The video shows how to export an email design from Figma with Emailify and test the resulting HTML in Gmail using Litmus.com. It then narrows the Litmus preview set to Gmail clients on desktop and mobile, including web, Android, iOS, and dark mode views.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/Jlm1YBOioM0)

## What this video covers

The video shows how to export an email design from Figma with Emailify and test the resulting HTML in Gmail using Litmus.com. It then narrows the Litmus preview set to Gmail clients on desktop and mobile, including web, Android, iOS, and dark mode views.

## Things you'll need

- A Figma file with an email design ready to export.
- An Emailify Figma plugin setup.
- A Litmus.com account or access to Litmus.com.

## Steps

1. [ ] Open your Figma file, find Emailify under Resources > Plugins, and run or save the plugin from Saved plugins.
2. [ ] With your email design ready, click Export HTML in Emailify, keep upload hosted images selected, and export the HTML.
3. [ ] Download the JavaScript file, open the exported folder, and copy the HTML from the generated email file.
4. [ ] In Litmus.com, go to the test tab, create a new test, choose test, and use bring in your email to paste the HTML and add a subject line.
5. [ ] Click done to upload the HTML, then open choose email clients and clear the default client selections.
6. [ ] Select the Gmail clients you want to test, including Gmail app, Gmail on Android, Gmail on iOS, and Gmail in web browsers like Chrome, Edge, and Firefox.
7. [ ] Click run previews and review the rendered Gmail previews for desktop and mobile, including light and dark mode.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=Jlm1YBOioM0)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-test-html-emails-in-gmail-with-exports-from-figma-using-emailify)
- [Read: Testing your HTML emails before sending](/emailify/export/testing)
- [Next: Test HTML emails on mobile with exports from Figma](/emailify/tutorials/test-html-emails-on-mobile-with-exports-from-figma)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/test-html-emails-in-outlook-with-exports-from-figma.md"
description: "This tutorial shows how to export an HTML email from Figma with the Emailify plugin and test it in different versions of Microsoft Outlook using Litmus.com. It covers exporting the HTML, uploading it into Litmus, selecting Outlook clients, and running previews to check how the email renders."
---

# Test HTML emails in Outlook with exports from Figma

> This tutorial shows how to export an HTML email from Figma with the Emailify plugin and test it in different versions of Microsoft Outlook using Litmus.com. It covers exporting the HTML, uploading it into Litmus, selecting Outlook clients, and running previews to check how the email renders.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/5MJzh5rbfdY)

## What this video covers

This tutorial shows how to export an HTML email from Figma with the Emailify plugin and test it in different versions of Microsoft Outlook using Litmus.com. It covers exporting the HTML, uploading it into Litmus, selecting Outlook clients, and running previews to check how the email renders.

## Things you'll need

- Figma with the Emailify plugin available
- An exported HTML email from Emailify
- A Litmus.com account

## Steps

1. [ ] Open your Figma file, find Emailify in the Resources icon under the Plugins tab, and save or run the plugin from Saved plugins.
2. [ ] Assume the email design is ready, then click export HTML in Emailify and make sure upload host image URLs is selected before exporting.
3. [ ] Download the zip file, unzip it, and open the HTML email file in a code editor so you can copy the HTML.
4. [ ] In Litmus.com, go to the test tab, click Create new, choose Test, and click Bring in your email.
5. [ ] Use View more ways to create an email, paste in the HTML, add a subject line, and click Done to upload it.
6. [ ] Use Choose email clients to select the Outlook versions you want to test, then click Run previews.
7. [ ] Review the rendered Outlook previews, including desktop, web, mobile, and dark mode results.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=5MJzh5rbfdY)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-test-html-emails-in-outlook-with-exports-from-figma-using-emailify)
- [Read: Testing your HTML emails before sending](/emailify/export/testing)
- [Next: Send yourself tests of HTML emails from Figma with PutsMail](/emailify/tutorials/send-yourself-tests-of-html-emails-from-figma-with-putsmail)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/test-html-emails-on-mobile-with-exports-from-figma.md"
description: "The video shows how to export an HTML email from Figma with the Emailify Figma plugin and then test that HTML in Litmus.com on mobile devices and mobile email clients. It walks through uploading the exported code, choosing mobile previews, and checking how the email renders on iOS and Android clients like Apple Mail, Outlook iOS, and Gmail for Android."
---

# Test HTML emails on mobile with exports from Figma

> The video shows how to export an HTML email from Figma with the Emailify Figma plugin and then test that HTML in Litmus.com on mobile devices and mobile email clients. It walks through uploading the exported code, choosing mobile previews, and checking how the email renders on iOS and Android clients like Apple Mail, Outlook iOS, and Gmail for Android.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/yz2KQPFBzA0)

## What this video covers

The video shows how to export an HTML email from Figma with the Emailify Figma plugin and then test that HTML in Litmus.com on mobile devices and mobile email clients. It walks through uploading the exported code, choosing mobile previews, and checking how the email renders on iOS and Android clients like Apple Mail, Outlook iOS, and Gmail for Android.

## Things you'll need

- Emailify Figma plugin
- A Litmus.com account

## Steps

1. [ ] Open your Figma file, find Emailify in Resources or Saved plugins, and run the Emailify Figma plugin.
2. [ ] Click export HTML, keep upload hosted image URLs selected, and export the design to HTML.
3. [ ] Download the ZIP file, unzip it, and open the index.html file in a code editor to copy the HTML.
4. [ ] Go to Litmus.com, create a new email under the test tab, choose test, and bring in your email by pasting the raw HTML.
5. [ ] Open choose email clients, clear desktop and web-based clients, and expand the mobile and tablet section.
6. [ ] Select the mobile devices and clients you want, such as iOS 16 on iPhone 14 and iPhone 14 Pro Max, plus Gmail app on Android 11.
7. [ ] Click run previews, then open individual previews like Outlook iOS, Apple Mail, or Gmail for Android to inspect the rendered email.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=yz2KQPFBzA0)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-test-html-emails-on-mobile-with-exports-from-figma-using-emailify)
- [Read: Testing your HTML emails before sending](/emailify/export/testing)
- [Next: Test HTML emails in Outlook with exports from Figma](/emailify/tutorials/test-html-emails-in-outlook-with-exports-from-figma)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/translate-email-designs-in-figma-with-chatgpt.md"
description: "This tutorial shows how to use the Emailify Figma plugin to automatically translate an email design into multiple languages with either the ChatGPT API or a manual ChatGPT prompt. It also shows how to import the translated frames back into Figma and export the localized emails as HTML."
---

# Translate email designs in Figma with ChatGPT

> This tutorial shows how to use the Emailify Figma plugin to automatically translate an email design into multiple languages with either the ChatGPT API or a manual ChatGPT prompt. It also shows how to import the translated frames back into Figma and export the localized emails as HTML.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/6CqRT3FTALA)

## What this video covers

This tutorial shows how to use the Emailify Figma plugin to automatically translate an email design into multiple languages with either the ChatGPT API or a manual ChatGPT prompt. It also shows how to import the translated frames back into Figma and export the localized emails as HTML.

## Things you'll need

- An existing email design already set up in Emailify
- For the ChatGPT API method, an OpenAI account with billing and an API key

## Steps

1. [ ] Open a Figma file, run the Emailify plugin, and click Localize in the header.
2. [ ] Choose either ChatGPT API or ChatGPT prompt under the AI translation options.
3. [ ] For ChatGPT API, enter an OpenAI API key, choose a model, select the target languages, and click Translate and Import.
4. [ ] For ChatGPT prompt, click Generate prompt, then Copy prompt to clipboard, paste it into chatgpt.com, and copy the ChatGPT response.
5. [ ] Paste the ChatGPT reply into the Emailify field labeled paste the ChatGPT reply below, then click Translate Figma frame.
6. [ ] Review the newly created translated frames in Figma, such as French, Korean, and German versions.
7. [ ] If needed, preview the result as HTML and use Export HTML to generate the HTML, images, code, and ZIP file.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=6CqRT3FTALA)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-translate-email-designs-in-figma-with-chatgpt-automatically-using-emailify)
- [Read: Translating your email designs with ChatGPT](/emailify/localization/chatgpt)
- [Next: Translate email designs in Figma with the Lokalise API](/emailify/tutorials/translate-email-designs-in-figma-with-the-lokalise-api)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/translate-email-designs-in-figma-with-the-crowdin-api.md"
description: "This tutorial shows how to localize HTML email designs in Figma with the Emailify plugin by connecting it to Crowdin API, uploading email text strings, translating them in Crowdin, and importing the translated versions back into Figma. It also shows how to re-upload updated source text and export the finished translated emails to HTML."
---

# Translate email designs in Figma with the Crowdin API

> This tutorial shows how to localize HTML email designs in Figma with the Emailify plugin by connecting it to Crowdin API, uploading email text strings, translating them in Crowdin, and importing the translated versions back into Figma. It also shows how to re-upload updated source text and export the finished translated emails to HTML.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/qcQglNYqtJc)

## What this video covers

This tutorial shows how to localize HTML email designs in Figma with the Emailify plugin by connecting it to Crowdin API, uploading email text strings, translating them in Crowdin, and importing the translated versions back into Figma. It also shows how to re-upload updated source text and export the finished translated emails to HTML.

## Things you'll need

- A Figma file with an Emailify-ready email design
- A Crowdin account
- A Crowdin personal access token

## Steps

1. [ ] Open the Emailify Figma plugin from Resources or Saved plugins and load an existing Emailify-ready email design.
2. [ ] Create a private Crowdin project with String-based project enabled, then choose the source language and target languages.
3. [ ] In Emailify, open Localize, switch from Excel to Crowdin API, and paste a Crowdin personal access token with the required permissions.
4. [ ] Select the email frame and click Upload to send the text strings and screenshot from Figma to Crowdin.
5. [ ] Translate the uploaded strings in Crowdin and save the changes.
6. [ ] Back in Emailify, click Import Translations on the original page to create translated frames in Figma.
7. [ ] If the source copy changes in Figma, upload again to update the Crowdin source strings, then export the translated emails with Export HTML.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=qcQglNYqtJc)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-translate-email-designs-in-figma-with-the-crowdin-api-using-emailify)
- [Read: Translating your email designs with Crowdin](/emailify/localization/crowdin)
- [Next: Import spreadsheets to tables for HTML emails in Figma](/emailify/tutorials/import-spreadsheets-to-tables-for-html-emails-in-figma)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/translate-email-designs-in-figma-with-the-lokalise-api.md"
description: "The video shows how to translate an Emailify email design in Figma by connecting the Emailify plugin to a Lokalise project through the Lokalise API. It demonstrates uploading the design from Figma, entering translations in Lokalise, and importing the translated versions back into Figma as separate language frames."
---

# Translate email designs in Figma with the Lokalise API

> The video shows how to translate an Emailify email design in Figma by connecting the Emailify plugin to a Lokalise project through the Lokalise API. It demonstrates uploading the design from Figma, entering translations in Lokalise, and importing the translated versions back into Figma as separate language frames.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/s6-pYRm_B1c)

## What this video covers

The video shows how to translate an Emailify email design in Figma by connecting the Emailify plugin to a Lokalise project through the Lokalise API. It demonstrates uploading the design from Figma, entering translations in Lokalise, and importing the translated versions back into Figma as separate language frames.

## Things you'll need

- An Emailify Figma plugin installation
- A Lokalise account
- A Lokalise project with target languages set up

## Steps

1. [ ] Open a new Figma file, find the Emailify plugin in Resources, and run it or save it for later use.
2. [ ] Create an Emailify container for the email design, then click the Localize button in the Emailify plugin header.
3. [ ] Choose the Lokalise API option, create a Lokalise project, and copy the Project ID from the project URL.
4. [ ] Generate a Lokalise API Token with read and write access, then paste the Project ID and API Token into the Emailify Lokalise fields.
5. [ ] Select the email frame in Figma and click Upload to send the text content and screenshots to Lokalise.
6. [ ] Translate the text in Lokalise by editing the language fields, then return to Emailify and click Import Translations.
7. [ ] Review the newly created translated page in Figma and use Preview or Export HTML to export the localized emails.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=s6-pYRm_B1c)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-translate-email-designs-in-figma-with-the-lokalise-api-using-emailify)
- [Read: Translating your email designs with Lokalise](/emailify/localization/lokalise)
- [Next: Translate email designs in Figma with the Crowdin API](/emailify/tutorials/translate-email-designs-in-figma-with-the-crowdin-api)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/translate-html-email-designs-with-localization-in-figma.md"
description: "The video shows how to localize an Emailify email design in Figma by exporting text to an Excel spreadsheet, translating the locale columns, and importing the file back into Figma. It also shows how the localized frames can then be exported as HTML emails, including platform options like HTML, Klaviyo, and MailChimp."
---

# Translate HTML email designs with localization in Figma

> The video shows how to localize an Emailify email design in Figma by exporting text to an Excel spreadsheet, translating the locale columns, and importing the file back into Figma. It also shows how the localized frames can then be exported as HTML emails, including platform options like HTML, Klaviyo, and MailChimp.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/pZUOi6C7C5E)

## What this video covers

The video shows how to localize an Emailify email design in Figma by exporting text to an Excel spreadsheet, translating the locale columns, and importing the file back into Figma. It also shows how the localized frames can then be exported as HTML emails, including platform options like HTML, Klaviyo, and MailChimp.

## Things you'll need

- An email design already created in Emailify
- A spreadsheet editor such as Excel or Google Sheets

## Steps

1. [ ] Install Emailify from the Figma Community and open it from Plugins in your Figma file.
2. [ ] Select the email frame, click Localize, choose the locales you want, and export the text content to an Excel spreadsheet.
3. [ ] Translate the locale columns in the spreadsheet, leaving any text you want unchanged blank so it falls back to the original Figma text.
4. [ ] Drag and drop the updated spreadsheet back into the Localize section and click Localize Selected Frames to create translated copies on a new page.
5. [ ] Review the localized frames in Figma and, if needed, update the original component styles so the changes carry through to the translated instances.
6. [ ] Use Export HTML, choose the emails to export, select HTML or another platform option, and download the .zip file containing the translated emails and images.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=pZUOi6C7C5E)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-translate-html-email-designs-with-localization-in-figma-using-emailify)
- [Read: Localizing your email designs with text translations](/emailify/content/localization)
- [Next: Localize HTML email designs (with text formatting) in Figma](/emailify/tutorials/localize-html-email-designs-with-text-formatting-in-figma)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/upload-preview-links-for-html-emails-from-figma-to-netlify.md"
description: "This video shows how to use the Emailify Figma plugin to export an HTML email to Netlify and generate a shareable preview link. It also covers creating a Netlify personal access token, changing the generated site name, and opening or downloading the uploaded preview files."
---

# Upload preview links for HTML emails from Figma to Netlify

> This video shows how to use the Emailify Figma plugin to export an HTML email to Netlify and generate a shareable preview link. It also covers creating a Netlify personal access token, changing the generated site name, and opening or downloading the uploaded preview files.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/YZAILKYkyUM)

## What this video covers

This video shows how to use the Emailify Figma plugin to export an HTML email to Netlify and generate a shareable preview link. It also covers creating a Netlify personal access token, changing the generated site name, and opening or downloading the uploaded preview files.

## Things you'll need

- A Figma file with an email already designed using Emailify components.
- A Netlify account, or a way to create one for free.

## Steps

1. [ ] Open the Resources icon in Figma, search for Emailify under the Plugins tab, and run or save the plugin.
2. [ ] In Emailify, click Export HTML and choose Netlify under the Upload Preview Link section.
3. [ ] In Netlify, create a Personal access token from the applications page, then copy the token.
4. [ ] Paste the token into the Emailify field with the key icon to connect to Netlify and generate a new site.
5. [ ] If needed, change the Netlify site name, then refresh Emailify to load the updated site name and domain.
6. [ ] Fill in the email details and click Upload to Netlify to generate the HTML, upload the images, and publish the preview.
7. [ ] Open the Netlify Preview URL or download the zip file if you want a copy of the uploaded files.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=YZAILKYkyUM)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-upload-preview-links-for-html-emails-from-figma-to-netlify-using-emailify)
- [Read: Uploading your emails to Netlify (as a preview link)](/emailify/export/netlify)
- [Next: Export HTML emails from Figma to PDF previews](/emailify/tutorials/export-html-emails-from-figma-to-pdf-previews)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/uploading-your-emails-to-sendwithus.md"
description: "This tutorial shows how to use the Emailify Figma plugin to design an HTML email in Figma and export it directly to Sendwithus. It also explains how to set the correct unsubscribe footer, generate a Sendwithus API key, and upload the finished template with subject line and preheader text."
---

# Uploading your emails to Sendwithus

> This tutorial shows how to use the Emailify Figma plugin to design an HTML email in Figma and export it directly to Sendwithus. It also explains how to set the correct unsubscribe footer, generate a Sendwithus API key, and upload the finished template with subject line and preheader text.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/b99i9ZaXL6E)

## What this video covers

This tutorial shows how to use the Emailify Figma plugin to design an HTML email in Figma and export it directly to Sendwithus. It also explains how to set the correct unsubscribe footer, generate a Sendwithus API key, and upload the finished template with subject line and preheader text.

## Things you'll need

- Emailify installed in Figma.
- An Emailify email design ready to upload.
- A Sendwithus account with permission to create an API key.

## Steps

1. [ ] Open Figma, find Emailify under Resources > Plugins, and run it from Saved Plugins.
2. [ ] Create a new Emailify container for your email template and design the HTML email.
3. [ ] In the Footer Tab, choose the email service provider you use, such as SendGrid, so the correct unsubscribe tag is inserted.
4. [ ] Preview the HTML in the plugin to check the desktop and mobile versions.
5. [ ] Click Export HTML, choose Sendwithus under the Platforms group, and create a Sendwithus API key in your Sendwithus dashboard if needed.
6. [ ] Paste the API key into Emailify, optionally add a subject line and preheader text, then click Upload Export.
7. [ ] Open the Templates page in Sendwithus to confirm the uploaded template and verify the content, unsubscribe link, images, subject line, and preheader text.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=b99i9ZaXL6E)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-html-emails-from-figma-to-sendwithus-using-emailify)
- [Read: Uploading your emails to Sendwithus](/emailify/integrations/sendwithus)
- [Next: Export HTML emails from Figma to Brevo](/emailify/tutorials/export-html-emails-from-figma-to-brevo)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/use-500-free-html-email-components-in-your-figma-designs.md"
description: "This tutorial shows how to open the Emailify Figma plugin, add a new Emailify container, and use the online component library to copy and paste premium email components into a Figma email design. It also shows that edits made in Figma carry through to the exported HTML, and that links can be added through the settings panel before previewing the result."
---

# Use 500+ free HTML email components in your Figma designs

> This tutorial shows how to open the Emailify Figma plugin, add a new Emailify container, and use the online component library to copy and paste premium email components into a Figma email design. It also shows that edits made in Figma carry through to the exported HTML, and that links can be added through the settings panel before previewing the result.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/zMUQ3tE76Vo)

## What this video covers

This tutorial shows how to open the Emailify Figma plugin, add a new Emailify container, and use the online component library to copy and paste premium email components into a Figma email design. It also shows that edits made in Figma carry through to the exported HTML, and that links can be added through the settings panel before previewing the result.

## Things you'll need

- Figma
- Emailify Figma plugin

## Steps

1. [ ] Open your Figma file, search for Emailify from the actions icon, and run it from Saved Plugins.
2. [ ] Create a new email frame by entering a name and clicking Add New Emailify Container.
3. [ ] Browse the starter tabs or click the component icon to open the View Online Component Library.
4. [ ] Use the component library at emailify.hypermatic.com to filter and find a component, then click Copy Figma Component.
5. [ ] Paste the copied component into your Emailify frame with Command V or Control V.
6. [ ] Edit the layout, content, colors, and images in Figma; use the settings panel to add links to buttons if needed.
7. [ ] Click Preview to check the layout and confirm the design is ready for HTML export.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=zMUQ3tE76Vo)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-use-500-free-html-email-components-in-your-figma-designs-using-emailify)
- [Read: Creating a reusable component library](/emailify/design/library)
- [Next: Add elements to HTML email designs in Figma](/emailify/tutorials/easily-add-elements-to-html-email-designs-in-figma)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/emailify/tutorials/use-free-figma-email-templates-to-design-html-emails.md"
description: "This tutorial shows how to use the Emailify Figma plugin to start with free included email templates, customize them in Figma, and export the finished design as production-ready HTML. It also demonstrates how to mix and match components from different templates and preview the result before downloading."
---

# Use free Figma email templates to design HTML emails

> This tutorial shows how to use the Emailify Figma plugin to start with free included email templates, customize them in Figma, and export the finished design as production-ready HTML. It also demonstrates how to mix and match components from different templates and preview the result before downloading.

[← Back to Emailify Video Tutorials](/emailify/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/lLCTEAAoCWY
)

## What this video covers

This tutorial shows how to use the Emailify Figma plugin to start with free included email templates, customize them in Figma, and export the finished design as production-ready HTML. It also demonstrates how to mix and match components from different templates and preview the result before downloading.

## Things you'll need

- A Figma file
- The Emailify Figma plugin

## Steps

1. [ ] Open Figma, use the Resources icon to search for Emailify, and run or save the plugin for later.
2. [ ] In the plugin, add a new blank Emailify frame, or click the plus icon and browse Emailify Figma templates to start from a free template.
3. [ ] Open a template from the Figma Community page with Open in Figma, which duplicates it into your drafts.
4. [ ] Edit the template in Figma by changing text, images, colors, fonts, and by moving or copying rows, columns, buttons, and other components into a new Emailify frame.
5. [ ] Use Preview to check the real HTML layout and, if needed, open layer settings to adjust options like font sizes, padding, and mobile or desktop visibility.
6. [ ] When the design is ready, click Export HTML, choose the emails and any subject line or preview text, then export to HTML or send to a platform such as Klaviyo or MailChimp if configured.
7. [ ] Download the zip file, open the exported folders, and use the index.html and previews file to review the finished email in a browser.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=lLCTEAAoCWY)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-use-free-figma-email-templates-to-design-html-emails-using-emailify)
- [Read: Duplicating Figma Templates](/emailify/design/templates)
- [Next: Add UTM tracking code to HTML email links from Figma](/emailify/tutorials/add-utm-tracking-code-to-html-email-links-from-figma)
- [Open Emailify in the Figma Community](https://www.figma.com/community/plugin/910671699871076601)

---

---
url: "/faq.md"
description: "Find the right Hypermatic help for purchases, licenses, Figma plugins, troubleshooting, security reviews, and private account questions."
---

# Hypermatic support and FAQs

> Find the right Hypermatic help for purchases, licenses, Figma plugins, troubleshooting, security reviews, and private account questions.

Use this page to find support information that applies across all Hypermatic Figma plugins.

Choose a topic below for self-serve guidance. For a private purchase, subscription, refund, license key, billing email, or file-specific plugin issue, email [adam@hypermatic.com](mailto:adam@hypermatic.com).

## Billing, pricing, and purchases

  - [Pricing and PDF quotes](/faq/pricing.md): Current pricing, seat examples, checkout guidance, and PDF quote links.
  - [Billing and cancellations](/faq/billing.md): Manage subscriptions, update payment details, cancel plans, and understand VAT.
  - [Receipts and PDF invoices](/faq/receipts.md): Find Gumroad receipts, generate PDF invoices, and get help with missing receipts.
  - [Refund policy](/faq/refunds.md): Understand the initial purchase refund policy and the renewal review process.
  - [Procurement and vendor forms](/faq/procurement.md): Information for purchase orders, vendor setup, quote approvals, and procurement reviews.

## Licenses, seats, and trials

  - [How licenses work](/faq/licenses.md): Learn how Hypermatic licenses are delivered, activated, and used with Figma plugins.
  - [Managing license seats](/faq/seats.md): Understand seat counts, team access, license-user changes, and multi-seat plans.
  - [Free Pro trials](/faq/trials.md): How free Pro trial runs work and what to do when a trial has already been used.

## Setup and troubleshooting

  - [Install, run, and uninstall plugins](/figma/install-run-uninstall.md): Basic Figma plugin installation, launch, update, and uninstall steps.
  - [Figma plugin basics](/figma/plugin-basics.md): General plugin behavior, Figma account boundaries, file access, and common concepts.
  - [Plugin tutorials and walkthroughs](/figma/plugin-basics#find-plugin-tutorials-and-walkthroughs): Start from the right plugin tutorials page and find guided workflow examples faster.
  - [Common issues](/troubleshooting/common-issues.md): Quick fixes for activation, browser, download, Figma, and plugin workflow issues.
  - [Network, VPN, and firewall](/troubleshooting/network-vpn-firewall.md): Help for company networks, blocked downloads, proxy settings, and firewall allowlists.

## Security and account help

  - [Contact and account help](/faq/contact-and-account-help.md): Where to go for receipt recovery, Gumroad account issues, license access, and private support.
  - [Security overview](/security.md): Start here for plugin-specific security pages and general security review links.
  - [Privacy and data access](/security/privacy-and-data-access.md): How Hypermatic handles support logs, plugin data boundaries, and privacy or deletion questions.
  - [Vendor review](/security/vendor-review.md): Company, product, security, privacy, and procurement information for review teams.

## Get private account help

Email [adam@hypermatic.com](mailto:adam@hypermatic.com) for private purchase, subscription, refund, license-key, billing-email, or plugin-file questions.

For Gumroad checkout, receipt-account, or payment-account issues, contact [support@gumroad.com](mailto:support@gumroad.com).

---

---
url: "/faq/billing.md"
description: "Cancel a subscription, update payment details, change paid seats, troubleshoot checkout, and generate Gumroad invoices."
---

# Manage Hypermatic billing and subscriptions

> Cancel a subscription, update payment details, change paid seats, troubleshoot checkout, and generate Gumroad invoices.

Hypermatic Pro subscriptions are sold through Gumroad. Use the **Manage membership** or subscription settings link in a Gumroad receipt to manage the subscription.

| What you need to do | Where to do it |
| --- | --- |
| Cancel, change payment method, update a card, or change paid seats | The management link in your Gumroad receipt |
| Find a missing purchase | [Gumroad charge lookup](https://app.gumroad.com/charge) |
| Manage which Figma users occupy seats | [Hypermatic License Manager](https://license.hypermatic.com/) |
| Get private Hypermatic account help | [adam@hypermatic.com](mailto:adam@hypermatic.com) |
| Resolve a Gumroad account or payment-platform issue | [support@gumroad.com](mailto:support@gumroad.com) |

## How do I see my subscription information?

Open a Gumroad receipt for the Hypermatic product, then use **Manage membership** or the subscription settings link. That page shows the subscription status, billing cycle, seat count, renewal timing, and payment-management options.

If you do not have the receipt, try [Gumroad charge lookup](https://app.gumroad.com/charge) or see [Contact and account help](/faq/contact-and-account-help).

## Cancel a subscription

1. Open the Gumroad receipt for the Hypermatic product.
2. Select **Manage membership** or the subscription settings link.
3. Select **Cancel membership**.
4. Keep the confirmation email for your records.

## Will I lose access immediately after I cancel?

Cancellation does not always disable the license immediately. Access may remain active until the paid-through date. For account-specific status, email [adam@hypermatic.com](mailto:adam@hypermatic.com).

## Change payment method, update card details, or replace the credit card on file

Open a Gumroad receipt, click Manage membership or subscription settings, then choose the option to use a different card or update membership payment details.

If you need to update the credit card on file for an existing subscription, this is the same workflow.

If the payment update fails, try turning off your VPN, changing Wi-Fi network, checking that the ZIP code and billing address match the card, or using another card.

## Fix a declined card or blocked checkout

Try these steps:

1. Turn off any VPN and retry checkout.
2. Switch to another Wi-Fi or mobile hotspot.
3. Check that the ZIP code and billing area match your credit card.
4. Try a different card.
5. Contact [support@gumroad.com](mailto:support@gumroad.com) if Gumroad needs to review the checkout.

Gumroad handles the payment processing, so card-block or payment-platform issues often need Gumroad support.

## Change the number of paid seats

Open a Gumroad receipt, click Manage membership or subscription settings, then use the plus or minus buttons under Seats to update the total number of seats.

Use the [Hypermatic License Manager](https://license.hypermatic.com/) if you only need to change which Figma users are linked to the existing seats.

## What happens when I add seats?

Adding paid seats is an upgrade: Gumroad charges a prorated amount immediately and resets the subscription's renewal date. The new renewal date applies to all seats on the subscription, including existing seats.

For an annual subscription, the next renewal is one year after the seat increase. Adding more seats later resets that date again. Check the charge and renewal timing shown in Gumroad before confirming the change. See [Gumroad's membership guide](https://gumroad.com/help/article/278-guide-to-memberships#Adding-a-seat-cuuWa).

## What happens when I remove seats?

Reducing paid seats updates the subscription price at the end of the current billing cycle; it does not reset the renewal date like a seat increase. If you also need to free a seat for another user, remove the old user in the [Hypermatic License Manager](https://license.hypermatic.com/).

## Generate an invoice or VAT invoice

Open the Gumroad receipt and click Generate invoice. You can enter invoice details and download a PDF invoice.

If you need to add a VAT ID, use the invoice flow from the Gumroad receipt. If you entered a valid VAT ID during checkout, VAT should not be charged during checkout.

## Get billing help

For general billing questions, the support chat can explain the workflow, link to Gumroad charge lookup, link to the quote generator, and explain how seats and pricing work.

Private billing changes need Gumroad or email support. Use those channels for purchase lookups, subscription checks, cancellations, refunds, card updates, receipt email changes, or license-key changes.

---

---
url: "/faq/contact-and-account-help.md"
description: "Use chat, email, Gumroad support, charge lookup, or the license manager for the right kind of Hypermatic support request."
---

# Choose the right Hypermatic support channel

> Use chat, email, Gumroad support, charge lookup, or the license manager for the right kind of Hypermatic support request.

Choose a support channel based on whether your question is general, private, or controlled by Gumroad.

| Request | Best channel |
| --- | --- |
| General product, pricing, licensing, security, or troubleshooting question | [Hypermatic support chat](https://www.hypermatic.com/contact/#support) |
| Private purchase, subscription, refund, license, or file-specific question | [adam@hypermatic.com](mailto:adam@hypermatic.com) |
| Gumroad checkout, receipt-account, or payment-platform issue | [support@gumroad.com](mailto:support@gumroad.com) |
| Missing purchase or receipt | [Gumroad charge lookup](https://app.gumroad.com/charge) |
| Users linked to a license key | [Hypermatic License Manager](https://license.hypermatic.com/) |
| Pre-purchase approval document | [PDF Quote Generator](https://quote.hypermatic.com/) |

## What support email should I use?

For Hypermatic-specific help, email [adam@hypermatic.com](mailto:adam@hypermatic.com).

For Gumroad checkout, receipt-account, or payment-platform issues, email [support@gumroad.com](mailto:support@gumroad.com).

## How do I change the email address on my Gumroad receipts?

Gumroad controls the email address used for purchase and subscription receipts. Email [support@gumroad.com](mailto:support@gumroad.com) and ask them to update the address on your behalf.

If you are trying to find a purchase before contacting Gumroad, use [Gumroad charge lookup](https://app.gumroad.com/charge). For help with a Hypermatic license or plugin after that, email [adam@hypermatic.com](mailto:adam@hypermatic.com).

## Support is email-first

Hypermatic support does not offer phone support, scheduled calls, or live account help by chat.

Use the support chat for public documentation questions. Use email for private purchase, billing, license, or file-specific requests.

If clicking a `mailto:` link does not open your email app, copy and paste `adam@hypermatic.com` into webmail or another mail client instead.

## Where do I log in or manage my account?

There is not one general Hypermatic customer login for plugin purchases, receipts, and license help.

Use the path that matches what you are trying to recover:

- Receipt or purchase lookup: search for your Gumroad receipt, then try [https://app.gumroad.com/charge](https://app.gumroad.com/charge)
- License seat management: use the [Hypermatic License Manager](https://license.hypermatic.com/) with your license key
- Receipt email address or Gumroad account issue: contact [support@gumroad.com](mailto:support@gumroad.com)
- Hypermatic account-specific help: email [adam@hypermatic.com](mailto:adam@hypermatic.com) with the product name and likely purchase email

If you are not sure which email was used at checkout, start with Gumroad charge lookup or email Adam privately so the request can be checked without posting private details in chat.

For billing actions such as subscription status, seat-count changes, payment updates, or cancellations, see [Manage Hypermatic billing and subscriptions](/faq/billing).

## Use the support chat for general questions

Use the [Hypermatic support chat](https://www.hypermatic.com/contact/#support) for public, general support questions from the Hypermatic docs, including:

- Pricing and seat calculations
- Direct Gumroad checkout links
- PDF quote generator links
- Free Pro trial runs
- General license and seat concepts
- Receipts and invoice workflow
- Cancellation workflow
- Security and privacy docs
- Figma plugin installation basics
- Common troubleshooting steps

## Email Adam for private account help

Email [adam@hypermatic.com](mailto:adam@hypermatic.com) when you need account-specific help, such as:

- A refund request
- A license key that is not working
- Help matching a purchase to an email address
- A plugin bug that needs a file or screenshot reviewed
- A subscription status question that needs private account verification
- A pricing or quote question that does not match the self-serve quote generator

## Include useful diagnostic details

Include enough context to investigate quickly:

- Product name
- Purchase email address, if relevant
- License key only if it is necessary and you are emailing privately
- Screenshot or short video for plugin issues
- Exported file or ZIP if the issue involves exported output
- Figma page/frame name if a plugin issue happens in a specific location
- The exact error message, if one appears

Do not send card numbers, passwords, or private credentials.

## Contact Gumroad for platform-account issues

Contact [support@gumroad.com](mailto:support@gumroad.com) for Gumroad account or checkout-platform issues, such as:

- Card checkout review or payment-platform blocking
- Changing the email address attached to Gumroad receipts
- Gumroad receipt-account access
- Problems with Gumroad's charge lookup page

If you need Hypermatic-specific refund, license, or plugin help, email Adam.

---

---
url: "/faq/licenses.md"
description: "Find your Hypermatic license key, activate Pro, understand seats, and manage the Figma users linked to a license."
---

# Understand and activate Hypermatic Pro licenses

> Find your Hypermatic license key, activate Pro, understand seats, and manage the Figma users linked to a license.

Hypermatic Pro licenses unlock paid features in Hypermatic Figma plugins. Gumroad sends the license key to the email address used at checkout.

The license model has three parts:

- **License key:** unlocks a specific plugin or the Pro Bundle.
- **Paid seat count:** controls how many Figma users may use the key.
- **Linked Figma users:** managed through the [Hypermatic License Manager](https://license.hypermatic.com/).

## What is a license key?

A license key is the code that unlocks Pro access for a Hypermatic plugin or the Pro Bundle. You receive the key in your Gumroad receipt after purchase.

Use the license key itself when activating a plugin. Do not use the order ID, receipt number, email address, or invoice number as the license key.

## What is a seat?

A seat is one paid user on a license. If a license has 7 seats, up to 7 Figma users can be linked to that key.

The license seat count controls how many Figma users can use the Pro features. It does not create separate Figma accounts and it does not change your Figma team membership.

## Activate Pro in a plugin

1. Purchase the Pro license from the Hypermatic product page or Gumroad checkout.
2. Open the Gumroad receipt and copy the license key.
3. Run the Figma plugin.
4. Click the upgrade or unlock option in the plugin.
5. Paste the license key and unlock Pro access.

If the plugin says the key is invalid, make sure you copied the license key itself and not a receipt number or order ID.

## Manage linked Figma users

Use the [Hypermatic License Manager](https://license.hypermatic.com/) to view and manage which Figma users are linked to a license key.

The license manager is useful when someone leaves your team, a contractor finishes a project, or you need to move a seat from one Figma user to another.

## Reassign a seat

Open the [Hypermatic License Manager](https://license.hypermatic.com/), enter your license key, remove the old Figma user from the license, then share the same key with the new user.

This is the usual workflow when a team member changes, a freelancer finishes a project, or someone new needs to start using the plugin.

## Can multiple people share one seat?

No. One seat is intended for one Figma user. If multiple people need to use Pro features, buy enough seats for those Figma users.

## Can I use a Hypermatic plugin for client or commercial work?

Yes. You can use a Hypermatic plugin for yourself or your own team or business, including client work. A Pro license is still seat-based, so each Figma user who needs Pro features needs a seat.

You may not resell, redistribute, or use a license purchase for someone outside your own team or business. For the full terms that apply to purchases and subscriptions, read the [Hypermatic Terms of Service](https://www.hypermatic.com/terms/).

## Can I use one license on multiple computers?

A license is tied to the Figma user using the plugin, not to a specific computer. If the same Figma user is signed in on another computer, the seat is still for that same Figma user.

## Change the paid seat count

You can update seats from the Manage membership link in your Gumroad receipt. You can also use the [PDF Quote Generator](https://quote.hypermatic.com/) to generate a quote for the exact product and seat count before purchase.

See [Hypermatic pricing and PDF quotes](/faq/pricing) for current prices, seat calculations, checkout links, and quote examples.

## Find a missing license key

License key lookups are private account support requests, so they need to be handled by email. The support chat can explain where license keys are usually found; email Adam when the request needs a purchase lookup, license-key retrieval, key change, or Gumroad account check.

If you need account-specific license help, email [adam@hypermatic.com](mailto:adam@hypermatic.com) with the product name and the purchase email address. Do not paste private license keys into public chat tools.

---

---
url: "/faq/plans.md"
description: "Compare Free-version access, plugin-specific Pro trial allowances, paid plugin licenses, and the Hypermatic Pro Bundle."
---

# Compare Hypermatic Free, Pro, and Bundle access

> Compare Free-version access, plugin-specific Pro trial allowances, paid plugin licenses, and the Hypermatic Pro Bundle.

Hypermatic plugins can be installed and tested before purchase. Most plugins include 10 free Pro trial runs, then continue with Free-version access unless you activate a paid license. Weblify includes 25 free Pro uses.

| Access | What it provides |
| --- | --- |
| Free Pro trial runs | Usually 10 uses of the plugin's Pro workflow without a card; Weblify includes 25 |
| Free version | Ongoing access to features that are not locked behind Pro |
| Individual Pro license | Paid features for one specific plugin |
| Pro Bundle | Paid access to every plugin included in the bundle |

## Free-version access

Hypermatic plugins continue to offer Free-version access, but there is not a separate always-free Pro plan.

The usual path is:

1. Install the plugin from Figma Community.
2. Use the included free Pro trial runs to test the paid workflow.
3. Keep using the plugin's Free version, or buy Pro if you need the paid features.

See [Hypermatic free Pro trial runs](/faq/trials) for the exact trial details.

## What is included in the Free version?

The Free version lets you install the plugin, test the general workflow, and continue using any features that are not locked behind Pro access.

Free access varies by plugin because each Hypermatic plugin solves a different workflow.

## Paid Pro access

Pro unlocks the paid features for the plugin. These are the features intended for production workflows, repeated use, and professional team usage.

Examples include unlimited exports, advanced options, production workflow features, platform integrations, or other plugin-specific Pro capabilities depending on the product.

## How many free Pro trial runs are included?

Most Hypermatic plugins include 10 free Pro trial runs. Weblify includes 25 free Pro uses.

See [Hypermatic free Pro trial runs](/faq/trials) for the general rules and [Weblify Free vs Pro](/weblify/faq/plans) for the current exception.

## Pro Bundle access

The Pro Bundle gives access to every Hypermatic plugin in the bundle for each paid bundle seat.

If one person needs every plugin, choose 1 bundle seat. If 7 people need every plugin, choose 7 bundle seats.

The Pro Bundle is priced at $99/user/month or $999/user/year.

## Where can I compare plugin-specific Free and Pro features?

Each plugin has its own Free vs Pro page:

- [Bannerify Free vs Pro](/bannerify/faq/plans)
- [Commentful Free vs Pro](/commentful/faq/plans)
- [Convertify Free vs Pro](/convertify/faq/plans)
- [CopyDoc Free vs Pro](/copydoc/faq/plans)
- [Crypto Free vs Pro](/crypto/faq/plans)
- [Emailify Free vs Pro](/emailify/faq/plans)
- [Favvy Free vs Pro](/favvy/faq/plans)
- [HyperCrop Free vs Pro](/hypercrop/faq/plans)
- [Pitchdeck Free vs Pro](/pitchdeck/faq/plans)
- [Pixelay Free vs Pro](/pixelay/faq/plans)
- [TinyImage Free vs Pro](/tinyimage/faq/plans)
- [Weblify Free vs Pro](/weblify/faq/plans)

## Where can I buy Pro?

Use the product pricing page, Gumroad checkout, or the examples in [Hypermatic pricing and PDF quotes](/faq/pricing).

For a pre-purchase approval PDF, use the [PDF Quote Generator](https://quote.hypermatic.com/).

---

---
url: "/faq/pricing.md"
description: "Compare current Hypermatic Pro prices, calculate seat totals, open Gumroad checkout, and generate a PDF quote."
---

# Calculate Hypermatic pricing and generate a PDF quote

> Compare current Hypermatic Pro prices, calculate seat totals, open Gumroad checkout, and generate a PDF quote.

Hypermatic Pro licenses are priced per Figma user. Choose one seat for each person who needs the plugin's Pro features.

Prices are in USD and exclude sales tax or VAT. Gumroad may add tax at checkout depending on your location. You can choose monthly or yearly billing, and yearly plans are billed once per year.

**Ready to plan a purchase?** [Open the PDF Quote Generator](https://quote.hypermatic.com/) for a downloadable estimate, or use the product links below to choose seats and billing at checkout.

To calculate a total:

1. Choose the product and billing cycle.
2. Multiply its per-user price by the number of Figma users.
3. Use Gumroad checkout for the final tax-inclusive amount, or create an approval document with the [PDF Quote Generator](https://quote.hypermatic.com/).

## Current Pro prices

| Product | Monthly price | Yearly price | Next step |
| --- | ---: | ---: | --- |
| Bannerify Pro | $49/user/month | $499/user/year | [View or buy](https://www.hypermatic.com/bannerify/#pro) |
| Commentful Pro | $29/user/month | $299/user/year | [View or buy](https://www.hypermatic.com/commentful/#pro) |
| Convertify Pro | $49/user/month | $499/user/year | [View or buy](https://www.hypermatic.com/convertify/#pro) |
| CopyDoc Pro | $29/user/month | $299/user/year | [View or buy](https://www.hypermatic.com/copydoc/#pro) |
| Crypto Pro | $19/user/month | $199/user/year | [View or buy](https://www.hypermatic.com/crypto/#pro) |
| Emailify Pro | $49/user/month | $499/user/year | [View or buy](https://www.hypermatic.com/emailify/#pro) |
| Favvy Pro | $10/user/month | $99/user/year | [View or buy](https://www.hypermatic.com/favvy/#pro) |
| HyperCrop Pro | $16/user/month | $159/user/year | [View or buy](https://www.hypermatic.com/hypercrop/#pro) |
| Pitchdeck Pro | $29/user/month | $299/user/year | [View or buy](https://www.hypermatic.com/pitchdeck/#pro) |
| Pixelay Pro | $20/user/month | $199/user/year | [View or buy](https://www.hypermatic.com/pixelay/#pro) |
| TinyImage Pro | $20/user/month | $199/user/year | [View or buy](https://www.hypermatic.com/tinyimage/#pro) |
| Weblify Pro | $20/user/month | $199/user/year | [View or buy](https://www.hypermatic.com/weblify/#pro) |
| Pro Bundle | $99/user/month | $999/user/year | [View or buy](https://www.hypermatic.com/bundle/) |

## Calculate the required seats

One seat is for one Figma user. If 7 people need to use Emailify Pro, choose 7 Emailify seats. If 7 people need access to the Pro Bundle, choose 7 bundle seats.

After purchase, you can use the [Hypermatic License Manager](https://license.hypermatic.com/) to manage which Figma users are linked to the seats on your license key.

If you need to change the paid number of seats on an active subscription, use the Manage membership link in your Gumroad receipt. Adding seats triggers an immediate prorated charge and resets the renewal date for all seats. Removing seats changes the price at the end of the current billing cycle. See [seat-change billing details](/faq/billing#what-happens-when-i-add-seats).

## Buy through Gumroad

Hypermatic Pro licenses are purchased through Gumroad checkout. The product pricing page lets you choose the billing cycle and number of seats before buying.

For account-specific billing help, email [adam@hypermatic.com](mailto:adam@hypermatic.com).

## Generate a PDF quote before purchase

Use the [PDF Quote Generator](https://quote.hypermatic.com/) to enter your company details, choose the product and number of seats, and download a PDF quote before buying.

The smoothest procurement path is a PDF quote plus online card checkout through Gumroad. Hypermatic does not support purchase orders, bank transfers, custom procurement terms, vendor onboarding forms, or custom security questionnaires for self-serve Pro licenses.

For more detail, see [Procurement](/faq/procurement).

## Emailify pricing examples

Emailify Pro is $49/user/month or $499/user/year.

| Seats | Monthly total | Yearly total |
| ---: | ---: | ---: |
| 1 seat | $49/month | $499/year |
| 7 seats | $343/month | $3,493/year |

Direct links for the common Emailify examples:

- 1 seat monthly: [checkout](https://hypermatic.gumroad.com/l/emailify?quantity=1) · [PDF quote](https://quote.hypermatic.com/?emailify=1)
- 1 seat yearly: [checkout](https://hypermatic.gumroad.com/l/emailify?quantity=1&yearly=true) · [PDF quote](https://quote.hypermatic.com/?emailify=1&yearly=true)
- 7 seats monthly: [checkout](https://hypermatic.gumroad.com/l/emailify?quantity=7) · [PDF quote](https://quote.hypermatic.com/?emailify=7)
- 7 seats yearly: [checkout](https://hypermatic.gumroad.com/l/emailify?quantity=7&yearly=true) · [PDF quote](https://quote.hypermatic.com/?emailify=7&yearly=true)

Yearly Emailify pricing is shown on the pricing page as about $42/user/month when billed yearly, because $499/year divided across 12 months is approximately $42/month.

## Estimate another product or seat count

Multiply the per-user price by the number of Figma users who need access.

For example:

- 3 seats of TinyImage monthly: $20 x 3 = $60/month
- 5 seats of Pitchdeck yearly: $299 x 5 = $1,495/year
- 2 seats of the Pro Bundle yearly: $999 x 2 = $1,998/year

Use the checkout page or PDF Quote Generator for the final seat count, billing cycle, and tax calculation before purchase.

[Generate a PDF quote](https://quote.hypermatic.com/) or return to [Hypermatic plans and trials](/faq/plans) if you are still comparing options.

---

---
url: "/faq/procurement.md"
description: "Use PDF quotes, Gumroad checkout, receipts, invoices, and public review documents in a self-serve procurement workflow."
---

# Purchase Hypermatic through your procurement process

> Use PDF quotes, Gumroad checkout, receipts, invoices, and public review documents in a self-serve procurement workflow.

Hypermatic supports a self-serve procurement workflow with a PDF quote before purchase and Gumroad documents after purchase.

## Supported procurement workflow

1. Generate a PDF quote with company details.
2. Share the PDF quote internally for approval.
3. Complete the purchase through Gumroad checkout by card.
4. Use the Gumroad receipt to generate a PDF invoice after purchase.

| Supported | Not supported |
| --- | --- |
| PDF quotes for internal approval | Purchase-order payment terms |
| Online card checkout through Gumroad | Bank transfers |
| Gumroad receipts and PDF invoices | Supplier onboarding portals |
| Public security and privacy documentation | Custom vendor forms or security questionnaires |

## How do I generate a PDF quote?

Use the [Hypermatic PDF Quote Generator](https://quote.hypermatic.com/). Enter your company details, choose the product and number of seats, then download the PDF quote directly.

You can also generate prefilled quote links. For example:

- Emailify, 7 seats, monthly quote: [https://quote.hypermatic.com/?emailify=7](https://quote.hypermatic.com/?emailify=7)
- Emailify, 7 seats, yearly quote: [https://quote.hypermatic.com/?emailify=7&yearly=true](https://quote.hypermatic.com/?emailify=7&yearly=true)

For pricing examples and PDF quote guidance, see [Hypermatic pricing and PDF quotes](/faq/pricing).

## Purchase orders, invoice terms, and bank transfers

Hypermatic does not support purchase orders, invoice payment terms, or bank transfers as separate payment processes. Pro licenses are purchased online through Gumroad checkout by card.

You can use a PDF quote before purchase for internal approval, and the Gumroad receipt after purchase to generate a PDF invoice.

## Vendor onboarding forms and questionnaires

Hypermatic does not complete custom supplier onboarding forms, procurement portals, vendor registration forms, or company-specific purchasing paperwork.

Use the public security and privacy docs plus the PDF quote generator for internal review. If procurement needs a simple clarification that is not covered by public docs, email Adam.

For security and privacy information, use the public docs:

- [Security overview](/security)
- [Privacy and data access](/security/privacy-and-data-access)
- [Vendor review information](/security/vendor-review)

## Generate a PDF invoice after purchase

Open the Gumroad receipt and click **Generate invoice** to create a PDF invoice.

See [Receipts and PDF invoices](/faq/receipts).

## Get an exact standard quote

For standard products, seat counts, and billing cycles, use the [PDF Quote Generator](https://quote.hypermatic.com/) or the examples on the pricing page.

Hypermatic does not create custom procurement terms, complete vendor forms, or negotiate custom pricing. If your procurement question is account-specific and is not covered by the self-serve quote flow, email [adam@hypermatic.com](mailto:adam@hypermatic.com).

---

---
url: "/faq/receipts.md"
description: "Recover a Hypermatic purchase receipt, view purchase history, generate a PDF invoice, or request account-specific help."
---

# Find a Gumroad receipt and generate a PDF invoice

> Recover a Hypermatic purchase receipt, view purchase history, generate a PDF invoice, or request account-specific help.

Hypermatic purchases are processed by Gumroad. Gumroad sends receipts by email after checkout.

To recover a receipt:

1. Search every relevant inbox for `noreply@customers.gumroad.com`.
2. Check spam, junk, promotions, and archived mail.
3. Try [Gumroad charge lookup](https://app.gumroad.com/charge).
4. If you have the license key, check purchase history in the [Hypermatic License Manager](https://license.hypermatic.com/).
5. Email [adam@hypermatic.com](mailto:adam@hypermatic.com) if the purchase still cannot be identified.

## Where are my receipts sent from?

Receipts are sent by Gumroad from `noreply@customers.gumroad.com` to the email address used at checkout.

If you used a work email, check that inbox. If someone else bought the license for your team, the receipt may be in their inbox.

## Search for a missing receipt

Try these steps:

1. Search your email for `noreply@customers.gumroad.com`.
2. Search for the product name, such as Emailify, Bannerify, Convertify, or TinyImage.
3. Check spam, junk, promotions, and archived mail.
4. Try Gumroad's charge lookup page: [https://app.gumroad.com/charge](https://app.gumroad.com/charge).
5. If you have the license key, enter it into the [Hypermatic License Manager](https://license.hypermatic.com/) to view purchase history.

## Generate a PDF invoice

Open your Gumroad receipt and click the Generate invoice link. Gumroad lets you enter invoice details and download the PDF invoice from the receipt.

If you cannot find the receipt, use [Gumroad charge lookup](https://app.gumroad.com/charge) first.

## Add VAT or tax invoice details

Use the Generate invoice link in the Gumroad receipt. If VAT was charged and you need to enter a VAT ID, Gumroad's invoice flow can handle that from the receipt.

If you entered a valid VAT ID during checkout, VAT should not be charged at checkout.

## Change the receipt email address

If you need a receipt email change or an e-mail account change for a Gumroad receipt, contact Gumroad support at [support@gumroad.com](mailto:support@gumroad.com) and ask them to update the email address attached to the purchase.

If you need help identifying which subscription or product is involved before contacting Gumroad, email [adam@hypermatic.com](mailto:adam@hypermatic.com).

## Request account-specific receipt help

Start with [Gumroad charge lookup](https://app.gumroad.com/charge), your email inbox, or the [Hypermatic License Manager](https://license.hypermatic.com/) if you still have the license key.

If you still cannot find the receipt, or if you need help with a receipt tied to a different email address, email [adam@hypermatic.com](mailto:adam@hypermatic.com) with the product name, purchase email address, and any details that may help identify the purchase. That is the best route for receipt resend requests or purchase history questions that need a human check.

---

---
url: "/faq/refunds.md"
description: "Understand the initial 30-day refund policy, request a renewal review, and provide the information needed to assess a refund."
---

# Request a Hypermatic refund

> Understand the initial 30-day refund policy, request a renewal review, and provide the information needed to assess a refund.

If you do not see value within the first 30 days after your initial subscription purchase, email [adam@hypermatic.com](mailto:adam@hypermatic.com) to request a refund.

| Charge | How it is handled |
| --- | --- |
| Initial subscription purchase | Covered by the 30-day refund policy |
| Subscription renewal | Reviewed separately from an initial-purchase refund |

## Request an initial-purchase refund

If you do not see value within the first 30 days after the initial purchase of a subscription, email [adam@hypermatic.com](mailto:adam@hypermatic.com) and explain what happened.

Include:

- Product name
- Purchase email address
- A short note about why the plugin did not work for your workflow
- Any relevant screenshots, exported files, or error messages if there was a technical issue

## Request a renewal review

Renewals after an existing subscription period are handled differently. Make a note of renewal dates and cancel before renewal if you no longer need the plugin.

If you believe a renewal needs special review, email [adam@hypermatic.com](mailto:adam@hypermatic.com) with the product name and purchase email address.

## Prevent another renewal

Cancel the subscription from the **Manage membership** link in your Gumroad receipt so it does not renew again, then email Adam if you want the renewal reviewed. Renewal status and refund reviews need to be handled by email.

## Include the required information

Refund requests need to be reviewed by email. The support chat can explain the refund policy; purchase checks, payment-record verification, and refund processing are handled through email.

Send refund requests to [adam@hypermatic.com](mailto:adam@hypermatic.com) with the product name, purchase email address, and a short explanation of what happened.

## Choose the correct support contact

For Hypermatic refund decisions, email Adam. Gumroad may be needed for checkout or receipt-account issues, but refund requests for Hypermatic products should start with [adam@hypermatic.com](mailto:adam@hypermatic.com).

## Report a technical problem with the refund request

Email Adam with the product name, a screenshot or video, the exported file if relevant, and the specific Figma page/frame where the issue happens.

A small reproducible example helps the issue get investigated quickly.

---

---
url: "/faq/seats.md"
description: "Reassign existing seats, change the paid seat count, understand prorated charges, and manage linked Figma users."
---

# Manage and reassign Hypermatic license seats

> Reassign existing seats, change the paid seat count, understand prorated charges, and manage linked Figma users.

Hypermatic Pro licenses are seat-based. One seat is for one Figma user. If your team has 7 people who need to use a plugin, choose 7 seats.

Two different tools control seats:

| Change | Tool |
| --- | --- |
| Replace one linked Figma user with another | [Hypermatic License Manager](https://license.hypermatic.com/) |
| Increase or reduce the number of paid seats | **Manage membership** in the Gumroad receipt |

## Reassign an existing seat or add a new team member

1. Open the [Hypermatic License Manager](https://license.hypermatic.com/).
2. Enter your license key.
3. Review which Figma users are linked to the key.
4. Remove users who no longer need access.
5. Share the same key with the new Figma user who should use the seat.

## I added a member on Gumroad. How do I assign the seat?

If you already increased the paid seat count in Gumroad, the next step is to link that new seat to the correct Figma user.

1. Open the [Hypermatic License Manager](https://license.hypermatic.com/).
2. Enter the same license key from the Gumroad receipt.
3. Share that key with the new team member or user who needs access.
4. Ask them to unlock the plugin with that same key from their own Figma account.

If the old seat is still occupied, remove the previous Figma user in the license manager first.

## Free a seat for another person

Open the license manager, remove the old Figma user from the key, then ask the new user to unlock the plugin with the same license key.

This is useful when someone leaves a team, a contractor finishes, or a different designer needs to use the plugin.

## Replace an employee or contractor

For a multi-seat license, open the Hypermatic License Manager, remove the old Figma user from the license key, then share the same license key with the new Figma user. The new user can unlock the plugin with that key.

This changes which Figma users are linked to the key. It does not change the number of paid seats on the subscription.

## Reassigning users versus changing paid seats

Reassigning a user means removing one Figma user from the license key and allowing another Figma user to use that existing seat. Use the Hypermatic License Manager for this.

Changing the number of paid seats means increasing or reducing how many seats the subscription includes. Use the **Manage membership** link in the Gumroad receipt for this.

## Do we get one license key or multiple license keys for a multi-seat purchase?

A multi-seat purchase uses one license key with multiple allowed Figma users. Share the same license key with the team members who should use the paid seats, then manage the linked Figma users in the Hypermatic License Manager.

## Add paid seats

Open a Gumroad receipt for the subscription, select the **Manage membership** or subscription settings link, then use the plus button under **Seats** to increase the number of seats.

Adding paid seats is an upgrade: Gumroad charges a prorated amount immediately and resets the renewal date for all seats on the subscription. For an annual subscription, the next renewal is one year after the seat increase. Check Gumroad's charge and renewal timing before confirming. See [seat-upgrade billing details](/faq/billing#what-happens-when-i-add-seats).

## Remove paid seats

Open a Gumroad receipt for the subscription, select the **Manage membership** or subscription settings link, then use the minus button under **Seats** to reduce the number of seats.

Reducing paid seats updates the subscription price at the end of the current billing cycle; it does not reset the renewal date like a seat increase.

## Understand prorated seat charges

Gumroad adjusts the immediate upgrade charge for the unused portion of your existing subscription period. The charge accounts for the upgraded subscription and its new renewal date, rather than only adding seats for the remainder of the old cycle. See [Gumroad's membership guide](https://gumroad.com/help/article/278-guide-to-memberships#Adding-a-seat-cuuWa) and check the amount shown before confirming.

## Does changing seats change who can use the license?

Changing the seat count changes how many Figma users can be linked to the key. The license manager controls which specific Figma users are using those seats.

If you add seats, the license can support more Figma users. If you remove seats, make sure only the remaining allowed number of users are linked.

## Does "add user" or "assign seat" mean the same thing?

Usually, yes. People often say "add a user", "add a member", or "assign a seat" when they mean one of two different actions:

- Increase the number of paid seats in Gumroad.
- Link an existing seat to a different Figma user in the license manager.

Use Gumroad when you need more total seats. Use the license manager when you need to decide which people use those seats.

## Get help with seat changes

Use the [Hypermatic License Manager](https://license.hypermatic.com/) to change which Figma users are linked to an existing license key. Use the **Manage membership** link in your Gumroad receipt to change the paid seat count on a subscription.

The support chat can explain those workflows. Private license or subscription changes need the self-serve tools or email support. Use the license manager for linked Figma users, Gumroad for paid seat counts, and email [adam@hypermatic.com](mailto:adam@hypermatic.com) for account-specific help.

---

---
url: "/faq/trials.md"
description: "Try most Hypermatic plugins' Pro workflows 10 times without a card, understand Weblify's 25-use exception, and continue with Free or paid access."
---

# Use Hypermatic free Pro trial runs

> Try most Hypermatic plugins' Pro workflows 10 times without a card, understand Weblify's 25-use exception, and continue with Free or paid access.

Most Hypermatic Figma plugins include 10 free Pro trial runs so you can test the workflow before buying a Pro license.

> **Note:** Weblify is the current exception: it includes 25 free uses of its Pro features. See [Weblify Free vs Pro](/weblify/faq/plans) for its feature-specific details.

The trial lifecycle is:

1. Install the plugin from Figma Community.
2. Use the included Pro trial runs without entering a card.
3. Continue with the plugin's Free version after the trial runs are used.
4. Enter a paid license key if you want ongoing Pro access.

## Free access after the trial

Hypermatic does not use a separate permanent free-plan checkout tier for these plugins.

Instead, most plugins include 10 free Pro trial runs, and the plugin continues with its Free version after those trial runs are used. Weblify includes 25 free Pro uses. If you want to keep using Pro-only features after that, you need a paid Pro license key.

See [Free vs Pro plans](/faq/plans) for the general Free-version and Pro-version overview.

## Understand the remaining-use message

If a plugin says you have free Pro uses left, it means the plugin is still in its free Pro trial state for that Figma user and plugin. This is expected before a paid license key has been used to unlock Pro.

The wording may appear as free Pro uses, free Pro trials, or free Pro trial runs. These terms refer to the included trial allowance for that plugin.

## Activate a license after buying

If you already bought a Pro license but still see free Pro uses left, the plugin may not be unlocked for the current Figma user yet. Open the plugin and enter your Pro license key when prompted, or press **CTRL + K** while the plugin window is open to bring up the license key prompt again.

If your team uses a multi-seat license, make sure the current Figma user is linked to one of the paid seats in the Hypermatic License Manager.

## No cancellation is required

Free Pro trial runs are not a subscription and do not need to be cancelled. They run out after the included free Pro uses for that Figma user and plugin have been used.

## No credit card is required

You can install and run the Hypermatic Figma plugins from Figma Community and test the free Pro trial runs without entering a credit card.

Start here: [Hypermatic on Figma Community](https://www.figma.com/@hypermatic)

## How many free Pro trial runs do I get?

Most plugins include 10 free Pro trial runs. Weblify includes 25 free Pro uses; see [Weblify Free vs Pro](/weblify/faq/plans) for details.

## After all trial runs are used

After the free Pro trial runs are used, the plugin continues to offer the Free version, but Pro-only features require a paid Pro license key.

## Trial runs are not a subscription trial

The free Pro trial runs are a way to test the Pro workflow inside the plugin. They are not a card-backed monthly subscription trial.

You do not need to cancel the free Pro trial runs. If you do not buy a Pro license, the plugin continues with the Free version after the trial runs are used.

## Test before requesting approval

Try the plugin first, then use the pricing page or [PDF Quote Generator](https://quote.hypermatic.com/) to prepare an approval request.

For pricing examples and quote links, see [Hypermatic pricing and PDF quotes](/faq/pricing).

## Get help with trial runs

Trial reset requests and private account checks need email support. The chat can explain how trials work and where to find the right license or pricing information.

If you need help with a trial or license issue, email [adam@hypermatic.com](mailto:adam@hypermatic.com) with the plugin name and a short description of what happened.

---

---
url: "/favvy/ai-agents.md"
description: "Install the Hypermatic Agent Skill for Favvy and give Codex, Claude Code, Grok, and compatible agents the correct favicon workflows."
---

# Use Favvy with AI agents

> Install the Hypermatic Agent Skill for Favvy and give Codex, Claude Code, Grok, and compatible agents the correct favicon workflows.

Hypermatic Agent Skills give your AI agent a concise Favvy playbook. The Favvy skill guides source preparation, favicon and PWA export, code integration, and browser checks without confusing a local file edit with a deployed website.

- [Install Hypermatic Agent Skills](https://hypermatic.ai/): Copy the terminal installer or the no-terminal prompt. One install includes all 12 Hypermatic plugin skills.

## Install the Favvy skill

1. Open [Hypermatic Agent Skills](https://hypermatic.ai/).
2. Copy the terminal command, or copy the no-terminal prompt into your agent.
3. Confirm that `hypermatic-favvy` appears in the installed skills.
4. Ask the agent to use the Favvy skill for your task.

## What the skill can help with

- Prepare a suitable Figma source layer for favicon generation.
- Export the selected favicon, browser, Apple, Android, and PWA assets.
- Add manifest and head markup to a website repository.
- Verify generated files, dimensions, formats, markup, and served requests.

## Keyboard Shortcuts

Use [Favvy Keyboard Shortcuts](/favvy/automation/parameters) for supported repeatable tasks with a hidden plugin panel. The reference includes plain-field examples, selection requirements and a machine-readable registry. Choose a supported action from the installed plugin’s Quick Actions list; results use normal notifications, document changes and saved files.

## Example prompts

- `Use the Favvy skill to create a complete favicon and PWA package from this layer.`
- `Use the Favvy skill to add these exported icons to my website locally.`
- `Use the Favvy skill to check whether every required icon is being served.`

## Approval and verification

The agent can guide the workflow, or use available Figma, filesystem, and computer-control tools after you approve the requested changes. Repository edits do not authorize a deployment. The agent must report local, build, and production evidence separately.

## Trial limits

If Favvy reports that its trial allowance is exhausted, the agent should stop retrying and send you to [Favvy pricing and purchase options](https://www.hypermatic.com/favvy/#pro). Complete checkout and license activation yourself, then tell the agent when Favvy is active.

## Keep the skill current

Return to [Hypermatic Agent Skills](https://hypermatic.ai/) and use the **Update** command to install the latest stable Favvy instructions.

---

---
url: "/favvy/automation/parameters.md"
description: "Run Favvy Quick Actions with simple named inputs and current-selection shortcuts."
---

# Favvy Keyboard Shortcuts

> Run Favvy Quick Actions with simple named inputs and current-selection shortcuts.

Run common Favvy tasks from Figma Quick Actions without opening the plugin panel. Choose a named shortcut below. Use the normal plugin panel for detailed settings and authoring.

## Run a keyboard shortcut

Favvy’s panel options are not persisted between runs. Supply the shortcut fields you want to change; remaining options use the documented fallbacks.

Every shortcut requires a verified valid license or remaining trials. If verification fails or your trials have expired, open the normal plugin panel to activate your license. Opening the panel remains available.

1. Select the layers you want to work with, if the shortcut uses a selection.
2. Open Figma Quick Actions with **Command + /** on Mac or **Ctrl + /** on Windows.
3. Search for the plugin and choose the named shortcut below.
4. Enter the fields shown. Optional fields may be skipped; use Tab to edit them. Run the shortcut and check the result or complete its save dialog.

Creation shortcuts ask for names or dimensions directly. Selected-layer shortcuts use the current selection automatically. These everyday shortcuts do not ask for Target or JSON. Choose **Open Favvy** for the normal plugin panel.

| Shortcut | Inputs |
| --- | --- |
| **Export Selected Favicon (Custom Settings…)** | Name (optional), Theme colour (hex) (optional) |

Fixed-choice fields use readable labels. Search by the displayed label or the underlying value; agent inputs continue to use the values shown in the command reference.

**Use Default Settings** uses the documented favicon defaults; these controls are not saved between runs.

## Run from the context menu

Select the intended layers, right-click, and choose **Plugins → Favvy** (development plugins appear under **Development**). Choose an action and its format or preset. A preset runs immediately when it needs no required input; finish the save dialog when one appears.

Each preset sets its named option. Omitted compatible options inherit the plugin’s saved settings; an explicit action or option takes priority over conflicting saved behavior. Only explicitly entered fields or the selected menu choice override them for that run. If a setting has never been saved, the normal setting or documented fallback applies. Export overrides are not saved back to your preferences. If a saved format is unavailable as a shortcut, choose a supported format explicitly or use the normal panel. To combine options, choose **Custom Settings…** within the action and enter the parameters. Actions needing text, URLs, names or dimensions still prompt for those required fields. **Open Favvy** opens the normal panel.

| Menu choice | Next step |
| --- | --- |
| **Export Selected Favicon → Use Default Settings** | Runs immediately |
| **Export Selected Favicon → Export Selected Favicon (Custom Settings…)** | Enter Name (optional), Theme colour (hex) (optional) |

## Detailed editing

Use the normal plugin panel for detailed settings, longer content, bulk authoring and browsing components or templates. The shortcut menu contains only the everyday commands listed above.

Keep each pasted field below 150 characters: Figma desktop can truncate pasted input at that boundary. Longer input belongs in the normal panel.

If an older plugin shows Action, Target and Options instead, update it to use these named shortcuts. A Target value is a layer ID or selection, never the name of a new item.

## Favvy actions

| Action | What it does | Target |
| --- | --- | --- |
| [`export`](#export) | Export a favicon ZIP from one square layer | Exactly one eligible layer |

### export

Export a favicon ZIP from one square layer. Select exactly one eligible layer.

| Option | Type | Required / default | Meaning and accepted values |
| --- | --- | --- | --- |
| `name` | string | Fallback: `"My Website"` | Website name for the web manifest. Maximum 120 characters |
| `theme` | string | Fallback: `"#ffffff"` | Six-digit theme colour. Pattern `^#[0-9a-fA-F]{6}$` |

Nested required fields apply when their parent object or array item is supplied. Omitted optional values use the existing operation’s behavior unless a default is listed.

Choose **Export Selected Favicon (Custom Settings…)**. Enter these plain fields; no JSON is required:

- **Name**: `My Website`
- **Theme colour (hex)**: `#ffffff`

Agent host input

```json
{"command":"shortcut-export","parameters":{"name":"My Website","theme":"#ffffff"}}
```

## Using shortcuts with an agent

Read the machine-readable registry linked below and choose an action offered by the installed plugin’s Quick Actions list. The registry uses Hypermatic option definitions rather than standard JSON Schema: `min` and `max` constrain string length, array length or numeric value according to the field type; nested definitions use `fields` and `item`. Unknown fields are rejected.

The agent needs a host that can invoke Figma Quick Actions and observe the normal plugin result. Parameters do not add a REST or MCP launcher. The expandable examples are input data for a compatible host, not executable API calls; shortcut inputs use plain strings in `parameters`, including numbers and format choices. Never claim that a shortcut ran from its prepared input alone.

Verify the visible outcome: the changed Figma layers, saved export, or published page. Read the normal success/error notification and any partial-export warning. Complete native save dialogs as needed; a download starting does not prove that the file was saved. Users do not need to open developer tools or read a console.

## Troubleshooting

| Symptom | Next step |
| --- | --- |
| Action is unavailable | Update the plugin and check its Quick Actions list; use the normal panel if the action is unavailable. |
| Options are invalid or may have been truncated | Use individual plain field values below 150 characters, with only fields accepted by that shortcut. |
| Target is missing or ineligible | Open the correct page, check the action’s layer requirements, and select the intended layers again. |
| A license or trial error appears | Complete the plugin’s normal activation flow before rerunning. |
| Download was requested but no saved file is visible | Check the native save dialog and download location. Inspect the actual file. |
| A command fails, times out or is cancelled | Check the document and remote destination before retrying; earlier changes or uploads may already exist. |

Commands have a five-minute deadline. Errors do not imply a full rollback. Automatically retrying a create, replacement or upload can duplicate or overwrite work.

[Machine-readable command registry](/automation/parameters/favvy.json) contains the same action IDs and option definitions.

## Current limits

The favicon command exposes the existing export options. Existing free-plan restrictions still control which assets are included.

## Related documentation

- [Install and run Favvy](/favvy/overview/install)
- [Figma plugin parameters](https://developers.figma.com/docs/plugins/plugin-parameters/)
- [Figma hidden UI options](https://developers.figma.com/docs/plugins/api/properties/figma-showui/)

---

---
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 (for example, **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 (for example, **512x512** pixels). Favvy will let you know if you've selected a layer that isn't square.

The **Export Favicons** button is unavailable while Favvy generates the current favicon package. Wait for generation to finish before starting another export.

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://www.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://www.hypermatic.com/favvy/#pro).

- **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 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 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 (for example, a “find layer by name” plugin)
- Modify any data in your Figma document (for example, a “rename selected layers” plugin)
- Communicate with any server over the internet (for example, 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 (for example, **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

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-nocookie.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 a 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 of all of the Figma plugin features.

> **Warning:** 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.

> **Info:** If you ever need to use a different license key at any time (for example, 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 favicon images, HTML, and PWA files from Figma."
---

# Get started with Favvy

> Export production-ready favicon images, HTML, and PWA files from Figma.

[![Favvy Figma Plugin](https://www.hypermatic.com/favvy.jpg)](https://www.figma.com/community/plugin/789010114208495133/favvy-favicon-exporter)

## Install and 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 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

- Preview and customize favicon assets before export.
- 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.
- Download the production-ready favicon package as a ZIP file.

---

---
url: "/favvy/tutorials.md"
description: "Learn how to generate, preview, and export complete favicon packages from Figma with Favvy."
---

# Favvy Video Tutorials

> Learn how to generate, preview, and export complete favicon packages from Figma with Favvy.

## Video Tutorials

- [Export favicons from Figma](/favvy/tutorials/export-favicons-from-figma)

---

---
url: "/favvy/tutorials/export-favicons-from-figma.md"
description: "This video shows how to use the Favvy Figma plugin to export favicons directly from a Figma selection. It demonstrates installing the plugin, previewing multiple favicon sizes, exporting a zip with generated icon files and HTML, and adding those files to a website so the favicon updates in the browser."
---

# Export favicons from Figma

> This video shows how to use the Favvy Figma plugin to export favicons directly from a Figma selection. It demonstrates installing the plugin, previewing multiple favicon sizes, exporting a zip with generated icon files and HTML, and adding those files to a website so the favicon updates in the browser.

[← Back to Favvy Video Tutorials](/favvy/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/RqPEqjgVGcw)

## What this video covers

This video shows how to use the Favvy Figma plugin to export favicons directly from a Figma selection. It demonstrates installing the plugin, previewing multiple favicon sizes, exporting a zip with generated icon files and HTML, and adding those files to a website so the favicon updates in the browser.

## Things you'll need

- Figma
- The Favvy Figma plugin installed

## Steps

1. [ ] Install Favvy from Figma by opening the Figma logo menu, going to Plugins, then Browse all plugins, searching for "Favvy", and clicking Install.
2. [ ] Open the plugin from a Figma layer by right-clicking, choosing Plugins, and selecting "Favvy Favicon Exporter".
3. [ ] Select a single square layer or frame, then optionally enter a website name and theme color to preview how the favicon will look at sizes like 16 by 16, 32 by 32, 64 by 64, and 150 by 150.
4. [ ] Click "Export Favicons" to generate a zip file of favicon assets, and use "Copy HTML" to copy the generated head HTML to the clipboard.
5. [ ] Unzip the exported files and place them in the root of your website project, then paste the copied HTML into the head tag of your index.html or use the included head.html file.
6. [ ] Reload the website to confirm the favicon appears, and repeat the export with a new frame, background, or color when you want to update the icon.
7. [ ] Replace the existing favicon files with the newly exported ones when iterating on the design, since the filenames stay the same.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=RqPEqjgVGcw)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-favicons-from-figma-using-favvy)
- [Read: Exporting your Figma frame to favicons](/favvy/export)
- [Next: Add the generated favicon code to your website](/favvy/code)
- [Open Favvy in the Figma Community](https://www.figma.com/community/plugin/789010114208495133)

---

---
url: "/figma/install-run-uninstall.md"
description: "Find an official Hypermatic plugin on Figma Community, run or save it, open it again, and remove it from your saved plugins."
---

# Install, run, and remove a Hypermatic Figma plugin

> Find an official Hypermatic plugin on Figma Community, run or save it, open it again, and remove it from your saved plugins.

Hypermatic plugins run inside Figma and do not normally require a separate desktop application. Start from the official [Hypermatic Figma Community profile](https://www.figma.com/@hypermatic).

## Run a plugin for the first time

1. Open [Hypermatic on Figma Community](https://www.figma.com/@hypermatic).
2. Choose the plugin you want to use.
3. Select **Run in Figma**.
4. Open or create a Figma file if Figma asks where to run the plugin.
5. Complete the workflow in the plugin window.

If you use a plugin often, save it from the Figma Community plugin page so it is easier to find later.

## Run a saved plugin again

In a Figma file, open the main Figma menu, choose Plugins, then find the plugin in your saved or recent plugins.

You can also right-click on the Figma canvas, open Plugins, and choose the plugin from the menu.

## Understand what is installed

For most Hypermatic plugin workflows, no separate desktop app is required. The plugins run inside Figma.

Some exported files or downstream workflows may be opened in other tools after export, such as PowerPoint, an email marketing platform, a browser, or an image viewer. That depends on the plugin and export format.

## Remove or uninstall a saved plugin

Open the plugin page on Figma Community and use Figma's plugin management options to remove or uninstall the plugin from your saved plugins.

You can also manage saved plugins from inside Figma's plugin menu.

## Fix a plugin that does not appear

Try these steps:

1. Make sure you are logged into the correct Figma account.
2. Open the plugin directly from [Hypermatic on Figma Community](https://www.figma.com/@hypermatic).
3. Try running it from a normal Figma design file.
4. Restart the Figma desktop app or refresh Figma in the browser.
5. Check whether your company network blocks Figma plugin resources.

For network issues, see [Network, VPN, firewall, and regional troubleshooting](/troubleshooting/network-vpn-firewall).

## Get installation help

Figma plugins need to be run or saved from your own Figma account. Support can walk you through the steps, but plugin installation happens inside your Figma account.

Use the [Hypermatic Figma Community profile](https://www.figma.com/@hypermatic) to open the plugin page, then click **Run in Figma**. The support chat can link you to the right plugin and help you troubleshoot if the plugin does not appear.

---

---
url: "/figma/plugin-basics.md"
description: "Learn what a Hypermatic plugin can access, why file complexity affects performance, how Pro activation works, and how to report a reproducible issue."
---

# Understand how Hypermatic Figma plugins work

> Learn what a Hypermatic plugin can access, why file complexity affects performance, how Pro activation works, and how to report a reproducible issue.

Hypermatic plugins run inside Figma and work with the parts of the current file needed for the workflow you choose.

| System | What it does |
| --- | --- |
| Hypermatic Figma plugin | Works with relevant content in the current Figma file while running |
| Hypermatic support chat | Answers general questions from public support content |
| Gumroad | Handles checkout, receipts, and subscription-management links |
| Hypermatic License Manager | Manages Figma users linked to a license key |

## Plugin access to the current Figma file

A Figma plugin can work with the current Figma file while it is running. The exact data used depends on the plugin and the workflow you choose.

Running a Hypermatic plugin does not give support chat access to your Figma files, Gumroad purchases, or private account details.

## Support does not access your Figma file

The support chat answers from public support content. It does not access your Figma file, inspect private designs, look up Gumroad purchases, or perform account actions.

## Find plugin tutorials and walkthroughs

If you know which plugin you are using, start with that plugin's `Tutorials` page. These pages collect the main workflow guides for the plugin, and many tutorial pages also link to the matching video and transcript.

- [Bannerify tutorials](/bannerify/tutorials)
- [Commentful tutorials](/commentful/tutorials)
- [CopyDoc tutorials](/copydoc/tutorials)
- [Convertify tutorials](/convertify/tutorials)
- [Crypto tutorials](/crypto/tutorials)
- [Emailify tutorials](/emailify/tutorials)
- [Favvy tutorials](/favvy/tutorials)
- [HyperCrop tutorials](/hypercrop/tutorials)
- [Pitchdeck tutorials](/pitchdeck/tutorials)
- [Pixelay tutorials](/pixelay/tutorials)
- [TinyImage tutorials](/tinyimage/tutorials)
- [Weblify guides](/weblify/tutorials)

If you are not sure which workflow you need yet, search this docs site with the plugin name plus the result you want, such as `Emailify Klaviyo`, `Pitchdeck PowerPoint`, or `CopyDoc XLIFF`.

## Image loading during export

Some workflows export images, compress images, compare images, generate previews, or render a design into another format. For those workflows, Figma may need to make image data available to the plugin before export.

If Figma is still loading large images in the file, an export can be slower or image quality can look incomplete until the source images finish loading.

## Performance in large or complex files

Large Figma files, many pages, many frames, large images, embedded media, or complex nested layers can all make plugin workflows slower.

If a plugin is slow or stuck, try copying only the relevant frames to a new blank Figma page or file, then run the plugin there.

## Pro activation

After purchase, Gumroad sends a receipt containing your license key. Run the plugin, click the upgrade or unlock option, and paste the license key.

If the key does not work, make sure you pasted the license key itself, not the order ID or receipt number.

See [How Hypermatic Pro licenses work](/faq/licenses).

## Prepare a reproducible bug report

Try to collect a small reproducible example:

- Product name
- Screenshot or short video
- Exported file or ZIP if relevant
- Figma page/frame where it happens
- Exact error message
- Whether it happens in the Figma desktop app, browser, or both

Then email [adam@hypermatic.com](mailto:adam@hypermatic.com).

---

---
url: "/hypercrop/ai-agents.md"
description: "Install the Hypermatic Agent Skill for HyperCrop and give Codex, Claude Code, Grok, and compatible agents the correct cropping workflows."
---

# Use HyperCrop with AI agents

> Install the Hypermatic Agent Skill for HyperCrop and give Codex, Claude Code, Grok, and compatible agents the correct cropping workflows.

Hypermatic Agent Skills give your AI agent a concise HyperCrop playbook. The HyperCrop skill guides batch and manual cropping while checking presets, focal subjects, destinations, and expected output counts.

- [Install Hypermatic Agent Skills](https://hypermatic.ai/): Copy the terminal installer or the no-terminal prompt. One install includes all 12 Hypermatic plugin skills.

## Install the HyperCrop skill

1. Open [Hypermatic Agent Skills](https://hypermatic.ai/).
2. Copy the terminal command, or copy the no-terminal prompt into your agent.
3. Confirm that `hypermatic-hypercrop` appears in the installed skills.
4. Ask the agent to use the HyperCrop skill for your task.

## What the skill can help with

- Choose batch, manual, focal-point, face-detection, or smart-cropping workflows.
- Prepare the required size presets and output destination.
- Keep the intended subject visible across every requested crop.
- Compare expected and actual files or Figma layers before reporting completion.

## Keyboard Shortcuts

Use [HyperCrop Keyboard Shortcuts](/hypercrop/automation/parameters) for supported repeatable tasks with a hidden plugin panel. The reference includes plain-field examples, selection requirements and a machine-readable registry. Choose a supported action from the installed plugin’s Quick Actions list; results use normal notifications, document changes and saved files.

## Example prompts

- `Use the HyperCrop skill to create social crops in these five sizes.`
- `Use the HyperCrop skill to keep the subject in frame across every preset.`
- `Use the HyperCrop skill to verify that this interrupted batch completed safely.`

## Approval and verification

The agent can guide the workflow, or use available Figma and computer-control tools after you approve the requested changes. It must confirm the source selection, destination, and expected count before inserting or exporting crops. Interrupted retries should avoid duplicate output.

## Trial limits

If HyperCrop reports that its trial allowance is exhausted, the agent should stop retrying and send you to [HyperCrop pricing and purchase options](https://www.hypermatic.com/hypercrop/#pro). Complete checkout and license activation yourself, then tell the agent when HyperCrop is active.

## Keep the skill current

Return to [Hypermatic Agent Skills](https://hypermatic.ai/) and use the **Update** command to install the latest stable HyperCrop instructions.

---

---
url: "/hypercrop/automation/parameters.md"
description: "Run HyperCrop Quick Actions with simple named inputs and current-selection shortcuts."
---

# HyperCrop Keyboard Shortcuts

> Run HyperCrop Quick Actions with simple named inputs and current-selection shortcuts.

Run common HyperCrop tasks from Figma Quick Actions without opening the plugin panel. Choose a named shortcut below. Use the normal plugin panel for detailed settings and authoring.

## Run a keyboard shortcut

Every shortcut requires a verified valid license or remaining trials. If verification fails or your trials have expired, open the normal plugin panel to activate your license. Opening the panel remains available.

1. Select the layers you want to work with, if the shortcut uses a selection.
2. Open Figma Quick Actions with **Command + /** on Mac or **Ctrl + /** on Windows.
3. Search for the plugin and choose the named shortcut below.
4. Enter the fields shown. Optional fields may be skipped; use Tab to edit them. Run the shortcut and check the result or complete its save dialog.

Creation shortcuts ask for names or dimensions directly. Selected-layer shortcuts use the current selection automatically. These everyday shortcuts do not ask for Target or JSON. Choose **Open HyperCrop** for the normal plugin panel.

| Shortcut | Inputs |
| --- | --- |
| **Crop Selected Images (Custom Settings…)** | Name, Width (px), Height (px), Format (optional), Image fit (optional), Horizontal alignment (optional), Vertical alignment (optional), Content-aware cropping (optional) |

Fixed-choice fields use readable labels. Search by the displayed label or the underlying value; agent inputs continue to use the values shown in the command reference.

Choose **Crop to Fill…**, **Fit Inside…** or **Content-aware Crop…** and enter the output name and dimensions. Crop to Fill and Fit Inside disable inherited content-aware/face positioning; Content-aware Crop selects Crop to Fill even when Fit Inside was saved. Custom Settings exposes **Crop to Fill / Fit Inside**, horizontal and vertical alignment, and content-aware cropping. Explicit alignment disables inherited smart/face cropping; explicitly choosing content-aware cropping takes precedence over alignment.

## Run from the context menu

Select the intended layers, right-click, and choose **Plugins → HyperCrop** (development plugins appear under **Development**). Choose an action and its format or preset. A preset runs immediately when it needs no required input; finish the save dialog when one appears.

Each preset sets its named option. Omitted compatible options inherit the plugin’s saved settings; an explicit action or option takes priority over conflicting saved behavior. Only explicitly entered fields or the selected menu choice override them for that run. If a setting has never been saved, the normal setting or documented fallback applies. Export overrides are not saved back to your preferences. If a saved format is unavailable as a shortcut, choose a supported format explicitly or use the normal panel. To combine options, choose **Custom Settings…** within the action and enter the parameters. Actions needing text, URLs, names or dimensions still prompt for those required fields. **Open HyperCrop** opens the normal panel.

Explicit horizontal or vertical alignment disables saved smart cropping and face detection for that run. To use content-aware cropping instead, explicitly request smart cropping.

| Menu choice | Next step |
| --- | --- |
| **Crop Selected Images → Crop to Fill…** | Enter Name, Width (px), Height (px) |
| **Crop Selected Images → Fit Inside…** | Enter Name, Width (px), Height (px) |
| **Crop Selected Images → Content-aware Crop…** | Enter Name, Width (px), Height (px) |
| **Crop Selected Images → Crop Selected Images (Custom Settings…)** | Enter Name, Width (px), Height (px), Format (optional), Image fit (optional), Horizontal alignment (optional), Vertical alignment (optional), Content-aware cropping (optional) |

## Detailed editing

Use the normal plugin panel for detailed settings, longer content, bulk authoring and browsing components or templates. The shortcut menu contains only the everyday commands listed above.

Keep each pasted field below 150 characters: Figma desktop can truncate pasted input at that boundary. Longer input belongs in the normal panel.

If an older plugin shows Action, Target and Options instead, update it to use these named shortcuts. A Target value is a layer ID or selection, never the name of a new item.

## HyperCrop actions

| Action | What it does | Target |
| --- | --- | --- |
| [`crop`](#crop) | Crop selected layers to named sizes and download a ZIP | One or more eligible layers |

### crop

Crop selected layers to named sizes and download a ZIP. Select one or more eligible layers.

| Option | Type | Required / default | Meaning and accepted values |
| --- | --- | --- | --- |
| `name` | string | Required | Name of the new item. Minimum 1 character; Maximum 120 characters |
| `width` | number | Required | Width in pixels. Minimum 1; Maximum 8192 |
| `height` | number | Required | Height in pixels. Minimum 1; Maximum 8192 |
| `format` | string | Fallback: `"jpg"` | Image format. `jpg`, `png` |
| `fill` | string | Fallback: `"cover"` | Crop or contain the source. `cover`, `contain` |
| `horizontal` | string | Fallback: `"center"` | Horizontal alignment. `left`, `center`, `right` |
| `vertical` | string | Fallback: `"center"` | Vertical alignment. `top`, `center`, `bottom` |
| `smart` | boolean | Fallback: `false` | Use content-aware cropping without face detection |

Nested required fields apply when their parent object or array item is supplied. Omitted optional values use the existing operation’s behavior unless a default is listed.

Choose **Crop Selected Images (Custom Settings…)**. Enter these plain fields; no JSON is required:

- **Name**: `Square`
- **Width (px)**: `1080`
- **Height (px)**: `1080`
- **Format**: **JPG Image**
- **Image fit**: **Crop to Fill**
- **Horizontal alignment**: **Centre**
- **Vertical alignment**: **Centre**
- **Content-aware cropping**: **Use Alignment**

Agent host input

```json
{"command":"shortcut-crop","parameters":{"name":"Square","width":"1080","height":"1080","format":"jpg","fill":"cover","horizontal":"center","vertical":"center","smart":"false"}}
```

## Using shortcuts with an agent

Read the machine-readable registry linked below and choose an action offered by the installed plugin’s Quick Actions list. The registry uses Hypermatic option definitions rather than standard JSON Schema: `min` and `max` constrain string length, array length or numeric value according to the field type; nested definitions use `fields` and `item`. Unknown fields are rejected.

The agent needs a host that can invoke Figma Quick Actions and observe the normal plugin result. Parameters do not add a REST or MCP launcher. The expandable examples are input data for a compatible host, not executable API calls; shortcut inputs use plain strings in `parameters`, including numbers and format choices. Never claim that a shortcut ran from its prepared input alone.

Verify the visible outcome: the changed Figma layers, saved export, or published page. Read the normal success/error notification and any partial-export warning. Complete native save dialogs as needed; a download starting does not prove that the file was saved. Users do not need to open developer tools or read a console.

## Troubleshooting

| Symptom | Next step |
| --- | --- |
| Action is unavailable | Update the plugin and check its Quick Actions list; use the normal panel if the action is unavailable. |
| Options are invalid or may have been truncated | Use individual plain field values below 150 characters, with only fields accepted by that shortcut. |
| Target is missing or ineligible | Open the correct page, check the action’s layer requirements, and select the intended layers again. |
| A license or trial error appears | Complete the plugin’s normal activation flow before rerunning. |
| Download was requested but no saved file is visible | Check the native save dialog and download location. Inspect the actual file. |
| A command fails, times out or is cancelled | Check the document and remote destination before retrying; earlier changes or uploads may already exist. |

Commands have a five-minute deadline. Errors do not imply a full rollback. Automatically retrying a create, replacement or upload can duplicate or overwrite work.

[Machine-readable command registry](/automation/parameters/hypercrop.json) contains the same action IDs and option definitions.

## Current limits

Crop shortcuts export selected images at one named size. Format, alignment and other detailed choices use Custom Settings; save reusable crop sizes in the normal panel.

## Related documentation

- [Install and run HyperCrop](/hypercrop/overview/install)
- [Figma plugin parameters](https://developers.figma.com/docs/plugins/plugin-parameters/)
- [Figma hidden UI options](https://developers.figma.com/docs/plugins/api/properties/figma-showui/)

---

---
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 walks through how to batch crop and resize images from Figma using the HyperCrop plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/ysRuuEJvvYE)

Changing Figma pages loads the crop sizes and export settings saved for that page. A page with no saved crop sizes starts with the default presets.

## 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 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 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 Do this by moving your mouse over to the image you would like to toggle the focal point for, and clicking 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 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 (for example, "My Figma Layer Name")
- **#&lcub;collection&rcub;** The size preset collection name (for example, "facebook")
- **#&lcub;label&rcub;** The size preset collection label (for example, "profile")
- **#&lcub;width&rcub;** The resized image width (for example, "1024")
- **#&lcub;height&rcub;** The resized image height (for example, "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.

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 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://www.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://www.hypermatic.com/hypercrop/#pro).

- **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 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 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 (for example, a “find layer by name” plugin)
- Modify any data in your Figma document (for example, a “rename selected layers” plugin)
- Communicate with any server over the internet (for example, 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 (for example, 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](/tinyimage/downsize) 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

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-nocookie.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 a 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 of all of the Figma plugin features.

> **Warning:** 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.

> **Info:** If you ever need to use a different license key at any time (for example, 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 and 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 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

- Batch crop multiple images into 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 (for example, "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 (for example, "#name/#width_x_#height).

---

---
url: "/hypercrop/tutorials.md"
description: "Learn how to crop, resize, fill, fit, and export images directly in Figma with HyperCrop."
---

# HyperCrop Video Tutorials

> Learn how to crop, resize, fill, fit, and export images directly in Figma with HyperCrop.

## Video Tutorials

- [Crop and resize images](/hypercrop/tutorials/crop-and-resize-images)

---

---
url: "/hypercrop/tutorials/crop-and-resize-images.md"
description: "This tutorial shows how to use the HyperCrop Figma plugin to batch crop and resize selected images into multiple output sizes, then export them as a zip file. It also demonstrates manual cropping, content aware cropping, face detection, and customizable file naming for exports."
---

# Crop and resize images

> This tutorial shows how to use the HyperCrop Figma plugin to batch crop and resize selected images into multiple output sizes, then export them as a zip file. It also demonstrates manual cropping, content aware cropping, face detection, and customizable file naming for exports.

[← Back to HyperCrop Video Tutorials](/hypercrop/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/ysRuuEJvvYE)

## What this video covers

This tutorial shows how to use the HyperCrop Figma plugin to batch crop and resize selected images into multiple output sizes, then export them as a zip file. It also demonstrates manual cropping, content aware cropping, face detection, and customizable file naming for exports.

## Things you'll need

- Figma
- The HyperCrop plugin installed from Figma Community
- Images in the file with export settings applied

## Steps

1. [ ] Install HyperCrop from Figma Community, then open it from Plugins > HyperCrop Batch Image Resizer.
2. [ ] Make sure the images you want to export have at least one export setting, then refresh the plugin to load them.
3. [ ] Select the images to crop on the right and choose output sizes on the left using presets or by entering a custom Crop Width and Crop Height.
4. [ ] Optionally add auto sizes, remove sizes with the Trashcan icon, and choose crop anchors, Content Aware, and Detect Faces for individual images.
5. [ ] Open Batch Crop, choose JPGs or PNGs, set image quality and image fill behavior, and adjust the File Name Format if needed.
6. [ ] Click Crop and Export Images to generate the resized files and save the zip export.
7. [ ] Use Crop Manually for a single image if you want direct control over aspect ratio, rotation, flipping, resizing, and downloading a JPG.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=ysRuuEJvvYE)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-batch-crop-and-resize-images-from-figma-using-hyper-crop)
- [Read: Batch crop and resize images into multiple sizes](/hypercrop/batch-cropping)
- [Next: Fine-tune an individual image crop](/hypercrop/manual-cropping)
- [Open HyperCrop in the Figma Community](https://www.figma.com/community/plugin/818960915730257192)

---

---
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): Create animated slide decks in Figma or export presentations 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): Design and export responsive, production-ready HTML emails from Figma.
- [CopyDoc Docs](/copydoc/overview/quickstart.md): Export, import, localize, and update text in 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 Figma layers as HTML, React, or Vue code.

---

---
url: "/pitchdeck/ai-agents.md"
description: "Install the Hypermatic Agent Skill for Pitchdeck and give Codex, Claude Code, Grok, and compatible agents the correct presentation workflows."
---

# Use Pitchdeck with AI agents

> Install the Hypermatic Agent Skill for Pitchdeck and give Codex, Claude Code, Grok, and compatible agents the correct presentation workflows.

Hypermatic Agent Skills give your AI agent a concise Pitchdeck playbook. The Pitchdeck skill guides presentation setup, publishing, export, review, and verification while keeping destructive design changes explicit.

- [Install Hypermatic Agent Skills](https://hypermatic.ai/): Copy the terminal installer or the no-terminal prompt. One install includes all 12 Hypermatic plugin skills.

## Install the Pitchdeck skill

1. Open [Hypermatic Agent Skills](https://hypermatic.ai/).
2. Copy the terminal command, or copy the no-terminal prompt into your agent.
3. Confirm that `hypermatic-pitchdeck` appears in the installed skills.
4. Ask the agent to use the Pitchdeck skill for your task.

## What the skill can help with

- Prepare Figma frames, ordering, speaker notes, links, and presentation settings.
- Choose web publishing, PowerPoint, PDF, video, or other supported outputs.
- Validate review access, link behavior, and published presentation state.
- Separate local export evidence from a live published presentation.

## Keyboard Shortcuts

Use [Pitchdeck Keyboard Shortcuts](/pitchdeck/automation/parameters) for supported repeatable tasks with a hidden plugin panel. The reference includes plain-field examples, selection requirements and a machine-readable registry. Choose a supported action from the installed plugin’s Quick Actions list; results use normal notifications, document changes and saved files.

## Example prompts

- `Use the Pitchdeck skill to prepare these frames as a web presentation.`
- `Use the Pitchdeck skill to review this deck before PowerPoint export.`
- `Use the Pitchdeck skill to create a safe stakeholder-review handoff.`

## Approval and verification

The agent can guide the workflow, or use available Figma and computer-control tools after you approve the requested changes. It must ask before downsizing fills, replacing a published version, or changing external access. A local file or build is not proof that a presentation is live.

## Trial limits

If Pitchdeck reports that its trial allowance is exhausted, the agent should stop retrying and send you to [Pitchdeck pricing and purchase options](https://www.hypermatic.com/pitchdeck/#pro). Complete checkout and license activation yourself, then tell the agent when Pitchdeck is active.

## Keep the skill current

Return to [Hypermatic Agent Skills](https://hypermatic.ai/) and use the **Update** command to install the latest stable Pitchdeck instructions.

## Hand off a deck as a ZIP

Use [AI Agent Handoff](/pitchdeck/export/portable#ai-agent-handoff) when you want an agent to review, rewrite or translate a deck outside Figma. The ZIP combines rendered slide images, source text and layer references. Choose the task explicitly and review the files before sharing them with an AI service.

---

---
url: "/pitchdeck/automation/parameters.md"
description: "Run Pitchdeck Quick Actions with simple named inputs and current-selection shortcuts."
---

# Pitchdeck Keyboard Shortcuts

> Run Pitchdeck Quick Actions with simple named inputs and current-selection shortcuts.

Run common Pitchdeck tasks from Figma Quick Actions without opening the plugin panel. Choose a named shortcut below. Use the normal plugin panel for detailed settings and authoring.

## Run a keyboard shortcut

Every shortcut requires a verified valid license or remaining trials. If verification fails or your trials have expired, open the normal plugin panel to activate your license. Opening the panel remains available.

1. Select the layers you want to work with, if the shortcut uses a selection.
2. Open Figma Quick Actions with **Command + /** on Mac or **Ctrl + /** on Windows.
3. Search for the plugin and choose the named shortcut below.
4. Enter the fields shown. Optional fields may be skipped; use Tab to edit them. Run the shortcut and check the result or complete its save dialog.

Creation shortcuts ask for names or dimensions directly. Selected-layer shortcuts use the current selection automatically. These everyday shortcuts do not ask for Target or JSON. Choose **Open Pitchdeck** for the normal plugin panel.

| Shortcut | Inputs |
| --- | --- |
| **Export Selected Slides (Custom Settings…)** | Format (optional), Presentation content (PPTX only) (optional) |

Fixed-choice fields use readable labels. Search by the displayed label or the underlying value; agent inputs continue to use the values shown in the command reference.

**Presentation content (PPTX only)** offers **Editable** and **Flattened** for PowerPoint, Keynote and Google Slides. Choose a presentation format when supplying this option. Omit it to keep the saved preference. Editable text needs the original fonts installed in the destination app; choose Flattened when preserving text appearance matters more than editing the text. Image, PDF and Canva exports continue to use their own format settings.

## Run from the context menu

Select the intended layers, right-click, and choose **Plugins → Pitchdeck** (development plugins appear under **Development**). Choose an action and its format or preset. A preset runs immediately when it needs no required input; finish the save dialog when one appears.

Each preset sets its named option. Omitted compatible options inherit the plugin’s saved settings; an explicit action or option takes priority over conflicting saved behavior. Only explicitly entered fields or the selected menu choice override them for that run. If a setting has never been saved, the normal setting or documented fallback applies. Export overrides are not saved back to your preferences. If a saved format is unavailable as a shortcut, choose a supported format explicitly or use the normal panel. To combine options, choose **Custom Settings…** within the action and enter the parameters. Actions needing text, URLs, names or dimensions still prompt for those required fields. **Open Pitchdeck** opens the normal panel.

| Menu choice | Next step |
| --- | --- |
| **Export Selected Slides → Use Saved Settings** | Runs immediately |
| **Export Selected Slides → PowerPoint (.pptx file)** | Runs immediately |
| **Export Selected Slides → Keynote (.pptx file)** | Runs immediately |
| **Export Selected Slides → Google Slides (.pptx file)** | Runs immediately |
| **Export Selected Slides → PDF Deck (.pdf file)** | Runs immediately |
| **Export Selected Slides → PDF for macOS Tahoe 'Preview' (.pdf)** | Runs immediately |
| **Export Selected Slides → PNG Images (.zip file)** | Runs immediately |
| **Export Selected Slides → JPG Images (.zip file)** | Runs immediately |
| **Export Selected Slides → Canva (.psd files)** | Runs immediately |
| **Export Selected Slides → PowerPoint Template (.potx file)** | Runs immediately |
| **Export Selected Slides → Canva (Download PPTX)** | Runs immediately |
| **Export Selected Slides → Pitch Presentation (.pptx file)** | Runs immediately |
| **Export Selected Slides → MP4 Slideshow (.mp4 file)** | Runs immediately |
| **Export Selected Slides → AI Agent Handoff (.zip file)** | Runs immediately |
| **Export Selected Slides → Markdown & Images (.zip file)** | Runs immediately |
| **Export Selected Slides → Local HTML Presentation (.zip file)** | Runs immediately |
| **Export Selected Slides → Printable Handouts (.zip file)** | Runs immediately |
| **Export Selected Slides → Export Selected Slides (Custom Settings…)** | Enter Format (optional), Presentation content (PPTX only) (optional) |

## Detailed editing

Use the normal plugin panel for detailed settings, longer content, bulk authoring and browsing components or templates. The shortcut menu contains only the everyday commands listed above.

Keep each pasted field below 150 characters: Figma desktop can truncate pasted input at that boundary. Longer input belongs in the normal panel.

If an older plugin shows Action, Target and Options instead, update it to use these named shortcuts. A Target value is a layer ID or selection, never the name of a new item.

## Pitchdeck actions

| Action | What it does | Target |
| --- | --- | --- |
| [`export`](#export) | Export selected slides without publishing | One or more eligible layers |

### export

Export selected slides without publishing. Select one or more eligible layers.

| Option | Type | Required / default | Meaning and accepted values |
| --- | --- | --- | --- |
| `format` | string | Fallback: `"powerpoint"` | Local presentation export format. `powerpoint`, `keynote`, `google`, `pdf`, `qpdf`, `png`, `jpg`, `canva`, `potx`, `canva-pptx`, `pitch-pptx`, `mp4`, `ai-handoff`, `markdown`, `offline-html`, `handouts` |
| `editable` | boolean | Fallback: `true` | Preserve editable PowerPoint elements |

Nested required fields apply when their parent object or array item is supplied. Omitted optional values use the existing operation’s behavior unless a default is listed.

Choose **Export Selected Slides (Custom Settings…)**. Enter these plain fields; no JSON is required:

- **Format**: **PowerPoint (.pptx file)**
- **Presentation content (PPTX only)**: **Editable**

Agent host input

```json
{"command":"shortcut-export","parameters":{"format":"powerpoint","editable":"true"}}
```

## Using shortcuts with an agent

Read the machine-readable registry linked below and choose an action offered by the installed plugin’s Quick Actions list. The registry uses Hypermatic option definitions rather than standard JSON Schema: `min` and `max` constrain string length, array length or numeric value according to the field type; nested definitions use `fields` and `item`. Unknown fields are rejected.

The agent needs a host that can invoke Figma Quick Actions and observe the normal plugin result. Parameters do not add a REST or MCP launcher. The expandable examples are input data for a compatible host, not executable API calls; shortcut inputs use plain strings in `parameters`, including numbers and format choices. Never claim that a shortcut ran from its prepared input alone.

Verify the visible outcome: the changed Figma layers, saved export, or published page. Read the normal success/error notification and any partial-export warning. Complete native save dialogs as needed; a download starting does not prove that the file was saved. Users do not need to open developer tools or read a console.

## Troubleshooting

| Symptom | Next step |
| --- | --- |
| Action is unavailable | Update the plugin and check its Quick Actions list; use the normal panel if the action is unavailable. |
| Options are invalid or may have been truncated | Use individual plain field values below 150 characters, with only fields accepted by that shortcut. |
| Target is missing or ineligible | Open the correct page, check the action’s layer requirements, and select the intended layers again. |
| A license or trial error appears | Complete the plugin’s normal activation flow before rerunning. |
| Download was requested but no saved file is visible | Check the native save dialog and download location. Inspect the actual file. |
| A command fails, times out or is cancelled | Check the document and remote destination before retrying; earlier changes or uploads may already exist. |

Commands have a five-minute deadline. Errors do not imply a full rollback. Automatically retrying a create, replacement or upload can duplicate or overwrite work.

[Machine-readable command registry](/automation/parameters/pitchdeck.json) contains the same action IDs and option definitions.

## Current limits

In Figma Design, targets must meet the existing slide eligibility rules: visible top-level frames, components or instances wider than 250 px and taller than 140 px. Native skipped Slides are excluded. Publishing, animation editing and other presentation formats remain interactive. Set Editable or Flattened content in export Custom Settings. Create slides and choose templates or themes in the normal plugin panel.

## Related documentation

- [Install and run Pitchdeck](/pitchdeck/overview/install)
- [Figma plugin parameters](https://developers.figma.com/docs/plugins/plugin-parameters/)
- [Figma hidden UI options](https://developers.figma.com/docs/plugins/api/properties/figma-showui/)

---

---
url: "/pitchdeck/design/animations.md"
description: "Add animations to slide elements, set their timing and order, and review them on a timeline."
---

# Animating your slides

> Add animations to slide elements, set their timing and order, and review them on a timeline.

Pitchdeck animates the direct child layers of each slide. Use the **Animations** tab to select elements and edit their motion together.

> **Note:** Full motion plays in Preview, Presenter and Local HTML. Hosted sharing checks that the deployed viewer supports advanced motion. MP4 renders supported 2D motion and transitions. Native PowerPoint supports a conservative fade/build subset; unsupported motion is reported. Keynote, Google Slides and static formats omit Pitchdeck motion.

[Video](/assets/videos/pitchdeck/design/adding-layer-animations.mp4)

## Select elements

1. Select a slide in the left sidebar and open **Animations**.
2. Click an element in **Animation order** or the slide preview. Hold **Command** on Mac or **Ctrl** on Windows to add or remove elements. Hold **Shift** to select a range.
3. Use **Select all** to select every listed element. Elements without motion appear under **Not animated**. Search by layer name on slides with many layers.

When several elements are selected, the inspector shows **Mixed** for values that differ. Editing a field changes that field across the selection and preserves their other settings, links and media.

## Add an animation

To animate a whole slide at once, choose **Animate slide** in the inspector or the timeline, or run it from Commands. The title leads, a subtitle follows, then content rises in row by row in reading order. Text inside a card enters with its card, and backgrounds, logos, footers, page numbers and dividers stay still. This replaces the slide's existing animations, so use **Undo** to restore them.

For an element without motion, choose **Fade**, **Slide up**, **Scale** or **Pop**, or choose **All effects…** to browse every animation. Effects are grouped into **Entrance**, **Emphasis** and **Exit**, plus **Custom** for your own keyframes. Hover over an effect to preview its motion.

Subtle options sit near the top of **Entrance**: **Wipe** reveals an element from one edge, **Reveal** opens it in a circle, **Settle** eases it in from slightly larger, and **Grow** extends it from the left, centre, right or bottom, which suits bars and charts. **Exit** includes directional **Fade**, **Wipe**, **Close** and **Shrink**. These play in the editor, Presenter, Local HTML and MP4; PowerPoint keeps fades only.

After you choose an animation, use **Direction** to set where it enters from, or **Style** for variations such as **Up** and **Down**. Each change plays the edited effect on the slide so you can see the result.

## Set timing

Choose when the effect starts:

| Start | Behavior |
| --- | --- |
| On click | Waits for a click while presenting. |
| With previous | Starts alongside the preceding effect, plus its delay. |
| After previous | Starts after the preceding effect finishes, plus its delay. |

Choose **Fast** (0.3 seconds), **Normal** (0.6 seconds) or **Slow** (1.2 seconds), or choose **Custom** and enter a **Duration**. Enter a **Delay** in seconds. **More options** contains **Easing** and **Effect type**. Easing shows preset curves, including **Gentle**, **Overshoot** and **Anticipate**; hover a preset to see a dot move with that curve. Drag the curve's two handles, or focus a handle and use the arrow keys, for a custom curve. Effect type is set automatically from the chosen animation; change it only when an effect should play as a different type, such as a fade used as an exit.

For text layers, **Build text** chooses **All at once** or **By line**. By line reveals the text one line after another; set **Lines** to match the text if the estimate is off, and **Between lines** for the gap. Line builds play in the editor, Presenter, Local HTML and MP4. PowerPoint animates the whole text layer.

To sequence several elements, select them, enter a spacing in seconds under **Stagger selected layers**, choose **Forward** or **Reverse**, then choose **Stagger**. A spacing of 0 starts them together.

## Review the order

**Animation order** lists every effect in play order. Highlighted numbers wait for a click; grey numbers play automatically. Matching numbers appear on the slide preview. Each row shows a small bar for when the effect plays. Drag a row, or hover over it and use the arrow buttons, to move it earlier or later. Click a row to select the element and play that effect.

Choose **Timeline** below the slide, next to **Speaker notes**, to see every effect on one time axis. Dashed lines mark each click. Drag a bar to change its delay, or drag its right edge to change its length; timing snaps to 0.05 seconds, and holding **Alt** moves it freely. Click or drag along the time ruler to move the playhead and scrub through the animation; the left and right arrow keys nudge it. The playhead follows playback while previewing.

Bars snap to the edges of other bars, to click lines and to the slide start, and a red guide line shows the match. When the slide has a transition, a **Transition** row appears at the top; drag its right edge to change its length. Slides with narration show a **Narration** row with its waveform; drag it to change when the narration starts, or click it to open the audio settings.

Click a bar to focus it, then:

| Action | Result |
| --- | --- |
| Left or right arrow | Nudges the delay by 0.05 seconds. Hold **Shift** for 0.5 seconds. |
| Alt+Up or Alt+Down | Moves the effect earlier or later. |
| Enter, or double-click the bar | Opens the effect picker. |
| Delete | Removes the effect. |
| Space | Plays or pauses the slide. |

Shift-click or Command/Ctrl-click bars to select several, or drag across empty track space to select every bar the box touches. Dragging any selected bar moves the whole selection, arrow keys nudge it, and **Delete** removes it. With several bars selected, the right-click menu adds **Stagger**, which spaces them 0.15 seconds apart.

To zoom the timeline, hold **Command/Ctrl** and scroll, pinch on a trackpad, or use **−** and **+** above it; choose the percentage to fit the whole slide again. **Deck motion** above the timeline opens the deck-wide view.

Right-click a bar for **Change effect…**, **Play this animation**, **Copy animation**, **Paste animation**, **Move earlier**, **Move later** and **Remove animation**. Drag a row's name up or down to change the order. Drag the top edge of the timeline to resize it; double-click the edge to fit it to its rows again.

## Add, copy and reuse effects

Choose **+** beside the element name to add another effect. An element can have an entrance, an emphasis and an exit; its effects are listed so you can select one to edit or choose **−** to remove it. Sequence effects on the same element when their transforms would overlap.

The **⋯** menu contains **Copy animation**, **Paste animation** and **Remove all animations**. Copy and paste also work with **Command/Ctrl+Shift+C** and **Command/Ctrl+Shift+V**. Removing animations keeps links and media.

Expand **Motion styles**, enter a name under **Save current as**, then choose **Save style**. The style uses the first selected element's motion. Choose a saved style to apply it to another selection in the same deck.

> **Tip:** Animation metadata stays attached to the Figma layer. Copying the layer into another slide also carries its animation settings.

## Preview and undo changes

While editing, **Play** (or **Space**) and the timeline playhead show the slide as it looks at that moment, so you can check timing without leaving edit mode. Elements that aren't visible yet at the playhead show as dashed outlines, so you can still find and select them. Click an element on the slide to return to the full slide with every element visible and selectable. Choose **Preview** for **Replay**, **Next click**, the time slider and clickable links.

Slides with animations show a play badge with the number of effects on their thumbnail. Hover the thumbnail to play its animations in place, or choose the badge to open the slide and play it. Slides with video, audio or embeds keep their still thumbnail.

**Make it move** animates the whole deck in one step. Open it from **Tools > Animate whole deck**, from **Animate the whole deck** in the Animations panel when no layer is selected, from **Deck motion** above the timeline, or from Commands. Choose **Calm** (gentle fades), **Confident** (rise and scale) or **Bold** (sideways moves and pops), then **Apply**. Each slide is choreographed the same way as **Animate slide**, with the style's effects: large images scale or fade rather than bounce, and busy slides tighten their timing so every build finishes in under about two seconds. Slides change with a fade (Calm and Confident) or a slide (Bold); the first slide has no transition. **Keep slides I've already animated** is on by default. The whole change is one **Undo** step, and the effects use standard easing so PowerPoint exports keep them.

**Deck motion**, from above the timeline or from Commands, lists every included slide with its animation and click counts, transition and length. Choose a slide to open it. **Use this slide's transition everywhere** copies the current slide's transition to every included slide, and **Animate unanimated slides** runs **Animate slide** on slides that have no animations yet. Both can be undone. Use the slide's **Transition** controls to set its entry transition.

Use **Undo** and **Redo**, or **Command/Ctrl+Z** and **Command/Ctrl+Shift+Z**, for animation, notes, section and motion-setting edits. A small dot in the toolbar shows that changes are saved; it changes to **Saving…** or **Unsaved** while changes are pending. If saving fails, use **Retry saving** before refreshing, presenting or exporting.

## Commands, timeline and Morph

Choose **Tools** > **Commands & search** or press **Command/Ctrl+K** to find slide content or open tools. Motion copied with **Command/Ctrl+Shift+C** can be pasted to selected objects on another slide with **Command/Ctrl+Shift+V**. Drag on empty preview space to select intersecting objects; hold Command/Ctrl or Shift to add to the selection.

For exact start times and property tracks, open **Visual motion timeline** from Commands. Drag a bar to move its start, or drag its right edge to change its duration. Timing snaps to 0.05 seconds; hold **Alt** for unsnapped movement. Exact start and duration fields are available. **Property track** adds independent position, scale, rotation or opacity animation to the selected objects. Tracks can compose alongside a preset animation. The timeline shows up to 150 matching effects; use search to narrow larger slides.

Select **Morph** in the slide transition controls, then use **Configure Morph / Magic Move** in Commands to review object matches. Smart Morph matches objects automatically: unique layer names first, then instances of the same component and identical text, even when layers were renamed. When both slides have the same number of objects with a repeated name, they pair in reading order; otherwise repeated names stay unmatched unless you choose a source object. Each match shows why it was made. Unmatched objects fade. Source layers are kept intact.

## Linked motion styles and brand kits

Applying a reusable motion style links the selected objects to that style. Update the style to change linked objects while retaining individual field overrides. **Detach** keeps the current motion as an independent snapshot. If a definition is removed, its embedded snapshot keeps playing.

Open **Linked motion styles and libraries** in Commands to rename styles, import or export a reviewed JSON library, or store them as Figma string variables. Available published variable libraries can be imported. Saving a local variable does not publish a team library; use Figma's library workflow to publish it.

Open **Brand kits, object roles and relayout** to assign semantic roles, alternative text, decorative flags and reading order. Create linked title, body and accent styles, then review their application to the current slide, selected slides or the whole loaded deck. Local style overrides can be preserved. Role-based relayout moves existing top-level objects into a reviewed arrangement; it keeps their IDs, content, media and motion. Source edits and Figma style changes use **Figma Undo**.

## Narration

Open **Narration and audio cues** from Commands or the timeline. Upload audio, or record a take when the host permits microphone access. Recording stops at 120 seconds. Clips must be smaller than 2 MB; the local library allows 3 MB per file. Set the cue start and volume, then choose **Save slide cue**.

Audio is stored in the plugin's local library on this computer. Reattach the clip on another computer before exporting. Local HTML and MP4 bundle the audio; sharing a hosted deck uploads the attached audio with the presentation. Browser autoplay rules may require **Play narration**. Native editable presentation exports do not include these narration cues.

Updating a linked brand kit changes all objects using those native Figma styles in the file. The scope control determines which objects receive styles or relayout proposals. Typography and text colors use separate linked styles. Reduced-motion playback keeps click builds, revealing each current build instantly.

---

---
url: "/pitchdeck/design/charts.md"
description: "If you want 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 want 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 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 your chart type, then clicking 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 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.

## Reopen and refresh an existing chart

1. Choose **Tools** > **Commands & search** (**Command/Ctrl+K**), then choose **Refresh charts and KPIs**.
2. Select an existing Pitchdeck chart. Its saved data and chart options reopen in the builder.
3. Edit the table, upload a CSV smaller than 2 MB, or enter a public HTTPS spreadsheet CSV URL and choose **Fetch and preview published CSV**. Private spreadsheets need a downloaded CSV. Refresh happens only when requested.
4. Review the chart, enter a source label, then choose **Update chart and bound KPIs**.

Refresh keeps the chart frame's ID, parent, position, size, links and frame-level motion. It replaces the internal artwork using the saved chart options; manual edits to internal vector layers are not retained. Move internal links or animations to the chart frame before refreshing. The source label, URL and refresh date are saved with the chart.

Use a table with headers, 1 to 5,000 data rows and 2 to 50 columns. Numeric series must contain finite numbers. Source data and options must fit their storage budgets.

To bind a metric, expand **Bind a KPI to this chart**, select a text object, choose its data row and value column, then set the prefix, suffix and decimal precision. Save the binding after previewing its value. Refreshing the chart updates bound KPI text on the loaded page using the stored formatting. A changed source chart or text rejects the stale update so it can be reviewed again.

---

---
url: "/pitchdeck/design/import-markdown.md"
description: "Import .md and .markdown presentation files into Figma using Pitchdeck, including Deckset-style syntax, editable text, images, tables, presenter notes, footers, local slide links, and supported Markdown presentation commands."
---

# Importing Markdown presentation files into Figma as editable slides

> Import .md and .markdown presentation files into Figma using Pitchdeck, including Deckset-style syntax, editable text, images, tables, presenter notes, footers, local slide links, and supported Markdown presentation commands.

> **Note:** **Markdown Import is in BETA**. This importer supports Deckset syntax for common Markdown presentation files and works best when your deck uses standard Markdown plus presentation-style commands for slide dividers, backgrounds, images, notes, and footers.

## Importing a Markdown file

To import a Markdown presentation file into Figma, open the Pitchdeck plugin and drag a `.md`, `.markdown`, or `.zip` file from your computer into the import dropzone underneath the slide list. You can also click the import dropzone and browse for the file.

If your deck was written for Deckset, you can import the same Markdown file directly. Pitchdeck supports Deckset-style syntax for slide dividers, presenter notes, images, footers, slide numbers, and other supported presentation commands.

Pitchdeck will create a new page in your current Figma file, then add each Markdown slide as an editable Figma slide frame. Most imported content is created as regular Figma text, image, vector, and layout layers, so you can keep editing the deck after import.

> **Tip:** **Zip local media together with your Markdown file**. If your Markdown file references local images, SVGs, videos, or audio files, create a `.zip` file that contains one `.md` or `.markdown` file plus all of the local media files it references. If you do not want to bundle local files, use direct external image or media URLs instead.

## Supported Markdown content

Markdown Import supports common presentation content and imports it into editable Figma layers where possible:

- Headings, paragraphs, quotes, inline code, code blocks, and formulas as editable text.
- Bold, italic, strikethrough, superscript, subscript, inline links, and simple `` text styling.
- Unordered, ordered, nested, and source-numbered lists.
- Tables with basic alignment.
- Footnotes, including named footnotes and multiline footnotes.
- Presenter notes from `^ note` lines.
- Local slide anchors and links, including `[Jump](#slide-anchor)` links.
- Inline images, background images, split left/right images, image rows, remote SVGs, and missing-media placeholders.
- Video and audio references as media metadata or placeholders.
- Mermaid flowchart, graph, and pie diagrams as vector diagrams.
- Pikchr box/arrow diagrams as vector diagrams.

## Presentation commands

You can add commands at the top of the Markdown file to control the whole import:

```markdown
autoscale: true
background-image: hero.png
build-lists: notFirst
fit-header: #, ##
footer: Confidential
image-corner-radius: 18
paragraphs-as-presenter-notes: false
slide-dividers: ####
slidecount: true
slidenumbers: true
time-budget: 12
```

You can also add per-slide commands using bracket syntax:

```markdown
[.background-color: #111827]
[.footer: Local footer override]
[.slidenumbers: false]

# Slide title
```

Some commands are preserved as metadata so the original Markdown intent is not lost, even when Figma does not have a direct editable equivalent.

```markdown
build-lists: notFirst
slide-transition: dissolve(0.4)
time-budget: 12
```

For slide transitions, use values such as `dissolve(0.4)`, `fade(0.4)`, `push(left, 0.4)`, `move(right, 0.4)`, or `reveal(bottom, 0.4)`. `dissolve` and `fade` both request the same dissolve-style transition.

## Slide dividers and anchors

Use `---` to separate slides. If you prefer heading-based slide breaks, add a `slide-dividers` command at the top of the file.

```markdown
slide-dividers: ####

# First slide

---

#### Second slide
```

You can add anchors to headings or with HTML anchor tags:

```markdown
# Closing Summary {#closing-summary}

```

External links are imported as Figma text hyperlinks. Local links that point to an imported slide anchor are converted into Figma prototype navigation links after all slides have been created.

```markdown
[Visit Hypermatic](https://hypermatic.com)
[Jump to closing](#closing-summary)
```

## Images and media

Use regular Markdown image syntax for images:

```markdown
![inline 50%](diagram.png)
![left fit](product-shot.png)
![right alpha(0.6)](panel.png)
```

For local images, keep the referenced file paths inside the same `.zip` as the Markdown file:

```text
presentation.zip
  deck.md
  images/hero.png
  diagrams/flow.svg
```

Then reference those files from the Markdown:

```markdown
![inline](images/hero.png)
![inline](diagrams/flow.svg)
```

If an image is not included in the zipped import, use a direct external URL instead:

```markdown
![inline](https://example.com/images/hero.png)
```

Common image modifiers include:

- `inline` for inline slide content.
- `left` or `right` for split-image slide layouts.
- `fit` or `fill` for image scaling.
- `alpha(0.6)` for image opacity.
- `corner-radius(16)` for rounded image corners.
- `bn`, `bw`, `vivid`, `noir`, `chrome`, `fade`, `saturation()`, `blur()`, `contrast()`, `brightness()`, `exposure()`, `sepia()`, `vignette()`, and `sharpen()` for static image filter approximations.

Leading image-only lines at the start of a slide are treated as background images. SVG background images are imported as regular vector content instead of Figma image fills.

Video and audio references are preserved as Markdown media metadata. If the media file can be resolved, Pitchdeck creates a placeholder using the file metadata; otherwise it creates a clear missing-media placeholder so the import can continue.

## Diagrams

Mermaid and Pikchr fenced code blocks are imported as vector diagrams for the supported diagram types.

````markdown
```mermaid
flowchart LR
  A[Markdown] --> B[Pitchdeck]
  B --> C[Figma]
```
````

````markdown
```pikchr
box "Markdown"
arrow right
box "Figma"
```
````

More complex Mermaid or Pikchr diagrams may be imported as a vector source-card fallback so the original diagram source remains visible and editable after import.

## Tables and footnotes

Markdown tables are imported as editable text-based table layouts:

```markdown
| Left | Center | Right |
| --- | :---: | ---: |
| Plain | _Emphasis_ | **Strong** |
```

Footnotes are collected on the slides that reference them:

```markdown
Here is a claim with a footnote.[^source]

[^source]: First footnote line.
  Continuation line for the same footnote.
```

## Presenter notes

Use lines that begin with `^` to add presenter notes to a slide:

```markdown
# Slide title

Visible slide content.

^ This note is saved with the imported slide.
```

Presenter notes are saved on the imported slide as Pitchdeck slide data and Markdown-specific plugin data, so they can be used by Pitchdeck after import.

## Current limitations

- Formula syntax is kept visible as editable text; it is not converted into a rendered math diagram.
- Build-list commands are preserved as Markdown metadata, but they are not converted into native Figma layer build steps.
- Slide-transition commands are metadata-only for normal Figma design-file imports. When importing into a Figma Slides file, Pitchdeck attempts to apply the closest native Figma slide transition if the Figma API supports it.
- If you are looking for a "dissolve between slides" effect, use the `slide-transition` command above in your Markdown source instead of searching for a separate Pitchdeck slide setting in normal Figma design files.
- Audio files do not play directly from imported Figma frames; audio references are preserved as metadata/placeholders.
- Remote media imports depend on the URL being directly accessible from the plugin.
- Some diagram and image filter commands are approximated to match the closest available Figma behavior.

## Troubleshooting

If the import appears slow, please wait for the importer to finish preparing the Markdown slides. Larger Markdown files with many remote images can take longer because the plugin needs to resolve those assets before it can render the deck.

If an image, video, or audio file is missing after import, try importing the Markdown file again and include the referenced local media files in the same drag-and-drop action.

If a local slide link does not navigate to another slide, check that the target slide has a unique anchor and that the link uses the same anchor ID.

## Creating Markdown decks with AI

> **Tip:** **Use AI to draft a compatible `.md` deck**. You can ask AI tools like OpenAI, Claude, or Gemini to turn slide ideas, rough outlines, meeting notes, transcripts, or existing documents into Pitchdeck-compatible Markdown. For best results, ask for plain Markdown only, use `---` between slides, use `#` and `##` headings, add presenter notes with `^`, and avoid unsupported HTML or custom CSS.

Here are a few example prompts you can copy and adapt:

```text
Turn the notes below into a Pitchdeck-compatible Markdown presentation.

Use Deckset-style syntax with:
- `---` between slides
- `#` for slide titles
- concise bullets
- Markdown tables where useful
- `^` lines for presenter notes

Add these commands at the top of the file:
autoscale: true
fit-header: #, ##
slide-dividers: ---
slidenumbers: true

Output only the final .md file content, with no explanation.

Notes:
[paste your notes here]
```

```text
Create a 10-slide product demo deck as a Pitchdeck Markdown import file.

Use a strong title slide, problem slide, workflow slide, feature slides, a comparison table slide, and a closing slide.
Use `---` to separate slides, `#` and `##` for headings, and `^` lines for presenter notes.
Add simple per-slide commands like `[.background-color: #f8fafc]` only where they help the design.

Do not use unsupported HTML layouts or custom CSS.
Output only Markdown.
```

```text
Convert this meeting transcript into an executive summary deck for Pitchdeck.

Keep each slide focused on one idea.
Include slide titles, 3-5 bullets per slide, and presenter notes that summarize what to say.
Use Deckset-style Markdown syntax compatible with Pitchdeck import:
- `---` between slides
- `#` and `##` headings
- Markdown tables where comparison is useful
- `^` lines for presenter notes

Output only the .md file.

Transcript:
[paste your transcript here]
```

## Starter Markdown example

If you want a quick way to try Markdown Import, you can copy and paste the example below into a new `.md` file, or download a more complete demo deck:

Download the Pitchdeck Markdown import demo `.md` file

```markdown
autoscale: true
background-color: #f8fafc
fit-header: #, ##
footer: Pitchdeck Markdown Import Demo
slide-dividers: ---
slidecount: true
slidenumbers: true

[.background-color: #0f172a]
[.header: #ffffff, alignment(center), text-scale(92)]
[.text: #cbd5e1, alignment(center), text-scale(34)]

# [fit] Markdown to Figma Slides

Turn a plain `.md` deck into editable Pitchdeck slides.

^ This note is saved as a presenter note on the imported slide.

---

# Why Markdown Import?

[.column]
## Write fast

- Draft in any editor
- Keep slides in Git
- Reuse existing Markdown notes

[.column]
## Design later

- Import as editable Figma layers
- Adjust type, layout, and colors
- Export to PPTX when ready

[.end-columns]

---

# One file, many layer types

| Markdown source | Imported result |
| --- | :---: |
| Headings and paragraphs | Editable text |
| Lists and quotes | Structured text |
| Tables | Text-based table layout |
| Presenter notes | Slide notes |

---

[.background-color: #ecfdf5]
[.header: #065f46, alignment(center), text-scale(76)]

# Try it yourself

1. Save this as `pitchdeck-demo.md`.
2. Open Pitchdeck in Figma.
3. Drag the `.md` file into the import dropzone.
4. Edit the imported slides in Figma.
```

## File size limits

Import files can be up to 100 MB before extraction. Each file inside an archive can be up to 64 MB, with up to 10,000 files and 256 MB of extracted content in total, including nested packages. If an import exceeds these limits, split the document or reduce its image sizes, then try again.

---

---
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 walks through how to import slides from PowerPoint (.pptx files) into Figma using the Pitchdeck plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/CpMNE8U_kJ8)
### Video Tutorial: Import Google Slides to Figma in one click

This video walks through how to import slides from Google Slides (downloaded as .pptx files) into Figma using the Pitchdeck plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/phr2bzBcrO4)

> **Note:** **The PPTX Import feature is in BETA**. Note that this feature is still in BETA, so it works best for presentations that contain simpler designs (for example, mostly consisting of text, images and shapes). See below for a list of [supported](#supported-in-pptx-to-figma-imports) and [unsupported](#unsupported-in-pptx-to-figma-imports) content.

[Video](/assets/videos/pitchdeck/design/import-pptx.mp4)

To import a PPTX file that you've exported from the PowerPoint app, Keynote 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.

If Pitchdeck cannot convert the content on one slide, it will keep that slide in the correct deck position with a visible placeholder and continue importing the readable slides around it. Re-save the original file from Microsoft PowerPoint and import the new copy if you need to recover the missing slide content.

## 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 (kept as a visible placeholder when they cannot be converted)
- 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 walks through how to import PowerPoint (.pptx) to Figma Slides using the Pitchdeck plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/h2cAnTxI1yM)
### Video Tutorial: Import Google Slides to Figma Slides

This video walks through how to import Google Slides to Figma Slides using the Pitchdeck plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/twFlJ81u4qE)

[Video](/assets/videos/pitchdeck/design/figma-slides-import.mp4)

If you want 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**. Note that this feature is still in BETA, so it works best for presentations that contain simpler designs (for example, mostly consisting of text, images and shapes). See above for a list of [supported](#supported-in-pptx-to-figma-imports) and [unsupported](#unsupported-in-pptx-to-figma-imports) content.

## File size limits

Import files can be up to 100 MB before extraction. Each file inside an archive can be up to 64 MB, with up to 10,000 files and 256 MB of extracted content in total, including nested packages. If an import exceeds these limits, split the document or reduce its image sizes, then try again.

---

---
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 a keyframe under the **Animation Timeline** near the top of the custom animations panel. Clicking a keyframe will allow you to edit the properties for that specific keyframe.

### Inserting new keyframes

To add a keyframe between the default start and end points, enter its percentage (for example, **50**) and select **Insert New Keyframe**.

Any new keyframe that you add will automatically be created with the same properties that your currently selected keyframe contains; this lets you 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. 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 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 can use them in your slides by clicking 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.

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, click the **Links** tab, then open the menu under the layer you would like to make clickable and choose the slide under **Go to slide**. Slides are listed as **Slide 3 · Slide name**; the current slide and excluded slides aren't listed.

Linked layers show a badge with their destination, such as **Slide 3** or the website's domain. Tick **Linked** at the top of the tab to list only linked layers.

To **remove** a link from any layer, click the **Remove link** (**×**) icon beside the layer name.

### Adding links to external URLs

To add an external clickable URL to any child layer in a slide, click the **Links** tab, make sure the layer's menu is set to **Website, email or phone link**, then paste a full URL (starting with `https://`) into the text field. If the link isn't valid, a message under the field explains what to fix.

To **remove** a URL link from any layer, click the **Remove link** (**×**) icon beside the layer name, or delete the URL from the text field.

> **Note:** **Email and phone links are supported**. To link to an email address instead of a website, enter **mailto:your@email.com** in the text field. For a phone number, use **tel:** followed by the number.

## 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 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 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 walks through 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-nocookie.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, click the **GIFs/Videos/Embeds** tab, then click the **Search GIFs** icon beside the layer where you would like to embed the GIF 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, click the **Remove media** (**×**) icon beside the layer name, or delete the URL from the layer's text field.

Layers with media show a badge with the detected type, such as **GIF**, **YouTube** or **Figma**. Tick **With media** at the top of the tab to list only those layers. **Supported embeds** links to the full list of embed types.

> **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, click the **GIFs/Videos/Embeds** tab, then click the **Search free images and videos** icon beside the layer where you would like to embed the video 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, click the **Remove media** (**×**) icon beside the layer name, or delete the URL from the layer's text field.

You can also add your own .mp4 video, by hosting it on something like [Backblaze B2/Dropbox](/pitchdeck/faq/troubleshooting#where-to-host-mp4-video-files) and copy/pasting the URL into Pitchdeck.

> **Warning:** **Videos are only used for web presentations**. 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), click the **GIFs/Videos/Embeds** tab, then paste any valid video URL from **YouTube** or **Vimeo** into the text field under the layer where you would like to embed it. If the link isn't a full URL, a message under the field explains what to fix.

You can also add your own .mp4 video, by hosting it on something like [Backblaze B2/Dropbox](/pitchdeck/faq/troubleshooting#where-to-host-mp4-video-files) and copy/pasting the URL into Pitchdeck.

To **remove** an external video URL embed from any layer, click the **Remove media** (**×**) icon beside the layer name, or delete the URL from the layer's text field.

> **Warning:** **Videos are only used for web presentations**. 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 turn this off with the **Autoplay** switch under the embed URL. **Loop** and **Controls** switches are also available for YouTube, Vimeo, MP4 and MP3 embeds. 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 choose how your GIF or MP4 embed is scaled with the fit menu directly underneath the URL field.

- **Fill** covers your entire layer, with some possible outer cropping.
- **Fit** keeps the entire GIF or video 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 walks through how to export PowerPoint (.pptx) files with MP4 video embeds from Figma using the Pitchdeck plugin.
[Embedded media](https://www.youtube-nocookie.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:** 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)

Select a slide, choose **Notes** above the preview, then type or paste into the **Speaker Notes** field. Notes are saved with the slide. In native Figma Slides, this field is separate from Figma's own presenter notes.

## 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 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).

## Present and rehearse

Choose **Present** to start at the current slide, or use its menu to start from the beginning. Presenter view shows the current slide, next slide, speaker notes and elapsed time. On slides with click animations, a progress strip under **This slide** shows how many clicks are left before the next slide. Use **Rehearse** to record per-slide durations; finish the rehearsal to save those timings in the deck's settings.

To record a narrated run-through, choose **Record** and allow microphone access. **Record** appears only where the host allows microphone access; in hosts without it, upload narration in **Narration and audio cues** instead. Presenting starts from the first slide; talk through each slide and click as you normally would. Choose **Finish recording** to save one narration cue per slide (up to 2 minutes or 2 MB each), your per-slide timings, and the moment of each click. [MP4](/pitchdeck/export/mp4) export uses those click times so each build lands where you clicked. Existing narration stays silent while you record, and each new take replaces that slide's cue; use **Undo** to restore the previous cues.

After a rehearsal, the toolbar shows whether you're **On pace**, ahead or behind compared with your rehearsed timings.

Press **L** for a laser pointer and **D** to draw on the slide, or use **Laser** and **Pen** below the slide; press **E** to erase. Drawings clear when you change slides and show in **Audience view**. Press **Esc** to put the tool down.

**Captions** show timed text over the slide in Presenter (press **C**), are burned into [MP4](/pitchdeck/export/mp4) exports and can be turned on in [Local HTML](/pitchdeck/export/portable#local-html-presentation) presentations. Create them in **Narration and audio cues**: **From speaker notes** splits the notes into captions timed across the slide's narration, and you can edit each caption's start, end and text. **Use as speaker notes** copies caption text into the notes. When you record a run-through, select **Transcribe captions** to turn your narration into captions as you speak; this uses your browser's speech service, which may send audio to its provider, and is available only where the browser supports it.

Choose **Audience view** before sharing the plugin window. It hides the private console. The plugin's presenter and audience views use the same window. For a separate audience window, export a [Local HTML presentation](/pitchdeck/export/portable#local-html-presentation).

Use the playback controls to pause, replay, seek, move through click builds or black out the slide. Press **Escape** to close the presentation.

> **Warning:** Enabling **Include Speaker Notes** puts notes in the exported HTML deck's files. The audience window hides their display; it does not remove them from the distributed files. Leave the option off when sharing a deck whose notes should stay private.

## Story workspace and reviewed revisions

Open **Story workspace and targeted revisions** from Commands. Record one main message, evidence or sources, speaking notes and approval status for each slide. The estimated speaking time uses 140 words per minute.

For a targeted revision, enter an instruction and choose **Copy revision prompt**. Use it in your preferred AI tool, then paste the returned JSON. Pitchdeck does not send the prompt automatically. **Review changes** shows before and after text; apply only the selected revisions. Approved slides are protected until you unapprove them. If the source text changed after review, the proposal must be reviewed again.

**Split an overloaded text block** previews continuation text, then creates 2 to 10 slides using the same source design. The original slide remains intact. Revisions and splitting use Figma Undo. Check text fitting and the resulting design before presenting.

---

---
url: "/pitchdeck/design/presets.md"
description: "Create reusable Figma component-based slide layouts in Pitchdeck, then style and populate them with your own content."
---

# Adding preset layout slides to your deck

> Create reusable Figma component-based slide layouts in Pitchdeck, then style and populate them with your own content.

[Video](/assets/videos/pitchdeck/design/adding-slide-layouts.mp4)

If you want 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 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.

## Convert existing Figma slide frames into reusable 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 (for example, **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 (for example, 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 (for example, 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**. 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 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.

## Including or excluding slides

[Video](/assets/videos/pitchdeck/design/excluding-slides-from-exports.mp4)

Use the checkbox beside each slide name to include or exclude that slide. Excluded slides are dimmed and show an **Excluded** badge on their thumbnail. In native Figma Slides, unchecking a slide skips it in Figma. In Figma Design, the **Included** checkbox above the slide list toggles all loaded slides.

To change several slides at once, select them, choose **More actions** (**…**), then **Exclude from deck** or **Include in deck**. In native Figma Slides these are **Skip slides** and **Unskip slides**.

## 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 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 lets you 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 the size dropdown in the main plugin header menu.

## Organize several slides

The icons beside **Slides** let you find a slide by name, add a section, and switch between the list and grid views. Once a deck has sections, a filter appears above the slides. Hold **Command/Ctrl** while clicking thumbnails to select several slides; hold **Shift** for a range. This selection is separate from whether slides are included in the presentation.

When slides are selected, the actions below the list let you **Duplicate** them, **Rename** a single slide or **Export** the selection. **More actions** (**…**) adds include/exclude, **Move to section** and **Move before**. Exporting a selection opens the export panel for that temporary subset and keeps the deck's included slides unchanged.

Drag selected slides to reorder them, or use **Move before**. Clear the search and section filter before dragging. In native Figma Slides, reordering follows the slide grid and Include/Exclude corresponds to Figma's skipped-slide state.

Use the **Add a section** icon to name a section, then assign selected slides to it. Sections help organize and filter the deck; they do not change the slide artwork.

## Choose a layout

Choose **Add Slides/Charts** below the slide list. Search the named layouts or filter by category to find a starting point. The master-slide list is searchable too. The Theme styles view lists the styles available in the file; apply their styling in Figma.

## Check quality, search and recovery

Choose **Tools** > **Check presentation** to review missing fonts, small or clipped text, known solid-background contrast, content outside the slide, image descriptions, reading order, asset sizes and motion compatibility for your chosen destination. Findings are grouped by type, with errors first; choose **Select object** on a finding to locate it. **Check web links online** makes browser HEAD requests to the linked sites without credentials. CORS, authentication and HEAD support can make availability unknown; open those links manually.

**Compare exported appearance** overlays the source slide with a PNG, JPEG or WebP rendered by the destination tool. The pixel comparison is a review aid; differences can come from font rendering, compression or alignment.

**Tools** > **Commands & search** (**Command/Ctrl+K**) finds slide names, notes, object names and source text, and opens every Pitchdeck tool. Large slide lists are virtualized. After an interrupted metadata save, **Review recovered edits** lets you inspect a local checkpoint. Recovery restores fields that still match their earlier values and keeps conflicting newer edits. It does not replace Figma's version history or undo source edits.

## Saved audience shows

Open **Saved audience shows** from **Commands & search**. Give the show a name, add slides and arrange their delivery order with the arrow buttons. Each slide can have its own duration, and the pencil button overrides its speaking notes for this show only. Choose it in **Active show** to use that version for Present, Share and Export. The source slides' include flags, order and notes stay intact. A one-off selected-slide export takes precedence.

Use **Full deck** to return to the source version. Missing source slides must be reviewed before a show can be delivered. Presenter and Local HTML offer **Use show timings** for automatic advancement; MP4 uses the saved hold times, extending them when builds or narration need longer. PowerPoint's supported native timing path carries automatic slide timings. Up to 50 shows can be saved; the combined presentation settings budget is 90 KB.

Changing the active show does not upload it automatically. **Share** asks you to update when the current link contains another audience version. Updating uses the page's existing URL and replaces its uploaded contents. For independent URLs, use the [separate page/file workflow](/pitchdeck/web/multiple-presentation-urls).

---

---
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 walks through how to embed Canva designs into Figma presentations created with the Pitchdeck plugin.
[Embedded media](https://www.youtube-nocookie.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 walks through how to embed live Figma designs into Figma presentations created with the Pitchdeck plugin.
[Embedded media](https://www.youtube-nocookie.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**

for example, `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 walks through 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-nocookie.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 walks through how to embed Google Docs into Figma presentations created with the Pitchdeck plugin.
[Embedded media](https://www.youtube-nocookie.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 walks through how to embed Google Forms into Figma presentations created with the Pitchdeck plugin.
[Embedded media](https://www.youtube-nocookie.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 walks through how to embed Google Sheets into Figma presentations created with the Pitchdeck plugin.
[Embedded media](https://www.youtube-nocookie.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 walks through how to embed Google Slides into Figma presentations created with the Pitchdeck plugin.
[Embedded media](https://www.youtube-nocookie.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 walks through how to embed Loom videos into Figma presentations created with the Pitchdeck plugin.
[Embedded media](https://www.youtube-nocookie.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 walks through how to embed Lottie animations into Figma presentations created with the Pitchdeck plugin.
[Embedded media](https://www.youtube-nocookie.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 walks through how to embed SoundCloud audio into Figma presentations created with the Pitchdeck plugin.
[Embedded media](https://www.youtube-nocookie.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 walks through how to embed Spotify audio into Figma presentations created with the Pitchdeck plugin.
[Embedded media](https://www.youtube-nocookie.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 walks through 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-nocookie.com/embed/sT8Rt1DLnCM)
### Video Tutorial: Export PowerPoint files with MP4 video embeds from Figma

This video walks through how to export PowerPoint (.pptx) files with MP4 video embeds from Figma using the Pitchdeck plugin.
[Embedded media](https://www.youtube-nocookie.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 walks through how to embed Vimeo videos into Figma presentations created with the Pitchdeck plugin.
[Embedded media](https://www.youtube-nocookie.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`

If Vimeo gives you a share URL with an extra private or unlisted token, paste that full URL into Pitchdeck as well instead of trimming it back to the public-looking part.

## Before you export

- Vimeo and YouTube embeds are used in the Pitchdeck web presentation, not in PowerPoint, Keynote, or Google Slides exports.
- Paste the exact Vimeo share URL from your browser or Vimeo's Share dialog.
- If the video is part of a private or unlisted Vimeo workflow, keep the full URL intact when you paste it into Pitchdeck.

## Troubleshooting Vimeo privacy errors

Pitchdeck renders Vimeo videos through Vimeo's own embedded player. If Vimeo says the video cannot be shared because of a privacy setting:

1. Open the same Vimeo URL directly in your browser first and confirm it loads there.
2. Copy the original Vimeo share URL again and paste that full URL into Pitchdeck.
3. If Vimeo still refuses to play the video in the embedded player, check the video's Vimeo privacy or embed permissions with the video owner before troubleshooting Pitchdeck further.

If you need a direct file embed for a presentation export, use a hosted `.mp4` URL instead of a Vimeo page URL.

---

---
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 walks through how to embed website iFrames into Figma presentations created with the Pitchdeck plugin.
[Embedded media](https://www.youtube-nocookie.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**. 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 walks through how to embed YouTube videos into Figma presentations created with the Pitchdeck plugin.
[Embedded media](https://www.youtube-nocookie.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/canva.md"
description: "Export your Pitchdeck slides from Figma to PPTX or PSD files for manual import into Canva."
---

# Exporting your slides to Canva

> Export your Pitchdeck slides from Figma to PPTX or PSD files for manual import into Canva.

### Video Tutorial: Export Figma slides to Canva with one click

This video walks through how to export Figma slides to Canva via PSD files with one click using the Pitchdeck plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/BylcDyFXnAc)

[Video](/assets/videos/pitchdeck/export/export-canva.mp4)

To export your presentation for Canva, click the **Export Presentation** button in the Pitchdeck toolbar, then select the **Canva (.psd files)** export format.

By default, Pitchdeck exports one `.psd` file per selected slide. For multiple slides, download the `.zip` file and unzip it before importing the numbered PSD files into Canva. A single selected slide downloads directly as a `.psd` file.

## Slide order and file size

With the default settings, each PSD contains one slide so Canva does not combine the whole deck onto one large canvas. The numbered filenames follow the export order shown in Pitchdeck. Import the files in filename order and check the page order in Canva after importing.

Canva supports importing PSD files up to 300 MB per file. Pitchdeck warns when a file exceeds that limit. If a slide is too large, turn off **2x Retina Images** and try again.

## Combining slides into one PSD

**Combine Slides into One PSD** is off by default. Enable it to pack the selected slides into a single PSD. Canva may import that file as one large canvas instead of separate pages. Leave this option off when you want each slide in its own PSD.

If the combined deck exceeds the export size or memory limits, Pitchdeck may reduce Retina resolution or automatically split it into separate PSD files in a ZIP.

## Text appearance

Text remains editable by default. For unrotated text boxes, Pitchdeck retains the full Figma text box in the PSD so Canva does not narrow the box to the visible letters. Canva may still substitute fonts and reflow words during PSD import, even when the font is available in Canva.

**Render Text as Images (Non-Editable)** is off by default. Enable it to render text as non-editable image layers instead of rich text, using Figma's rendered typography. This avoids font substitution and preserves the original line breaks. You cannot edit the wording or text formatting in Canva when this option is enabled; other layers remain separate.

## Image settings

The Canva export includes the same **Image Settings** controls used by other image-based exports:

- **Compress Images** reduces the generated PSD file size where possible.
- **2x Retina Images** exports a higher-resolution PSD.
- **Downsize Large Figma Image Fills** optimizes oversized Figma image fills before exporting.

## Importing the PSD files into Canva

Open Canva and import the exported `.psd` file from your computer. If Pitchdeck exported a `.zip` file, unzip it first, then import the separate `.psd` files into Canva. Canva will convert each PSD file into an editable Canva design where supported.

You can follow Canva's official import guide here: [Import designs into Canva](https://www.canva.com/en_au/help/ai-import/).

> **Warning:** Animations, videos, embeds and Pitchdeck web presentation features won't be included in the exported PSD files. These are only used for presentations uploaded to the Pitchdeck web app.

## Import a complete PPTX deck

Select **Canva (Download PPTX)** under **Static Deck** to export using Pitchdeck's PowerPoint conversion. Download the file, then import it into Canva. This is a manual file import and does not require connecting a Canva account inside Pitchdeck.

Check slide order, text wrapping, fonts and complex artwork after importing. Canva may substitute fonts or interpret some PowerPoint elements differently. The PSD workflow above remains available when you prefer its appearance.

---

---
url: "/pitchdeck/export/google-slides.md"
description: "Export slides from Figma to Google Slides with a direct, private upload or download a `.pptx` file for manual import."
---

# Exporting your slides to Google Slides

> Export slides from Figma to Google Slides with a direct, private upload or download a `.pptx` file for manual import.

### Video Tutorial: Export presentations to Google Slides

This video walks through how to export your slide deck presentation designs from Figma to Google Slides using the Pitchdeck plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/BkMRUL5SvmE)
### Video Tutorial: Add Master Slides to PowerPoint exports from Figma

This video walks through how to export a PowerPoint file from Figma (with Master Slides) using the Pitchdeck plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/vR7ocT4YO6s)
### Video Tutorial: Export Figma Slides to Google Slides

This video walks through how to export your deck from Figma Slides to Google Slides using the Pitchdeck plugin
[Embedded media](https://www.youtube-nocookie.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 choose one of the Google Slides export formats:

- **Google Slides (Direct API Upload)** creates a new presentation in your connected Google Drive and opens it in Google Slides. Connect your Google account from the export panel first. Pitchdeck remembers the connection between Figma files, and you can sign out or switch accounts from the same panel.
- **Google Slides (.pptx file)** downloads a local `.pptx` file that you can import manually. This remains available when you do not want to connect Google or need a local copy.

Configure the remaining export settings, then click **Upload to Google Slides** or **Export** to begin.

> **Tip:** With direct upload, the presentation bytes go from the Pitchdeck plugin to Google Drive. Hypermatic's OAuth service facilitates the connection but does not store or proxy your presentation file.

> **Warning:** **Animations and videos won't be included in the exported Google Slides .pptx file**. 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, text is included in the exported layer images instead. Note that there may be some minor visual differences between editable text in PowerPoint/Keynote/Google Slides and Figma.

Editable text is placed above all non-text artwork so you can click directly into it in your presentation app. This applies with Smart Auto Layout enabled or disabled. Artwork that overlaps text in Figma will therefore sit behind the editable text in the export.

For PowerPoint exports, supported circular and elliptical text paths remain editable as curved WordArt above the artwork, with Smart Auto Layout enabled or disabled. Slightly skewed circular paths may be adjusted to a close circular match. Paths that cannot be reproduced as editable curves stay in the artwork instead of becoming straight text. Google Slides and Keynote exports preserve these curved labels as artwork.

With editable text enabled, the exported `.pptx` can retain the full text from a layer, including parts that are clipped, masked, transparent or covered by other layers in Figma. Those parts may become visible when editing the presentation. Remove any text you don't want included from the source layer before exporting.

With Smart Auto Layout disabled, Pitchdeck surfaces nested text, keeps direct-child artwork as separate movable objects, and combines the remaining artwork into a slide background image. Artwork that depends on clipping or blending with neighboring layers stays in the composite background.

> **Warning:** **Ensure that any custom fonts are installed/replaced**. 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 want 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 (for example, 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.

> **Warning:** Text used as a Master Slide placeholder supports one transparency value per text layer. If a single Figma text layer mixes different opacity values, split it into separate text layers before export when that difference needs to remain editable in a master layout.

## Keeping Auto Layout and nested layers editable (Beta)

Enable **Smart Auto Layout & Nested Layers (Beta)** to export the children of safe layout-style frames, groups, components, and instances, including Auto Layout containers, as separate objects while keeping their Figma positions. Non-text objects keep their relative stacking order, with editable text placed above them. If a safe container has its own fill, Pitchdeck exports that background separately below its supported children. Pair this with **Use Editable Text** when you also want supported nested text layers to remain editable. The beta controls nested-layer decomposition only; the text, transparency, and native-shape improvements below apply to all PPTX exports.

Pitchdeck keeps supported solid rectangles, ellipses, flat-cap lines, transparency, and individual borders (for example, a bottom border) as native presentation shapes. With the beta enabled, supported text, bullets, icons, images, and lines nested inside safe containers can also remain separate from the container background. Vector-only icon and logo compositions stay together as one selectable object instead of being split into individual paths.

> **Warning:** PowerPoint and Keynote retain editable text transparency stored in the `.pptx`. Google Slides keeps native shape and line transparency during conversion, but may make editable text colours opaque because its native text colour model does not expose transparency. If exact translucent text is more important than editability in Google Slides, add **[PNG]** to that text layer or a parent layer name so Pitchdeck keeps its appearance in an image.

When a styled frame or instance needs raster fallback, Pitchdeck can separate eligible text from its artwork. All resulting artwork images sit below the editable text, including images with large transparent areas. Text fully inside an opaque rectangular mask can remain editable, including mixed-color text.

With Smart Auto Layout enabled, some Figma compositing cannot be reproduced safely as separate presentation objects. Containers or text whose appearance depends on partial or non-rectangular masking, material clipping, effects, non-default blend modes, partial container opacity, rotation, or layer/background blur retain the fidelity-first raster fallback. Text fully inside an otherwise inert clip may still be editable. Add **[PNG]** to a container name to flatten its entire subtree, including text. Gradient and image-filled shapes also use the existing image fallback. The beta is disabled by default and does not remove Auto Layout or otherwise change your Figma layers.

## 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.

Each hard return in a Figma list becomes a new bullet or numbered item in the PowerPoint-compatible export. Soft line breaks remain inside the current item, numbered lists continue in sequence, and normal paragraphs can remain unlisted alongside list paragraphs in the same text layer.

> **Warning:** Google Slides uses a separate conversion path. For the most predictable Google Slides results, keep each list in its own Figma text layer and move normal text into another 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 walks through how to export a PowerPoint file from Figma (with Master Slides) using the Pitchdeck plugin.
[Embedded media](https://www.youtube-nocookie.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** 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 want 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).

## Update an existing Google Slides presentation

Use **Google Slides (Direct API Upload)** to replace a presentation previously created through Pitchdeck's direct upload. You must own the presentation in the connected Google account.

1. Select the Figma slides to export and open the Google Slides direct-upload settings.
2. Copy the presentation ID from its Google Slides URL: the text between `/d/` and `/edit`.
3. Paste it into **Update Existing Presentation (Optional)**.
4. Check **Replace the Entire Deck**, then click **Replace Google Slides Deck**.

The presentation keeps its URL, but all slide content is replaced by the selected Figma slides. Make a copy first if you need to keep edits made in Google Slides. Leave the ID blank to create a new presentation instead.

## Recover an interrupted direct upload

If an upload is interrupted, Pitchdeck tries to recover it automatically. If the export panel offers **Retry Google Slides Upload**, use that action to continue the existing attempt. You can also download the PPTX backup for manual import. Check your Google Drive before starting a fresh export if the outcome is unclear.

## 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 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 (for example, `Inter`) with your desired font family, and set the `style` value to the desired font style of your font family (for example, `Regular`, `Bold`, etc); Note that you 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 want 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 }`

## Related Pitchdeck guides

- Follow the [step-by-step Figma to Google Slides tutorial](/pitchdeck/tutorials/export-figma-slides-to-google-slides).
- Compare the [PowerPoint export workflow](/pitchdeck/export/powerpoint) when you need a local `.pptx` file.
- Explore the [Pitchdeck Figma plugin](https://www.hypermatic.com/pitchdeck/) for presentation design, export, and sharing.

---

---
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 walks through how to export Figma slides to JPG/PNG images using the Pitchdeck plugin.
[Embedded media](https://www.youtube-nocookie.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 walks through how to export your slide deck presentation designs from Figma to Keynote using the Pitchdeck plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/yJ3W1pjS0LI)
### Video Tutorial: Add Master Slides to PowerPoint exports from Figma

This video walks through how to export a PowerPoint file from Figma (with Master Slides) using the Pitchdeck plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/vR7ocT4YO6s)
### Video Tutorial: Export Figma Slides to Keynote

This video walks through how to export your deck from Figma Slides to Apple Keynote using the Pitchdeck plugin
[Embedded media](https://www.youtube-nocookie.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:** Keynote exports omit Pitchdeck animations and video embeds. Use a browser presentation for those playback features. MP4 renders supported motion and attached narration, with poster artwork for external embeds.

## 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, text is included in the exported layer images instead. Note that there may be some minor visual differences between editable text in PowerPoint/Keynote/Google Slides and Figma.

Editable text is placed above all non-text artwork so you can click directly into it in your presentation app. This applies with Smart Auto Layout enabled or disabled. Artwork that overlaps text in Figma will therefore sit behind the editable text in the export.

For PowerPoint exports, supported circular and elliptical text paths remain editable as curved WordArt above the artwork, with Smart Auto Layout enabled or disabled. Slightly skewed circular paths may be adjusted to a close circular match. Paths that cannot be reproduced as editable curves stay in the artwork instead of becoming straight text. Google Slides and Keynote exports preserve these curved labels as artwork.

With editable text enabled, the exported `.pptx` can retain the full text from a layer, including parts that are clipped, masked, transparent or covered by other layers in Figma. Those parts may become visible when editing the presentation. Remove any text you don't want included from the source layer before exporting.

With Smart Auto Layout disabled, Pitchdeck surfaces nested text, keeps direct-child artwork as separate movable objects, and combines the remaining artwork into a slide background image. Artwork that depends on clipping or blending with neighboring layers stays in the composite background.

> **Warning:** **Ensure that any custom fonts are installed/replaced**. 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 want 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 (for example, 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.

> **Warning:** Text used as a Master Slide placeholder supports one transparency value per text layer. If a single Figma text layer mixes different opacity values, split it into separate text layers before export when that difference needs to remain editable in a master layout.

## Keeping Auto Layout and nested layers editable (Beta)

Enable **Smart Auto Layout & Nested Layers (Beta)** to export the children of safe layout-style frames, groups, components, and instances, including Auto Layout containers, as separate objects while keeping their Figma positions. Non-text objects keep their relative stacking order, with editable text placed above them. If a safe container has its own fill, Pitchdeck exports that background separately below its supported children. Pair this with **Use Editable Text** when you also want supported nested text layers to remain editable. The beta controls nested-layer decomposition only; the text, transparency, and native-shape improvements below apply to all PPTX exports.

Pitchdeck keeps supported solid rectangles, ellipses, flat-cap lines, transparency, and individual borders (for example, a bottom border) as native presentation shapes. With the beta enabled, supported text, bullets, icons, images, and lines nested inside safe containers can also remain separate from the container background. Vector-only icon and logo compositions stay together as one selectable object instead of being split into individual paths.

> **Warning:** PowerPoint and Keynote retain editable text transparency stored in the `.pptx`. Google Slides keeps native shape and line transparency during conversion, but may make editable text colours opaque because its native text colour model does not expose transparency. If exact translucent text is more important than editability in Google Slides, add **[PNG]** to that text layer or a parent layer name so Pitchdeck keeps its appearance in an image.

When a styled frame or instance needs raster fallback, Pitchdeck can separate eligible text from its artwork. All resulting artwork images sit below the editable text, including images with large transparent areas. Text fully inside an opaque rectangular mask can remain editable, including mixed-color text.

With Smart Auto Layout enabled, some Figma compositing cannot be reproduced safely as separate presentation objects. Containers or text whose appearance depends on partial or non-rectangular masking, material clipping, effects, non-default blend modes, partial container opacity, rotation, or layer/background blur retain the fidelity-first raster fallback. Text fully inside an otherwise inert clip may still be editable. Add **[PNG]** to a container name to flatten its entire subtree, including text. Gradient and image-filled shapes also use the existing image fallback. The beta is disabled by default and does not remove Auto Layout or otherwise change your Figma layers.

## 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.

Each hard return in a Figma list becomes a new bullet or numbered item in the PowerPoint-compatible export. Soft line breaks remain inside the current item, numbered lists continue in sequence, and normal paragraphs can remain unlisted alongside list paragraphs in the same text layer.

> **Warning:** Google Slides uses a separate conversion path. For the most predictable Google Slides results, keep each list in its own Figma text layer and move normal text into another 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 walks through how to export a PowerPoint file from Figma (with Master Slides) using the Pitchdeck plugin.
[Embedded media](https://www.youtube-nocookie.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** 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 want 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/mp4.md"
description: "Save your Figma slides as an animated MP4 with automatic builds and attached narration."
---

# Exporting an MP4 slideshow

> Save your Figma slides as an animated MP4 with automatic builds and attached narration.

MP4 Slideshow turns selected slides into a video you can play or share. It requires an active trial or Pitchdeck Pro.

## Export the video

1. Load your slides in Pitchdeck and open **Export**.
2. Select **MP4 Slideshow (.mp4 file)**.
3. Choose **Seconds Per Slide**, from 1 to 60 seconds.
4. Click **Export MP4 Slideshow**, wait for encoding, then download the MP4.

The first slide determines the video's aspect ratio. Other slide sizes fit inside that frame with white margins. Output uses H.264 at 30 frames per second, up to 1920 by 1080 pixels.

## What the video includes

This format renders supported 2D layer motion and transitions, advances click builds automatically and mixes attached narration. After a recorded run-through, click builds advance at the moments you clicked while recording. Slide captions are burned into the video; remove a slide's captions to export it without them. External media and GIFs use poster artwork. Interactive links are not included. Use a [Local HTML presentation](/pitchdeck/export/portable#local-html-presentation) for interactive playback or perspective effects.

The encoder downloads on demand, so first use requires internet access. Slide content stays on your computer. Exports are limited to 30 minutes and 250 MB of artwork or encoded output. If encoding takes too long, export fewer slides at a time.

Use **Cancel** in the progress message to stop video preparation or encoding. You can start another export after cancellation finishes.

## Animated recording

MP4 uses the shared motion engine for supported 2D animations, per-slide transitions and automatic click builds. Attached narration is mixed into the video. External media and GIFs use poster artwork; interactive links are not included. Perspective effects require browser playback. Export is limited to 30 minutes, 1920 × 1080 and 250 MB.

---

---
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 walks through how to export your slide deck presentation designs from Figma to PDF using the Pitchdeck plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/W_W8aYQvg28)

### Video Tutorial: Export presentation to clickable interactive PDF

This video walks through how to export clickable interactive PDFs from Figma using the Pitchdeck plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/jKFlguRXiAA)

### Video Tutorial: Compress large PDF presentation exports from Figma

This video walks through how to compress large PDF presentation exports from Figma using the Pitchdeck plugin.
[Embedded media](https://www.youtube-nocookie.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 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/pitch.md"
description: "Export a PPTX presentation from Figma for manual import into Pitch."
---

# Exporting your slides to Pitch

> Export a PPTX presentation from Figma for manual import into Pitch.

1. Load your slides in Pitchdeck and open **Export**.
2. Choose **Pitch Presentation (.pptx file)** and configure the editable-text and image settings.
3. Export and download the PPTX.
4. Import the file into Pitch and review every slide.

This option uses Pitchdeck's PowerPoint conversion pipeline. Font availability, text wrapping and supported elements can differ in Pitch. Layer animations and web embeds are not included. See the [PowerPoint export guide](/pitchdeck/export/powerpoint) for shared editing and image settings.

> **Tip:** Pitch may normalize imported decks to widescreen. Check the layout after importing slides with square or other custom dimensions.

---

---
url: "/pitchdeck/export/portable.md"
description: "Export local ZIP files containing slide images, text and optional Pitchdeck speaker notes."
---

# Exporting AI handoffs, Markdown and HTML presentations

> Export local ZIP files containing slide images, text and optional Pitchdeck speaker notes.

Use these formats to hand a deck to an AI agent, reuse its copy, present offline or print handouts. They require an active trial or Pitchdeck Pro.

The export panel shows a short format summary. Expand **Export details** for instructions and limitations. The export button stays at the bottom while you scroll through settings.

## Export a portable deck

1. Load the slides you want to export in Pitchdeck.
2. Open **Export** and choose **AI Agent Handoff**, **Markdown & Images**, **Local HTML Presentation** or **Printable Handouts**.
3. Optionally enable **Include Speaker Notes**. This includes notes saved in Pitchdeck; it does not read native Figma Slides presenter notes.
4. Export, download the ZIP and extract it before opening its files.

AI handoffs, Markdown and handouts include numbered slide PNGs, `deck.md`, `deck.json` and `README.md`. Images are exported at 1x resolution. Hidden layers are omitted. Visible text that is clipped by a parent can remain in the extracted text, so review the files before sharing them.

## AI agent handoff

The AI handoff ZIP also includes `index.json`, an individual JSON file for each slide, and `TASKS.md` with suggested review, rewrite, translation and reconstruction tasks. The index lets an agent load only the slides it needs. Layer IDs map proposed copy changes back to their source Figma layers.

Give your agent the ZIP and a specific task, for example:

> Read README.md and index.json. Review this deck for clarity and repetition. Compare the slide images with the extracted text and reference slide numbers and layer IDs in your suggestions.

Pitchdeck saves the ZIP locally and does not send it to an AI service. Speaker notes are excluded unless you enable them. The included agent guidance treats slide content as document data, not instructions to execute or publish.

The JSON contains reference geometry, text runs and available paint/effect data. It is not a lossless Figma reconstruction format. The PNGs are the visual reference. The AI handoff also includes original image files in `assets/images/` and supported vector artwork in `assets/vectors/`. Layer and paint asset paths link to these files, alongside the image crop and transform data. Original images can contain pixels outside the visible crop. Repeated image fills share one file. Per-slide warnings identify vector artwork that could not be exported separately. Layer order follows the source tree rather than an inferred reading order.

## Markdown and images

Open `deck.md` in a Markdown editor. It contains slide names, text and optional notes, with relative links to the numbered PNGs. Keep the `slides` folder alongside the Markdown file when moving or sharing it. Source text is preserved in literal blocks so embedded markup does not become active document content.

## Local HTML presentation

Open the extracted `index.html` in a browser. The ZIP includes the player, slide artwork, GIFs, built-in animations, custom keyframes, multiple effects, click builds and per-slide transitions. Use **Previous**, **Next**, arrow keys or slide links to navigate. Next advances the next click build before moving to the next slide. Use **Play/Pause**, **Replay** and the time slider to inspect playback; **Full screen** starts full-screen viewing. Decks with captions show a **Captions** button (or press **C**); the setting carries over to the audience window.

The presenter console shows current and next slides, optional notes and elapsed time. **Rehearse** records slide durations and lets you download the timing results. **Audience window** opens a separate synchronized window with the slide and without the private console. Allow the popup if your browser blocks it. If local-file synchronization is unavailable, use a local web server or host the folder; the player shows a connection message rather than silently playing an independent deck. Closing the presenter stops its audience connection.

**Include Speaker Notes** stores notes in the exported files. Hiding them in the audience window does not make those files private. Leave this option off when distributing a deck whose notes should not be shared.

Web embeds and externally linked video, audio and Lottie content require internet. Providers may block embedding from local files; use a hosted presentation when a provider requires a hosted origin. Sound playback may require a click because of browser autoplay rules. Lottie expressions are not supported in the local player.

Keep the whole extracted folder together. Remote controls, shared pointers, analytics and account services are not included.

## Host the HTML deck on your own account

Choose **Local HTML Presentation (Zip file)** under **Self-Hosted HTML**, then extract the archive and upload its contents using your hosting provider's static-site deployment tools. Keep `index.html` at the published root and preserve the asset folders.

Use a separate site or project for each presentation. The deck does not include Pitchdeck's hosted password protection, analytics, remote controls or pointers. Your provider's access controls and hosting limits apply. Linked media still requires internet and depends on its provider's embedding rules. Include speaker notes only if you want visitors to read them.

## Printable handouts

Open the extracted `index.html`, then choose **Print / Save as PDF**. Select your paper size and printer or PDF destination in the browser's print dialog. Each slide includes space for written notes. Long speaker notes may continue onto another page.

## Limits

AI handoffs, Markdown and handouts contain still images. Local HTML presentations preserve layer animations, links and supported media embeds. An export is limited to 250 MB of artwork; split larger decks into smaller exports.

For a video file, use [MP4 Slideshow](/pitchdeck/export/mp4). For editable slides, use [PowerPoint](/pitchdeck/export/powerpoint).

## Motion and narration

Local HTML includes Morph transitions, property tracks and attached narration. Keep narration assets with the exported folder. Browser sound playback may need a click. **Use show timings** enables saved automatic advancement in Presenter view.

MP4 renders supported 2D motion and transitions, advances click builds automatically and mixes attached narration. Loops play for the slide's finite recording duration. External embeds and GIFs use poster artwork; interactive links are absent. Perspective motion is rejected rather than flattened inaccurately. Use browser output for that effect. Video is capped at 30 minutes, 1920 × 1080 and 250 MB; intermediate frames are processed in bounded batches.

Attached narration plays from the presenter window. The synchronized audience popup stays silent to avoid playing the same audio twice. Keep the presenter window open during delivery.

---

---
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).

## Outlined text

With **Use Editable Text (Instead of Images)** enabled, text with a solid outline keeps its outline and transparent interior in the PowerPoint export, including when Pitchdeck uses the missing-font fallback. Install the original fonts in Figma and PowerPoint for the closest match to the source typography.

## Speaker notes in Figma Slides

To include speaker notes in your PPTX, enter or paste them into the **Speaker Notes** field in Pitchdeck. Notes entered in Figma Slides' native presenter-notes panel are not imported automatically: the [public Figma Slide API](https://developers.figma.com/docs/plugins/api/SlideNode/) does not expose that content. Greek and other Unicode text can be used in Pitchdeck's notes field.

## Right-to-left text

Pitchdeck detects right-to-left text in supported Figma text layers and marks it as right-to-left content in the PowerPoint export. This preserves the reading direction for languages such as Arabic and Hebrew when the text remains editable.

### Video Tutorial: Export .pptx files with editable text

This video walks through 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-nocookie.com/embed/lBP5nxrWlWk)
### Video Tutorial: Add Master Slides to PowerPoint exports from Figma

This video walks through how to export a PowerPoint file from Figma (with Master Slides) using the Pitchdeck plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/vR7ocT4YO6s)
### Video Tutorial: Export Figma Slides to PowerPoint (.pptx)

This video walks through how to export your deck from Figma Slides to PowerPoint using the Pitchdeck plugin
[Embedded media](https://www.youtube-nocookie.com/embed/jpXYIvHFwp8)
### Video Tutorial: Export PowerPoint files with MP4 video embeds from Figma

This video walks through how to export PowerPoint (.pptx) files with MP4 video embeds from Figma using the Pitchdeck plugin.
[Embedded media](https://www.youtube-nocookie.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:** PowerPoint supports the optional native fade/build subset described below. Other Pitchdeck motion and iframe embeds are omitted. Review the export report and open the file in PowerPoint before delivery.

### Embedding MP4 video URLs into your PPTX exports for PowerPoint (Optional)

### Video Tutorial: Export PowerPoint files with MP4 video embeds from Figma

This video walks through how to export PowerPoint (.pptx) files with MP4 video embeds from Figma using the Pitchdeck plugin.
[Embedded media](https://www.youtube-nocookie.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.

Videos uploaded directly into Figma are not exported as playable videos by Pitchdeck. The [public Figma Video API](https://developers.figma.com/docs/plugins/api/Video/) exposes a video hash but no method to retrieve the video file. Upload your MP4 to an accessible host such as Dropbox, then add its link through Pitchdeck's [video embeds](/pitchdeck/embeds/video) and enable **Include MP4 Video URL Embeds**.

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:** 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, text is included in the exported layer images instead. Note that there may be some minor visual differences between editable text in PowerPoint/Keynote/Google Slides and Figma.

Editable text is placed above all non-text artwork so you can click directly into it in your presentation app. This applies with Smart Auto Layout enabled or disabled. Artwork that overlaps text in Figma will therefore sit behind the editable text in the export.

For PowerPoint exports, supported circular and elliptical text paths remain editable as curved WordArt above the artwork, with Smart Auto Layout enabled or disabled. Slightly skewed circular paths may be adjusted to a close circular match. Paths that cannot be reproduced as editable curves stay in the artwork instead of becoming straight text. Google Slides and Keynote exports preserve these curved labels as artwork.

With editable text enabled, the exported `.pptx` can retain the full text from a layer, including parts that are clipped, masked, transparent or covered by other layers in Figma. Those parts may become visible when editing the presentation. Remove any text you don't want included from the source layer before exporting.

With Smart Auto Layout disabled, Pitchdeck surfaces nested text, keeps direct-child artwork as separate movable objects, and combines the remaining artwork into a slide background image. Artwork that depends on clipping or blending with neighboring layers stays in the composite background.

> **Warning:** **Ensure that any custom fonts are installed/replaced**. 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 want 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 (for example, 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.

> **Warning:** Text used as a Master Slide placeholder supports one transparency value per text layer. If a single Figma text layer mixes different opacity values, split it into separate text layers before export when that difference needs to remain editable in a master layout.

## Keeping Auto Layout and nested layers editable (Beta)

Enable **Smart Auto Layout & Nested Layers (Beta)** to export the children of safe layout-style frames, groups, components, and instances, including Auto Layout containers, as separate objects while keeping their Figma positions. Non-text objects keep their relative stacking order, with editable text placed above them. If a safe container has its own fill, Pitchdeck exports that background separately below its supported children. Pair this with **Use Editable Text** when you also want supported nested text layers to remain editable. The beta controls nested-layer decomposition only; the text, transparency, and native-shape improvements below apply to all PPTX exports.

Pitchdeck keeps supported solid rectangles, ellipses, flat-cap lines, transparency, and individual borders (for example, a bottom border) as native presentation shapes. With the beta enabled, supported text, bullets, icons, images, and lines nested inside safe containers can also remain separate from the container background. Vector-only icon and logo compositions stay together as one selectable object instead of being split into individual paths.

> **Warning:** PowerPoint and Keynote retain editable text transparency stored in the `.pptx`. Google Slides keeps native shape and line transparency during conversion, but may make editable text colours opaque because its native text colour model does not expose transparency. If exact translucent text is more important than editability in Google Slides, add **[PNG]** to that text layer or a parent layer name so Pitchdeck keeps its appearance in an image.

When a styled frame or instance needs raster fallback, Pitchdeck can separate eligible text from its artwork. All resulting artwork images sit below the editable text, including images with large transparent areas. Text fully inside an opaque rectangular mask can remain editable, including mixed-color text.

With Smart Auto Layout enabled, some Figma compositing cannot be reproduced safely as separate presentation objects. Containers or text whose appearance depends on partial or non-rectangular masking, material clipping, effects, non-default blend modes, partial container opacity, rotation, or layer/background blur retain the fidelity-first raster fallback. Text fully inside an otherwise inert clip may still be editable. Add **[PNG]** to a container name to flatten its entire subtree, including text. Gradient and image-filled shapes also use the existing image fallback. The beta is disabled by default and does not remove Auto Layout or otherwise change your Figma layers.

## 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.

Each hard return in a Figma list becomes a new bullet or numbered item in the PowerPoint-compatible export. Soft line breaks remain inside the current item, numbered lists continue in sequence, and normal paragraphs can remain unlisted alongside list paragraphs in the same text layer.

> **Warning:** Google Slides uses a separate conversion path. For the most predictable Google Slides results, keep each list in its own Figma text layer and move normal text into another 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 walks through how to export a PowerPoint file from Figma (with Master Slides) using the Pitchdeck plugin.
[Embedded media](https://www.youtube-nocookie.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** 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 want 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.

## Reusable PowerPoint templates

Choose **PowerPoint Template (.potx file)** to export example slides with reusable layouts. Each selected slide becomes a layout, and text boxes become title/body placeholders. Complex artwork may be flattened by the normal PowerPoint conversion.

Open the downloaded POTX in desktop PowerPoint. Use **New Slide** to choose a generated layout, then replace its placeholder text. Review the example slides and each layout before distributing the template.

## Native animation subset

Enable **Include native fade animations and click builds** to include supported fade entrances, fade exits and click builds in PowerPoint. Browser property tracks, looping effects, other presets and Morph are omitted and listed in the export report. Review the file in PowerPoint before delivery. Google Slides and Keynote use their existing editable conversion paths and omit Pitchdeck motion.

---

---
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://www.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://www.hypermatic.com/pitchdeck/#pro).

- **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 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 (for example, a “find layer by name” plugin)
- Modify any data in your Figma document (for example, a “rename selected layers” plugin)
- Communicate with any server over the internet (for example, 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 [Figma bug](https://forum.figma.com/t/pdf-export-consistently-missing-elements/3547) that can show purple boxes instead of images. Pitchdeck uses Figma's native PDF export, so the same problem can appear in Pitchdeck exports.

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.

## Using different frame or slide sizes in one presentation

Using one consistent size is still recommended; 16:9 frames or native Figma Slides (for example, **1280x720** or **1920x1080**) give the most predictable results across monitors, PowerPoint and Google Slides.

If a PowerPoint-compatible export contains different slide sizes, Pitchdeck uses the most common size for the presentation and fits each outlier slide into it proportionally without cropping. With **Use Editable Text** enabled, supported text and shapes stay editable at the fitted size in PowerPoint, Keynote and Google Slides. Content that needs an image fallback, including layers marked **[PNG]**, remains an image. With editable text disabled, each outlier is exported as one full-slide image.

## Duplicating a Figma file or Figma page will duplicate its URL/password

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 lets you 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, 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 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.

## A GIF or video could not be loaded during export

If an external GIF or MP4 cannot be downloaded or decoded during a PowerPoint-compatible export, Pitchdeck uses that layer's Figma artwork as a still image and continues exporting the remaining slides. The export confirmation shows a warning and links to the affected layers. The still image preserves the Figma artwork, but does not include the failed media's animation or playback.

To restore the media, check that its URL opens the GIF or MP4 file directly, without a sign-in page, then update the URL in Pitchdeck and export again. MP4 embedding applies to PowerPoint exports with **Include MP4 Video URL Embeds** enabled.

## The export could not be prepared

If Pitchdeck cannot save the export settings, it stops before generating a file and makes the export button available again. Try exporting again; if the problem continues, close and reopen the plugin. An export that fails during this setup step does not use a Pro trial export.

## 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](/tinyimage/downsize) 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 image size and PPTX file limits

If you select the **Google Slides** option in the export settings, Pitchdeck caps raster images at 1400px on their longest side. This helps keep the `.pptx` file smaller and reduces conversion failures when the file is imported into Google Slides.

If the exported presentation is still too large for Google Slides, split the deck into smaller files or reduce the size of the original image fills before exporting again.

## 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 (for example, "[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 (for example, 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, 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](/tinyimage/downsize) 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

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 want to re-activate the URL after it has expired, 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

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-nocookie.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 a 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 of all of the Figma plugin features.

> **Warning:** 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.

> **Info:** If you ever need to use a different license key at any time (for example, 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: "Create animated presentations from Figma designs or export editable slides to PowerPoint and other formats."
---

# Get started with Pitchdeck

> Create animated presentations from Figma designs or export editable slides to PowerPoint and other formats.

[![Pitchdeck Figma Plugin](https://www.hypermatic.com/pitchdeck.jpg)](https://www.figma.com/community/plugin/838925615018625519/pitchdeck-presentation-studio)

## Install and 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

## Edit, present and export

The editor keeps the slide organizer on the left, preview in the center and element settings on the right. Use **Animations** to select several elements and apply shared effects, timing or a staggered sequence. The toolbar provides undo, the slide transition, preview and playback, and the speaker notes toggle.

**Add Slides/Charts**, below the slide list, opens searchable layouts, master slides and the chart builder. **Tools** holds **Check presentation**, **Commands & search** (**Command/Ctrl+K**), deck-wide animation and analytics. **Present** opens the presenter console from the current slide; its arrow starts from the beginning instead. **Share** manages the hosted presentation link and access settings. **Export** describes what each format preserves; advanced motion plays in Local HTML, while editable presentation formats omit Pitchdeck animations.

See [animations](/pitchdeck/design/animations), [slide organization](/pitchdeck/design/slides#organize-several-slides), [speaker notes and rehearsal](/pitchdeck/design/notes#present-and-rehearse) and [Local HTML](/pitchdeck/export/portable#local-html-presentation).

## Using Pitchdeck in Figma Buzz

You can use Pitchdeck with frames in a Figma Buzz file:

1. Run Pitchdeck from the **Plugins** panel in your Buzz file.
2. Check the frames you want to use, then click **Load Checked Slides**. You can also click **Load All Slides** to include every frame listed in the sidebar.
3. Click Figma's **pop-out** icon in the top-right corner of the plugin header when prompted.
4. Use the full Pitchdeck window to edit your presentation, add animations, and access the export features.

> **Tip:** The initial frame selector is designed for Buzz's narrow plugin sidebar. The full Pitchdeck editor and export options open in the wider pop-out window.

## Frequently asked questions

- [Troubleshooting Pitchdeck](/pitchdeck/faq/troubleshooting.md): Common 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

- Add animations and preview them 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).
- Export to Canva (via PSD).
- Import slides from PowerPoint, Google Slides or Keynote (as exported .pptx files) into Figma automatically
- Import Markdown presentation files with speaker notes, media references, and `slide-transition` metadata.
- 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.
- Present and share slides through a browser-based presentation page.
- 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: "Learn how to create, present, animate, and export Figma slide decks to PowerPoint, PDF, video, and other formats with Pitchdeck."
---

# Pitchdeck Video Tutorials

> Learn how to create, present, animate, and export Figma slide decks to PowerPoint, PDF, video, and other formats with Pitchdeck.

## Creating Presentations

- [Create and present a Pitchdeck](/pitchdeck/tutorials/create-and-present-a-pitchdeck)
- [Embed videos and GIFs](/pitchdeck/tutorials/embed-videos-and-gifs)
- [Add links to presentations](/pitchdeck/tutorials/add-links-to-presentations)
- [Import slides from PowerPoint to Figma in one click](/pitchdeck/tutorials/import-slides-from-powerpoint-to-figma-in-one-click)
- [Import Google Slides to Figma in one click](/pitchdeck/tutorials/import-google-slides-to-figma-in-one-click)
- [Import PowerPoint (.pptx) to Figma Slides](/pitchdeck/tutorials/import-powerpoint-pptx-to-figma-slides)
- [Import Google Slides to Figma Slides](/pitchdeck/tutorials/import-google-slides-to-figma-slides)
- [Add slide layouts to Figma presentations with one click](/pitchdeck/tutorials/add-slide-layouts-to-figma-presentations-with-one-click)
- [Automatically create Charts in Figma from CSV file data](/pitchdeck/tutorials/automatically-create-charts-in-figma-from-csv-file-data)
- [Add custom animations to your Figma presentations](/pitchdeck/tutorials/add-custom-animations-to-your-figma-presentations)
- [Spell check Figma presentation slides](/pitchdeck/tutorials/spell-check-figma-presentation-slides)
- [Add scrollable mockup slides to Figma presentations](/pitchdeck/tutorials/add-scrollable-mockup-slides-to-figma-presentations)
- [Add page numbers to Figma slides automatically](/pitchdeck/tutorials/add-page-numbers-to-figma-slides-automatically)
- [Re-order and tidy Figma slides into a grid with one click](/pitchdeck/tutorials/re-order-and-tidy-figma-slides-into-a-grid-with-one-click)
- [Analytics dashboard and link tracking for Figma presentations](/pitchdeck/tutorials/analytics-dashboard-and-link-tracking-for-figma-presentations)

## Exporting Presentations

- [Export presentations to PowerPoint](/pitchdeck/tutorials/export-presentations-to-powerpoint)
- [Export presentations to Keynote](/pitchdeck/tutorials/export-presentations-to-keynote)
- [Export presentations to Google Slides](/pitchdeck/tutorials/export-presentations-to-google-slides)
- [Export .pptx files with editable text](/pitchdeck/tutorials/export-pptx-files-with-editable-text)
- [Add Master Slides to PowerPoint exports from Figma](/pitchdeck/tutorials/add-master-slides-to-powerpoint-exports-from-figma)
- [Export presentations to PDF](/pitchdeck/tutorials/export-presentations-to-pdf)
- [Export presentation to clickable interactive PDF](/pitchdeck/tutorials/export-presentation-to-clickable-interactive-pdf)
- [Export Figma slides to JPG/PNG images](/pitchdeck/tutorials/export-figma-slides-to-jpg-png-images)
- [Export Figma slides to Canva with one click](/pitchdeck/tutorials/export-figma-slides-to-canva-with-one-click)
- [Compress large PDF presentation exports from Figma](/pitchdeck/tutorials/compress-large-pdf-presentation-exports-from-figma)
- [Export Figma Slides to PowerPoint (.pptx)](/pitchdeck/tutorials/export-figma-slides-to-powerpoint-pptx)
- [Export Figma Slides to Google Slides](/pitchdeck/tutorials/export-figma-slides-to-google-slides)
- [Export Figma Slides to Keynote](/pitchdeck/tutorials/export-figma-slides-to-keynote)
- [Self-hosting your Figma presentation on a custom domain](/pitchdeck/tutorials/self-hosting-your-figma-presentation-on-a-custom-domain)

## Slide Layer Embeds

- [Embed YouTube videos in Figma presentations](/pitchdeck/tutorials/embed-youtube-videos-in-figma-presentations)
- [Embed live Figma designs in Figma presentations](/pitchdeck/tutorials/embed-live-figma-designs-in-figma-presentations)
- [Embed live Figma prototypes in Figma presentations](/pitchdeck/tutorials/embed-live-figma-prototypes-in-figma-presentations)
- [Embed Google Docs in Figma presentations](/pitchdeck/tutorials/embed-google-docs-in-figma-presentations)
- [Embed Google Forms in Figma presentations](/pitchdeck/tutorials/embed-google-forms-in-figma-presentations)
- [Embed Google Sheets in Figma presentations](/pitchdeck/tutorials/embed-google-sheets-in-figma-presentations)
- [Embed Google Slides in Figma presentations](/pitchdeck/tutorials/embed-google-slides-in-figma-presentations)
- [Embed Loom videos in Figma presentations](/pitchdeck/tutorials/embed-loom-videos-in-figma-presentations)
- [Embed Lottie animations in Figma presentations](/pitchdeck/tutorials/embed-lottie-animations-in-figma-presentations)
- [Embed SoundCloud audio in Figma presentations](/pitchdeck/tutorials/embed-soundcloud-audio-in-figma-presentations)
- [Embed Spotify audio in Figma presentations](/pitchdeck/tutorials/embed-spotify-audio-in-figma-presentations)
- [Embed Vimeo videos in Figma presentations](/pitchdeck/tutorials/embed-vimeo-videos-in-figma-presentations)
- [Embed website iFrames in Figma presentations](/pitchdeck/tutorials/embed-website-iframes-in-figma-presentations)
- [Embed Canva designs in Figma presentations](/pitchdeck/tutorials/embed-canva-designs-in-figma-presentations)

## More video tutorials

- [Export PowerPoint files with MP4 video embeds from Figma using Pitchdeck](/pitchdeck/tutorials/export-powerpoint-files-with-mp4-video-embeds-from-figma-using-pitchdeck)
- [How to export a compressed PowerPoint file from Figma using Pitchdeck](/pitchdeck/tutorials/how-to-export-a-compressed-powerpoint-file-from-figma-using-pitchdeck)

---

---
url: "/pitchdeck/tutorials/add-custom-animations-to-your-figma-presentations.md"
description: "This video shows how to install and open the Pitchdeck Presentation Studio Figma plugin, then use its Custom Animations feature to build keyframe-based animations for presentation elements. It also demonstrates how to save, update, fork, delete, and preview custom animations, and notes that these animations only appear in the Pitchdeck Web URL export."
---

# Add custom animations to your Figma presentations

> This video shows how to install and open the Pitchdeck Presentation Studio Figma plugin, then use its Custom Animations feature to build keyframe-based animations for presentation elements. It also demonstrates how to save, update, fork, delete, and preview custom animations, and notes that these animations only appear in the Pitchdeck Web URL export.

[← Back to Pitchdeck Video Tutorials](/pitchdeck/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/Gm2i5ZLYOIQ)

## What this video covers

This video shows how to install and open the Pitchdeck Presentation Studio Figma plugin, then use its Custom Animations feature to build keyframe-based animations for presentation elements. It also demonstrates how to save, update, fork, delete, and preview custom animations, and notes that these animations only appear in the Pitchdeck Web URL export.

## Things you'll need

- Figma
- Pitchdeck Presentation Studio

## Steps

1. [ ] Install Pitchdeck Presentation Studio from the Figma Community and open it from Plugins.
2. [ ] Click Custom Animations to open the custom keyframe animation editor.
3. [ ] Set keyframes on the timeline, insert new keyframes such as at 50%, and edit properties like position, opacity, scale, and rotation.
4. [ ] Adjust easing and preview speed to check how the animation will look.
5. [ ] Name the animation and click Add New Animation, then apply it to a layer from the custom animations list.
6. [ ] Reopen a saved animation from the Saved Animations menu to update it, or create a fork by saving it under a new name.
7. [ ] Delete a saved animation with Delete Saved Animation if you no longer want it, then use Export Presentation with the Pitchdeck Web URL option to see the animations in the web presentation.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=Gm2i5ZLYOIQ)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-add-custom-animations-to-your-figma-presentations-using-pitchdeck)
- [Read: Creating custom keyframe animations](/pitchdeck/design/keyframes)
- [Next: Spell check Figma presentation slides](/pitchdeck/tutorials/spell-check-figma-presentation-slides)
- [Open Pitchdeck in the Figma Community](https://www.figma.com/community/plugin/838925615018625519)

---

---
url: "/pitchdeck/tutorials/add-links-to-presentations.md"
description: "The video shows how to use the Pitchdeck Figma plugin to turn a Figma slide deck into a presentation with clickable URL links. It demonstrates adding URLs to individual frame elements, uploading the presentation, and opening the generated Pitchdeck URL to test the links in the browser."
---

# Add links to presentations

> The video shows how to use the Pitchdeck Figma plugin to turn a Figma slide deck into a presentation with clickable URL links. It demonstrates adding URLs to individual frame elements, uploading the presentation, and opening the generated Pitchdeck URL to test the links in the browser.

[← Back to Pitchdeck Video Tutorials](/pitchdeck/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/vyqGdJy8Hdw)

## What this video covers

The video shows how to use the Pitchdeck Figma plugin to turn a Figma slide deck into a presentation with clickable URL links. It demonstrates adding URLs to individual frame elements, uploading the presentation, and opening the generated Pitchdeck URL to test the links in the browser.

## Things you'll need

- A collaborative presentation slide deck designed in Figma
- The Pitchdeck plugin installed in Figma
- A URL or website link to attach to a slide element

## Steps

1. [ ] Install the Pitchdeck plugin from Figma Community by searching for Pitchdeck Presentation Studio.
2. [ ] Open your Figma file, then launch Pitchdeck from Plugins.
3. [ ] In the plugin, switch the top option from animations to Clickable URL links.
4. [ ] Select a frame element, paste a URL into the attached text field, and repeat for any other elements you want linked.
5. [ ] Choose Pitchdeck URL as the export format, then click Upload Presentation or Update Presentation.
6. [ ] Copy the generated presentation URL and password, open the URL in a browser, and log in with the password.
7. [ ] Hover over linked elements in the presentation and click them to open the attached web pages.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=vyqGdJy8Hdw)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-add-clickable-url-links-to-figma-presentations-using-pitchdeck)
- [Read: Adding links to your slide layers](/pitchdeck/design/links)
- [Next: Import slides from PowerPoint to Figma in one click](/pitchdeck/tutorials/import-slides-from-powerpoint-to-figma-in-one-click)
- [Open Pitchdeck in the Figma Community](https://www.figma.com/community/plugin/838925615018625519)

---

---
url: "/pitchdeck/tutorials/add-master-slides-to-powerpoint-exports-from-figma.md"
description: "This tutorial shows how to use the Pitchdeck Figma plugin to export a Figma presentation to PowerPoint with master slide layouts created from Figma components. It also shows how locking a layer in Figma makes that element export as a static image instead of an editable placeholder."
---

# Add Master Slides to PowerPoint exports from Figma

> This tutorial shows how to use the Pitchdeck Figma plugin to export a Figma presentation to PowerPoint with master slide layouts created from Figma components. It also shows how locking a layer in Figma makes that element export as a static image instead of an editable placeholder.

[← Back to Pitchdeck Video Tutorials](/pitchdeck/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/vR7ocT4YO6s)

## What this video covers

This tutorial shows how to use the Pitchdeck Figma plugin to export a Figma presentation to PowerPoint with master slide layouts created from Figma components. It also shows how locking a layer in Figma makes that element export as a static image instead of an editable placeholder.

## Things you'll need

- A Figma file with the slides, frames, components, or instances you want to export
- The Pitchdeck Figma plugin installed or saved in Figma plugins

## Steps

1. [ ] Open the Figma Resources panel, search for Pitchdeck under Plugins, and run or save the plugin.
2. [ ] Right-click the slide frames you want to use, choose Create component, and refresh the slides in Pitchdeck so the components appear in the deck.
3. [ ] Open the export panel, select PowerPoint, and enable Create PowerPoint master slides from components in the PowerPoint settings.
4. [ ] Click Export for PowerPoint, then download the .pptx file and open it in PowerPoint.
5. [ ] Use Insert new slide in PowerPoint to add the master slides created from the Figma components.
6. [ ] If you want an image or logo to stay static, lock that layer in Figma before exporting again.
7. [ ] Re-export the deck and confirm the locked layer appears as a static image while text remains as placeholders.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=vR7ocT4YO6s)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-add-master-slides-to-power-point-exports-from-figma-using-pitchdeck)
- [Read: Exporting your slides to PowerPoint](/pitchdeck/export/powerpoint)
- [Next: Export presentations to PowerPoint](/pitchdeck/tutorials/export-presentations-to-powerpoint)
- [Open Pitchdeck in the Figma Community](https://www.figma.com/community/plugin/838925615018625519)

---

---
url: "/pitchdeck/tutorials/add-page-numbers-to-figma-slides-automatically.md"
description: "This tutorial shows how to use the Pitchdeck Figma plugin to automatically add and manage page numbers on Figma slides. It also covers styling the slide number component, changing its position and color behavior, and keeping numbers in sync as slides are reordered, added, or removed."
---

# Add page numbers to Figma slides automatically

> This tutorial shows how to use the Pitchdeck Figma plugin to automatically add and manage page numbers on Figma slides. It also covers styling the slide number component, changing its position and color behavior, and keeping numbers in sync as slides are reordered, added, or removed.

[← Back to Pitchdeck Video Tutorials](/pitchdeck/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/Z7DpTBaudLw)

## What this video covers

This tutorial shows how to use the Pitchdeck Figma plugin to automatically add and manage page numbers on Figma slides. It also covers styling the slide number component, changing its position and color behavior, and keeping numbers in sync as slides are reordered, added, or removed.

## Things you'll need

- A Figma file with frames already set up as slides
- The Pitchdeck Figma plugin

## Steps

1. [ ] Open Figma, go to the Resources icon, search for Pitchdeck under Plugins, and run or save the plugin.
2. [ ] Run Pitchdeck from Saved Plugins in the Figma canvas.
3. [ ] Click the Page icon in the plugin to open the page number settings.
4. [ ] Turn on Enable Auto Slide Numbers to create the slide number component and add numbers to frames.
5. [ ] Adjust the number position, leading zeros, text color mode, and the Dark Text Color, Light Text Color, or Custom Text Color from the master component.
6. [ ] Change the slide order or remove slides and let Pitchdeck automatically update the numbering.
7. [ ] Export the deck to PDF, PowerPoint, Google Slides, Keynote, or the Pitchdeck web application to keep the page numbers in the output.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=Z7DpTBaudLw)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-add-page-numbers-to-figma-slides-automatically-using-pitchdeck)
- [Read: Automatically adding page numbers to slides](/pitchdeck/workflow/numbers)
- [Next: Re-order and tidy Figma slides into a grid with one click](/pitchdeck/tutorials/re-order-and-tidy-figma-slides-into-a-grid-with-one-click)
- [Open Pitchdeck in the Figma Community](https://www.figma.com/community/plugin/838925615018625519)

---

---
url: "/pitchdeck/tutorials/add-scrollable-mockup-slides-to-figma-presentations.md"
description: "The video shows how to use the Pitchdeck Figma plugin to turn longer Figma frames into scrollable slides in a web presentation. It explains how to install the plugin, export a Pitchdeck Presentation, and view the uploaded slides in the browser with scrollable website mockups."
---

# Add scrollable mockup slides to Figma presentations

> The video shows how to use the Pitchdeck Figma plugin to turn longer Figma frames into scrollable slides in a web presentation. It explains how to install the plugin, export a Pitchdeck Presentation, and view the uploaded slides in the browser with scrollable website mockups.

[← Back to Pitchdeck Video Tutorials](/pitchdeck/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/L9hEM-qLgFk)

## What this video covers

The video shows how to use the Pitchdeck Figma plugin to turn longer Figma frames into scrollable slides in a web presentation. It explains how to install the plugin, export a Pitchdeck Presentation, and view the uploaded slides in the browser with scrollable website mockups.

## Things you'll need

- Pitchdeck installed in Figma.
- Presentation frames, including at least one tall mockup frame that should scroll.

## Steps

1. [ ] Open Figma, click the Resources icon, search for Pitchdeck, and install or save the plugin.
2. [ ] Run Pitchdeck from your saved plugins in the Figma canvas.
3. [ ] Create or select frames for your presentation, including taller website mockup frames that need scrolling.
4. [ ] Click Export and make sure Pitchdeck Presentation is selected.
5. [ ] Upload or update the presentation, then copy the generated URL or passwordless URL.
6. [ ] Open the URL in a browser and scroll through any slide that is taller than it is wide.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=L9hEM-qLgFk)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-add-scrollable-slides-to-figma-presentations-using-pitchdeck)
- [Read: Using the Pitchdeck web app to present your slides](/pitchdeck/web/app)
- [Next: Add page numbers to Figma slides automatically](/pitchdeck/tutorials/add-page-numbers-to-figma-slides-automatically)
- [Open Pitchdeck in the Figma Community](https://www.figma.com/community/plugin/838925615018625519)

---

---
url: "/pitchdeck/tutorials/add-slide-layouts-to-figma-presentations-with-one-click.md"
description: "This video shows how to use the Pitchdeck Figma plugin to add preset slide layouts to a Figma presentation with one click, then manage them with auto-layout, global text styles, and color styles. It also covers loading master slides and exporting the finished deck to formats like PowerPoint or PDF."
---

# Add slide layouts to Figma presentations with one click

> This video shows how to use the Pitchdeck Figma plugin to add preset slide layouts to a Figma presentation with one click, then manage them with auto-layout, global text styles, and color styles. It also covers loading master slides and exporting the finished deck to formats like PowerPoint or PDF.

[← Back to Pitchdeck Video Tutorials](/pitchdeck/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/POTDGUtsC-s)

## What this video covers

This video shows how to use the Pitchdeck Figma plugin to add preset slide layouts to a Figma presentation with one click, then manage them with auto-layout, global text styles, and color styles. It also covers loading master slides and exporting the finished deck to formats like PowerPoint or PDF.

## Things you'll need

- A Figma file with the Pitchdeck plugin available

## Steps

1. [ ] Open your Figma file, use the Resources icon to search for Pitchdeck, and run the plugin from Plugins or save it for later.
2. [ ] Create or select slides as frames, components, or instances, then refresh layers so Pitchdeck loads them into the plugin.
3. [ ] Click Add slides at the bottom of the slides list to open preset layout options and insert the slide layouts you want.
4. [ ] Adjust the generated slides, noting that they use auto-layout and can inherit global text styles and global color styles.
5. [ ] Use the Master Slides tab and refresh it to load slide components, then add them as instances that inherit changes from the master component.
6. [ ] Click Export, choose an export format, export the slides, and download the file to open it in PowerPoint or another supported format.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=POTDGUtsC-s)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-add-slide-layouts-to-figma-presentations-with-one-click-using-pitchdeck)
- [Read: Adding preset layout slides to your deck](/pitchdeck/design/presets)
- [Next: Automatically create Charts in Figma from CSV file data](/pitchdeck/tutorials/automatically-create-charts-in-figma-from-csv-file-data)
- [Open Pitchdeck in the Figma Community](https://www.figma.com/community/plugin/838925615018625519)

---

---
url: "/pitchdeck/tutorials/analytics-dashboard-and-link-tracking-for-figma-presentations.md"
description: "This video shows how to upload a Figma presentation with the Pitchdeck Presentation Studio Figma plugin, open it in the Pitchdeck web app, and use the analytics dashboard to review viewing activity. It also demonstrates creating custom share URLs, filtering analytics by link and time range, excluding your own views, and downloading the data as a CSV."
---

# Analytics dashboard and link tracking for Figma presentations

> This video shows how to upload a Figma presentation with the Pitchdeck Presentation Studio Figma plugin, open it in the Pitchdeck web app, and use the analytics dashboard to review viewing activity. It also demonstrates creating custom share URLs, filtering analytics by link and time range, excluding your own views, and downloading the data as a CSV.

[← Back to Pitchdeck Video Tutorials](/pitchdeck/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/3IWyzOZorjs)

## What this video covers

This video shows how to upload a Figma presentation with the Pitchdeck Presentation Studio Figma plugin, open it in the Pitchdeck web app, and use the analytics dashboard to review viewing activity. It also demonstrates creating custom share URLs, filtering analytics by link and time range, excluding your own views, and downloading the data as a CSV.

## Things you'll need

- A Figma file with presentation frames already created
- Pitchdeck Presentation Studio Figma plugin installed or available in Figma

## Steps

1. [ ] Open the Pitchdeck Figma plugin from Resources, search for Pitchdeck under Plugins, and run or save the plugin.
2. [ ] Open the saved plugin from Plugins > Saved plugins and make sure your presentation frames are ready to upload.
3. [ ] In the export panel, select Pitchdeck presentation as the format and click Upload web presentation to create a browser link.
4. [ ] Copy the uploaded link, open it in the browser, and view the presentation in the Pitchdeck web app.
5. [ ] Return to the Pitchdeck plugin and open Analytics to view activity, slide views, open and close times, and slide-by-slide duration data.
6. [ ] Create a custom share URL for a person or group, then use the settings to enable or disable toolbar buttons, activity tracking, or the link itself.
7. [ ] Use the analytics filters to switch between all presentation data, a specific custom link, non-custom links, time ranges, and Exclude your views, or download the results as a CSV.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=3IWyzOZorjs)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-use-the-analytics-dashboard-and-link-tracking-for-figma-presentations-using-pitchdeck)
- [Read: Using analytics for your presentation](/pitchdeck/web/analytics)
- [Next: Re-order and tidy Figma slides into a grid with one click](/pitchdeck/tutorials/re-order-and-tidy-figma-slides-into-a-grid-with-one-click)
- [Open Pitchdeck in the Figma Community](https://www.figma.com/community/plugin/838925615018625519)

---

---
url: "/pitchdeck/tutorials/automatically-create-charts-in-figma-from-csv-file-data.md"
description: "The video shows how to use the Pitchdeck Figma plugin to automatically create charts in Figma from CSV file data. It covers opening the plugin, choosing a chart type in Chart Builder, importing a CSV file, and adding the generated chart slide to Figma for further editing."
---

# Automatically create Charts in Figma from CSV file data

> The video shows how to use the Pitchdeck Figma plugin to automatically create charts in Figma from CSV file data. It covers opening the plugin, choosing a chart type in Chart Builder, importing a CSV file, and adding the generated chart slide to Figma for further editing.

[← Back to Pitchdeck Video Tutorials](/pitchdeck/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/iMg2ACBolPI)

## What this video covers

The video shows how to use the Pitchdeck Figma plugin to automatically create charts in Figma from CSV file data. It covers opening the plugin, choosing a chart type in Chart Builder, importing a CSV file, and adding the generated chart slide to Figma for further editing.

## Things you'll need

- Figma
- The Pitchdeck Figma plugin
- A CSV file with chart data

## Steps

1. [ ] Open Figma, find Pitchdeck in Resources, and run or save the plugin.
2. [ ] Open Pitchdeck from Plugins > Saved plugins, then click Add Slides/Charts.
3. [ ] Switch from the slides panel to the Chart Builder tab and select a chart type.
4. [ ] Download the sample CSV file link for the chosen chart type and structure your own CSV data to match it.
5. [ ] Drag and drop your CSV file into the Drop Zone to load the data and preview the chart.
6. [ ] Adjust chart labels or sizes if needed, then click Add chart slide to Figma.
7. [ ] Edit the inserted chart in Figma as vector and text layers, including colors, font sizes, and the title.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=iMg2ACBolPI)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-automatically-create-charts-in-figma-from-csv-file-data-using-pitchdeck)
- [Read: Importing charts from spreadsheet data](/pitchdeck/design/charts)
- [Next: Add custom animations to your Figma presentations](/pitchdeck/tutorials/add-custom-animations-to-your-figma-presentations)
- [Open Pitchdeck in the Figma Community](https://www.figma.com/community/plugin/838925615018625519)

---

---
url: "/pitchdeck/tutorials/compress-large-pdf-presentation-exports-from-figma.md"
description: "This tutorial shows how to use the Pitchdeck Figma plugin to export slides to PDF and reduce file size for large presentations with high-resolution image fills. It compares a native Figma PDF export with Pitchdeck’s optimized export and the Downsize large Figma image fills option."
---

# Compress large PDF presentation exports from Figma

> This tutorial shows how to use the Pitchdeck Figma plugin to export slides to PDF and reduce file size for large presentations with high-resolution image fills. It compares a native Figma PDF export with Pitchdeck’s optimized export and the Downsize large Figma image fills option.

[← Back to Pitchdeck Video Tutorials](/pitchdeck/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/5E4glTwnnZw)

## What this video covers

This tutorial shows how to use the Pitchdeck Figma plugin to export slides to PDF and reduce file size for large presentations with high-resolution image fills. It compares a native Figma PDF export with Pitchdeck’s optimized export and the Downsize large Figma image fills option.

## Things you'll need

- A Figma file with frames or slides to export
- The Pitchdeck Figma plugin

## Steps

1. [ ] Open the Figma file, use the Resources icon to find Pitchdeck under the Plugins tab, then run it or save it to Saved plugins for later access.
2. [ ] Prepare the slides with frames or image-filled layers, then export a baseline PDF from Figma to compare file size.
3. [ ] In Pitchdeck, click the export button in the top right, choose PDF, and leave PDF quality at 300 DPI for best quality.
4. [ ] Export the PDF once without downsizing to see the optimized Pitchdeck file size.
5. [ ] Open export settings again, enable Downsize large Figma image fills, and export the PDF a second time.
6. [ ] Download the PDF and compare the file info to confirm the reduced size.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=5E4glTwnnZw)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-compress-large-pdf-presentation-exports-from-figma-using-pitchdeck)
- [Read: Exporting your slides to a PDF file](/pitchdeck/export/pdf)
- [Next: Export Figma Slides to PowerPoint (.pptx)](/pitchdeck/tutorials/export-figma-slides-to-powerpoint-pptx)
- [Open Pitchdeck in the Figma Community](https://www.figma.com/community/plugin/838925615018625519)

---

---
url: "/pitchdeck/tutorials/create-and-present-a-pitchdeck.md"
description: "This video shows how to use the Pitchdeck Figma plugin to turn a Figma slide deck into an animated presentation with slide order, speaker notes, and per-layer animations. It also demonstrates how to upload the deck to a secure Pitchdeck URL and present it in browser-based windowed or fullscreen mode with controls, pointer, notes, and remote access."
---

# Create and present a Pitchdeck

> This video shows how to use the Pitchdeck Figma plugin to turn a Figma slide deck into an animated presentation with slide order, speaker notes, and per-layer animations. It also demonstrates how to upload the deck to a secure Pitchdeck URL and present it in browser-based windowed or fullscreen mode with controls, pointer, notes, and remote access.

[← Back to Pitchdeck Video Tutorials](/pitchdeck/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/CgHfcrm3oXw)

## What this video covers

This video shows how to use the Pitchdeck Figma plugin to turn a Figma slide deck into an animated presentation with slide order, speaker notes, and per-layer animations. It also demonstrates how to upload the deck to a secure Pitchdeck URL and present it in browser-based windowed or fullscreen mode with controls, pointer, notes, and remote access.

## Things you'll need

- A Figma design file with frames arranged as presentation slides.
- The Pitchdeck plugin installed in Figma.

## Steps

1. [ ] Install the Pitchdeck plugin from Figma Community by searching for "Pitchdeck" and clicking install on "Pitchdeck Presentation Studio".
2. [ ] Open your Figma file, then run the plugin from right-click > plugins > Pitchdeck Presentation Studio.
3. [ ] Review the imported frames as slides, reorder them in the plugin if needed, and use the Refresh icon to reload slides after making changes in Figma.
4. [ ] Add Speaker Notes for each slide and assign animations to individual layers using the animation select box and timing controls.
5. [ ] Copy and paste animations between layers, or set a layer to "no animation" to disable it.
6. [ ] Choose the "Pitchdeck URL" export option, then click "Upload Presentation" or "Update Presentation" to generate a secure presentation link and password.
7. [ ] Open the secure link, log in with the password, and present using next/previous buttons, keyboard arrows, spacebar, fullscreen, pointer, notes, or the QR-code-based remote.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=CgHfcrm3oXw)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-create-and-present-animated-presentations-from-figma-using-pitchdeck)
- [Read: Using the Pitchdeck web app to present your slides](/pitchdeck/web/app)
- [Next: Embed videos and GIFs](/pitchdeck/tutorials/embed-videos-and-gifs)
- [Open Pitchdeck in the Figma Community](https://www.figma.com/community/plugin/838925615018625519)

---

---
url: "/pitchdeck/tutorials/embed-canva-designs-in-figma-presentations.md"
description: "This video shows how to embed a live Canva design into a Figma presentation using the Pitchdeck Figma plugin. It covers enabling Canva embeds, copying the Smart Embed Link, pasting it into a Pitchdeck slide, and exporting the presentation as a Pitchdeck Presentation Web URL."
---

# Embed Canva designs in Figma presentations

> This video shows how to embed a live Canva design into a Figma presentation using the Pitchdeck Figma plugin. It covers enabling Canva embeds, copying the Smart Embed Link, pasting it into a Pitchdeck slide, and exporting the presentation as a Pitchdeck Presentation Web URL.

[← Back to Pitchdeck Video Tutorials](/pitchdeck/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/W1_Xagat5mI)

## What this video covers

This video shows how to embed a live Canva design into a Figma presentation using the Pitchdeck Figma plugin. It covers enabling Canva embeds, copying the Smart Embed Link, pasting it into a Pitchdeck slide, and exporting the presentation as a Pitchdeck Presentation Web URL.

## Things you'll need

- A Figma file with Pitchdeck installed
- A Canva design with embeds enabled

## Steps

1. [ ] Open your Figma file, find Pitchdeck in Resources, and save or run the plugin from Saved Plugins.
2. [ ] Create slides as frames on the Figma page, then select the slide where you want the Canva embed.
3. [ ] In Canva, click Share, open More, choose Embed, and enable embeds for the design.
4. [ ] Copy the Smart Embed Link from Canva.
5. [ ] Go back to Pitchdeck in Figma, open the Embeds tab for the selected slide, and paste the Smart Embed Link into the embed field.
6. [ ] Adjust the embed layer size or aspect ratio in Figma if needed.
7. [ ] Export the deck using Pitchdeck Presentation Web URL, then open the Passwordless URL or share the generated presentation link.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=W1_Xagat5mI)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-embed-canva-designs-in-figma-presentations-using-pitchdeck)
- [Read: Embedding Canva](/pitchdeck/embeds/canva)
- [Next: Embed website iFrames in Figma presentations](/pitchdeck/tutorials/embed-website-iframes-in-figma-presentations)
- [Open Pitchdeck in the Figma Community](https://www.figma.com/community/plugin/838925615018625519)

---

---
url: "/pitchdeck/tutorials/embed-google-docs-in-figma-presentations.md"
description: "This tutorial shows how to use the Pitchdeck presentation Figma plugin to embed a Google Doc inside a Figma slide and then export the presentation to Pitchdeck web presentation. It also shows how to make the Google Doc public, paste the embed link into a layer in Figma, and verify the embed in the exported presentation."
---

# Embed Google Docs in Figma presentations

> This tutorial shows how to use the Pitchdeck presentation Figma plugin to embed a Google Doc inside a Figma slide and then export the presentation to Pitchdeck web presentation. It also shows how to make the Google Doc public, paste the embed link into a layer in Figma, and verify the embed in the exported presentation.

[← Back to Pitchdeck Video Tutorials](/pitchdeck/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/ubAKEKWojEM)

## What this video covers

This tutorial shows how to use the Pitchdeck presentation Figma plugin to embed a Google Doc inside a Figma slide and then export the presentation to Pitchdeck web presentation. It also shows how to make the Google Doc public, paste the embed link into a layer in Figma, and verify the embed in the exported presentation.

## Things you'll need

- A Figma file with slides built as frames.
- A Google Doc that can be published to the web.

## Steps

1. [ ] Open your Figma file, find Pitchdeck in Resources, and run the plugin from Saved plugins.
2. [ ] Create or select the Figma frame you want to use as a slide, then choose a rectangle, image, or other shape layer to hold the embed.
3. [ ] In the Pitchdeck plugin, open the GIFs/Videos/Embeds tab and select the target layer.
4. [ ] In Google Docs, set sharing to Anyone with the link, then use File > Share > Publish to Web and copy the embed link.
5. [ ] Paste the Google Docs embed link into the Pitchdeck embed field, adjust the layer size if needed, and reload the frame preview.
6. [ ] Click Export Presentation, then Upload Web Presentation or Update Web Presentation to send the slides to Pitchdeck.
7. [ ] Open the generated link in a browser to confirm the Google Doc appears in the presentation and remains selectable.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=ubAKEKWojEM)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-embed-google-docs-in-figma-presentations-using-pitchdeck)
- [Read: Embedding Google Docs](/pitchdeck/embeds/google-docs)
- [Next: Embed Google Forms in Figma presentations](/pitchdeck/tutorials/embed-google-forms-in-figma-presentations)
- [Open Pitchdeck in the Figma Community](https://www.figma.com/community/plugin/838925615018625519)

---

---
url: "/pitchdeck/tutorials/embed-google-forms-in-figma-presentations.md"
description: "This video shows how to use the Pitchdeck presentation Figma plugin to embed a Google Form inside a Figma presentation. It also demonstrates exporting the presentation to the Pitchdeck web app and submitting a form response directly from the shared presentation link."
---

# Embed Google Forms in Figma presentations

> This video shows how to use the Pitchdeck presentation Figma plugin to embed a Google Form inside a Figma presentation. It also demonstrates exporting the presentation to the Pitchdeck web app and submitting a form response directly from the shared presentation link.

[← Back to Pitchdeck Video Tutorials](/pitchdeck/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/au1QyrdhMbI)

## What this video covers

This video shows how to use the Pitchdeck presentation Figma plugin to embed a Google Form inside a Figma presentation. It also demonstrates exporting the presentation to the Pitchdeck web app and submitting a form response directly from the shared presentation link.

## Things you'll need

- A Figma file with frames set up for the presentation
- The Pitchdeck presentation Figma plugin
- A Google Form with responses configured to be accessible by viewers

## Steps

1. [ ] Open your Figma file, find Pitchdeck from the Resources icon, and run or save the plugin.
2. [ ] Select the frame or slide where you want the form, then add a layer and open the GIFs/Videos/Embeds tab.
3. [ ] Use the Supported Embeds documentation to confirm the Google Forms embed format.
4. [ ] In Google Forms, turn off required sign-in settings under Responses, then copy the form link from Send.
5. [ ] Paste the Google Forms link into the Pitchdeck embed field and resize the embed if you want it to fit the frame.
6. [ ] Export the presentation with Export Presentation, then use Update Web Presentation to upload it to the Pitchdeck web app.
7. [ ] Open the presentation link in a browser and test the embedded Google Form by filling it out and submitting it.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=au1QyrdhMbI)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-embed-google-forms-in-figma-presentations-using-pitchdeck)
- [Read: Embedding Google Forms](/pitchdeck/embeds/google-forms)
- [Next: Embed Google Sheets in Figma presentations](/pitchdeck/tutorials/embed-google-sheets-in-figma-presentations)
- [Open Pitchdeck in the Figma Community](https://www.figma.com/community/plugin/838925615018625519)

---

---
url: "/pitchdeck/tutorials/embed-google-sheets-in-figma-presentations.md"
description: "This video shows how to embed a Google Sheet directly into a Figma presentation using the Pitchdeck presentation Figma plugin. It demonstrates publishing a Google Sheet to the web, pasting the published link into Pitchdeck’s GIFs/Videos/Embeds tab, and exporting the presentation to the Pitchdeck web app."
---

# Embed Google Sheets in Figma presentations

> This video shows how to embed a Google Sheet directly into a Figma presentation using the Pitchdeck presentation Figma plugin. It demonstrates publishing a Google Sheet to the web, pasting the published link into Pitchdeck’s GIFs/Videos/Embeds tab, and exporting the presentation to the Pitchdeck web app.

[← Back to Pitchdeck Video Tutorials](/pitchdeck/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/LiA711c8pcs)

## What this video covers

This video shows how to embed a Google Sheet directly into a Figma presentation using the Pitchdeck presentation Figma plugin. It demonstrates publishing a Google Sheet to the web, pasting the published link into Pitchdeck’s GIFs/Videos/Embeds tab, and exporting the presentation to the Pitchdeck web app.

## Things you'll need

- A Figma file with frames ready for presentation.
- A Google Sheet that can be published to the web.

## Steps

1. [ ] Open a Figma file, find Pitchdeck from the Resources icon under the Plugins tab, and run or save the plugin.
2. [ ] In Pitchdeck, choose the Figma frame where the Google Sheet embed should appear and open the GIFs/Videos/Embeds tab.
3. [ ] In Google Sheets, go to File > Share > Publish to Web, publish the sheet, then copy the published link from the Link tab.
4. [ ] Paste the Google Sheets link into the embed input box in Pitchdeck to load it into the selected slide.
5. [ ] Click Export Presentation, then choose Upload Web Presentation or Update Web Presentation to upload the slides.
6. [ ] Open the generated presentation link in the browser and use the embedded Google Sheet inside the slide.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=LiA711c8pcs)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-embed-google-sheets-in-figma-presentations-using-pitchdeck)
- [Read: Embedding Google Sheets](/pitchdeck/embeds/google-sheets)
- [Next: Embed Google Slides in Figma presentations](/pitchdeck/tutorials/embed-google-slides-in-figma-presentations)
- [Open Pitchdeck in the Figma Community](https://www.figma.com/community/plugin/838925615018625519)

---

---
url: "/pitchdeck/tutorials/embed-google-slides-in-figma-presentations.md"
description: "This video shows how to use the Pitchdeck Figma plugin to embed a Google Slides presentation inside a Figma slide deck. It covers publishing the Google Slides file to the web, pasting the embed link into Pitchdeck, and exporting the finished presentation to the Pitchdeck web application."
---

# Embed Google Slides in Figma presentations

> This video shows how to use the Pitchdeck Figma plugin to embed a Google Slides presentation inside a Figma slide deck. It covers publishing the Google Slides file to the web, pasting the embed link into Pitchdeck, and exporting the finished presentation to the Pitchdeck web application.

[← Back to Pitchdeck Video Tutorials](/pitchdeck/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/U2mklU0Dcpo)

## What this video covers

This video shows how to use the Pitchdeck Figma plugin to embed a Google Slides presentation inside a Figma slide deck. It covers publishing the Google Slides file to the web, pasting the embed link into Pitchdeck, and exporting the finished presentation to the Pitchdeck web application.

## Things you'll need

- A Figma file with the Pitchdeck plugin available
- A Google Slides presentation that can be published to the web

## Steps

1. [ ] Open your Figma file, find Pitchdeck from Resources, and run or save the plugin.
2. [ ] Create Figma frames for your slides and place content layers inside each frame.
3. [ ] Select the frame or rectangle where you want the embed, then open the GIFs/Videos/Embeds tab in Pitchdeck.
4. [ ] In Google Slides, go to File, then Share, then Publish to Web, and click Publish.
5. [ ] Copy the published Google Slides link and paste it into the Pitchdeck embed input field.
6. [ ] Click Export Presentation, then Update Web Presentation or Upload Web Presentation to send the deck to the Pitchdeck web application.
7. [ ] Open the generated passwordless URL to view the Figma slides with the embedded Google Slides presentation.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=U2mklU0Dcpo)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-embed-google-slides-in-figma-presentations-using-pitchdeck)
- [Read: Embedding Google Slides](/pitchdeck/embeds/google-slides)
- [Next: Embed Loom videos in Figma presentations](/pitchdeck/tutorials/embed-loom-videos-in-figma-presentations)
- [Open Pitchdeck in the Figma Community](https://www.figma.com/community/plugin/838925615018625519)

---

---
url: "/pitchdeck/tutorials/embed-live-figma-designs-in-figma-presentations.md"
description: "This tutorial shows how to use the Pitchdeck Figma plugin to embed a live Figma design into a Figma presentation. It also demonstrates exporting the presentation to the web and viewing the embedded design with live updates."
---

# Embed live Figma designs in Figma presentations

> This tutorial shows how to use the Pitchdeck Figma plugin to embed a live Figma design into a Figma presentation. It also demonstrates exporting the presentation to the web and viewing the embedded design with live updates.

[← Back to Pitchdeck Video Tutorials](/pitchdeck/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/g-XCydF9cWg)

## What this video covers

This tutorial shows how to use the Pitchdeck Figma plugin to embed a live Figma design into a Figma presentation. It also demonstrates exporting the presentation to the web and viewing the embedded design with live updates.

## Things you'll need

- A Figma file with slides set up as frames.
- A Figma share link with Anyone with the link set to Can view.

## Steps

1. [ ] Open your Figma file, search for Pitchdeck in the Resources icon, and run or save the Pitchdeck Figma plugin.
2. [ ] Right-click the page, go to Plugins, open Saved plugins, and launch Pitchdeck.
3. [ ] Use a Figma frame as a slide, then select the slide layer where you want the embed.
4. [ ] Open the GIFs/Videos/Embeds tab in Pitchdeck and paste a Figma share link into the embed field.
5. [ ] In Figma, click Share, set Anyone with the link to Can view, and copy the file link.
6. [ ] Click Export Presentation in Pitchdeck, then Update Presentation, and open the generated web presentation link.
7. [ ] View the embedded Figma design in the browser, where you can zoom, move around, and see live updates when the source design changes.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=g-XCydF9cWg)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-embed-figma-designs-in-figma-presentations-using-pitchdeck)
- [Read: Embedding Figma Design](/pitchdeck/embeds/figma-design)
- [Next: Embed live Figma prototypes in Figma presentations](/pitchdeck/tutorials/embed-live-figma-prototypes-in-figma-presentations)
- [Open Pitchdeck in the Figma Community](https://www.figma.com/community/plugin/838925615018625519)

---

---
url: "/pitchdeck/tutorials/embed-live-figma-prototypes-in-figma-presentations.md"
description: "This video shows how to embed a live Figma prototype into a Pitchdeck Figma presentation. It walks through saving and running the Pitchdeck plugin, copying a Figma prototype link, pasting it into an Embed layer, and exporting the presentation to the Pitchdeck web app where the prototype stays live and updates in real time."
---

# Embed live Figma prototypes in Figma presentations

> This video shows how to embed a live Figma prototype into a Pitchdeck Figma presentation. It walks through saving and running the Pitchdeck plugin, copying a Figma prototype link, pasting it into an Embed layer, and exporting the presentation to the Pitchdeck web app where the prototype stays live and updates in real time.

[← Back to Pitchdeck Video Tutorials](/pitchdeck/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/UxOvqHjcLMY)

## What this video covers

This video shows how to embed a live Figma prototype into a Pitchdeck Figma presentation. It walks through saving and running the Pitchdeck plugin, copying a Figma prototype link, pasting it into an Embed layer, and exporting the presentation to the Pitchdeck web app where the prototype stays live and updates in real time.

## Things you'll need

- A Figma file with the Pitchdeck plugin available
- A Figma prototype link with Anyone with the link access set to Can view
- A Pitchdeck presentation frame with a layer prepared for the embed

## Steps

1. [ ] Open a Figma file, find Pitchdeck in Resources, and run or save the Pitchdeck plugin.
2. [ ] Create a slide frame and add a placeholder layer, such as a rectangle, where the prototype will be embedded.
3. [ ] In the Figma prototype file, set the Prototype background to match the presentation background, then open Present mode.
4. [ ] Use Share Prototype, set access to Anyone with the link and Can view, and copy the prototype link.
5. [ ] In the Pitchdeck slide, open the Embeds tab and paste the copied Figma prototype link into the target layer.
6. [ ] Export the presentation as Pitchdeck Presentation (Web URL) and choose Update Web Presentation or Upload Web Presentation.
7. [ ] Open the Passwordless URL in the browser and view the live embedded prototype in the presentation.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=UxOvqHjcLMY)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-embed-figma-prototypes-in-figma-presentations-using-pitchdeck)
- [Read: Embedding Figma Prototype](/pitchdeck/embeds/figma-prototype)
- [Next: Embed Google Docs in Figma presentations](/pitchdeck/tutorials/embed-google-docs-in-figma-presentations)
- [Open Pitchdeck in the Figma Community](https://www.figma.com/community/plugin/838925615018625519)

---

---
url: "/pitchdeck/tutorials/embed-loom-videos-in-figma-presentations.md"
description: "This tutorial shows how to use the Pitchdeck Presentation Studio Figma plugin to embed a Loom video into a Figma frame and then export the presentation for viewing in the browser. It demonstrates copying a Loom share link into the plugin’s GIFs/Videos/Embeds field, previewing the embed, and using Export Presentation to generate a presentation URL."
---

# Embed Loom videos in Figma presentations

> This tutorial shows how to use the Pitchdeck Presentation Studio Figma plugin to embed a Loom video into a Figma frame and then export the presentation for viewing in the browser. It demonstrates copying a Loom share link into the plugin’s GIFs/Videos/Embeds field, previewing the embed, and using Export Presentation to generate a presentation URL.

[← Back to Pitchdeck Video Tutorials](/pitchdeck/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/3Bn1N_f0XhA)

## What this video covers

This tutorial shows how to use the Pitchdeck Presentation Studio Figma plugin to embed a Loom video into a Figma frame and then export the presentation for viewing in the browser. It demonstrates copying a Loom share link into the plugin’s GIFs/Videos/Embeds field, previewing the embed, and using Export Presentation to generate a presentation URL.

## Things you'll need

- A Figma file with frames set up as slides
- A Loom share link

## Steps

1. [ ] Open Figma, find Pitchdeck in Resources, and run the Pitchdeck Presentation Studio plugin or save it to Saved plugins.
2. [ ] Select the Figma frame and layer where you want the Loom video to appear.
3. [ ] In the plugin, open the GIFs/Videos/Embeds tab and paste a Loom share link into the input field.
4. [ ] Confirm that the Loom embed player loads in the plugin preview.
5. [ ] Click Export Presentation, then Upload or Update to generate the presentation URL.
6. [ ] Open the passwordless URL in the browser to view the Figma slides with the Loom embed.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=3Bn1N_f0XhA)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-embed-loom-videos-in-figma-presentations-using-pitchdeck)
- [Read: Embedding Loom](/pitchdeck/embeds/loom)
- [Next: Embed Lottie animations in Figma presentations](/pitchdeck/tutorials/embed-lottie-animations-in-figma-presentations)
- [Open Pitchdeck in the Figma Community](https://www.figma.com/community/plugin/838925615018625519)

---

---
url: "/pitchdeck/tutorials/embed-lottie-animations-in-figma-presentations.md"
description: "This tutorial shows how to use the Pitchdeck Figma plugin to embed Lottie animations into Figma presentation slides. It covers installing the plugin, pasting a LottieFiles animation URL into a slide embed field, and exporting the presentation to a web link for presenting."
---

# Embed Lottie animations in Figma presentations

> This tutorial shows how to use the Pitchdeck Figma plugin to embed Lottie animations into Figma presentation slides. It covers installing the plugin, pasting a LottieFiles animation URL into a slide embed field, and exporting the presentation to a web link for presenting.

[← Back to Pitchdeck Video Tutorials](/pitchdeck/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/h1ZjJpFkd2M)

## What this video covers

This tutorial shows how to use the Pitchdeck Figma plugin to embed Lottie animations into Figma presentation slides. It covers installing the plugin, pasting a LottieFiles animation URL into a slide embed field, and exporting the presentation to a web link for presenting.

## Things you'll need

- Figma
- Pitchdeck presentation plugin
- A LottieFiles account

## Steps

1. [ ] Open the Figma file, find Pitchdeck in Resources, and run or save the Pitchdeck plugin.
2. [ ] Use Figma frames as slides, then open the GIFs/Videos/Embedds tab in the plugin.
3. [ ] Go to LottieFiles, choose an animation, and copy its Lottie animation URL.
4. [ ] Paste the Lottie animation URL into the embed field for the Figma layer or frame you want to animate.
5. [ ] Repeat the copy-and-paste process for any other slides that need Lottie animations.
6. [ ] Click Export Presentation, then Update Web Presentation to generate the presentation link.
7. [ ] Open the link in a browser and move through the slides to see the embedded Lottie animations.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=h1ZjJpFkd2M)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-embed-lottie-animations-in-figma-presentations-using-pitchdeck)
- [Read: Embedding Lottie](/pitchdeck/embeds/lottie)
- [Next: Embed SoundCloud audio in Figma presentations](/pitchdeck/tutorials/embed-soundcloud-audio-in-figma-presentations)
- [Open Pitchdeck in the Figma Community](https://www.figma.com/community/plugin/838925615018625519)

---

---
url: "/pitchdeck/tutorials/embed-soundcloud-audio-in-figma-presentations.md"
description: "This tutorial shows how to use the Pitchdeck Figma plugin to embed a SoundCloud track directly into a Figma presentation slide. It also shows how to export the presentation to the web and play the embedded audio in the browser."
---

# Embed SoundCloud audio in Figma presentations

> This tutorial shows how to use the Pitchdeck Figma plugin to embed a SoundCloud track directly into a Figma presentation slide. It also shows how to export the presentation to the web and play the embedded audio in the browser.

[← Back to Pitchdeck Video Tutorials](/pitchdeck/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/2pg7esHsnEI)

## What this video covers

This tutorial shows how to use the Pitchdeck Figma plugin to embed a SoundCloud track directly into a Figma presentation slide. It also shows how to export the presentation to the web and play the embedded audio in the browser.

## Things you'll need

- A Figma file with frames set up as presentation slides
- A SoundCloud track URL

## Steps

1. [ ] Open Figma, find Pitchdeck in Resources, and run the Pitchdeck plugin or save it to your Figma plugins.
2. [ ] Select the Figma frame you want to use as a slide and switch to the GIFs/Videos/Embeds tab in the plugin.
3. [ ] On SoundCloud, open a single track page, copy the track URL, and make sure it is not a playlist page.
4. [ ] Paste the SoundCloud link into the embed input field for the selected Figma layer to load the audio player.
5. [ ] Click Export Presentation in the top right of Pitchdeck, then choose Upload Web Presentation or Update Web Presentation.
6. [ ] Open the generated passwordless URL in a web browser and go to the slide with the SoundCloud embed to play it.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=2pg7esHsnEI)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-embed-sound-cloud-audio-in-figma-presentations-using-pitchdeck)
- [Read: Embedding SoundCloud](/pitchdeck/embeds/soundcloud)
- [Next: Embed Spotify audio in Figma presentations](/pitchdeck/tutorials/embed-spotify-audio-in-figma-presentations)
- [Open Pitchdeck in the Figma Community](https://www.figma.com/community/plugin/838925615018625519)

---

---
url: "/pitchdeck/tutorials/embed-spotify-audio-in-figma-presentations.md"
description: "The video shows how to use the Pitchdeck presentation Figma plugin to embed Spotify audio in Figma presentations. It covers adding Spotify playlist, track, or podcast episode links to a frame, then exporting the presentation to the Pitchdeck Presentation Studio web app for browser playback."
---

# Embed Spotify audio in Figma presentations

> The video shows how to use the Pitchdeck presentation Figma plugin to embed Spotify audio in Figma presentations. It covers adding Spotify playlist, track, or podcast episode links to a frame, then exporting the presentation to the Pitchdeck Presentation Studio web app for browser playback.

[← Back to Pitchdeck Video Tutorials](/pitchdeck/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/J7c2fXboTOE)

## What this video covers

The video shows how to use the Pitchdeck presentation Figma plugin to embed Spotify audio in Figma presentations. It covers adding Spotify playlist, track, or podcast episode links to a frame, then exporting the presentation to the Pitchdeck Presentation Studio web app for browser playback.

## Things you'll need

- Figma
- The Pitchdeck presentation Figma plugin
- A Spotify link for a track, playlist, or podcast episode

## Steps

1. [ ] Open Figma, find Pitchdeck in Resources under the Plugins tab, and run or save the plugin.
2. [ ] Create placeholder layers in your Figma slide, such as a rectangle or image layer, where the embed will go.
3. [ ] In Pitchdeck, open the GIFs/Videos/Embeds tab and use Supported Embeds to check the Spotify URL format.
4. [ ] Copy a Spotify playlist, track, or podcast episode link from Spotify and paste it into the embed field for the selected Figma layer.
5. [ ] Adjust the size or position of the layer if needed, then click Refresh to update how the Spotify player fits the slide.
6. [ ] Click Export Presentation, then Upload Web Presentation or Update Web Presentation to publish the deck to the Pitchdeck Presentation Studio web app.
7. [ ] Open the generated presentation link in the browser and use the embedded Spotify player during playback.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=J7c2fXboTOE)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-embed-spotify-audio-in-figma-presentations-using-pitchdeck)
- [Read: Embedding Spotify](/pitchdeck/embeds/spotify)
- [Next: Embed Vimeo videos in Figma presentations](/pitchdeck/tutorials/embed-vimeo-videos-in-figma-presentations)
- [Open Pitchdeck in the Figma Community](https://www.figma.com/community/plugin/838925615018625519)

---

---
url: "/pitchdeck/tutorials/embed-videos-and-gifs.md"
description: "This tutorial shows how to use the Pitchdeck Figma plugin to turn Figma frames into a presentation deck and embed GIFs, YouTube videos, and Vimeo videos directly inside slides. It also demonstrates reordering slides, adding speaker notes, and exporting the deck as a secure Pitchdeck URL for presenting."
---

# Embed videos and GIFs

> This tutorial shows how to use the Pitchdeck Figma plugin to turn Figma frames into a presentation deck and embed GIFs, YouTube videos, and Vimeo videos directly inside slides. It also demonstrates reordering slides, adding speaker notes, and exporting the deck as a secure Pitchdeck URL for presenting.

[← Back to Pitchdeck Video Tutorials](/pitchdeck/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/sT8Rt1DLnCM)

## What this video covers

This tutorial shows how to use the Pitchdeck Figma plugin to turn Figma frames into a presentation deck and embed GIFs, YouTube videos, and Vimeo videos directly inside slides. It also demonstrates reordering slides, adding speaker notes, and exporting the deck as a secure Pitchdeck URL for presenting.

## Things you'll need

- Figma
- Pitchdeck Presentation Studio plugin

## Steps

1. [ ] Install the Pitchdeck Presentation Studio plugin from Figma community or plugins.
2. [ ] Run the plugin from your Figma file and let it load each parent frame as a slide.
3. [ ] Reorder slides by dragging the handles next to each slide in Pitchdeck if needed.
4. [ ] Switch the select box from animations to "Embed GIFs and YouTube or Vimeo URLs".
5. [ ] Paste a direct GIF URL, a YouTube URL, or a Vimeo URL into the input for the chosen layer.
6. [ ] Set the export setting to "Pitchdeck URL" and click "Update Presentation" or "Upload Presentation".
7. [ ] Open the secure presentation link in the browser, enter the password, and present the deck with embedded media playing inside the slides.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=sT8Rt1DLnCM)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-embed-videos-and-gi-fs-in-figma-presentations-using-pitchdeck)
- [Read: Embedding GIFs/video to your slides](/pitchdeck/design/media)
- [Next: Add links to presentations](/pitchdeck/tutorials/add-links-to-presentations)
- [Open Pitchdeck in the Figma Community](https://www.figma.com/community/plugin/838925615018625519)

---

---
url: "/pitchdeck/tutorials/embed-vimeo-videos-in-figma-presentations.md"
description: "This video shows how to use the Pitchdeck Figma plugin to embed a Vimeo video into a Figma presentation slide and publish it to the Pitchdeck presentation web app. It also demonstrates how to paste a Vimeo link into the embed field, toggle video controls, and update the web presentation for viewing in a browser."
---

# Embed Vimeo videos in Figma presentations

> This video shows how to use the Pitchdeck Figma plugin to embed a Vimeo video into a Figma presentation slide and publish it to the Pitchdeck presentation web app. It also demonstrates how to paste a Vimeo link into the embed field, toggle video controls, and update the web presentation for viewing in a browser.

[← Back to Pitchdeck Video Tutorials](/pitchdeck/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/C3F4HunFlY8)

## What this video covers

This video shows how to use the Pitchdeck Figma plugin to embed a Vimeo video into a Figma presentation slide and publish it to the Pitchdeck presentation web app. It also demonstrates how to paste a Vimeo link into the embed field, toggle video controls, and update the web presentation for viewing in a browser.

## Things you'll need

- A Figma file with slides or frames set up for the presentation.
- The Pitchdeck Figma plugin.
- A Vimeo video link to embed.

## Steps

1. [ ] Open your Figma file, find the Pitchdeck plugin from Resources or Saved plugins, and run it.
2. [ ] Choose the slide you want to edit, then open the GIFs/Videos/Embeds tab in the plugin.
3. [ ] Copy the Vimeo video link from the browser and paste it into the embed input field.
4. [ ] Adjust the video controls setting if needed, then confirm the video is embedded on the slide.
5. [ ] Click Export Presentation and choose Upload Web Presentation or Update Web Presentation.
6. [ ] Copy the generated password or passwordless URL and open it in a browser to view the presentation.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=C3F4HunFlY8)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-embed-vimeo-videos-in-figma-presentations-using-pitchdeck)
- [Read: Embedding Vimeo](/pitchdeck/embeds/vimeo)
- [Next: Embed website iFrames in Figma presentations](/pitchdeck/tutorials/embed-website-iframes-in-figma-presentations)
- [Open Pitchdeck in the Figma Community](https://www.figma.com/community/plugin/838925615018625519)

---

---
url: "/pitchdeck/tutorials/embed-website-iframes-in-figma-presentations.md"
description: "This tutorial shows how to use the Pitchdeck Figma plugin to embed website URLs as iFrames in Figma presentations. It also explains how to export the presentation to the Pitchdeck web app, refresh updates, and notes that some sites may block embedding because of cross-origin policy."
---

# Embed website iFrames in Figma presentations

> This tutorial shows how to use the Pitchdeck Figma plugin to embed website URLs as iFrames in Figma presentations. It also explains how to export the presentation to the Pitchdeck web app, refresh updates, and notes that some sites may block embedding because of cross-origin policy.

[← Back to Pitchdeck Video Tutorials](/pitchdeck/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/78AmQvoXwwM)

## What this video covers

This tutorial shows how to use the Pitchdeck Figma plugin to embed website URLs as iFrames in Figma presentations. It also explains how to export the presentation to the Pitchdeck web app, refresh updates, and notes that some sites may block embedding because of cross-origin policy.

## Things you'll need

- A Figma file with the Pitchdeck plugin available
- A website URL that allows iframe embedding

## Steps

1. [ ] Open the Figma file, search for Pitchdeck in the Resources icon under the Plugins tab, and save or run the plugin.
2. [ ] Right-click on the canvas, go to Plugins, and launch Pitchdeck from your saved plugins.
3. [ ] Create or select a slide with placeholder layers for the embed area, then open the embeds tab in the plugin.
4. [ ] Copy a website URL, such as a Wikipedia page, and paste it into the placeholder layers to embed it as an iframe.
5. [ ] Use the export button, select the Pitchdeck presentation web URL format, and click Upload Web Presentation or Update Web Presentation.
6. [ ] Open the passwordless presentation URL in the browser and click the slide to view and interact with the embedded website.
7. [ ] Resize the Figma frame if needed, then re-upload and refresh the presentation to update the embed size or full-screen layout.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=78AmQvoXwwM)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-embed-website-i-frames-in-figma-presentations-using-pitchdeck)
- [Read: Embedding other Websites as iFrames](/pitchdeck/embeds/websites)
- [Next: Embed Canva designs in Figma presentations](/pitchdeck/tutorials/embed-canva-designs-in-figma-presentations)
- [Open Pitchdeck in the Figma Community](https://www.figma.com/community/plugin/838925615018625519)

---

---
url: "/pitchdeck/tutorials/embed-youtube-videos-in-figma-presentations.md"
description: "This tutorial shows how to use the Pitchdeck Figma plugin to embed a YouTube video into a Figma presentation slide and publish it through Pitchdeck. It also demonstrates how to control the video embed and open the uploaded web presentation with or without a password."
---

# Embed YouTube videos in Figma presentations

> This tutorial shows how to use the Pitchdeck Figma plugin to embed a YouTube video into a Figma presentation slide and publish it through Pitchdeck. It also demonstrates how to control the video embed and open the uploaded web presentation with or without a password.

[← Back to Pitchdeck Video Tutorials](/pitchdeck/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/u-3keAn4bTQ)

## What this video covers

This tutorial shows how to use the Pitchdeck Figma plugin to embed a YouTube video into a Figma presentation slide and publish it through Pitchdeck. It also demonstrates how to control the video embed and open the uploaded web presentation with or without a password.

## Things you'll need

- A Figma file with frames already set up for the presentation
- The Pitchdeck Figma plugin
- A YouTube video URL

## Steps

1. [ ] Open a Figma file, go to Resources, search for Pitchdeck under the Plugins tab, and run or save the plugin.
2. [ ] Create presentation frames in Figma, with each frame acting as a slide.
3. [ ] Open Pitchdeck, go to the GIFs/Videos/Embeds tab, and select the layer you want to replace with a video embed.
4. [ ] Copy a YouTube video URL or YouTube short URL, paste it into the embed input field, and confirm the video starts playing.
5. [ ] Adjust playback options such as controls, autoplay, and loop if needed.
6. [ ] Click Export Presentation, then choose Upload Web Presentation or Update Web Presentation to send the slides to Pitchdeck.
7. [ ] Copy the web presentation URL, then open it in a browser to view the embedded YouTube video in the presentation.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=u-3keAn4bTQ)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-embed-you-tube-videos-in-figma-presentations-using-pitchdeck)
- [Read: Embedding YouTube](/pitchdeck/embeds/youtube)
- [Next: Embed live Figma designs in Figma presentations](/pitchdeck/tutorials/embed-live-figma-designs-in-figma-presentations)
- [Open Pitchdeck in the Figma Community](https://www.figma.com/community/plugin/838925615018625519)

---

---
url: "/pitchdeck/tutorials/export-figma-slides-to-canva-with-one-click.md"
description: "This tutorial shows how to use the Pitchdeck Figma plugin to export a slide deck from Figma into Canva. It covers saving the plugin, choosing the Canva export format, downloading the PSD file, and uploading it into Canva for further editing."
---

# Export Figma slides to Canva with one click

> This tutorial shows how to use the Pitchdeck Figma plugin to export a slide deck from Figma into Canva. It covers saving the plugin, choosing the Canva export format, downloading the PSD file, and uploading it into Canva for further editing.

[← Back to Pitchdeck Video Tutorials](/pitchdeck/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/BylcDyFXnAc)

## What this video covers

This tutorial shows how to use the Pitchdeck Figma plugin to export a slide deck from Figma into Canva. It covers saving the plugin, choosing the Canva export format, downloading the PSD file, and uploading it into Canva for further editing.

## Things you'll need

- A Figma file with slide deck frames or components already designed
- A Canva account

## Steps

1. [ ] Open the Figma file, find Pitchdeck in the resources icon, and save or run the plugin from the plugins list.
2. [ ] Load the parent-level Figma frames or components that you want to use as slides.
3. [ ] Open the export menu in Pitchdeck, switch the presentation format from Pitchdeck to Canva, and select the Canva export option under static deck options.
4. [ ] Choose the export settings you want, such as retina images and image compression, then click export for Canva.
5. [ ] Download the PSD file when the export finishes and save it locally.
6. [ ] Go to canva.com, log in, and drag the PSD file into Canva to upload it.
7. [ ] Open the uploaded project in Canva and edit the imported layers, text, and images as needed.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=BylcDyFXnAc)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-figma-slides-to-canva-with-one-click-using-pitchdeck)
- [Read: Exporting your slides to Canva](/pitchdeck/export/canva)
- [Next: Compress large PDF presentation exports from Figma](/pitchdeck/tutorials/compress-large-pdf-presentation-exports-from-figma)
- [Open Pitchdeck in the Figma Community](https://www.figma.com/community/plugin/838925615018625519)

---

---
url: "/pitchdeck/tutorials/export-figma-slides-to-google-slides.md"
description: "This tutorial shows how to use the Pitchdeck Figma plugin to move slides from Figma Slides into Google Slides. It demonstrates copying slide frames into a regular Figma design file, exporting them as a .pptx file, and importing that file into Google Slides as editable slides."
---

# Export Figma Slides to Google Slides

> This tutorial shows how to use the Pitchdeck Figma plugin to move slides from Figma Slides into Google Slides. It demonstrates copying slide frames into a regular Figma design file, exporting them as a .pptx file, and importing that file into Google Slides as editable slides.

[← Back to Pitchdeck Video Tutorials](/pitchdeck/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/2pQAiL7mlDQ)

## What this video covers

This tutorial shows how to use the Pitchdeck Figma plugin to move slides from Figma Slides into Google Slides. It demonstrates copying slide frames into a regular Figma design file, exporting them as a .pptx file, and importing that file into Google Slides as editable slides.

## Things you'll need

- A Figma Slides file
- A regular Figma design file
- A Google Slides presentation

## Steps

1. [ ] Open Pitchdeck from Figma's Resources icon and save it to your plugins list if needed.
2. [ ] In Figma Slides, switch to grid view, select the slides you want, and copy them.
3. [ ] Paste the selected slides into a regular Figma design file so Pitchdeck can detect the frames.
4. [ ] In Pitchdeck, click Refresh layers if needed, then choose Export and set the presentation export format to Google Slides.
5. [ ] Click Export for Google Slides, download the generated .pptx file, and save it to your computer.
6. [ ] In Google Slides, go to File > Import slides > Upload, then drag and drop the .pptx file.
7. [ ] Select all slides, uncheck Keep original theme if desired, and click Import slides.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=2pQAiL7mlDQ)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-figma-slides-to-google-slides-using-pitchdeck)
- [Read: Exporting your slides to Google Slides](/pitchdeck/export/google-slides)
- [Next: Export Figma Slides to Keynote](/pitchdeck/tutorials/export-figma-slides-to-keynote)
- [Open Pitchdeck in the Figma Community](https://www.figma.com/community/plugin/838925615018625519)

---

---
url: "/pitchdeck/tutorials/export-figma-slides-to-jpg-png-images.md"
description: "This tutorial shows how to use the Pitchdeck Figma plugin to export slides from both Figma design files and Figma Slides files as static JPG or PNG images. It also shows how to download the exported files as a ZIP and confirms the slides are exported in order at 2x retina resolution."
---

# Export Figma slides to JPG/PNG images

> This tutorial shows how to use the Pitchdeck Figma plugin to export slides from both Figma design files and Figma Slides files as static JPG or PNG images. It also shows how to download the exported files as a ZIP and confirms the slides are exported in order at 2x retina resolution.

[← Back to Pitchdeck Video Tutorials](/pitchdeck/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/Dy2LWEZwXTI)

## What this video covers

This tutorial shows how to use the Pitchdeck Figma plugin to export slides from both Figma design files and Figma Slides files as static JPG or PNG images. It also shows how to download the exported files as a ZIP and confirms the slides are exported in order at 2x retina resolution.

## Things you'll need

- A Figma design file or a Figma Slides file
- The Pitchdeck Figma plugin saved or available in Plugins

## Steps

1. [ ] Open a Figma file and run the Pitchdeck plugin from the actions icon, or from Plugins > Saved Plugins if it has already been saved.
2. [ ] In the Pitchdeck interface, click the export button and change the presentation export format to JPG images or PNG images.
3. [ ] Click Export to JPG or Export to PNG to generate the slide images.
4. [ ] Click Download Your Zip File, save the ZIP to your computer, and unzip it to access the exported images.
5. [ ] Check the exported folder to see the slides named and ordered correctly, with 2x retina resolution.
6. [ ] Repeat the same export process in a Figma Slides file by opening Pitchdeck from Plugins > Recents or Plugins > Saved Figma Plugins.
7. [ ] Use the exported JPG or PNG files for presentation, review, email, or Slack sharing.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=Dy2LWEZwXTI)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-figma-slides-to-jpg-png-images-using-pitchdeck)
- [Read: Exporting your slides to JPG/PNG images](/pitchdeck/export/jpg)
- [Next: Export Figma slides to Canva with one click](/pitchdeck/tutorials/export-figma-slides-to-canva-with-one-click)
- [Open Pitchdeck in the Figma Community](https://www.figma.com/community/plugin/838925615018625519)

---

---
url: "/pitchdeck/tutorials/export-figma-slides-to-keynote.md"
description: "The video shows how to use the Pitchdeck Figma plugin to export slides from Figma Slides into a Keynote-compatible PPTX file. It also demonstrates opening the exported file in the Apple Keynote app and editing the slides natively there."
---

# Export Figma Slides to Keynote

> The video shows how to use the Pitchdeck Figma plugin to export slides from Figma Slides into a Keynote-compatible PPTX file. It also demonstrates opening the exported file in the Apple Keynote app and editing the slides natively there.

[← Back to Pitchdeck Video Tutorials](/pitchdeck/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/irxm3p-mZ6o)

## What this video covers

The video shows how to use the Pitchdeck Figma plugin to export slides from Figma Slides into a Keynote-compatible PPTX file. It also demonstrates opening the exported file in the Apple Keynote app and editing the slides natively there.

## Things you'll need

- A normal Figma design file
- A Figma Slides file
- The Pitchdeck Figma plugin

## Steps

1. [ ] Open a new normal Figma design file and locate the Pitchdeck plugin from the Resources icon, then save or run it.
2. [ ] Return to your Figma Slides file, open a template with View template, and add the slides to the deck.
3. [ ] Switch Figma Slides to grid view, select the slides you want, and copy them.
4. [ ] Go back to the normal Figma design file and paste the copied slides onto the canvas so the frames are available to Pitchdeck.
5. [ ] Refresh frames in the Pitchdeck plugin, then open the export menu and choose the presentation apps group with Keynote (pptx) selected.
6. [ ] Click export for Keynote, download the PPTX file, and open it with Keynote on Mac.
7. [ ] Review and edit the imported slides in Keynote as needed.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=irxm3p-mZ6o)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-figma-slides-to-keynote-using-pitchdeck)
- [Read: Exporting your slides to Keynote](/pitchdeck/export/keynote)
- [Next: Self-hosting your Figma presentation on a custom domain](/pitchdeck/tutorials/self-hosting-your-figma-presentation-on-a-custom-domain)
- [Open Pitchdeck in the Figma Community](https://www.figma.com/community/plugin/838925615018625519)

---

---
url: "/pitchdeck/tutorials/export-figma-slides-to-powerpoint-pptx.md"
description: "This tutorial shows how to use the Pitchdeck Figma plugin to export slides from Figma Slides into an editable PowerPoint (.pptx) file. It demonstrates copying slides into a normal Figma design file, loading them into Pitchdeck, and exporting them with PowerPoint settings."
---

# Export Figma Slides to PowerPoint (.pptx)

> This tutorial shows how to use the Pitchdeck Figma plugin to export slides from Figma Slides into an editable PowerPoint (.pptx) file. It demonstrates copying slides into a normal Figma design file, loading them into Pitchdeck, and exporting them with PowerPoint settings.

[← Back to Pitchdeck Video Tutorials](/pitchdeck/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/jpXYIvHFwp8)

## What this video covers

This tutorial shows how to use the Pitchdeck Figma plugin to export slides from Figma Slides into an editable PowerPoint (.pptx) file. It demonstrates copying slides into a normal Figma design file, loading them into Pitchdeck, and exporting them with PowerPoint settings.

## Things you'll need

- Figma Slides
- Pitchdeck Figma plugin
- A normal Figma design file

## Steps

1. [ ] Open a normal Figma design file, find Pitchdeck in Resources, and save or run the plugin from Plugins > Saved plugins.
2. [ ] In Figma Slides, create or open a slide deck, switch to Grid View, select the slides you want, and copy them.
3. [ ] Paste the copied slides into the normal Figma design file, then refresh layers or rerun Pitchdeck so the frames load into the plugin.
4. [ ] In Pitchdeck, click Export, choose PowerPoint (.pptx) under the presentation apps group, and adjust export settings if needed.
5. [ ] Click Export for PowerPoint, then download the ready .pptx file when prompted.
6. [ ] Open the downloaded PowerPoint file to verify the editable slides and make sure the required fonts are installed locally if needed.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=jpXYIvHFwp8)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-figma-slides-to-power-point-pptx-using-pitchdeck)
- [Read: Exporting your slides to PowerPoint](/pitchdeck/export/powerpoint)
- [Next: Export Figma Slides to Google Slides](/pitchdeck/tutorials/export-figma-slides-to-google-slides)
- [Open Pitchdeck in the Figma Community](https://www.figma.com/community/plugin/838925615018625519)

---

---
url: "/pitchdeck/tutorials/export-powerpoint-files-with-mp4-video-embeds-from-figma-using-pitchdeck.md"
description: "The video shows how to use the Pitchdeck Presentation Studio Figma plugin to export a Figma presentation as a PowerPoint PPTX with an MP4 video embed. It explains how to set up a thumbnail and video placeholder, paste a Dropbox MP4 URL into Pitchdeck, enable the PowerPoint embed option, and download a PPTX that plays the video in Microsoft PowerPoint."
---

# Export PowerPoint files with MP4 video embeds from Figma using Pitchdeck

> The video shows how to use the Pitchdeck Presentation Studio Figma plugin to export a Figma presentation as a PowerPoint PPTX with an MP4 video embed. It explains how to set up a thumbnail and video placeholder, paste a Dropbox MP4 URL into Pitchdeck, enable the PowerPoint embed option, and download a PPTX that plays the video in Microsoft PowerPoint.

[← Back to Pitchdeck Video Tutorials](/pitchdeck/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/z8dUH4tDdFg)

## What this video covers

The video shows how to use the Pitchdeck Presentation Studio Figma plugin to export a Figma presentation as a PowerPoint PPTX with an MP4 video embed. It explains how to set up a thumbnail and video placeholder, paste a Dropbox MP4 URL into Pitchdeck, enable the PowerPoint embed option, and download a PPTX that plays the video in Microsoft PowerPoint.

## Things you'll need

- A Figma file with frames to export
- An MP4 video hosted on Dropbox or another file hosting service
- Microsoft PowerPoint desktop app to play the embedded video

## Steps

1. [ ] Open the Figma file, search for Pitchdeck from the actions menu, and run or save the Pitchdeck plugin.
2. [ ] Create a thumbnail image layer for the video and duplicate it to make a separate placeholder layer named for the video embed.
3. [ ] Upload the MP4 file to Dropbox, copy the file link, and paste that URL into the video layer in Pitchdeck.
4. [ ] Refresh the layers so the thumbnail and video layers appear correctly in the plugin.
5. [ ] Open the export menu, change the export format from web URL to PowerPoint, and turn on Include MP4 video URL embeds.
6. [ ] Click Export for PowerPoint, then download the PPTX file.
7. [ ] Open the PPTX in Microsoft PowerPoint and play the embedded video from the slide.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=z8dUH4tDdFg)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/export-powerpoint-pptx-files-with-mp4-video-embeds-from-figma-using-pitchdeck)
- [Read: Exporting your slides to PowerPoint](/pitchdeck/export/powerpoint)
- [Next: How to export a compressed PowerPoint file from Figma using Pitchdeck](/pitchdeck/tutorials/how-to-export-a-compressed-powerpoint-file-from-figma-using-pitchdeck)
- [Open Pitchdeck in the Figma Community](https://www.figma.com/community/plugin/838925615018625519)

---

---
url: "/pitchdeck/tutorials/export-pptx-files-with-editable-text.md"
description: "The video shows how to use the Pitchdeck Figma plugin to export a slide deck from Figma to PowerPoint, Keynote, or Google Slides. It demonstrates the difference between exporting text as images and enabling the beta Editable Text option so the exported file keeps text layers editable."
---

# Export .pptx files with editable text

> The video shows how to use the Pitchdeck Figma plugin to export a slide deck from Figma to PowerPoint, Keynote, or Google Slides. It demonstrates the difference between exporting text as images and enabling the beta Editable Text option so the exported file keeps text layers editable.

[← Back to Pitchdeck Video Tutorials](/pitchdeck/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/lBP5nxrWlWk)

## What this video covers

The video shows how to use the Pitchdeck Figma plugin to export a slide deck from Figma to PowerPoint, Keynote, or Google Slides. It demonstrates the difference between exporting text as images and enabling the beta Editable Text option so the exported file keeps text layers editable.

## Things you'll need

- Figma
- Pitchdeck Figma plugin
- A slide deck design already created in Figma

## Steps

1. [ ] Install the Figma plugin called Pitchdeck by searching for "pitchdeck" in Community or Plugins and clicking Install on "Pitchdeck Presentation Studio".
2. [ ] Open your slide deck in Figma, then right click the page, go to Plugins, and launch Pitchdeck Presentation Studio.
3. [ ] Click Export Presentation in the top right of the plugin to open the export settings.
4. [ ] Choose a presentation format such as PowerPoint, Keynote, or Google Slides, then export once with editable text disabled to see the default image-based result.
5. [ ] Reopen Pitchdeck, return to Export Presentation, and enable "Editable Text in Keynote" with "Use Editable Text (instead of images)" turned on.
6. [ ] Export again for Keynote, save the file, and open it in the presentation app to edit the text layers directly.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=lBP5nxrWlWk)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-a-power-point-file-with-editable-text-from-figma-using-pitchdeck)
- [Read: Exporting your slides to PowerPoint](/pitchdeck/export/powerpoint)
- [Next: Add Master Slides to PowerPoint exports from Figma](/pitchdeck/tutorials/add-master-slides-to-powerpoint-exports-from-figma)
- [Open Pitchdeck in the Figma Community](https://www.figma.com/community/plugin/838925615018625519)

---

---
url: "/pitchdeck/tutorials/export-presentation-to-clickable-interactive-pdf.md"
description: "This tutorial shows how to use the Pitchdeck Presentation Studio Figma plugin to add slide links and external URL links to elements in a presentation deck, then export the deck as a clickable interactive PDF. It also demonstrates how the exported PDF behaves in Preview, how to edit or remove links, and how link targets are preserved even if slide order changes."
---

# Export presentation to clickable interactive PDF

> This tutorial shows how to use the Pitchdeck Presentation Studio Figma plugin to add slide links and external URL links to elements in a presentation deck, then export the deck as a clickable interactive PDF. It also demonstrates how the exported PDF behaves in Preview, how to edit or remove links, and how link targets are preserved even if slide order changes.

[← Back to Pitchdeck Video Tutorials](/pitchdeck/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/jKFlguRXiAA)

## What this video covers

This tutorial shows how to use the Pitchdeck Presentation Studio Figma plugin to add slide links and external URL links to elements in a presentation deck, then export the deck as a clickable interactive PDF. It also demonstrates how the exported PDF behaves in Preview, how to edit or remove links, and how link targets are preserved even if slide order changes.

## Things you'll need

- Figma
- Pitchdeck Presentation Studio installed from the Figma Community
- A presentation deck or Figma file with frames to link

## Steps

1. [ ] Install Pitchdeck Presentation Studio from the Figma Community if it is not already installed.
2. [ ] Open your presentation file in Figma, then launch the plugin by right-clicking and choosing Plugins > Pitchdeck Presentation Studio.
3. [ ] In the URL/Slide Links tab, select any child element inside a frame and assign either a link to another slide or a link to an external URL.
4. [ ] When your links are set, click Export Presentation, choose PDF deck, keep the desired quality setting, and export to PDF.
5. [ ] Download the .pdf file, open it in Preview, and test the clickable slide links and external URLs.
6. [ ] Reopen the plugin to edit links, clear a link by removing its URL, or exclude a slide to remove its linked target from the export.
7. [ ] If needed, reorder slides and note that links continue pointing to the same linked frame content rather than the slide number.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=jKFlguRXiAA)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-clickable-interactive-pd-fs-from-figma-using-pitchdeck)
- [Read: Exporting your slides to a PDF file](/pitchdeck/export/pdf)
- [Next: Export Figma slides to JPG/PNG images](/pitchdeck/tutorials/export-figma-slides-to-jpg-png-images)
- [Open Pitchdeck in the Figma Community](https://www.figma.com/community/plugin/838925615018625519)

---

---
url: "/pitchdeck/tutorials/export-presentations-to-google-slides.md"
description: "This video shows how to use the Pitchdeck Figma plugin to export a Figma presentation deck to Google Slides. It covers installing the plugin, arranging slides and speaker notes in Pitchdeck, exporting as a PowerPoint file, and opening that file in Google Slides."
---

# Export presentations to Google Slides

> This video shows how to use the Pitchdeck Figma plugin to export a Figma presentation deck to Google Slides. It covers installing the plugin, arranging slides and speaker notes in Pitchdeck, exporting as a PowerPoint file, and opening that file in Google Slides.

[← Back to Pitchdeck Video Tutorials](/pitchdeck/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/BkMRUL5SvmE)

## What this video covers

This video shows how to use the Pitchdeck Figma plugin to export a Figma presentation deck to Google Slides. It covers installing the plugin, arranging slides and speaker notes in Pitchdeck, exporting as a PowerPoint file, and opening that file in Google Slides.

## Things you'll need

- A Figma file with top-level frames for the presentation
- The Pitchdeck Presentation Studio plugin installed in Figma
- A Google account with Google Slides access

## Steps

1. [ ] Install the Pitchdeck Presentation Studio plugin from Figma Community if it is not already installed.
2. [ ] In Figma, right-click the presentation file, go to plugins, and open Pitchdeck Presentation Studio.
3. [ ] Review the imported top-level frames as slides, reorder them if needed, and add speaker notes to each slide.
4. [ ] Select the export format drop-down, choose PowerPoint file, and click Export PowerPoint.
5. [ ] Save the exported file to your computer.
6. [ ] Open Google Slides, create or open a blank presentation, then go to File, Open, and upload the exported PowerPoint file.
7. [ ] After the file opens in Google Slides, edit slide elements and add animations there if needed.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=BkMRUL5SvmE)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-presentations-from-figma-to-google-slides-using-pitchdeck)
- [Read: Exporting your slides to Google Slides](/pitchdeck/export/google-slides)
- [Next: Export .pptx files with editable text](/pitchdeck/tutorials/export-pptx-files-with-editable-text)
- [Open Pitchdeck in the Figma Community](https://www.figma.com/community/plugin/838925615018625519)

---

---
url: "/pitchdeck/tutorials/export-presentations-to-keynote.md"
description: "The video shows how to use the Pitchdeck Figma plugin to export a slide deck from Figma as a native Keynote file. It also explains how slide order, speaker notes, and animations behave during the export process."
---

# Export presentations to Keynote

> The video shows how to use the Pitchdeck Figma plugin to export a slide deck from Figma as a native Keynote file. It also explains how slide order, speaker notes, and animations behave during the export process.

[← Back to Pitchdeck Video Tutorials](/pitchdeck/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/yJ3W1pjS0LI)

## What this video covers

The video shows how to use the Pitchdeck Figma plugin to export a slide deck from Figma as a native Keynote file. It also explains how slide order, speaker notes, and animations behave during the export process.

## Things you'll need

- A Figma file containing the presentation frames
- The Pitchdeck Figma plugin installed
- Keynote installed to open the exported file

## Steps

1. [ ] Install Pitchdeck Presentation Studio from the Figma Community or Plugins area if it is not already installed.
2. [ ] Open a Figma file that contains only the frames you want in the presentation, then run Pitchdeck Presentation Studio from the Plugins menu.
3. [ ] Review the detected frames as slides, reorder them in the Pitchdeck plugin if needed, and add speaker notes per slide.
4. [ ] Choose the export format dropdown and select Keynote file, then click Export Keynote.
5. [ ] Save the generated file to your computer and open it in Keynote by double-clicking it or using File > Open.
6. [ ] In Keynote, confirm the slides and presenter notes carried across, then add any Keynote animations manually if desired.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=yJ3W1pjS0LI)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-presentations-from-figma-to-keynote-using-pitchdeck)
- [Read: Exporting your slides to Keynote](/pitchdeck/export/keynote)
- [Next: Export presentations to Google Slides](/pitchdeck/tutorials/export-presentations-to-google-slides)
- [Open Pitchdeck in the Figma Community](https://www.figma.com/community/plugin/838925615018625519)

---

---
url: "/pitchdeck/tutorials/export-presentations-to-pdf.md"
description: "This video shows how to install the Pitchdeck Figma plugin and export a collaborative presentation in Figma as a PDF file. It also shows how Pitchdeck treats each top-level frame as a slide, lets you reorder slides in the plugin, and produces a compressed PDF export."
---

# Export presentations to PDF

> This video shows how to install the Pitchdeck Figma plugin and export a collaborative presentation in Figma as a PDF file. It also shows how Pitchdeck treats each top-level frame as a slide, lets you reorder slides in the plugin, and produces a compressed PDF export.

[← Back to Pitchdeck Video Tutorials](/pitchdeck/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/W_W8aYQvg28)

## What this video covers

This video shows how to install the Pitchdeck Figma plugin and export a collaborative presentation in Figma as a PDF file. It also shows how Pitchdeck treats each top-level frame as a slide, lets you reorder slides in the plugin, and produces a compressed PDF export.

## Things you'll need

- Figma
- Pitchdeck plugin installed

## Steps

1. [ ] Install the Pitchdeck plugin from Figma Community by searching for Pitchdeck Presentation Studio and clicking Install.
2. [ ] Open your presentation file in Figma, where each top-level frame will be treated as a slide by Pitchdeck.
3. [ ] Run Pitchdeck Presentation Studio from the right-click Plugins menu or from the Plugin panel in Figma.
4. [ ] Review the loaded slides and drag the handles on the left to reorder them if needed.
5. [ ] Change the export format from Pitchdeck URL to PDF file.
6. [ ] Click Export PDF, then save the generated PDF file when the save dialog appears.
7. [ ] Open the saved PDF in Preview to confirm the slides exported in the chosen order.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=W_W8aYQvg28)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-presentations-from-figma-to-pdf-using-pitchdeck)
- [Read: Exporting your slides to a PDF file](/pitchdeck/export/pdf)
- [Next: Export presentation to clickable interactive PDF](/pitchdeck/tutorials/export-presentation-to-clickable-interactive-pdf)
- [Open Pitchdeck in the Figma Community](https://www.figma.com/community/plugin/838925615018625519)

---

---
url: "/pitchdeck/tutorials/export-presentations-to-powerpoint.md"
description: "The video shows how to use the Pitchdeck Figma plugin to export a collaborative presentation from Figma to a PowerPoint file. It also shows that speaker notes carry over, while animations are not included in PowerPoint, PDF file, or Keynote exports."
---

# Export presentations to PowerPoint

> The video shows how to use the Pitchdeck Figma plugin to export a collaborative presentation from Figma to a PowerPoint file. It also shows that speaker notes carry over, while animations are not included in PowerPoint, PDF file, or Keynote exports.

[← Back to Pitchdeck Video Tutorials](/pitchdeck/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/IkiG4PWJZEM)

## What this video covers

The video shows how to use the Pitchdeck Figma plugin to export a collaborative presentation from Figma to a PowerPoint file. It also shows that speaker notes carry over, while animations are not included in PowerPoint, PDF file, or Keynote exports.

## Things you'll need

- A Figma file with presentation slide designs
- The Pitchdeck plugin installed in Figma

## Steps

1. [ ] Install the Figma plugin called Pitchdeck by searching for Pitchdeck Presentation Studio in the Figma Community/plugins area.
2. [ ] Open your Figma file, then run Pitchdeck Presentation Studio from the Plugins menu.
3. [ ] Review the mirrored slides in Pitchdeck, adjust the slide order if needed by dragging the handles, and add speaker notes per slide.
4. [ ] Open the export format menu and choose PowerPoint file instead of the animated Pitchdeck URL option.
5. [ ] Click Export PowerPoint and save the generated PowerPoint file when prompted.
6. [ ] Open the saved file in PowerPoint, Google Slides, or Apple Keynote to review the imported slides and speaker notes.
7. [ ] If you make changes later, update the Figma file and rerun the Pitchdeck plugin to export again.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=IkiG4PWJZEM)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-presentations-from-figma-to-power-point-using-pitchdeck)
- [Read: Exporting your slides to PowerPoint](/pitchdeck/export/powerpoint)
- [Next: Export presentations to Keynote](/pitchdeck/tutorials/export-presentations-to-keynote)
- [Open Pitchdeck in the Figma Community](https://www.figma.com/community/plugin/838925615018625519)

---

---
url: "/pitchdeck/tutorials/how-to-export-a-compressed-powerpoint-file-from-figma-using-pitchdeck.md"
description: "The video shows how to install the Pitchdeck Presentation Studio Figma plugin and export a Figma presentation as a PowerPoint file. It focuses on the new Compress Images option, demonstrating how different compression settings reduce file size while keeping the presentation usable in PowerPoint, Keynote, or Google Slides."
---

# How to export a compressed PowerPoint file from Figma using Pitchdeck

> The video shows how to install the Pitchdeck Presentation Studio Figma plugin and export a Figma presentation as a PowerPoint file. It focuses on the new Compress Images option, demonstrating how different compression settings reduce file size while keeping the presentation usable in PowerPoint, Keynote, or Google Slides.

[← Back to Pitchdeck Video Tutorials](/pitchdeck/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/5pfU84adjiM)

## What this video covers

The video shows how to install the Pitchdeck Presentation Studio Figma plugin and export a Figma presentation as a PowerPoint file. It focuses on the new Compress Images option, demonstrating how different compression settings reduce file size while keeping the presentation usable in PowerPoint, Keynote, or Google Slides.

## Things you'll need

- Figma
- The Pitchdeck Presentation Studio plugin installed in Figma

## Steps

1. [ ] Open Figma Community, search for Pitchdeck, and install the Pitchdeck Presentation Studio plugin if needed.
2. [ ] Open your Figma project, right-click the canvas, then go to Plugins and launch Pitchdeck Presentation Studio.
3. [ ] Click Export Presentation to open the export panel, then choose PowerPoint from Select Presentation Format.
4. [ ] Leave Retina Images off if you want a smaller file, then enable Compress Images to compress images before export.
5. [ ] Adjust the compression slider to a desired quality level, such as a middle setting around 70.
6. [ ] Click Export for PowerPoint, save the file, and compare the resulting PowerPoint file size with and without compression.
7. [ ] Optionally repeat the export at a lower quality setting to see how further compression changes file size.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=5pfU84adjiM)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-a-compressed-powerpoint-file-from-figma-using-pitchdeck)
- [Read: Exporting your slides to PowerPoint](/pitchdeck/export/powerpoint)
- [Next: Export PowerPoint files with MP4 video embeds from Figma using Pitchdeck](/pitchdeck/tutorials/export-powerpoint-files-with-mp4-video-embeds-from-figma-using-pitchdeck)
- [Open Pitchdeck in the Figma Community](https://www.figma.com/community/plugin/838925615018625519)

---

---
url: "/pitchdeck/tutorials/import-google-slides-to-figma-in-one-click.md"
description: "This tutorial shows how to use the Pitchdeck Figma plugin to import Google Slides into Figma by exporting a Google Slides deck as a .pptx file and dropping it into the plugin. It also shows that the imported content comes in as editable Figma layers and can be exported back out as PowerPoint, Keynote, or Google Slides."
---

# Import Google Slides to Figma in one click

> This tutorial shows how to use the Pitchdeck Figma plugin to import Google Slides into Figma by exporting a Google Slides deck as a .pptx file and dropping it into the plugin. It also shows that the imported content comes in as editable Figma layers and can be exported back out as PowerPoint, Keynote, or Google Slides.

[← Back to Pitchdeck Video Tutorials](/pitchdeck/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/phr2bzBcrO4)

## What this video covers

This tutorial shows how to use the Pitchdeck Figma plugin to import Google Slides into Figma by exporting a Google Slides deck as a .pptx file and dropping it into the plugin. It also shows that the imported content comes in as editable Figma layers and can be exported back out as PowerPoint, Keynote, or Google Slides.

## Things you'll need

- A Figma file
- The Pitchdeck Figma plugin
- A Google Slides deck that can be downloaded as a .pptx file

## Steps

1. [ ] In Figma, open the Resources icon, search for Pitchdeck, and save or run the plugin from the Plugins tab.
2. [ ] From the canvas, right-click, go to Plugins > Saved plugins, and launch Pitchdeck.
3. [ ] In Google Slides, open the File tab, go to Download, and choose Microsoft PowerPoint (.pptx) to save the deck as a .pptx file.
4. [ ] In Pitchdeck, drag and drop the .pptx file into the Import .pptx dropzone or use the Import .pptx button.
5. [ ] Wait for the import to finish; the slides are added to a new page in the Figma file as editable layers.
6. [ ] Edit the imported text and image layers in Figma as needed, and repeat the process for additional decks.
7. [ ] Use the Export button if you want to re-export the Figma file as PowerPoint, Keynote, or Google Slides.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=phr2bzBcrO4)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-import-google-slides-to-figma-with-one-click-using-pitchdeck)
- [Read: Importing slides from a PPTX file into your Figma file as editable layers](/pitchdeck/design/import-pptx)
- [Next: Import PowerPoint (.pptx) to Figma Slides](/pitchdeck/tutorials/import-powerpoint-pptx-to-figma-slides)
- [Open Pitchdeck in the Figma Community](https://www.figma.com/community/plugin/838925615018625519)

---

---
url: "/pitchdeck/tutorials/import-google-slides-to-figma-slides.md"
description: "This tutorial shows how to use the Pitchdeck Figma plugin to export Google Slides as a .pptx file, import that file into Figma, and then paste the imported slides into a Figma Slides deck. It also shows that the imported slides remain editable in Figma Slides, while noting the import is currently in BETA and may need minor manual fixes."
---

# Import Google Slides to Figma Slides

> This tutorial shows how to use the Pitchdeck Figma plugin to export Google Slides as a .pptx file, import that file into Figma, and then paste the imported slides into a Figma Slides deck. It also shows that the imported slides remain editable in Figma Slides, while noting the import is currently in BETA and may need minor manual fixes.

[← Back to Pitchdeck Video Tutorials](/pitchdeck/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/twFlJ81u4qE)

## What this video covers

This tutorial shows how to use the Pitchdeck Figma plugin to export Google Slides as a .pptx file, import that file into Figma, and then paste the imported slides into a Figma Slides deck. It also shows that the imported slides remain editable in Figma Slides, while noting the import is currently in BETA and may need minor manual fixes.

## Things you'll need

- A Figma design file
- The Pitchdeck Figma plugin
- A Google Slides presentation exported as a .pptx file

## Steps

1. [ ] Open a new Figma design file and run the Pitchdeck plugin from Resources or Saved plugins.
2. [ ] In Google Slides, go to File > Download and choose Microsoft PowerPoint .pptx.
3. [ ] Drag and drop the downloaded .pptx file into the import .pptx drop zone in Pitchdeck to import the slides into Figma.
4. [ ] Select all imported frames with Command A or Control A, then right-click and choose copy.
5. [ ] Open a Figma Slides file by going to File > New slide deck, then click Start from scratch.
6. [ ] Make sure you are in list view, right-click in the left sidebar, and paste the copied slides.
7. [ ] Switch to grid view if you want an overview of the imported slides and edit the layers as needed.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=twFlJ81u4qE)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-import-google-slides-to-figma-slides-using-pitchdeck)
- [Read: Importing slides from a PPTX file into your Figma file as editable layers](/pitchdeck/design/import-pptx)
- [Next: Add slide layouts to Figma presentations with one click](/pitchdeck/tutorials/add-slide-layouts-to-figma-presentations-with-one-click)
- [Open Pitchdeck in the Figma Community](https://www.figma.com/community/plugin/838925615018625519)

---

---
url: "/pitchdeck/tutorials/import-powerpoint-pptx-to-figma-slides.md"
description: "This tutorial shows how to use the Pitchdeck Figma plugin to import a PowerPoint .pptx into Figma, then copy the imported frames into a new Figma Slides file. It also demonstrates that the imported slides remain editable in Figma Slides and can be rearranged or updated there."
---

# Import PowerPoint (.pptx) to Figma Slides

> This tutorial shows how to use the Pitchdeck Figma plugin to import a PowerPoint .pptx into Figma, then copy the imported frames into a new Figma Slides file. It also demonstrates that the imported slides remain editable in Figma Slides and can be rearranged or updated there.

[← Back to Pitchdeck Video Tutorials](/pitchdeck/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/h2cAnTxI1yM)

## What this video covers

This tutorial shows how to use the Pitchdeck Figma plugin to import a PowerPoint .pptx into Figma, then copy the imported frames into a new Figma Slides file. It also demonstrates that the imported slides remain editable in Figma Slides and can be rearranged or updated there.

## Things you'll need

- A Figma app account with access to a regular Figma design file and Figma Slides
- The Pitchdeck Figma plugin
- An existing PowerPoint .pptx file

## Steps

1. [ ] Open a regular Figma design file and find the Pitchdeck plugin from Resources or Saved plugins.
2. [ ] Run the plugin and use the Import .pptx button or drag and drop a PowerPoint .pptx file into the drop zone.
3. [ ] Wait for the PowerPoint slides to import into Figma as editable frames.
4. [ ] Select all imported frames, then copy them.
5. [ ] Open a new Figma Slides file and click start from scratch.
6. [ ] Make sure list view is selected, then right-click in the sidebar list and paste the copied frames.
7. [ ] Edit, move, replace images, or rearrange the imported slides in Figma Slides as needed.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=h2cAnTxI1yM)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-import-power-point-pptx-to-figma-slides-using-pitchdeck)
- [Read: Importing slides from a PPTX file into your Figma file as editable layers](/pitchdeck/design/import-pptx)
- [Next: Import Google Slides to Figma Slides](/pitchdeck/tutorials/import-google-slides-to-figma-slides)
- [Open Pitchdeck in the Figma Community](https://www.figma.com/community/plugin/838925615018625519)

---

---
url: "/pitchdeck/tutorials/import-slides-from-powerpoint-to-figma-in-one-click.md"
description: "The video shows how to use the Pitchdeck Figma plugin to import slides from a PPTX PowerPoint file into a Figma file in one click. It also explains what content imports well, how speaker notes are carried over, and how to fix files that fail to open by resaving them from Microsoft PowerPoint."
---

# Import slides from PowerPoint to Figma in one click

> The video shows how to use the Pitchdeck Figma plugin to import slides from a PPTX PowerPoint file into a Figma file in one click. It also explains what content imports well, how speaker notes are carried over, and how to fix files that fail to open by resaving them from Microsoft PowerPoint.

[← Back to Pitchdeck Video Tutorials](/pitchdeck/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/CpMNE8U_kJ8)

## What this video covers

The video shows how to use the Pitchdeck Figma plugin to import slides from a PPTX PowerPoint file into a Figma file in one click. It also explains what content imports well, how speaker notes are carried over, and how to fix files that fail to open by resaving them from Microsoft PowerPoint.

## Things you'll need

- Figma
- Pitchdeck
- Microsoft PowerPoint

## Steps

1. [ ] Open a Figma file, find Pitchdeck from Resources or Saved plugins, and run the plugin.
2. [ ] In the Pitchdeck plugin, use the Import PPTX drop zone or drag and drop a PPTX file into it.
3. [ ] Wait for the import to finish; Pitchdeck creates a new page in Figma and loads the slides as editable content.
4. [ ] Check the imported slides, text, images, shapes, tables, and speaker notes, and edit them directly in Figma as needed.
5. [ ] If a PPTX file will not open, open it in Microsoft PowerPoint, use File > Save As, and save a new PPTX version before trying again in Pitchdeck.
6. [ ] Review fonts and simple layouts, since some complex elements such as charts, SmartArt, headers and footers, embedded videos, and animations are not supported.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=CpMNE8U_kJ8)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-import-slides-from-power-point-to-figma-in-one-click-using-pitchdeck)
- [Read: Importing slides from a PPTX file into your Figma file as editable layers](/pitchdeck/design/import-pptx)
- [Next: Import Google Slides to Figma in one click](/pitchdeck/tutorials/import-google-slides-to-figma-in-one-click)
- [Open Pitchdeck in the Figma Community](https://www.figma.com/community/plugin/838925615018625519)

---

---
url: "/pitchdeck/tutorials/re-order-and-tidy-figma-slides-into-a-grid-with-one-click.md"
description: "This tutorial shows how to use the Pitchdeck Figma plugin to automatically reorder and tidy slides into a grid based on the slide order in the plugin. It also shows how to manually drag and drop slides, uncheck slides to exclude them from exports, and optionally fade unchecked slides."
---

# Re-order and tidy Figma slides into a grid with one click

> This tutorial shows how to use the Pitchdeck Figma plugin to automatically reorder and tidy slides into a grid based on the slide order in the plugin. It also shows how to manually drag and drop slides, uncheck slides to exclude them from exports, and optionally fade unchecked slides.

[← Back to Pitchdeck Video Tutorials](/pitchdeck/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/9ED4z7rE70k)

## What this video covers

This tutorial shows how to use the Pitchdeck Figma plugin to automatically reorder and tidy slides into a grid based on the slide order in the plugin. It also shows how to manually drag and drop slides, uncheck slides to exclude them from exports, and optionally fade unchecked slides.

## Things you'll need

- A Figma file
- The Pitchdeck Figma plugin

## Steps

1. [ ] Open Figma, search for Pitchdeck in Resources under the Plugins tab, and save or run the plugin from Saved plugins.
2. [ ] Load your slides in Pitchdeck and set the slide order you want in the plugin, since that order is the source of truth for tidying.
3. [ ] Open the page icon panel in the top left of the Pitchdeck plugin.
4. [ ] Choose how many slides you want per row, such as 12, and optionally enable the fade effect for unchecked slides.
5. [ ] Click the reorder and tidy Figma slides button to arrange the slides into a grid on the canvas.
6. [ ] If needed, drag and drop slides in Pitchdeck or uncheck slides to remove them from exports like PDF, PowerPoint, or the web presentation.
7. [ ] Repeat reorder and tidy after changing the plugin order, and turn off the fade toggle to reset unchecked slides back to 100% opacity.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=9ED4z7rE70k)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-re-order-and-tidy-figma-slides-into-a-grid-with-one-click-using-pitchdeck)
- [Read: Automatically tidying your slides into an ordered grid](/pitchdeck/workflow/tidy)
- [Next: Analytics dashboard and link tracking for Figma presentations](/pitchdeck/tutorials/analytics-dashboard-and-link-tracking-for-figma-presentations)
- [Open Pitchdeck in the Figma Community](https://www.figma.com/community/plugin/838925615018625519)

---

---
url: "/pitchdeck/tutorials/self-hosting-your-figma-presentation-on-a-custom-domain.md"
description: "This tutorial shows how to export a Pitchdeck Figma presentation as a web presentation, download the HTML file, and host it on a custom domain or server. It also demonstrates optional self-hosted embed code, auto login, and re-uploading updated files after changing presentation settings."
---

# Self-hosting your Figma presentation on a custom domain

> This tutorial shows how to export a Pitchdeck Figma presentation as a web presentation, download the HTML file, and host it on a custom domain or server. It also demonstrates optional self-hosted embed code, auto login, and re-uploading updated files after changing presentation settings.

[← Back to Pitchdeck Video Tutorials](/pitchdeck/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/Dx07nBslRz8)

## What this video covers

This tutorial shows how to export a Pitchdeck Figma presentation as a web presentation, download the HTML file, and host it on a custom domain or server. It also demonstrates optional self-hosted embed code, auto login, and re-uploading updated files after changing presentation settings.

## Things you'll need

- A Figma file with frames to use as slides
- A hosting service or server for the downloaded HTML file
- A custom domain only if you want to use one

## Steps

1. [ ] Open your Figma file, find Pitchdeck in the Plugins tab, and run or save the plugin.
2. [ ] Let Pitchdeck treat Figma frames as slides, then choose the blue export button in the plugin.
3. [ ] Set the export format to Pitchdeck presentation web URL and use Upload Web Presentation.
4. [ ] After export, open Get Embed Code (Self-Hosted) and download the HTML file.
5. [ ] Upload the downloaded HTML file to a hosting service such as TinyHost or Netlify, then publish it.
6. [ ] If needed, set up a custom domain on your hosting service and re-upload the file after changing login theme or other settings.
7. [ ] Optionally enable Enable Auto Login before downloading the HTML file, then re-upload the updated file to your host.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=Dx07nBslRz8)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/self-host-figma-presentation-embed-using-pitchdeck)
- [Read: Self-hosting a Pitchdeck web presentation on your own domain as an iFrame embed](/pitchdeck/web/embed)
- [Next: Create and present a Pitchdeck](/pitchdeck/tutorials/create-and-present-a-pitchdeck)
- [Open Pitchdeck in the Figma Community](https://www.figma.com/community/plugin/838925615018625519)

---

---
url: "/pitchdeck/tutorials/spell-check-figma-presentation-slides.md"
description: "This video shows how to use the Pitchdeck Presentation Studio Figma plugin to spell check presentation slides inside Figma. It demonstrates selecting a language, finding spelling mistakes, jumping to each flagged word, and correcting or undoing changes one by one or across multiple instances."
---

# Spell check Figma presentation slides

> This video shows how to use the Pitchdeck Presentation Studio Figma plugin to spell check presentation slides inside Figma. It demonstrates selecting a language, finding spelling mistakes, jumping to each flagged word, and correcting or undoing changes one by one or across multiple instances.

[← Back to Pitchdeck Video Tutorials](/pitchdeck/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/HAgOx4bharc)

## What this video covers

This video shows how to use the Pitchdeck Presentation Studio Figma plugin to spell check presentation slides inside Figma. It demonstrates selecting a language, finding spelling mistakes, jumping to each flagged word, and correcting or undoing changes one by one or across multiple instances.

## Things you'll need

- Pitchdeck Presentation Studio must be installed in Figma.
- A Figma presentation file with slides to check.

## Steps

1. [ ] Install Pitchdeck Presentation Studio from the Figma Community if it is not already installed.
2. [ ] Open your Figma file, then launch the plugin by right-clicking and choosing Plugins > Pitchdeck Presentation Studio.
3. [ ] Click the check icon in the plugin header to open the spell-check panel.
4. [ ] Choose the correct language from the dropdown, then click Find Spelling Mistakes.
5. [ ] Review each flagged word, use the search icon to jump to its location, and select the correct spelling suggestion.
6. [ ] Use Undo if a correction was wrong, and verify the context before choosing between similar suggestions.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=HAgOx4bharc)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-spell-check-figma-presentation-slides-using-pitchdeck)
- [Read: Spell checking your slides](/pitchdeck/workflow/spellcheck)
- [Next: Create and present a Pitchdeck](/pitchdeck/tutorials/create-and-present-a-pitchdeck)
- [Open Pitchdeck in the Figma Community](https://www.figma.com/community/plugin/838925615018625519)

---

---
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 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 lets you 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 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 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 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 lets you 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 (for example, 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 lets you 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 lets you 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 can 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 want to 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 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 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 (for example, "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 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 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 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 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 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 walks through how to self-host your Figma presentation on a custom domain with the Pitchdeck plugin.
[Embedded media](https://www.youtube-nocookie.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 (for example, 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:** 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**. 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 lets you 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 lets you 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 lets you 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 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 lets you 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 lets you 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 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 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 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 lets you 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 lets you 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 lets you [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 (for example, 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.

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 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 the **Copy** icon button will copy the link/password to your clipboard, which you can 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 want to re-activate the URL after it has expired, 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 can 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 want to 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 want 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 the order of your frames naturally by their names, so names such as `Slide 2` appear before `Slide 10`.

### 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.

Visual sorting groups slightly misaligned frames into the same row or column, so rough canvas layouts do not require pixel-perfect alignment.

## 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 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 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 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 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 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/ai-agents.md"
description: "Install the Hypermatic Agent Skill for Pixelay and give Codex, Claude Code, Grok, and compatible agents the correct visual QA workflows."
---

# Use Pixelay with AI agents

> Install the Hypermatic Agent Skill for Pixelay and give Codex, Claude Code, Grok, and compatible agents the correct visual QA workflows.

Hypermatic Agent Skills give your AI agent a concise Pixelay playbook. The Pixelay skill guides authenticated or public website comparisons while protecting private links and requiring visual evidence for reported differences.

- [Install Hypermatic Agent Skills](https://hypermatic.ai/): Copy the terminal installer or the no-terminal prompt. One install includes all 12 Hypermatic plugin skills.

## Install the Pixelay skill

1. Open [Hypermatic Agent Skills](https://hypermatic.ai/).
2. Copy the terminal command, or copy the no-terminal prompt into your agent.
3. Confirm that `hypermatic-pixelay` appears in the installed skills.
4. Ask the agent to use the Pixelay skill for your task.

## What the skill can help with

- Map Figma frames to the correct website URLs and responsive breakpoints.
- Prepare public or authenticated comparison workflows safely.
- Use overlays and measurements to identify visual differences.
- Return screenshots, measurements, and the exact pages that were compared.

## Keyboard Shortcuts

Use [Pixelay Keyboard Shortcuts](/pixelay/automation/parameters) for supported repeatable tasks with a hidden plugin panel. The reference includes plain-field examples, selection requirements and a machine-readable registry. Choose a supported action from the installed plugin’s Quick Actions list; results use normal notifications, document changes and saved files.

## Example prompts

- `Use the Pixelay skill to compare these frames with our staging website.`
- `Use the Pixelay skill to check these three responsive breakpoints.`
- `Use the Pixelay skill to summarize the largest visual differences.`

## Approval and verification

The agent can guide the workflow, or use available Figma, browser, and computer-control tools after you approve the requested changes. Keep private comparison links and authentication details out of public output. Comparing a screenshot is not proof that the source website was changed.

## Trial limits

If Pixelay reports that its trial allowance is exhausted, the agent should stop retrying and send you to [Pixelay pricing and purchase options](https://www.hypermatic.com/pixelay/#pro). Complete checkout and license activation yourself, then tell the agent when Pixelay is active.

## Keep the skill current

Return to [Hypermatic Agent Skills](https://hypermatic.ai/) and use the **Update** command to install the latest stable Pixelay instructions.

---

---
url: "/pixelay/automation/parameters.md"
description: "Run Pixelay Quick Actions with simple named inputs and current-selection shortcuts."
---

# Pixelay Keyboard Shortcuts

> Run Pixelay Quick Actions with simple named inputs and current-selection shortcuts.

Run common Pixelay tasks from Figma Quick Actions without opening the plugin panel. Choose a named shortcut below. Use the normal plugin panel for detailed settings and authoring.

## Run a keyboard shortcut

Every shortcut requires a verified valid license or remaining trials. If verification fails or your trials have expired, open the normal plugin panel to activate your license. Opening the panel remains available.

1. Select the layers you want to work with, if the shortcut uses a selection.
2. Open Figma Quick Actions with **Command + /** on Mac or **Ctrl + /** on Windows.
3. Search for the plugin and choose the named shortcut below.
4. Enter the fields shown. Optional fields may be skipped; use Tab to edit them. Run the shortcut and check the result or complete its save dialog.

Creation shortcuts ask for names or dimensions directly. Selected-layer shortcuts use the current selection automatically. These everyday shortcuts do not ask for Target or JSON. Choose **Open Pixelay** for the normal plugin panel.

| Shortcut | Inputs |
| --- | --- |
| **Upload Selected Comparisons** | None; runs immediately |

Fixed-choice fields use readable labels. Search by the displayed label or the underlying value; agent inputs continue to use the values shown in the command reference.

Configure selected-frame URLs and the page-wide base URL in the normal panel before using **Upload Selected Comparisons**.

## Run from the context menu

Select the intended layers, right-click, and choose **Plugins → Pixelay** (development plugins appear under **Development**). Choose an action and its format or preset. A preset runs immediately when it needs no required input; finish the save dialog when one appears.

Each preset sets its named option. Omitted compatible options inherit the plugin’s saved settings; an explicit action or option takes priority over conflicting saved behavior. Only explicitly entered fields or the selected menu choice override them for that run. If a setting has never been saved, the normal setting or documented fallback applies. Export overrides are not saved back to your preferences. If a saved format is unavailable as a shortcut, choose a supported format explicitly or use the normal panel. To combine options, choose **Custom Settings…** within the action and enter the parameters. Actions needing text, URLs, names or dimensions still prompt for those required fields. **Open Pixelay** opens the normal panel.

| Menu choice | Next step |
| --- | --- |
| **Upload Selected Comparisons** | Runs immediately |

## Detailed editing

Use the normal plugin panel for detailed settings, longer content, bulk authoring and browsing components or templates. The shortcut menu contains only the everyday commands listed above.

Keep each pasted field below 150 characters: Figma desktop can truncate pasted input at that boundary. Longer input belongs in the normal panel.

If an older plugin shows Action, Target and Options instead, update it to use these named shortcuts. A Target value is a layer ID or selection, never the name of a new item.

## Pixelay actions

| Action | What it does | Target |
| --- | --- | --- |
| [`publish`](#publish) | Upload selected frames using saved comparison URLs | One or more eligible layers |

### publish

Upload selected frames using saved comparison URLs. Select one or more eligible layers.

This shortcut has no input fields.

This is an explicit external write to the plugin’s existing Hypermatic services. It reuses saved account setup and may create an account using the existing workflow. Do not retry automatically after an upload error; check the remote destination for partial output.

Choose **Upload Selected Comparisons**. It runs immediately using the current selection.

Agent host input

```json
{"command":"shortcut-publish","parameters":{}}
```

## Using shortcuts with an agent

Read the machine-readable registry linked below and choose an action offered by the installed plugin’s Quick Actions list. The registry uses Hypermatic option definitions rather than standard JSON Schema: `min` and `max` constrain string length, array length or numeric value according to the field type; nested definitions use `fields` and `item`. Unknown fields are rejected.

The agent needs a host that can invoke Figma Quick Actions and observe the normal plugin result. Parameters do not add a REST or MCP launcher. The expandable examples are input data for a compatible host, not executable API calls; shortcut inputs use plain strings in `parameters`, including numbers and format choices. Never claim that a shortcut ran from its prepared input alone.

Verify the visible outcome: the changed Figma layers, saved export, or published page. Read the normal success/error notification and any partial-export warning. Complete native save dialogs as needed; a download starting does not prove that the file was saved. Users do not need to open developer tools or read a console.

## Troubleshooting

| Symptom | Next step |
| --- | --- |
| Action is unavailable | Update the plugin and check its Quick Actions list; use the normal panel if the action is unavailable. |
| Options are invalid or may have been truncated | Use individual plain field values below 150 characters, with only fields accepted by that shortcut. |
| Target is missing or ineligible | Open the correct page, check the action’s layer requirements, and select the intended layers again. |
| A license or trial error appears | Complete the plugin’s normal activation flow before rerunning. |
| Download was requested but no saved file is visible | Check the native save dialog and download location. Inspect the actual file. |
| A command fails, times out or is cancelled | Check the document and remote destination before retrying; earlier changes or uploads may already exist. |

Commands have a five-minute deadline. Errors do not imply a full rollback. Automatically retrying a create, replacement or upload can duplicate or overwrite work.

[Machine-readable command registry](/automation/parameters/pixelay.json) contains the same action IDs and option definitions.

## Current limits

Publish uses the existing account setup and upload feature; it can create an account and replaces the saved comparison with the selected frames. Configure only saves local URL mappings. The website base URL must be configured before publishing.

## Related documentation

- [Install and run Pixelay](/pixelay/overview/install)
- [Figma plugin parameters](https://developers.figma.com/docs/plugins/plugin-parameters/)
- [Figma hidden UI options](https://developers.figma.com/docs/plugins/api/properties/figma-showui/)

---

---
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 need to [Install the Pixelay Chrome Extension](https://chrome.google.com/webstore/detail/pixelay-for-figma/gnbafbeabkbkecmbedfgebgboicpnkpp) first; this lets you compare websites that are live, in development (for example, 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 lets you 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 lets you 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 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 (for example, 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://www.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://www.hypermatic.com/pixelay/#pro).

After the included Pro trial runs, Pixelay can compare Figma frames that are **less than 430 px wide** in Free mode. Wider frames require Pixelay Pro.

  - **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 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 lets you 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 (for example, a “find layer by name” plugin)
- Modify any data in your Figma document (for example, a “rename selected layers” plugin)
- Communicate with any server over the internet (for example, 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 (for example, 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 (for example, 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, 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](/tinyimage/downsize) 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

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-nocookie.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 a 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 of all of the Figma plugin features.

> **Warning:** 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.

> **Info:** If you ever need to use a different license key at any time (for example, 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 and 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 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.
- Compare Figma designs with the implemented website during visual QA.
- Test your responsive designs, with support for multiple screen sizes (for example, desktop/mobile/tablet).
- Switch between multiple development, test, and production URLs.
- Transparency, split-screen, toggle, drag and diff overlays.
- Optionally specify different website page URLs per Figma frame.
- Supports localhost through BrowserSync or hot module reloading.
- Built-in pixel ruler for measuring space differences in comparisons.
- Measure and review visual differences between Figma and the website.

---

---
url: "/pixelay/tutorials.md"
description: "Learn how to compare Figma designs with live websites, create overlays, and identify visual differences with Pixelay."
---

# Pixelay Video Tutorials

> Learn how to compare Figma designs with live websites, create overlays, and identify visual differences with Pixelay.

## Video Tutorials

- [Compare live website builds](/pixelay/tutorials/compare-live-website-builds)
- [Compare websites behind a login with Figma designs](/pixelay/tutorials/compare-websites-behind-a-login-with-figma-designs)
- [Compare local website development builds](/pixelay/tutorials/compare-local-website-development-builds)
- [Compare Webflow builds](/pixelay/tutorials/compare-webflow-builds)

---

---
url: "/pixelay/tutorials/compare-live-website-builds.md"
description: "This tutorial shows how to use the Pixelay Figma plugin to compare Figma frames with a live website URL. It covers installing the plugin and browser extension, uploading designs to a Pixelay URL, and using comparison modes like opacity, split view, diff, and measurement for QA."
---

# Compare live website builds

> This tutorial shows how to use the Pixelay Figma plugin to compare Figma frames with a live website URL. It covers installing the plugin and browser extension, uploading designs to a Pixelay URL, and using comparison modes like opacity, split view, diff, and measurement for QA.

[← Back to Pixelay Video Tutorials](/pixelay/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/fMwBgIggbg4)

## What this video covers

This tutorial shows how to use the Pixelay Figma plugin to compare Figma frames with a live website URL. It covers installing the plugin and browser extension, uploading designs to a Pixelay URL, and using comparison modes like opacity, split view, diff, and measurement for QA.

## Things you'll need

- Figma
- Pixelay browser extension

## Steps

1. [ ] Install Pixelay from the Figma Community Plugins tab.
2. [ ] Open your Figma file, then right-click and go to Plugins > Pixelay.
3. [ ] Paste the live website URL into the plugin, and override the URL per frame if needed.
4. [ ] Select the frames to compare and click Compare Designs, then Upload Designs to create a Pixelay URL.
5. [ ] Install the Pixelay browser extension from the Chrome store if you want to compare live website URLs.
6. [ ] Open the Pixelay web app URL in your browser to view the uploaded Figma designs alongside the live site.
7. [ ] Use opacity, split screen, diff mode, overlay offset, measurement, and frame navigation to inspect differences.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=fMwBgIggbg4)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-compare-live-website-builds-with-figma-designs-using-pixelay)
- [Read: Comparing Figma designs with real website URLs in the browser](/pixelay/compare-designs)
- [Next: Compare websites behind a login with Figma designs](/pixelay/tutorials/compare-websites-behind-a-login-with-figma-designs)
- [Open Pixelay in the Figma Community](https://www.figma.com/community/plugin/816424186244407164)

---

---
url: "/pixelay/tutorials/compare-local-website-development-builds.md"
description: "This tutorial shows how to use the Pixelay Figma plugin to compare Figma designs against a local website build or a live URL. It covers installing the plugin, selecting frames, entering page URLs, generating a comparison link, and using Pixelay’s overlay and measurement tools to spot and fix differences."
---

# Compare local website development builds

> This tutorial shows how to use the Pixelay Figma plugin to compare Figma designs against a local website build or a live URL. It covers installing the plugin, selecting frames, entering page URLs, generating a comparison link, and using Pixelay’s overlay and measurement tools to spot and fix differences.

[← Back to Pixelay Video Tutorials](/pixelay/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/vOU3gGrgv4c)

## What this video covers

This tutorial shows how to use the Pixelay Figma plugin to compare Figma designs against a local website build or a live URL. It covers installing the plugin, selecting frames, entering page URLs, generating a comparison link, and using Pixelay’s overlay and measurement tools to spot and fix differences.

## Things you'll need

- Figma
- Pixelay

## Steps

1. [ ] Install Pixelay from Figma Community by searching for “pixelay” under plugins and clicking Install.
2. [ ] Open your Figma file, right-click, then choose Plugins > Pixelay Development Comparison.
3. [ ] Enter the development URL, such as a localhost address, and select the frames you want to compare, including any frame-specific URL overrides.
4. [ ] Click Compare Designs, then open the generated link in your browser to load the selected Figma frames over the website build.
5. [ ] Use the toolbar modes to switch between Figma and the build, adjust transparent overlay opacity, compare in split screen, view blended diff overlays, or use draggable overlay to align browser chrome.
6. [ ] Use the pixel measurement tool to check spacing and alignment differences directly on screen.
7. [ ] Optionally change code in your local build, save, and watch the browser preview update immediately to verify the design match.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=vOU3gGrgv4c)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-compare-local-website-builds-with-figma-designs-using-pixelay)
- [Read: Comparing Figma designs with real website URLs in the browser](/pixelay/compare-designs)
- [Next: Compare Webflow builds](/pixelay/tutorials/compare-webflow-builds)
- [Open Pixelay in the Figma Community](https://www.figma.com/community/plugin/816424186244407164)

---

---
url: "/pixelay/tutorials/compare-webflow-builds.md"
description: "This video shows how to compare Figma designs against a Webflow build using the Pixelay Figma plugin. Because Webflow URLs cannot be embedded directly in Pixelay, it also demonstrates exporting the Webflow code and serving it locally with BrowserSync so the build can be compared at a localhost URL."
---

# Compare Webflow builds

> This video shows how to compare Figma designs against a Webflow build using the Pixelay Figma plugin. Because Webflow URLs cannot be embedded directly in Pixelay, it also demonstrates exporting the Webflow code and serving it locally with BrowserSync so the build can be compared at a localhost URL.

[← Back to Pixelay Video Tutorials](/pixelay/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/XlT_QTu1eEg)

## What this video covers

This video shows how to compare Figma designs against a Webflow build using the Pixelay Figma plugin. Because Webflow URLs cannot be embedded directly in Pixelay, it also demonstrates exporting the Webflow code and serving it locally with BrowserSync so the build can be compared at a localhost URL.

## Things you'll need

- A Figma file with the designs to compare
- A paid Webflow plan to export code
- Node.js and BrowserSync for running a local server

## Steps

1. [ ] Install the Pixelay Development Comparison plugin from Figma Community and open it from Plugins.
2. [ ] Select the Figma frames you want to compare, enter a URL for the build, and click Compare to designs to generate a Pixelay comparison link.
3. [ ] If the Webflow URL does not load in Pixelay, export the Webflow project code as a zip using Webflow's Export Code and Prepare Zip options.
4. [ ] Unzip the exported files, open them in Visual Studio Code, and start a local BrowserSync server after installing Node.js and BrowserSync.
5. [ ] Copy the localhost URL from BrowserSync, reopen Pixelay in Figma, replace the old URL with the local URL, and run Compare Designs again.
6. [ ] Open the new Pixelay link in the browser and use split screen, contrast diff, overlay mode, opacity, or the pixel measuring tool to spot and fix design differences.
7. [ ] Adjust the local HTML/CSS as needed until the Webflow build matches the Figma design, then reuse the Pixelay link as needed.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=XlT_QTu1eEg)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-compare-webflow-builds-with-figma-designs-using-pixelay)
- [Read: Comparing Figma designs with real website URLs in the browser](/pixelay/compare-designs)
- [Next: Compare local website development builds](/pixelay/tutorials/compare-local-website-development-builds)
- [Open Pixelay in the Figma Community](https://www.figma.com/community/plugin/816424186244407164)

---

---
url: "/pixelay/tutorials/compare-websites-behind-a-login-with-figma-designs.md"
description: "The video shows how to use the Pixelay Figma plugin and Pixelay Chrome extension to visually compare Figma frames against a live website, including sites behind a login. It also demonstrates updating uploaded designs, switching comparison views, and using pop-out windows for easier review."
---

# Compare websites behind a login with Figma designs

> The video shows how to use the Pixelay Figma plugin and Pixelay Chrome extension to visually compare Figma frames against a live website, including sites behind a login. It also demonstrates updating uploaded designs, switching comparison views, and using pop-out windows for easier review.

[← Back to Pixelay Video Tutorials](/pixelay/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/yAj8qWD3Xzs)

## What this video covers

The video shows how to use the Pixelay Figma plugin and Pixelay Chrome extension to visually compare Figma frames against a live website, including sites behind a login. It also demonstrates updating uploaded designs, switching comparison views, and using pop-out windows for easier review.

## Things you'll need

- Figma
- Pixelay Chrome extension

## Steps

1. [ ] Open Figma Resources, search for Pixelay under the Plugins tab, and run or save the Pixelay Figma plugin.
2. [ ] Select the frames or artboards you want to compare and assign the correct base URL or page-specific URLs for each frame.
3. [ ] Click Compare Designs, then Upload Designs to send the frames from Figma and generate a comparison link.
4. [ ] Install the Pixelay Chrome extension with Add to Chrome and Add Extension if it is not already installed.
5. [ ] Open the generated Pixelay URL in a browser where you are already logged in to the target site, so the extension can overlay the uploaded designs on the live page.
6. [ ] Use the comparison views, including opacity adjustment, split screen, diff checker, design/build switching, and pop-out windows, to inspect differences.
7. [ ] After making changes in Figma, run Compare Designs again and use Update Designs to upload the revised frames and refresh the comparison link.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=yAj8qWD3Xzs)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-compare-websites-behind-a-login-with-figma-designs-using-pixelay)
- [Read: Installing the Pixelay Chrome Extension](/pixelay/browser-extension)
- [Next: Compare local website development builds](/pixelay/tutorials/compare-local-website-development-builds)
- [Open Pixelay in the Figma Community](https://www.figma.com/community/plugin/816424186244407164)

---

---
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 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:** **Use `https://` URLs.** Pixelay can only load live websites and local development URLs over 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 environment, add an extra base URL for each development, staging, or production site. You can [switch between those environments](/pixelay/compare-designs#toggling-between-environment-urls) from 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 (for example, `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 an environment URL, select it from the dropdown and click the **Trash** icon. Re-upload the Pixelay designs to apply the change to the 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 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 also copies its URL.** To generate a different URL for the duplicate, enter the Konami code (**Up**, **Up**, **Down**, **Down**, **Left**, **Right**, **Left**, **Right**, **B**, **A**) while the plugin is open. Pixelay creates a new URL without deleting the previous one.

> **Note:** If uploading or refreshing frames fails, Pixelay displays an error in the plugin and stops the progress indicator. An upload error does not undo frames or settings already sent to the comparison page.

### 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 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.

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 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 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: "Review general Hypermatic privacy boundaries and open the security documentation for each Figma plugin."
---

# Hypermatic plugin security

> Review general Hypermatic privacy boundaries and open the security documentation for each Figma plugin.

## Start your security review

Hypermatic builds official Figma plugins that run inside Figma. Because each plugin performs a different workflow, security and privacy behavior must be reviewed for the specific product and feature you plan to use.

Use these shared documents first:

- [Privacy and data access](/security/privacy-and-data-access)
- [Vendor review information](/security/vendor-review)
- [Procurement, PDF quotes, purchase orders, and vendor forms](/faq/procurement)

Then open the plugin-specific security page above. For uploaded assets, hosted outputs, support logs, or deletion questions, start with [Privacy and data access](/security/privacy-and-data-access).

## Local and connected workflows

Many Hypermatic Figma plugin workflows run locally and download files directly to your computer. Optional features in some plugins can connect to third-party APIs, upload exported assets, host images, or create shareable outputs.

Do not assume one data-handling statement applies to every plugin. Check the product-specific page for the exact workflow.

## Information for IT and procurement

Start with the [vendor review information](/security/vendor-review), [privacy and data access](/security/privacy-and-data-access), and the plugin-specific security page for the product being reviewed.

If anything is still unclear, email [adam@hypermatic.com](mailto:adam@hypermatic.com).

## 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): Create animated slide decks in Figma or export presentations 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): Design and export responsive, production-ready HTML emails from Figma.
- [CopyDoc Security](/copydoc/faq/security.md): Export, import, localize, and update text in 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 Figma layers as HTML, React, or Vue code.

---

---
url: "/security/privacy-and-data-access.md"
description: "Review support logging, Figma-file access, payment boundaries, optional connected workflows, deletion questions, and safe handling of license keys."
---

# Understand Hypermatic privacy and data access

> Review support logging, Figma-file access, payment boundaries, optional connected workflows, deletion questions, and safe handling of license keys.

Hypermatic support tools, Figma plugins, Gumroad, and optional integrations have different data boundaries.

| Surface | Access boundary |
| --- | --- |
| Support chat and docs search | General questions and logged support interactions; no Figma-file or Gumroad-account access |
| Hypermatic Figma plugins | Relevant content in the current Figma file while the plugin is running |
| Gumroad | Checkout, payments, receipts, and subscription management |
| Optional connected features | Depends on the plugin, feature, and service you choose |

## Support chat and documentation search

The Eva support chat and the documentation search are separate interfaces with separate data flows. Search and Ask AI send the query you explicitly submit to the configured search provider so the interface can return results or an answer. Hypermatic does not create a separate copy of that query for analytics or search-quality auditing.

Documentation measurement records only non-text outcomes such as whether search was opened or submitted, whether results were returned, whether a result was selected, and whether an answer was resolved or unresolved. Do not submit license keys, payment details, passwords, private company information, or other credentials through chat or docs search.

For account-specific help, email [adam@hypermatic.com](mailto:adam@hypermatic.com) privately.

## Documentation analytics

Hypermatic Docs uses Google Analytics to measure documentation usage and improve navigation, search, tutorials, and support content. Analytics is enabled automatically on the production documentation site and can record:

- Page routes, page categories, and the relevant plugin.
- Documentation navigation, install, upgrade, bundle, and support-link selections.
- Whether a labelled call to action was visible or selected, plus non-personal context such as the product, billing period, seat count, or displayed estimate when relevant.
- Whether a submitted keyword search returned results, without sending its text to Google Analytics.
- Tutorial-directory query length and result count, without sending the filter text.
- Native documentation-video starts and completions.
- Markdown copy and download actions.
- Experiment name and variant exposure when Hypermatic runs a documented page experiment.

Raw search, Ask AI, and tutorial-filter text is never included in Google Analytics events. Search measurement uses a random, non-textual query identifier. Purchase-planning links from the docs can include campaign parameters describing the documentation product, source page, and labelled link; they do not include search text or personal information.

## Private account data

The support chat answers general questions from public Hypermatic docs and product information. It does not access private customer data, payment details, invoices, Gumroad subscriptions, license keys, Figma files, or internal company data.

For account-specific help, email Adam privately with the product name and purchase email address.

## Support access to Figma files

The support chat does not open, view, inspect, or modify your Figma files. For a file-specific issue, email screenshots, exported files, or a minimal reproduction that does not include sensitive content.

Hypermatic Figma plugins can only work with the current Figma file while the plugin is running and only for the workflow you choose.

## Plugin access to the current Figma file

A Figma plugin can work with the current Figma file while it is running. Hypermatic plugins use the parts of the current file needed for the workflow you choose, such as selected frames, layers, images, text, or export settings.

The exact data used depends on the plugin and feature.

## Local and connected plugin workflows

No single statement applies to every feature in every plugin. Many export and generation workflows happen inside the Figma plugin and download files directly to your computer. Some optional features may connect to external services, such as official third-party APIs, hosted image upload workflows, or shareable output workflows.

Check the plugin-specific security page before making a security decision:

- [Bannerify Security](/bannerify/faq/security)
- [Commentful Security](/commentful/faq/security)
- [Convertify Security](/convertify/faq/security)
- [CopyDoc Security](/copydoc/faq/security)
- [Crypto Security](/crypto/faq/security)
- [Emailify Security](/emailify/faq/security)
- [Favvy Security](/favvy/faq/security)
- [HyperCrop Security](/hypercrop/faq/security)
- [Pitchdeck Security](/pitchdeck/faq/security)
- [Pixelay Security](/pixelay/faq/security)
- [TinyImage Security](/tinyimage/faq/security)
- [Weblify Security](/weblify/faq/security)

## Ask about deleting uploaded or hosted data

Start by checking the plugin-specific security page for the exact workflow you used. Some Hypermatic features keep everything local in Figma or download files straight to your computer, while some optional workflows may upload assets or create hosted outputs when you choose those features.

That means deletion questions need the exact plugin and workflow before anyone can answer responsibly. If you need help checking whether anything should be removed, email [adam@hypermatic.com](mailto:adam@hypermatic.com) with the plugin name, the feature you used, and any relevant link or asset details.

The support chat can link you to the public docs, but it cannot inspect private files, look up account records, or delete anything from your account.

## Keep credentials out of chat

Do not paste private license keys, card details, passwords, or internal credentials into chat.

If you need license help, email [adam@hypermatic.com](mailto:adam@hypermatic.com) privately with the product name and purchase email address. Only include the license key if it is necessary for support.

## Payment processing

Hypermatic uses Gumroad for online checkout and payment processing. Gumroad sends receipts, manages checkout, and provides membership management links.

For Gumroad checkout or receipt-account issues, contact [support@gumroad.com](mailto:support@gumroad.com). For Hypermatic license or product support, email [adam@hypermatic.com](mailto:adam@hypermatic.com).

## Custom security questionnaires

Hypermatic provides public security and privacy documentation. Custom vendor forms, custom procurement paperwork, and bank-transfer purchasing are not supported.

For review information, see [Vendor review information](/security/vendor-review).

---

---
url: "/security/vendor-review.md"
description: "Find the product, licensing, procurement, billing, privacy, security, and support information needed for a Hypermatic vendor review."
---

# Review Hypermatic as a software vendor

> Find the product, licensing, procurement, billing, privacy, security, and support information needed for a Hypermatic vendor review.

Use this page as a checklist when reviewing a Hypermatic Figma plugin before purchase.

1. Confirm the product and required seat count.
2. Review the shared privacy boundaries.
3. Review the selected plugin's security page.
4. Confirm the supported self-serve procurement model.
5. Generate a PDF quote if internal approval is required.

## Product and licensing summary

Hypermatic builds premium Figma plugins that automate repetitive design, production, developer handoff, and marketing workflows.

The plugins are sold as self-serve Pro licenses through online checkout. Licenses are seat-based, with one seat per Figma user.

## Procurement capabilities

Hypermatic supports:

- Online checkout through Gumroad
- PDF quote generation through [quote.hypermatic.com](https://quote.hypermatic.com/)
- PDF invoice generation from Gumroad receipts
- Seat-based subscriptions
- Monthly and yearly billing

Hypermatic does not support:

- Bank transfers
- Purchase order payment workflows
- Vendor onboarding forms
- Custom procurement paperwork
- Custom enterprise purchasing workflows

See [Procurement, PDF quotes, purchase orders, and vendor forms](/faq/procurement).

## Billing provider and support ownership

Gumroad handles checkout, payment processing, receipts, subscription management links, and many payment-account updates.

General Gumroad support: [support@gumroad.com](mailto:support@gumroad.com)

Hypermatic product and license support: [adam@hypermatic.com](mailto:adam@hypermatic.com)

## License and seat model

Each Pro license has a seat count. One seat is for one Figma user. The [Hypermatic License Manager](https://license.hypermatic.com/) lets customers manage which Figma users are linked to the license key.

See [How Hypermatic Pro licenses work](/faq/licenses) and [Managing seats](/faq/seats).

## Security review documents

Use these docs:

- [Security overview](/security)
- [Privacy and data access](/security/privacy-and-data-access)
- The plugin-specific security page for the product being reviewed

Plugin-specific security pages:

- [Bannerify Security](/bannerify/faq/security)
- [Commentful Security](/commentful/faq/security)
- [Convertify Security](/convertify/faq/security)
- [CopyDoc Security](/copydoc/faq/security)
- [Crypto Security](/crypto/faq/security)
- [Emailify Security](/emailify/faq/security)
- [Favvy Security](/favvy/faq/security)
- [HyperCrop Security](/hypercrop/faq/security)
- [Pitchdeck Security](/pitchdeck/faq/security)
- [Pixelay Security](/pixelay/faq/security)
- [TinyImage Security](/tinyimage/faq/security)
- [Weblify Security](/weblify/faq/security)

## Support channels

Use the support chat for general questions answered from public documentation. For account-specific Hypermatic help, email [adam@hypermatic.com](mailto:adam@hypermatic.com).

Use [adam@hypermatic.com](mailto:adam@hypermatic.com) for purchase verification, subscription changes, refunds, license-key retrieval, or other account-specific changes.

## Pricing and approval quotes

See [Hypermatic pricing and PDF quotes](/faq/pricing) for current monthly/yearly prices, seat calculations, checkout guidance, and PDF quote guidance.

---

---
url: "/support/contact-and-account-help.md"
description: "This page has moved to the General Support & FAQ section."
---

# Contact and account-specific help moved

> This page has moved to the General Support & FAQ section.

This page has moved to [Contact and account-specific help](/faq/contact-and-account-help).

---

---
url: "/tinyimage/ai-agents.md"
description: "Install the Hypermatic Agent Skill for TinyImage and give Codex, Claude Code, Grok, and compatible agents the correct optimization workflows."
---

# Use TinyImage with AI agents

> Install the Hypermatic Agent Skill for TinyImage and give Codex, Claude Code, Grok, and compatible agents the correct optimization workflows.

Hypermatic Agent Skills give your AI agent a concise TinyImage playbook. The TinyImage skill routes image, animation, PDF, and print tasks to supported workflows and requires size and appearance evidence before reporting success.

- [Install Hypermatic Agent Skills](https://hypermatic.ai/): Copy the terminal installer or the no-terminal prompt. One install includes all 12 Hypermatic plugin skills.

## Install the TinyImage skill

1. Open [Hypermatic Agent Skills](https://hypermatic.ai/).
2. Copy the terminal command, or copy the no-terminal prompt into your agent.
3. Confirm that `hypermatic-tinyimage` appears in the installed skills.
4. Ask the agent to use the TinyImage skill for your task.

## What the skill can help with

- Choose suitable formats and compression settings for selected Figma assets.
- Prepare GIF, animated WebP, APNG, video, PDF, or print workflows.
- Meet file-size targets while checking visible quality and required dimensions.
- Resolve blocking export errors and report every generated artifact.

## Keyboard Shortcuts

Use [TinyImage Keyboard Shortcuts](/tinyimage/automation/parameters) for supported repeatable tasks with a hidden plugin panel. The reference includes plain-field examples, selection requirements and a machine-readable registry. Choose a supported action from the installed plugin’s Quick Actions list; results use normal notifications, document changes and saved files.

## Example prompts

- `Use the TinyImage skill to compress these selected assets below our size limit.`
- `Use the TinyImage skill to prepare this animation as a GIF and animated WebP.`
- `Use the TinyImage skill to validate this print-ready PDF export.`

## Approval and verification

The agent can guide the workflow, or use available Figma and computer-control tools after you approve the requested changes. It must preserve the requested selection and ask before changing fills, replacing exports, or applying password protection. Export errors should be resolved rather than ignored.

## Trial limits

If TinyImage reports that its trial allowance is exhausted, the agent should stop retrying and send you to [TinyImage pricing and purchase options](https://www.hypermatic.com/tinyimage/#pro). Complete checkout and license activation yourself, then tell the agent when TinyImage is active.

## Keep the skill current

Return to [Hypermatic Agent Skills](https://hypermatic.ai/) and use the **Update** command to install the latest stable TinyImage instructions.

---

---
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 walks through how to export animated WebP images from your design's layers directly from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube-nocookie.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 walks through how to export animated PNG (APNG) images from your design's layers directly from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube-nocookie.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/automation/parameters.md"
description: "Run TinyImage Quick Actions with simple named inputs and current-selection shortcuts."
---

# TinyImage Keyboard Shortcuts

> Run TinyImage Quick Actions with simple named inputs and current-selection shortcuts.

Run common TinyImage tasks from Figma Quick Actions without opening the plugin panel. Choose a named shortcut below. Use the normal plugin panel for detailed settings and authoring.

## Run a keyboard shortcut

Figma Motion controls held only in the open panel are not persisted between runs; those controls use explicit shortcut inputs or documented fallbacks.

Every shortcut requires a verified valid license or remaining trials. If verification fails or your trials have expired, open the normal plugin panel to activate your license. Opening the panel remains available.

1. Select the layers you want to work with, if the shortcut uses a selection.
2. Open Figma Quick Actions with **Command + /** on Mac or **Ctrl + /** on Windows.
3. Search for the plugin and choose the named shortcut below.
4. Enter the fields shown. Optional fields may be skipped; use Tab to edit them. Run the shortcut and check the result or complete its save dialog.

Creation shortcuts ask for names or dimensions directly. Selected-layer shortcuts use the current selection automatically. These everyday shortcuts do not ask for Target or JSON. Choose **Open TinyImage** for the normal plugin panel.

| Shortcut | Inputs |
| --- | --- |
| **Compress Selected Layers (Custom Settings…)** | Quality (1–100) (optional) |
| **Convert Selected Layers (Custom Settings…)** | Convert format, Quality (1–100) (optional) |
| **Export Selected Layers as PDF** | None; runs immediately |
| **Export Selected Figma Motion (Custom Settings…)** | Format (optional), Frames per second (optional) |
| **Arrange Selected Layers (Custom Settings…)** | Layout (optional), Horizontal gap (px) (optional), Vertical gap (px) (optional) |

Fixed-choice fields use readable labels. Search by the displayed label or the underlying value; agent inputs continue to use the values shown in the command reference.

## Run from the context menu

Select the intended layers, right-click, and choose **Plugins → TinyImage** (development plugins appear under **Development**). Choose an action and its format or preset. A preset runs immediately when it needs no required input; finish the save dialog when one appears.

Each preset sets its named option. Omitted compatible options inherit the plugin’s saved settings; an explicit action or option takes priority over conflicting saved behavior. Only explicitly entered fields or the selected menu choice override them for that run. If a setting has never been saved, the normal setting or documented fallback applies. Export overrides are not saved back to your preferences. If a saved format is unavailable as a shortcut, choose a supported format explicitly or use the normal panel. To combine options, choose **Custom Settings…** within the action and enter the parameters. Actions needing text, URLs, names or dimensions still prompt for those required fields. **Open TinyImage** opens the normal panel.

**Compress Selected Layers** always keeps the original export formats, even when conversion is saved in the normal panel. Use **Convert Selected Layers** to choose WebP, AVIF or Tiny SVG. Conversion requires an explicit format; omitted quality and other compression preferences still inherit saved settings. An explicit quality disables saved lossless and target-size modes for that run; advanced callers can explicitly opt into those modes. Export shortcuts never downsize image fills in your Figma source layers. **Arrange Selected Layers** always arranges, inheriting only layout and spacing. It does not rename, sort, wrap instances or update pager text; request those operations explicitly through advanced options if needed. Create print canvases and adjust print settings in the normal panel. Motion frame rate remains available in Custom Settings.

| Menu choice | Next step |
| --- | --- |
| **Compress Selected Layers → Use Saved Settings** | Runs immediately |
| **Compress Selected Layers → Compress Selected Layers (Custom Settings…)** | Enter Quality (1–100) (optional) |
| **Convert Selected Layers → JPG and PNG to WebP** | Runs immediately |
| **Convert Selected Layers → Only JPG to WebP** | Runs immediately |
| **Convert Selected Layers → Only PNG to WebP** | Runs immediately |
| **Convert Selected Layers → JPG and PNG to AVIF** | Runs immediately |
| **Convert Selected Layers → SVG to Tiny 1.2 SVG** | Runs immediately |
| **Convert Selected Layers → Convert Selected Layers (Custom Settings…)** | Enter Convert format, Quality (1–100) (optional) |
| **Export Selected Layers as PDF** | Runs immediately |
| **Export Selected Figma Motion → Use Default Settings** | Runs immediately |
| **Export Selected Figma Motion → Animated GIF** | Runs immediately |
| **Export Selected Figma Motion → MP4 Video** | Runs immediately |
| **Export Selected Figma Motion → WebM Video** | Runs immediately |
| **Export Selected Figma Motion → Export Selected Figma Motion (Custom Settings…)** | Enter Format (optional), Frames per second (optional) |
| **Arrange Selected Layers → Use Saved Layout and Spacing** | Runs immediately |
| **Arrange Selected Layers → Automatic** | Runs immediately |
| **Arrange Selected Layers → Rows** | Runs immediately |
| **Arrange Selected Layers → Columns** | Runs immediately |
| **Arrange Selected Layers → Arrange Selected Layers (Custom Settings…)** | Enter Layout (optional), Horizontal gap (px) (optional), Vertical gap (px) (optional) |

## Detailed editing

Use the normal plugin panel for detailed settings, longer content, bulk authoring and browsing components or templates. The shortcut menu contains only the everyday commands listed above.

Keep each pasted field below 150 characters: Figma desktop can truncate pasted input at that boundary. Longer input belongs in the normal panel.

If an older plugin shows Action, Target and Options instead, update it to use these named shortcuts. A Target value is a layer ID or selection, never the name of a new item.

## TinyImage actions

| Action | What it does | Target |
| --- | --- | --- |
| [`compress`](#compress) | Compress selected layers without changing their Figma export formats | One or more eligible layers |
| [`pdf`](#pdf) | Merge selected frames into a screen PDF | One or more eligible layers |
| [`motion`](#motion) | Export native Figma Motion from one source | Exactly one eligible layer |
| [`convert`](#convert) | Convert selected layers to an explicitly chosen output format | One or more eligible layers |
| [`tidy`](#tidy) | Arrange explicit sibling layers; sorting, wrapping, renaming and pager updates require explicit options | One or more eligible layers |

### compress

Compress selected layers without changing their Figma export formats. Select one or more eligible layers.

| Option | Type | Required / default | Meaning and accepted values |
| --- | --- | --- | --- |
| `quality` | number | Fallback: `90` | Compression quality. Minimum 1; Maximum 100 |

Nested required fields apply when their parent object or array item is supplied. Omitted optional values use the existing operation’s behavior unless a default is listed.

Choose **Compress Selected Layers (Custom Settings…)**. Enter these plain fields; no JSON is required:

- **Quality (1–100)**: `90`

Agent host input

```json
{"command":"shortcut-compress","parameters":{"quality":"90"}}
```

### pdf

Merge selected frames into a screen PDF. Select one or more eligible layers.

This shortcut has no input fields.

Choose **Export Selected Layers as PDF**. It runs immediately using the current selection.

Agent host input

```json
{"command":"shortcut-pdf","parameters":{}}
```

### motion

Export native Figma Motion from one source. Select exactly one eligible layer.

| Option | Type | Required / default | Meaning and accepted values |
| --- | --- | --- | --- |
| `format` | string | Fallback: `"GIF"` | Animation format. `GIF`, `MP4`, `WEBM` |
| `fps` | number | Fallback: `30` | Frames per second; native plan restrictions still apply. `10`, `15`, `24`, `25`, `30`, `60` |

Nested required fields apply when their parent object or array item is supplied. Omitted optional values use the existing operation’s behavior unless a default is listed.

Choose **Export Selected Figma Motion (Custom Settings…)**. Enter these plain fields; no JSON is required:

- **Format**: **Animated GIF**
- **Frames per second**: **30 fps**

Agent host input

```json
{"command":"shortcut-motion","parameters":{"format":"GIF","fps":"30"}}
```

### convert

Convert selected layers to an explicitly chosen output format. Select one or more eligible layers.

| Option | Type | Required / default | Meaning and accepted values |
| --- | --- | --- | --- |
| `convert` | string | Required | Output conversion; use compress to keep original formats. `webp`, `webpjpg`, `webppng`, `avif`, `tinysvg` |
| `quality` | number | Fallback: `90` | Compression quality. Minimum 1; Maximum 100 |

Nested required fields apply when their parent object or array item is supplied. Omitted optional values use the existing operation’s behavior unless a default is listed.

Choose **Convert Selected Layers (Custom Settings…)**. Enter these plain fields; no JSON is required:

- **Convert format**: **JPG and PNG to WebP**
- **Quality (1–100)**: `90`

Agent host input

```json
{"command":"shortcut-convert","parameters":{"convert":"webp","quality":"90"}}
```

### tidy

Arrange explicit sibling layers; sorting, wrapping, renaming and pager updates require explicit options. Select one or more eligible layers.

| Option | Type | Required / default | Meaning and accepted values |
| --- | --- | --- | --- |
| `layout` | string | Fallback: `"auto"` | Layout direction. `auto`, `rows`, `columns` |
| `horizontalSpacing` | number | Fallback: `100` | Horizontal spacing in pixels. Minimum 0; Maximum 10000 |
| `verticalSpacing` | number | Fallback: `100` | Vertical spacing in pixels. Minimum 0; Maximum 10000 |

Nested required fields apply when their parent object or array item is supplied. Omitted optional values use the existing operation’s behavior unless a default is listed.

Choose **Arrange Selected Layers (Custom Settings…)**. Enter these plain fields; no JSON is required:

- **Layout**: **Automatic**
- **Horizontal gap (px)**: `100`
- **Vertical gap (px)**: `100`

Agent host input

```json
{"command":"shortcut-tidy","parameters":{"layout":"auto","horizontalSpacing":"100","verticalSpacing":"100"}}
```

## Using shortcuts with an agent

Read the machine-readable registry linked below and choose an action offered by the installed plugin’s Quick Actions list. The registry uses Hypermatic option definitions rather than standard JSON Schema: `min` and `max` constrain string length, array length or numeric value according to the field type; nested definitions use `fields` and `item`. Unknown fields are rejected.

The agent needs a host that can invoke Figma Quick Actions and observe the normal plugin result. Parameters do not add a REST or MCP launcher. The expandable examples are input data for a compatible host, not executable API calls; shortcut inputs use plain strings in `parameters`, including numbers and format choices. Never claim that a shortcut ran from its prepared input alone.

Verify the visible outcome: the changed Figma layers, saved export, or published page. Read the normal success/error notification and any partial-export warning. Complete native save dialogs as needed; a download starting does not prove that the file was saved. Users do not need to open developer tools or read a console.

## Troubleshooting

| Symptom | Next step |
| --- | --- |
| Action is unavailable | Update the plugin and check its Quick Actions list; use the normal panel if the action is unavailable. |
| Options are invalid or may have been truncated | Use individual plain field values below 150 characters, with only fields accepted by that shortcut. |
| Target is missing or ineligible | Open the correct page, check the action’s layer requirements, and select the intended layers again. |
| A license or trial error appears | Complete the plugin’s normal activation flow before rerunning. |
| Download was requested but no saved file is visible | Check the native save dialog and download location. Inspect the actual file. |
| A command fails, times out or is cancelled | Check the document and remote destination before retrying; earlier changes or uploads may already exist. |

Commands have a five-minute deadline. Errors do not imply a full rollback. Automatically retrying a create, replacement or upload can duplicate or overwrite work.

[Machine-readable command registry](/automation/parameters/tinyimage.json) contains the same action IDs and option definitions.

## Current limits

Compression uses selected layers' Figma export formats; conversion requires a chosen format. Export shortcuts do not downsize source image fills. Motion accepts one source; set frame rate in Custom Settings. Arrange changes layout and spacing only. Print canvases, logo canvases, bulk video assembly and detailed Tidy controls use the normal panel.

## Related documentation

- [Install and run TinyImage](/tinyimage/overview/install)
- [Figma plugin parameters](https://developers.figma.com/docs/plugins/plugin-parameters/)
- [Figma hidden UI options](https://developers.figma.com/docs/plugins/api/properties/figma-showui/)

---

---
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 lets you export them as compressed images using the TinyImage plugin.

Automatic page scans skip layers inside hidden containers. Layers explicitly selected in Figma are still checked using their own visibility and export settings. Your saved export settings do not need to be changed.

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 (for example, 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 lets you 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.

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**. 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 lets you 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 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 lets you 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.

### Loading only selected layers when TinyImage opens

[Video](/assets/videos/tinyimage/compress/filter-selection.mp4)

To avoid scanning a large page when TinyImage starts, highlight the exportable layer(s) you need in Figma before opening the plugin. TinyImage will initially load only those selected layers that already contain export settings.

Changing the Figma selection while TinyImage is already open can filter the layers that are already loaded, but it does not trigger another scan or load new layers in the background. If the new selection contains layers outside the initial loaded set, TinyImage will prompt you to click **Refresh All Exportable Layers**. This scans the current page for exportable layers, including newly added layers and export settings, while skipping layers inside hidden containers.

If the current selection still has no exportable match after that refresh, TinyImage keeps the full page list visible so you can continue working. Changing the selection or switching pages restores the normal selection filtering behaviour.

### Refreshing image export settings to image selection

[Video](/assets/videos/tinyimage/compress/missing-selected-exports.mp4)

If one or more selected layers don't have export settings yet, use the Figma properties panel to click the **+** icon next to **Export** and add the settings you need.

When you're happy with the new export settings, click the **Refresh** icon in the TinyImage toolbar. TinyImage will rescan the current page and display the updated export options in the 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**. 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.

## Related TinyImage guides

- Create and export motion assets with the [TinyImage GIF export guide](/tinyimage/gif-export).
- Combine and compress frames with the [TinyImage PDF export guide](/tinyimage/pdf-export).
- Explore the [TinyImage Figma plugin](https://www.hypermatic.com/tinyimage/) for compressed image, GIF, WebP, and PDF workflows.

---

---
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 lets you 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, open the **Downsize** tab in the TinyImage header.

The Downsizer scans every layer on the current Figma page for image fills. Use the checkboxes in TinyImage to choose which fills should be downsized, and click the refresh icon, labelled **Rescan all fills on this page**, whenever you need to rescan the page.

Selecting layers in Figma narrows the list when those layers match image fills that TinyImage has already loaded. TinyImage shows **Showing selected layer fills** while this filter is active. If the current selection has no matching fills, TinyImage keeps the full loaded list visible. Changing the selection does not rescan the page; use the refresh icon to load newly added fills.

### Selecting the image fills to downsize

Once the image fills have loaded, you can select which you would like to downsize by checking or unchecking them in the list.

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, use the scale selector to choose 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 select **@1x** to resize the image fills to the same size as their Figma layer, but it 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/editor-background.md"
description: "Create a transparent image locally and export a PNG cutout."
---

# Remove background

> Create a transparent image locally and export a PNG cutout.

### Video Tutorial: Remove image backgrounds in Figma

[Embedded media](https://www.youtube-nocookie.com/embed/2JY3dlDzYNs)

[Follow the step-by-step tutorial](/tinyimage/tutorials/how-to-remove-image-backgrounds-in-figma-100-local-ai-using-tiny-image).

[Video](/assets/videos/tinyimage/compress/remove-bg.mp4)

1. Open an image, choose **Local AI**, then select the **Remove background** tab.
2. Keep **Automatic** processing, or open **Processing options** to choose CPU.
3. Choose **Remove background**. On first use, TinyImage automatically downloads the approximately 99 MB model, then creates the cutout. Later uses reuse the model while the plugin is open.
4. Inspect the edges, then [insert, replace or download](/tinyimage/editor-export) the result. You can cancel the download or processing without changing the image.

Processing happens on your device; your image is not uploaded. The editor preview retains the original dimensions and soft transparency. Click **Before** to toggle the image from immediately before removal, or use **Compare** for a split view. **Insert image** and **Download** automatically trim fully transparent outer borders around the foreground, preserving soft edges. **Replace fill** keeps the full image dimensions and the existing layer placement. Current edits become part of its pixels; [History](/tinyimage/editor-history) restores the earlier image and edits.

Download **PNG** to retain transparency. JPEG places transparent pixels on white. Fine hair, fur, thin objects and complex backgrounds may need careful inspection. For manual cleanup, use **Restore removed pixels** in Paint brush to recover missing pixels from before removal, or Eraser to remove unwanted areas. See [Canvas tools](/tinyimage/editor-canvas). Restoration is available while the before image matches the current canvas dimensions.

After successful removal, the button shows **Background removed** and is disabled for that image. Undo the removal in [History](/tinyimage/editor-history), use **Reset all edits**, or open another image to enable it again. Other edits keep the button disabled, and saved projects retain this status.

## Related guides

- [Boost resolution](/tinyimage/editor-upscale)
- [Insert, replace or download](/tinyimage/editor-export)
- [Getting started](/tinyimage/editor)

---

---
url: "/tinyimage/editor-canvas.md"
description: "Select parts of an image with a magic wand, lasso or brush, then paint, erase, fill or adjust them locally in TinyImage."
---

# Selections, brushes & erasing

> Select parts of an image with a magic wand, lasso or brush, then paint, erase, fill or adjust them locally in TinyImage.

The left navigation groups **Tools**, **Adjustments** and **Finishing** in one column, with an icon beside each label and shortcut hints for canvas tools. The active row is highlighted. Choose a tool to show its controls on the right. All painting and selection processing stays on your device.

## Select an area

1. Open an image in **Editor** and choose **Selection** in the left navigation. Use the fixed buttons at the top of the right column to choose **Object detect**, **Magic wand**, **Rectangle selection**, **Ellipse selection**, **Lasso selection** or **Selection brush**.
2. Click with the wand, drag a rectangle or ellipse, draw a closed lasso, or brush over the area. Animated black-and-white marching ants show the selection boundary, including holes, while leaving the image clear. Release the mouse to keep the selection; **Escape** discards an unfinished selection.
3. Use the fixed **New**, **Add**, **Subtract** and **Intersect** buttons to set the selection mode. Hold **Shift** to add, **Alt/Option** to subtract, or **Shift+Alt/Option** to intersect during a gesture. Switching between selection tools retains the selection.
4. Use **Inverse**, **Select all** or **Deselect** as needed. Open **Refine edges**, set **Feather (px)** and choose **Feather selection** to soften the boundary.

The wand samples the visible edited image. **Tolerance** controls how far matching colours may differ from the sampled colour. **Contiguous pixels** limits selection to connected matching pixels; turn it off to select matching colours across the image. **Anti-alias edges** adds soft coverage along nearby colour boundaries. **Sample size** can use a single pixel or a 3 × 3 or 5 × 5 average.

**Object detect** uses the same local foreground model as Remove background. Choose **Select subject** or click the canvas to select the main detected foreground. The first use downloads the model; images stay on your device. It may select multiple subjects together and does not identify every object independently. Refine with the lasso or selection brush. Detection changes only the selection and can be undone or cancelled.

Colour selection works best where the subject and background differ clearly. It does not automatically recognize subjects or guarantee fine hair and fur isolation. Lower the tolerance around detailed boundaries and refine with the lasso or selection brush. **Cancel selection** or **Escape** cancels a wand operation without changing the image or earlier selection.

## Paint, fill or erase

1. Choose **Paint brush** or **Eraser**, then set brush size, hardness and opacity. Choose the foreground colour for painting. **Eyedropper** samples a colour from the visible image and returns to the paint brush.
2. Paint over the image. An active selection limits each stroke; choose **Deselect** to work across the whole image. The brush outline shows its size at the current zoom.
3. To act on the selected area at once, choose **Fill colour** or **Erase selection**. Both use the current opacity.
4. Release the mouse to keep a stroke. Brush pixels save silently in a background queue so the next stroke can start immediately. Undo and export wait for pending saves. If saving fails, the visible stroke remains available to retry. Use **Undo**, **Redo** or **History** to restore strokes and selections. Press **Escape** while drawing to discard the unfinished stroke.

Erasing creates transparency. Download as PNG or WebP to retain it; JPEG uses an opaque background. Painting and erasing edit source pixels before the current colour adjustments, filters and effects. Those controls remain editable. Selection outlines are never included in exports. **Clear pixel edits** in Retouch removes the accumulated painted, erased and repaired pixels; use History to restore an individual step.

The overlapping foreground/background swatches provide two working colours. Press **X** to swap them or **D** to restore black and white while using Paint brush, Fill or Eyedropper. **Alt/Option-click** with Paint brush samples from the visible image without painting. Hardness controls the edge: **0%** is soft and **100%** is hard. Use **Shift+[** and **Shift+]** to decrease or increase hardness.

Open **Brush options** to use **Smoothing** to reduce pointer jitter. **Pen pressure controls size** varies the brush footprint with a supported pen; mouse and touch strokes use the chosen size. The editor uses intermediate pointer samples where the host supports them. Choose **?** in the editor toolbar for a shortcut reference.

After Remove background, enable **Restore removed pixels** in Paint brush to brush missing pixels back from the image before removal. Use Eraser to remove unwanted areas. Restoration is available while the before image matches the current canvas dimensions; crop or resize first only if you no longer need to restore those pixels.

## Refine selection edges

With a selection active, open **Refine edges** and choose **Feather selection** to soften its boundary. Set **Edge adjustment (px)** and choose **Expand** or **Contract** to grow or shrink it. Each action can be undone. The selection brush and lasso can add, subtract or intersect areas. These tools refine the selection; they do not rerun object detection.

Marching ants show a simplified boundary on large or highly fragmented selections to keep navigation responsive. Editing and export still use the full-resolution selection.

## Fill selections or colour regions

Choose **Fill** in the left navigation, or press **G**. Set **Fill colour** and **Opacity**, then click the canvas. If a selection is active, the click fills that selection. Otherwise it fills connected pixels matching the clicked colour. **Tolerance** controls how far colours may differ; **Anti-alias edges** softens nearby boundaries. Colour matching uses the visible edited image, while the filled pixels remain underneath editable adjustments and effects.

Use **Fill selection** to fill the selected area without clicking the canvas. **Fill image** covers the entire image, including transparent pixels. Use Undo to restore a fill. **Cancel fill** or **Escape** cancels connected-region processing without changing the image or selection. Saved projects and exports retain filled pixels.

The Selection panel also provides a colour swatch beside **Fill colour**. Choose the colour before filling the selected pixels. **Erase selection** makes the selected pixels transparent.

## Adjust selected pixels

Choose **Add adjustment** to turn the selection into a local adjustment. Use the right panel to change exposure, brightness, contrast, saturation, blur or sharpening in that area. The editor supports up to eight local adjustments. A highly fragmented selection may be too complex to retain as an editable adjustment; use a smaller selection or paint or fill it directly.

Choose **Local adjustments** in the left navigation to reopen saved adjustments after switching tools. Use **Edit selection** to refine a saved adjustment's area with the canvas tools, then choose **Update adjustment selection**. This retains the adjustment values. Invert and feather controls also remain available in the adjustment panel.

## Navigation and projects

Choose **Hand** to drag the image. Hold **Space** to pan while using another tool. Shortcuts are **H** for hand, **O** for object detection, **W** for wand, **M** for rectangle, **Shift+M** for ellipse, **L** for lasso, **Q** for selection brush, **B** for paint, **G** for fill, **E** for eraser and **I** for eyedropper. Selection buttons show their shortcuts in brackets and remain visible while the controls scroll. **[** and **]** change brush size. With canvas tool controls open, **Cmd/Ctrl+A** selects all, **Cmd/Ctrl+D** deselects, **Cmd/Ctrl+Shift+I** selects the inverse, and **Delete/Backspace** erases a selection.

Saved projects retain painted pixels, transparency, the active selection and local adjustments. Geometry changes such as cropping, resizing or local processing clear the active selection; Undo can restore it. **Reset options** restores tool settings. **Reset all edits** restores the original image after confirmation.

For clone, healing, patch and content-aware repair, see [Retouch](/tinyimage/editor-retouch). For delivery, see [Batch editing & export](/tinyimage/editor-export).

---

---
url: "/tinyimage/editor-colour.md"
description: "Correct exposure, white balance and colour with Adjust, Colour and Curves."
---

# Light & colour

> Correct exposure, white balance and colour with Adjust, Colour and Curves.

## Adjust light

Choose **Adjust** for Auto tone, exposure, brightness, contrast, highlights, shadows, whites, blacks and gamma. Sliders and number fields change the same value. **Reset** clears the controls in the current panel.

## Correct colour

Choose **Colour** for Auto white balance, temperature, tint, saturation and vibrance. Use the white-balance eyedropper on a neutral area. Colour ranges let you adjust hue, saturation and luminance for individual colours.

Choose **Auto tone** in Adjust for a conservative black point, white point and midtone correction. Choose **Auto white balance** in Colour to estimate temperature and tint from neutral areas. Both actions create normal editable settings and can be undone. If no neutral area is found, use the white-balance eyedropper instead.

To replace a colour, open **Colour → Replace a colour**, then choose **Pick source colour** and click an opaque pixel in the photo. Choose a **New colour** and adjust **Colour tolerance** to widen or narrow the match. **Preserve shading** keeps the original lightness; disable it to use the chosen colour directly. The replacement strength and enable checkbox let you adjust or hide the result.

## Curves and levels

Choose **Curves** to adjust the master curve or individual RGB channels. Black point, white point and midtones control levels. **Before** shows the unadjusted source; **Compare** opens a split preview. Use **100%** to inspect detail.

Brightness, Whites, Blacks and Gamma are under **More tone controls** in Adjust. Exposure, Contrast, Highlights and Shadows remain directly visible.

[Back to Edit Images](/tinyimage/editor)

---

---
url: "/tinyimage/editor-crop.md"
description: "Crop, rotate, flip and resize images before inserting them in Figma."
---

# Crop & resize

> Crop, rotate, flip and resize images before inserting them in Figma.

1. Open an image and choose **Crop**.
2. Choose **Crop & resize**, then adjust the crop, aspect ratio, rotation or flip controls.
3. Choose **Apply crop** to return to the editor.

**Insert image** uses your chosen crop/output dimensions, including when you crop before or after enhancement. **Reset crop** restores the display dimensions from before that crop.

Reopening the crop restores its previous settings. Cropping works on the source image before colour adjustments, so adjustments are reapplied afterward.

Changing or resetting a crop clears selections and retouching whose positions depend on that crop. The editor asks before clearing existing work. Use [History](/tinyimage/editor-history) to restore an earlier crop.

[Back to Edit Images](/tinyimage/editor)

---

---
url: "/tinyimage/editor-effects.md"
description: "Apply blur and a reorderable stack of image effects."
---

# Effects

> Apply blur and a reorderable stack of image effects.

## Blur and effects

1. Choose **Effects**.
2. Choose an effect from the picker and select **Add**.
3. Adjust its size or intensity. Motion blur also has an angle control.

The picker includes Gaussian blur, motion blur, film grain, vignette, glow, duotone, halftone, chromatic aberration and pixelation. Effects run from top to bottom. Move them earlier or later, hide or show them without losing settings, or remove an effect.

**Reset** in Effects clears the effect stack and keeps the selected filter. Use [History](/tinyimage/editor-history) to restore the effects.

For photo looks and saved presets, choose [Filters](/tinyimage/editor-filters).

[Back to Edit Images](/tinyimage/editor)

---

---
url: "/tinyimage/editor-export.md"
description: "Apply shared settings to selected image fills and insert, replace or download edited images."
---

# Batch editing & export

> Apply shared settings to selected image fills and insert, replace or download edited images.

## Batch edit selected images

Apply a shared look to several image fills without changing your open Editor image or its edit history. **Batch edit** shows the number of selected layers with visible image fills, such as **Batch edit (3)**. A layer with several image fills counts once; each fill appears separately in the batch review. The button is disabled when no image layers qualify.

1. Select Figma layers containing visible image fills. Open an image and adjust its global settings, or use an existing saved preset.
2. Click **Batch edit** in the main header or Filters panel to open the batch review modal.
3. Choose **Current Editor settings** or a saved preset. The **Edits to apply** list shows the active adjustments, filter and effects used for the batch. Review the previews and turn on **Show originals** to compare them. Use **Select all** to select or deselect the batch, or uncheck individual images to exclude them. The parent checkbox shows a mixed state when only some images are included.
4. Choose **Insert new images** to create separate image layers at the original display dimensions, **Replace image fills** to update the included fills, or choose PNG, JPEG or WebP and click **Download ZIP**. The Insert and Replace buttons show the number of included images. New layers are arranged in a grid, selected together and brought into view; the original layers stay unchanged. **Include originals in ZIP** is enabled by default; it adds the unchanged source files to an `originals` folder alongside the `edited` folder. Duplicate layer names receive unique filenames.
5. Close the modal or press **Escape** to resume individual editing. Canvas selection changes do not alter an open batch; use **Refresh selection** to load the new selection. After replacement, refresh before editing the fills again.

Batch editing supports up to 50 selected layers and 50 visible image fills. Each source must fit the Editor's 24 megapixel limit. Source files and prepared outputs each have a combined 128 MB limit; ZIP output includes originals in that limit when enabled. GIF fills are excluded; use the [GIF editor](/tinyimage/gif-editing) for animation.

Batch settings include global adjustments, curves, colour replacement, filters and effects. **Replace fills** is disabled when no shared edits are active; choose a preset or adjust your image first. Downloading or inserting unedited copies remains available. Crop, perspective, selections and retouching are excluded. It uses original pixels without native Figma colour adjustments. Replacement clears those adjustments while retaining fill placement and other paints; assets above 4096 px per side are reduced for Figma. Downloads retain full source resolution and leave Figma layers unchanged.

Every included output is prepared before insertion or replacement. **Cancel batch** stops preparation without changing Figma layers. Cancellation is unavailable while the images are being inserted or replaced. Changed or missing source fills block the action. Changing pages or leaving the Editor closes the batch review and keeps completed edits. Return to the original page to check the result. One Figma Undo restores replacements or removes newly inserted layers; use it before making other canvas changes. Download a ZIP with originals before replacement if you need a separate copy of the source files.

## Apply or download the result

- **Insert image** creates a new image layer. When editing a Figma image fill, it preserves the original layer dimensions and fill settings, including Crop, Fit, Fill or Tile, crop position, rotation and opacity. Upscaling keeps that display size while using higher-resolution pixels. If you use [Crop & resize](/tinyimage/editor-crop) before or after enhancement, insertion uses your chosen crop/output dimensions.
- **Replace fill** updates the original image fill while retaining its placement settings and the layer's other fills. It clears native Figma colour adjustments so the result matches the editor preview. Figma Undo can restore the previous fill.
- After **Remove background**, **Insert image** and **Download** trim fully transparent outer borders. New cutout layers use the trimmed image proportions rather than the original fill crop; **Replace fill** retains the full canvas and existing layer dimensions.
- **Download** exports PNG, JPEG or WebP at the edited image's full resolution. JPEG uses a white background for transparent pixels. If a format is unavailable in the current browser, choose another format.

Figma image assets are limited to 4096 pixels per side. For larger photos, Insert and Replace use a proportionally smaller asset while retaining the intended layout size. Downloads keep the full edited resolution.

If the source fill changes while you are editing, replacement is blocked. Reload the source or insert a new image instead.

[Back to Edit Images](/tinyimage/editor)

---

---
url: "/tinyimage/editor-filters.md"
description: "Apply photo looks and save reusable image-editing presets."
---

# Filters & presets

> Apply photo looks and save reusable image-editing presets.

1. Choose **Filters** in the Editor sidebar.
2. Choose a photo look and adjust **Filter intensity**.
3. Use **Before** or **Compare** to inspect the result. Only one filter is active at a time; manual adjustments remain editable.

## Save a preset

Enter a preset name and choose **Save** to reuse global adjustments, colour replacement, a filter and effects. Presets do not include crop settings, selections or retouching. Choose a saved preset to apply its settings, or use it in [batch editing](/tinyimage/editor-export).

**Reset** in Filters clears the selected look and restores its intensity to 100%. It keeps the effect stack, manual adjustments and saved presets. Use [History](/tinyimage/editor-history) to restore the filter.

For blur and stacked effects, choose [Effects](/tinyimage/editor-effects).

[Back to Edit Images](/tinyimage/editor)

---

---
url: "/tinyimage/editor-history.md"
description: "Move between edit steps and save TinyImage projects for later."
---

# History & projects

> Move between edit steps and save TinyImage projects for later.

## History

Choose **History** beside the toolbar **Undo** and **Redo** buttons to show named edit steps in the right panel. Choose **History** again to return to the current tool controls. Selecting a tool in the left sidebar also closes History and shows that tool's controls. The highlighted row is the current state. Click an earlier or later row to restore it. Toolbar **Undo** and **Redo** use the same history.

Brush strokes, erasing and canvas-tool selection changes also appear as named history steps. A new edit made from an earlier step replaces later steps. History retains up to 60 states while the image is open. Large pixel edits may retain fewer steps to keep history memory bounded. Opening another image or project starts fresh history. History is not included in saved project files and does not track changes made directly to the Figma document.

## Layers

Choose **Layers** beside **History** in the editor toolbar to see your adjustments, masks and effects in the right panel. Choose Layers again to return to the current tool. Layers and History are separate views; selecting one closes the other.

Use each row's **eye** to hide or show that edit without losing its settings. Tone, Colour, Curves & levels, Sharpen & noise, and the chosen filter appear when their settings differ from the original. Masks and effects have individual eye controls. Click a row's name to open its settings; a hidden adjustment has a **Show adjustment** button in its controls.

Use the **pencil** beside a row to rename it inline. Names can contain up to 80 characters. Press **Enter**, choose the save button or click outside to save; **Escape** or the cancel button keeps the previous name. Custom names stay with adjustments, masks and effects in saved projects. Shared presets retain adjustment and effect names; local masks remain image-specific.

Use the **trash** button to delete an edit directly. Deleting an adjustment group resets all settings in that group and removes its custom name. Deleting a mask or effect removes only that item. Other edits and image pixels are retained. **Undo** restores the deleted settings, name and visibility; **Redo** deletes them again.

Visibility changes support Undo/Redo and are retained in saved projects. Presets retain shared adjustment and effect visibility; individual masks stay with their image. Hidden edits are excluded from the image preview, insertion, replacement and downloads. Batch processing also excludes hidden shared adjustments and effects; local masks stay individual. Resetting an adjustment panel clears all of its controls and restores that group's visibility.

The **Image pixels** row represents the current image, including painted and retouched pixels. Those pixels are combined into one image; Layers does not separate individual brush strokes or add multiple image layers. The row is always visible. Use History to undo pixel edits.

## Reset edits

The toolbar **Reset all edits** clears every image edit and crop after confirmation. Use **Undo** or History to restore the previous state.

The right panel's **Reset** clears that panel's controls while retaining the other panels' settings. Resetting a crop asks before clearing local masks and retouching that depend on its geometry. In **Local AI**, **Reset options** restores processing options for the selected tab; use Undo or History to restore the image before processing.

## Save a project

Opening another image or project asks before discarding unsaved edits. An unchanged or saved image opens directly. Pending brush saves also count as unsaved edits.

The **Unsaved changes** indicator appears in brackets beside the image dimensions after an edit differs from the opened image or last saved project. Undoing back to that state clears it.

Choose **Save project** in the main header to save a `.tinyimage` project to retain the original image, applied perspective, crop, retouched and painted pixels, transparency, the active toolbox selection, saved local adjustments and editing recipe. Use **Open project** to resume it later. A reopened project can be inserted or downloaded; it does not reconnect to the original Figma fill. Undo history is kept for the current session and is not included in the project. Older projects still open; newly saved projects require a current TinyImage version. The project file limit is 100 MB.

## Recover a local draft

The editor attempts to save one local draft after editing pauses. When you reopen the editor without an image, a floating bar near the bottom of the canvas shows the retained draft name and saved time. **Restore draft** resumes its pixels and settings through the normal project loader. **Discard draft** removes the retained draft. Recovered projects start fresh Undo history and do not reconnect to the original Figma fill.

Drafts stay on your device. Browser storage retains projects up to 32 MB where available; the fallback plugin storage supports smaller projects up to 2 MB. If recovery cannot save the image, the editor asks you to **Save project** instead. Recovery is a recent checkpoint, so edits still being drawn or saved when the editor closes may not be included. Save a `.tinyimage` project for a durable copy.

[Back to Edit Images](/tinyimage/editor)

---

---
url: "/tinyimage/editor-retouch.md"
description: "Repair blemishes and small unwanted details with clone, healing, patch and fill tools."
---

# Retouch

> Repair blemishes and small unwanted details with clone, healing, patch and fill tools.

Choose **Retouch** to work on individual areas of an image. Its four method buttons stay visible so you can switch between **Clone stamp**, **Healing brush**, **Patch tool** and **Content-aware fill**. When using a brush, move over the image to see an outline of its size. The outline follows **Brush size (px)** and the current zoom, including brush selections for patch and fill tools. Press **[** or **]** to decrease or increase brush size by 5 pixels. Hold **Space** while dragging to pan without painting; release it to resume the brush.

Choose **Clone stamp** to copy pixels from a clean source area. Hold Alt/Option to choose a source, or use **Choose source**, then paint the repair. The source button changes to **Cancel source picking** while active and **Change source** once a source is set. Retouching uses image pixels before colour adjustments.

Choose **Healing brush** for the same source-picking workflow when the clean texture needs to blend with the destination colour. Brush size, hardness and opacity remain available. Select clean texture and leave room around the blemish so the boundary can blend.

To repair a defined area with your own source:

1. Open **Retouch → Patch tool** and draw a rectangle, lasso or brush selection around the unwanted detail.
2. Choose **Choose patch source**, then drag from the selected area to clean texture. A dashed guide marks the source area.
3. Adjust **Patch feather (px)** if needed, then choose **Apply patch**. Inspect the result or use Undo to restore the image.

A patch is limited to an area of up to 2048 × 2048 pixels. Lower feather values suit small selections; larger selections can use a softer boundary. Patching and filling combine earlier brush repairs into the retouched image.

To replace a small object or unwanted detail:

1. Open **Retouch** and choose **Content-aware fill**.
2. Choose **Brush** to paint the area, **Rectangle** to drag a box, or **Lasso** to draw around it. Release to keep the selection and close a lasso. **Escape** discards an unfinished selection. Marching ants show the selection boundary. Switching selection tools clears the pending selection. Use **New**, **Add** or **Subtract** to set the selection mode. Shift adds and Alt/Option subtracts while drawing with the current tool. Use **Clear selection** to start again.
3. Click **Apply fill**. The editor fills the area using nearby image detail. You can cancel processing without changing the image.
4. Inspect the result with **Before**, or use **Undo** to restore the previous image. **Clear pixel edits** removes all fills, patches, brush repairs, painted pixels and erasing.

Small areas on simple backgrounds work best. Complex edges and large objects may need several smaller fills or clone repairs. Each fill is limited to 262,144 selected pixels and a surrounding work area of up to 2048 × 2048 pixels. Fills do not extend the image beyond its current crop.

Applying a fill combines earlier clone strokes into the retouched image. Global adjustments, filters and effects remain editable. Saved projects retain the filled image and original pixels; older project files still open. Pending patch and content-aware fill selections are not saved. The [canvas tools](/tinyimage/editor-canvas) save their active selection in projects and provides painting, erasing and magic-wand selection.

Selecting **Retouch** returns the preview to **After** and closes the comparison divider. **Compare** is disabled while any of these interactive tools is selected. **Before** remains available for inspecting the original; choosing a source, painting or drawing a selection returns to After automatically. Switching views finishes the current stroke or selection.

[Back to Edit Images](/tinyimage/editor)

---

---
url: "/tinyimage/editor-sharpen.md"
description: "Improve image detail with sharpening, clarity, dehaze and noise smoothing."
---

# Sharpen

> Improve image detail with sharpening, clarity, dehaze and noise smoothing.

Choose **Sharpen** for sharpening amount, radius and threshold, clarity, dehaze and noise smoothing. Inspect at **100%** and use **Before** or **Compare** to avoid harsh edges. Noise smoothing is a gentle finishing adjustment.

## Related guides

- [Boost resolution](/tinyimage/editor-upscale)
- [Getting started](/tinyimage/editor)

---

---
url: "/tinyimage/editor-upscale.md"
description: "Upscale images with local AI using Boost resolution, while keeping the Figma layer at its current display size."
---

# Upscale images in Figma

> Upscale images with local AI using Boost resolution, while keeping the Figma layer at its current display size.

Upscale images locally to increase their pixel resolution while keeping the inserted layer at its current display size.

### Video Tutorial: Upscale images and boost resolution in Figma

[Embedded media](https://www.youtube-nocookie.com/embed/HDDAcM6YYhA)

[Follow the step-by-step tutorial](/tinyimage/tutorials/how-to-upscale-images-boost-resolution-100-local-ai-using-tiny-image).

[Video](/assets/videos/tinyimage/compress/upscale-image.mp4)

1. Choose **Local AI**, then select the **Boost resolution** tab.
2. Choose **2× resolution** or **4× resolution**. **Automatic** prefers graphics processing when available, with CPU fallback. Open **Processing options** if you need to choose a backend.
3. Choose **Boost resolution**. On first use, TinyImage automatically downloads the approximately 4.6 MB **Gentle** model, which preserves more original texture, then processes the image. Later uses reuse the model while the plugin is open.
4. The editor preview shows the boosted result. Inspect it at **100%**, and use **Before** or **Compare** to check it against the pixels immediately before boosting, including your existing edits. You can cancel the download or processing without changing the image.

Your images stay on your device. Current edits become part of the enhanced pixels; [History](/tinyimage/editor-history) restores the earlier image and settings. Output is capped at 4096 pixels per side. Inserting keeps the current display size in Figma; downloads use the enhanced resolution. **Crop & resize** sets new insertion dimensions.

After a successful boost, the button shows **Resolution boosted** and is disabled for that image. To choose a different resolution, undo the boost in [History](/tinyimage/editor-history), then choose the new resolution. Cropping and other edits do not enable another boost. **Reset all edits** or opening another image enables it again. Saved projects retain this status.

## Related guides

- [Sharpen](/tinyimage/editor-sharpen)
- [Remove background](/tinyimage/editor-background)
- [Insert, replace or download](/tinyimage/editor-export)
- [Getting started](/tinyimage/editor)

---

---
url: "/tinyimage/editor.md"
description: "Open images in TinyImage and choose tools for cropping, colour, effects, retouching and export."
---

# Edit images in Figma

> Open images in TinyImage and choose tools for cropping, colour, effects, retouching and export.

Use the **Editor** tab to edit an image before inserting it into Figma or downloading it. Tools appear on the left, the photo in the centre, and controls on the right. The same left navigation includes a magic wand, rectangle, ellipse, lasso and brush selections, plus painting, erasing and colour sampling.

### Video Tutorial: Edit images in Figma

[Embedded media](https://www.youtube-nocookie.com/embed/M5Q4bgZ3Yqc)

[Follow the step-by-step tutorial](/tinyimage/tutorials/how-to-edit-images-in-figma-crop-retouch-filters-effects-using-tiny-image).

[Video](/assets/videos/tinyimage/compress/image-editor.mp4)

## Open an image

1. Open TinyImage in a Figma Design file and select **Editor**.
2. Choose **Open image from computer** for a supported image file, or select a Figma layer and choose **Use selected Figma layer**. These actions appear in the main header while the Editor tab is selected, and keep the same labels after an image is open. A single selected layer opens immediately; when several sources are available, choose the image to edit.
3. When the source picker appears for multiple selected layers, choose an **original image** fill or a **rendered layer**, then select **Open selected image**.

**Use selected Figma layer** is disabled when no layer is selected. Opening another image or project asks before replacing your current image and edits. Cancel to keep working, or save a project first to retain your work.

An original image uses the source pixels without Figma's colour adjustments. A rendered layer includes the layer's visible appearance, including its Figma adjustments and other content. Only an original image fill can be replaced; local files, rendered layers and reopened projects can be inserted as new images.

## Manage edits with Layers

Choose **Layers** in the editor toolbar to see adjustments, masks and effects together. Use the eye beside an edit to compare it with the image beneath, preserving its settings. Click the name to open its controls. Visibility changes support Undo/Redo and saved projects; hidden edits are excluded from output. **History** remains available for moving between earlier edit states. See [Layers, History and projects](/tinyimage/editor-history#layers).

## Local AI tools

Choose **Local AI** in the tool sidebar, then use **Boost resolution** to upscale an image or **Remove background** to create a transparent cutout. Both tools run 100% locally on your device. The first click on either action automatically downloads its model, then processes the image; your images are not uploaded to an external service. Models remain available while the plugin is open.

See [Boost resolution](/tinyimage/editor-upscale) and [Remove background](/tinyimage/editor-background) for the steps. You can insert the result into Figma or download it; use PNG to preserve transparency.

## Editing guides

- [Crop & resize](/tinyimage/editor-crop)
- [Light & colour](/tinyimage/editor-colour)
- [Sharpen](/tinyimage/editor-sharpen)
- [Boost resolution](/tinyimage/editor-upscale)
- [Remove background](/tinyimage/editor-background)
- [Filters & presets](/tinyimage/editor-filters)
- [Effects](/tinyimage/editor-effects)
- [Selections, brushes & erasing](/tinyimage/editor-canvas)
- [Retouch](/tinyimage/editor-retouch)
- [History & projects](/tinyimage/editor-history)
- [Batch editing & export](/tinyimage/editor-export)

Click **Before** to toggle the before image; click it again to restore the edited view. After local processing, it shows the image immediately before that action. Hold **Space** and drag the canvas to pan at any zoom.

## Supported uploads

**Open image from computer** accepts these image formats:

| Format | File extensions |
| --- | --- |
| PNG | `.png` |
| JPEG | `.jpg`, `.jpeg` |
| WebP | `.webp` |
| GIF | `.gif` |
| BMP | `.bmp` |
| AVIF | `.avif` |
| TIFF | `.tif`, `.tiff` |
| HEIC / HEIF | `.heic`, `.heif` |
| Camera RAW | See the extensions below. |

Accepted camera RAW extensions are `.dng`, `.cr2`, `.cr3`, `.crw`, `.nef`, `.nrw`, `.arw`, `.sr2`, `.srf`, `.raf`, `.orf`, `.rw2`, `.pef`, `.rwl`, `.srw`, `.x3f`, `.3fr`, `.fff`, `.iiq`, `.kdc`, `.dcr`, `.mos`, `.mrw`, `.erf` and `.raw`.

RAW support depends on the camera and compression format; an accepted extension does not guarantee every camera variant can be opened. An unsupported or damaged file leaves the current editing session intact.

RAW images are developed locally using the camera white balance and orientation, then converted to an 8-bit sRGB image for editing. The editor uses the developed sensor image, not an embedded thumbnail. This is an image-editing workflow; it does not preserve RAW sensor data or offer a RAW export. Saved projects retain the converted image.

GIFs open as a still image, multi-page TIFFs use the first full image, and HEIC/HEIF files use the primary image. TIFF RGB and grayscale images can be 8 or 16 bits; editing and exports use 8-bit pixels. Unsupported TIFF pixel layouts report an error. Imports do not retain the original file's metadata or colour profile.

Decoding takes place locally inside the plugin. The upload limit is **64 MB** and the decoded image limit is **24 megapixels**. Larger RAW files must be resized or converted before opening them.

## Resize the editor window

The Editor initially opens at **1120 × 780** pixels. Drag the bottom-right handle to change its width and height. The minimum width is **1120 pixels**, matching the default Editor width. When the handle is focused, arrow keys resize by 10 pixels; hold Shift to resize by 50 pixels. TinyImage remembers the editor's size and restores its normal or expanded window size when another tab is selected.

## Image limits

The editor supports images up to **24 megapixels**, depending on your device's graphics and memory capacity. If the editor cannot start, enable hardware acceleration or try Figma in Chrome. If an image cannot be displayed, try a smaller source. The preview may use a smaller image to keep editing responsive; exported images use the full cropped resolution.

Image edits produce raster images. They are not editable Figma adjustment layers.

## Editing scope

The Editor works on raster images. It does not edit layered PSD files. Edits remain in the editor until you insert, replace or download a result. Processing takes place on your device; some tools download their processing models first.

Use [Compress](/tinyimage/compress) to optimize exports or [Downsize](/tinyimage/downsize) to reduce existing image fills.

---

---
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://www.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://www.hypermatic.com/tinyimage/#pro).

After the included Pro trial runs, TinyImage opens the **Downsize** tab in _Free_ mode. Downsizing remains available with unlimited usage, while **Compress**, **PDF**, **GIF**, **Fills**, **Tidy**, **Print**, and **Logos** require TinyImage Pro.

Selecting a Pro-only tab in Free mode displays an upgrade prompt instead of loading that feature.

## Do I need a license key to use TinyImage for free?

No. You can use TinyImage's Free features and included Pro trial runs without a paid license key. A message such as **7 free TinyImage Pro uses left** means you still have trial runs available for your current Figma user in TinyImage. See [how free Pro trial runs work](/faq/trials).

- To reduce image fills inside your Figma file with unlimited Free usage, use [Downsize](/tinyimage/downsize).
- To download compressed image exports, use [Compress](/tinyimage/compress). This uses Pro trial access or a paid TinyImage Pro license.

If you have trial uses left but cannot start an export, follow [the compression starting checklist](/tinyimage/faq/troubleshooting#i-have-free-pro-uses-left-but-cannot-start-compressing).

  - **TinyImage Free**: ### Figma Layer Downsizes Unlimited Usage       ### All Other Features 10 Pro Trials, then Pro Required
  - **TinyImage Pro**: ### Figma Layer Downsizes Unlimited Usage       ### All Other Features 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 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 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.

TinyImage downloads some approved encoder assets when they are needed. If you export a CMYK PDF, it also downloads only the selected press profile from TinyImage's static asset host. These requests do not contain your Figma content, and all image and PDF processing still happens locally inside the plugin.

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 (for example, a “find layer by name” plugin)
- Modify any data in your Figma document (for example, a “rename selected layers” plugin)
- Communicate with any server over the internet (for example, 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.

## I have free Pro uses left but cannot start compressing

The **free TinyImage Pro uses left** message shows your remaining trial access; you do not need a paid key while those uses remain. To compress and download images from a Figma Design file, open TinyImage's **Compress** tab and use its **Export** button.

1. Select the layers in Figma and add an **Export** setting in Figma's properties panel, such as PNG or JPG.
2. In TinyImage, click **Refresh Exportable Figma Layers** to load the current export settings. Wait for the list to finish loading.
3. Check the images you want to export in TinyImage's list. Selecting a layer on the Figma canvas alone is not enough; at least one exportable image must be checked in the plugin.
4. Click **Export** to start compression. If you change the Figma selection and the export button becomes unavailable, refresh the list and check your images again.

See the [compression guide](/tinyimage/compress) for the full workflow. If all trial runs have been used, Compress requires Pro; [Downsize](/tinyimage/downsize) remains available for reducing image fills inside Figma. Compare [TinyImage Free and Pro](/tinyimage/faq/plans).

If Export is still unavailable after these checks, email [adam@hypermatic.com](mailto:adam@hypermatic.com) with a screenshot of the TinyImage window, the remaining-use message, and whether you are using Figma in a browser or the desktop app.

## 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 lets you 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 [Figma bug](https://forum.figma.com/t/pdf-export-consistently-missing-elements/3547) that can show purple boxes instead of images. TinyImage uses Figma's native PDF export, so the same problem can appear in TinyImage exports.

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 (for example, 1000.08) by removing them from the property (for example, 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](/tinyimage/downsize) 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 (for example, 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](/tinyimage/downsize) 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

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/figma-motion.md"
description: "Review and export Figma Motion animations as GIF, APNG, Animated WebP, MP4, or WebM files with TinyImage."
---

# Export Figma Motion animations

> Review and export Figma Motion animations as GIF, APNG, Animated WebP, MP4, or WebM files with TinyImage.

Use **Figma Motion Export** in TinyImage's **GIF** tab when your animation is already built with Figma Motion. This workflow uses Figma's native animation renderer instead of rebuilding the animation from separate still frames.

[Video](/assets/videos/tinyimage/compress/figma-motion.mp4)

### Video Tutorial: Bulk export Figma Motion layers to GIF and MP4 video

This video shows how to bulk export Figma Motion animations as compressed GIFs or MP4 videos with TinyImage.
[Embedded media](https://www.youtube-nocookie.com/embed/psTuPMJpqvk)

## Select the Motion animation

In a Figma Design file, select either:

- The top-level frame that contains the Motion animation.
- Any animated layer inside that top-level frame.

Open TinyImage, select **GIF**, then select **Figma Motion Export**. TinyImage resolves nested selections to their containing top-level Motion frames and checks each detected animation in the export list.

## Find Motion animations on the page

If the current selection does not contain a Motion animation, TinyImage automatically checks the current page and lists any Motion animations it finds in top-level frames. Use the checkboxes to choose one or more animations to export. All animations are checked by default, and the checkbox above the list selects or clears every frame.

TinyImage caches this list while the plugin remains on the same page. Select **Rescan this page** after adding a Motion animation or changing which frames contain animated layers. To find an animation on another page, switch to that Figma page first; TinyImage does not scan every page in the file.

## Review the selected frames

TinyImage displays a static thumbnail beside every Motion frame in the export list. The frame icon jumps to that animation on the Figma canvas without changing which animations are checked for export.

These thumbnails help confirm the export list without rendering an animation, opening Figma's **Video Export** tab, or downloading a preview file.

## Configure the export

Choose an output format from the menu beside the export button:

- **Animated GIF**
- **Animated PNG (APNG)**
- **Animated WebP**
- **MP4 Video**
- **WebM Video**

Set the frame rate and output size. The same settings apply to every checked animation. The **Size** value is a scale, so frames can retain different pixel dimensions in the same bulk export. GIF, APNG, and Animated WebP also include a choice between continuous looping and playing once. MP4 and WebM include Low, Medium, and High quality presets instead.

For GIF exports, choose the compression that matches your output needs:

- **No compression** leaves Figma's GIF unchanged unless you reduce the color count.
- **Lossless compression** optimizes GIF frames and file structure without lossy pixel compression.
- **Balanced compression** uses light lossy compression (level 40) for modest savings with a low risk of visible artefacts.
- **Strong compression** uses more aggressive lossy compression (level 80), which can reduce size further but may introduce visible artefacts.
- **Maximum compression** uses the most aggressive lossy compression (level 140) for the smallest likely file, with the highest risk of banding and artefacts.

Choose **256 colors** to retain Figma's original colour limit, or reduce it to **128 colors**, **64 colors**, or **32 colors**. Reducing the palette is separate from the compression preset, so a smaller palette can still change colours or add banding when **Lossless compression** is selected.

Enable **Size Target** and enter a maximum size in KB when the exported GIF must fit a hard upload limit. TinyImage automatically tests lossiness and 256-, 128-, 64-, and 32-colour palettes, then keeps the least aggressive tested result that fits. The manual compression and color-count controls are replaced by the target-size field while a target is active.

If none of the tested settings reaches the target, TinyImage prepares the smallest valid result it found and reports its size before download. Reducing the Motion export size, frame rate, or animation duration can reduce it further.

The default settings export Figma's native GIF unchanged. When extra compression is enabled, TinyImage only uses the optimized result if it is smaller than Figma's original file. If optimization fails or increases the file size, TinyImage safely exports the original GIF instead.

> **Note:** Figma limits Starter-plan Motion exports to 1920 × 1080 and 30 FPS. TinyImage first tries the requested export so paid-plan output is not reduced. If Figma rejects a request above that limit, TinyImage automatically retries from a temporary copy fitted within 1920 × 1080 and caps the retry at 30 FPS. The temporary copy is removed after rendering, and the original frame is not changed. A blue notification reports the exported dimensions and frame rate.

Figma renders GIF, MP4, and WebM files directly. For APNG and Animated WebP, TinyImage starts with Figma's native GIF render and converts it without another lossy compression pass. These converted formats retain the native GIF render's appearance, timing, transparency, and color palette.

## Export the animations

Select **Export GIF**, **Export APNG**, **Export WebP**, **Export MP4**, or **Export WebM**. Figma may open or update its **Video Export** tab while it renders each animation.

When one animation is checked, TinyImage downloads that file directly. When more than one animation is checked, TinyImage renders them in list order and downloads one **Figma Motion animations.zip** archive. Each file uses its Figma frame name, and TinyImage adds a number when checked frames would otherwise create duplicate filenames.

> **Info:** Figma Motion and its plugin export API are currently in beta. If Figma rejects a render that is already within the Starter-plan limits, open the frame in Figma Motion, confirm that it still contains animated layers, then try the export again.

> **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/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, open the **Fills** tab in the TinyImage header.

When you first open the Fills tab, TinyImage scans every layer on the current Figma page for image fills. Click the refresh icon, labelled **Rescan all fills on this page**, whenever you need to rescan the page.

## Selecting the image fills to export

Once the image fills have loaded, you can select which you would like to export by checking or unchecking them in the list.

Selecting layers in Figma narrows the visible and exportable fills when those layers match fills that TinyImage has already loaded. TinyImage shows **Showing selected layer fills** while this filter is active. If the current selection has no matching fills, TinyImage keeps the full loaded list visible. Changing the selection does not rescan the page; use the refresh icon to load newly added fills.

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-editing.md"
description: "Load a GIF or MP4, then resize, transform, trim, retime, and export the edited animation with TinyImage."
---

# Edit an existing GIF or MP4

> Load a GIF or MP4, then resize, transform, trim, retime, and export the edited animation with TinyImage.

Use **GIF Editor** in TinyImage's **GIF** tab to edit an existing animated GIF or MP4 without rebuilding it from separate Figma layers.

### Video Tutorial: Edit animated GIFs directly in Figma

This video shows how to edit, combine, trim, transform, and export animated GIFs with TinyImage.
[Embedded media](https://www.youtube-nocookie.com/embed/8fcC5R915oE)

[Video](/assets/videos/tinyimage/compress/gif-editor.mp4)

## Load a GIF or MP4

In Figma Design, select one of the following:

- A layer that contains an animated GIF fill.
- A frame that contains one or more GIF layers at any nesting level.

If you open **GIF Editor** with one of these layers selected, TinyImage loads it automatically. Otherwise, choose **Use selected Figma GIF layer**. You can also choose **Choose file from your computer** to load a local GIF or MP4.

When you load a frame, TinyImage bakes the frame's visible layer stack into every animation frame. This includes content, masks, effects, and other layers above or below the nested GIF layers. The original Figma frame and its layers are not changed.

If the frame contains multiple GIFs, TinyImage synchronizes their frame changes into one editable timeline. For stability, a combined frame animation can be up to two minutes long and contain up to 500 combined frames.

Select **Reset** at any time to return to the originally loaded GIF.

TinyImage warns you before replacing a GIF that has changes you have not exported. Large GIFs also show a processing warning. GIFs can contain up to 2,000 frames, use dimensions up to 8,192 px, and have a source file size up to 100 MB.

MP4 files can be up to 60 seconds long and 100 MB. TinyImage samples the video at 10 frames per second and automatically reduces very large video dimensions when necessary for reliable editing.

## Resize and transform the animation

Enter an output width or height and keep **Lock ratio** enabled to preserve the original proportions. Select **Apply size** to resize every frame.

The transform controls can:

- Rotate every frame 90 degrees to the left or right.
- Flip every frame horizontally or vertically.
- Crop every frame using a visual selection or exact X, Y, width, and height values.

## Trim and retime the GIF

Use the timeline handles to choose the first and last frame to keep. Use the **Speed** dropdown to make the whole animation 50% or 25% slower, keep its normal 100% timing, or make it 25%, 50%, or 100% faster. TinyImage recalculates each frame from its original timing, so intentional timing differences between frames are preserved.

Enable **Reverse** to reverse the preview, timeline, and exported frame order. If you already trimmed the animation, TinyImage keeps the same chosen frames and reverses their order. For GIF and APNG output, leave **Infinite** enabled to loop continuously. Disable **Infinite** and enter the total iterations in the number field to make the animation play a fixed number of times.

## Configure and export the output

Use the format menu beside the export button to download the edited animation as:

- Animated GIF
- Animated PNG (APNG)
- Animated WebP
- MP4 video
- WebM video

GIF and APNG exports include a loop control, MP4 and WebM exports include a video-loop control, and Animated WebP loops continuously.

GIF Editor uses the same **Quality** slider and **Lossless** option as **Create a GIF/MP4**. These controls apply to GIF, APNG, and Animated WebP exports. Enable **Lossless** to disable the quality slider and preserve image quality, or lower the quality value to reduce file size with lossy compression. MP4 and WebM use the editor's highest supported video quality instead.

For animated GIF output, enable **Size Target** and enter a maximum size in KB to let TinyImage tune lossiness and the colour palette automatically. The KB field replaces the manual **Quality** controls and hides **Lossless** while a target is active. If the target cannot be reached, TinyImage exports the smallest valid result it found, so check the saved file before uploading it to a service with a hard limit.

When an original GIF has not been edited, TinyImage uses its original file data as the input and applies the selected compression without re-encoding every frame first. Edited GIFs are rebuilt with the format's maximum 256-color palette before the selected compression is applied. The same GIF compression setting is used for downloads and **Insert GIF to Figma**.

Review the playback preview after each change, then choose **Export GIF**, **Export APNG**, **Export WebP**, **Export MP4**, or **Export WebM**. Select **Insert GIF to Figma** to add the edited animation to the current Figma page as a GIF. TinyImage shows per-frame export progress, and you can cancel before the next frame is processed.

---

---
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 walks through how to animate and export GIFs from your own designs directly from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/FYlk5a69Ewc)
### Video Tutorial: Add transition effects to animated GIF exports in Figma

This video walks through how to add fade/slide/wipe transition effects to animated GIF exports in Figma using the TinyImage plugin.
[Embedded media](https://www.youtube-nocookie.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 walks through how to animate and export GIFs from your own designs directly from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/FYlk5a69Ewc)
### Video Tutorial: Add transition effects to animated GIF exports in Figma

This video walks through how to add fade/slide/wipe transition effects to animated GIF exports in Figma using the TinyImage plugin.
[Embedded media](https://www.youtube-nocookie.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. Open the **GIF** tab and select **Create a GIF/MP4**.
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 opening **Create a GIF/MP4** 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 walks through how to animate and export GIFs from your own designs directly from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/FYlk5a69Ewc)
### Video Tutorial: Add transition effects to animated GIF exports in Figma

This video walks through how to add fade/slide/wipe transition effects to animated GIF exports in Figma using the TinyImage plugin.
[Embedded media](https://www.youtube-nocookie.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.

TinyImage groups slightly misaligned frames into the same visual row or column and uses their absolute canvas position, including frames inside different Figma Sections.

## Sort Frames by Figma Layer Name

Use **Sort frames by Figma Layer Name** to sort naturally by layer names, so numbered names such as `Frame 2` appear before `Frame 10`.

---

---
url: "/tinyimage/gif-settings.md"
description: "Configure dimensions, fit mode, background, target file size, quality, global palette, and dithering for GIF exports."
---

# GIF Export Settings

> Configure dimensions, fit mode, background, target file size, quality, global palette, and dithering for GIF exports.

Open the **GIF** workspace and select **Create a GIF/MP4**. The export settings appear alongside the selected frames and preview. GIF Editor keeps the controls for its loaded file in the editor workspace.

### Video Tutorial: Create animated GIFs

This video walks through how to animate and export GIFs from your own designs directly from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/FYlk5a69Ewc)
### Video Tutorial: Add transition effects to animated GIF exports in Figma

This video walks through how to add fade/slide/wipe transition effects to animated GIF exports in Figma using the TinyImage plugin.
[Embedded media](https://www.youtube-nocookie.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.

### Optimize to a target file size

Enable **Size Target** and enter the maximum size in KB when your ad platform, email system, or publishing workflow has a hard GIF file-size limit. TinyImage tests increasingly stronger lossiness and 256-, 128-, 64-, and 32-colour palettes, then uses the least aggressive tested result that fits within the target.

When Size Target is enabled, TinyImage replaces the manual **Quality** controls with the KB target and hides **Lossless** because it tunes those settings automatically. The same target is available in **Create a GIF/MP4**, **GIF Editor**, and **Figma Motion Export**. It applies only to animated GIF output, not APNG, Animated WebP, MP4, or WebM.

> **Warning:** Some animations cannot reach a very small target without changing their dimensions, frame count, or timing. If none of the tested settings meets the limit, TinyImage exports the smallest valid result it found. Check the final file size before uploading it.

## 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 walks through how to animate and export GIFs from your own designs directly from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/FYlk5a69Ewc)
### Video Tutorial: Add transition effects to animated GIF exports in Figma

This video walks through how to add fade/slide/wipe transition effects to animated GIF exports in Figma using the TinyImage plugin.
[Embedded media](https://www.youtube-nocookie.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 walks through how to add fade/slide/wipe transition effects to animated GIF exports in Figma using the TinyImage plugin.
[Embedded media](https://www.youtube-nocookie.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 walks through how to animate and export GIFs from your own designs directly from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/FYlk5a69Ewc)
### Video Tutorial: Add transition effects to animated GIF exports in Figma

This video walks through how to add fade/slide/wipe transition effects to animated GIF exports in Figma using the TinyImage plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/GwfVWRAS1qk)

Open the **GIF** tab and select **Create a GIF/MP4** to animate and export GIF or MP4 files from selected Figma layers.

## Export a Figma Motion animation

Open the **GIF** tab and select **Figma Motion Export** to export animations created with Figma Motion. TinyImage lists Motion frames from the current selection or page with a static thumbnail beside each checkbox; choose one or more, then set their shared output format, frame rate, size, loop, GIF compression, colour palette, or video quality.

TinyImage uses Figma's native Motion renderer for GIF, MP4, and WebM output. It can also convert the native GIF render to APNG or Animated WebP without adding another lossy compression pass.

Select **Export** to render the checked animations. One checked animation downloads directly, while multiple animations download together in one ZIP.

[Learn how to review and export Figma Motion animations](/tinyimage/figma-motion)

## Edit an existing GIF or MP4

Open the **GIF** tab and select **GIF Editor**. Select one Figma layer with an animated GIF fill to enable **Use selected Figma GIF layer**, or choose **Choose from computer** to load a GIF or MP4 from your device. You can edit the frames and download the result as GIF, APNG, Animated WebP, MP4, or WebM.

GIF Editor image exports prioritize fidelity: APNG and Animated WebP use lossless encoding, and unchanged GIF downloads or Figma inserts reuse the original GIF data without recompression.

### Crop an existing GIF

After loading a GIF, select **Crop**. Draw or resize the crop area in the preview, or enter exact X, Y, width, and height values. You can move the selected area with the arrow keys for smaller adjustments.

Select **Apply crop** to crop every frame in the animation. Review the updated preview before exporting the edited GIF.

## 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
  - [Edit an Existing GIF or MP4](/tinyimage/gif-editing.md): Resize, transform, crop, trim, retime, and export an existing GIF or MP4
  - [Export Figma Motion](/tinyimage/figma-motion.md): Review and export a native Figma Motion animation in five formats

---

---
url: "/tinyimage/logos-colours.md"
description: "Prepare the full-colour, black, white, grayscale, and custom logo variations clients need."
---

# Create logo colour variants

> Prepare the full-colour, black, white, grayscale, and custom logo variations clients need.

Most client logo packages need more than the original full-colour artwork. Select the built-in colour variations you want to include in **Generate Logos in Figma** or **Export ZIP**. TinyImage creates one variant per selected logo and colour scheme.

TinyImage preserves useful artwork relationships when recolouring:

- Light and dark source colours become corresponding tints and shades of the chosen colour.
- **Black** and **White** variants use the opposite monochrome colour for strongly contrasting details nested inside a filled logo shape.
- Custom schemes keep the original colour of those strongly contrasting nested details.
- Knockout details remain empty when they are represented by negative space rather than a filled layer.

## Add custom single-colour schemes

The **Custom single-colour schemes (optional)** switch is enabled by default. Enter a descriptive name followed by a three- or six-digit hex colour:

```text
Brand blue: #0066FF
```

To add multiple schemes, separate them with semicolons or put each scheme on a new line:

```text
Brand blue: #0066FF; Warm red: #E84A3C
```

TinyImage creates a separate variant for each valid custom scheme. The descriptive name is used for the `{color}` filename token and the generated Figma layer name. The hex value becomes the primary artwork colour, while lighter and darker source colours become corresponding tints and shades of it.

Turn the switch off to temporarily exclude all custom schemes from **Generate Logos in Figma** and **Export ZIP**. TinyImage disables the field but preserves its contents, so you can turn it back on without re-entering the colours.

## Check the results

Review logos with nested marks, knockout shapes, gradients, and multiple brand shades before delivery. If a strongly contrasting detail is a separate filled layer inside another logo shape, TinyImage preserves its original colour for custom schemes. For example, a white glyph inside a coloured mark stays white while the surrounding mark and separate wordmark use the custom colour.

Continue by [generating editable variants in Figma](/tinyimage/logos-figma) or [exporting and sharing the package](/tinyimage/logos-export).

---

---
url: "/tinyimage/logos-export.md"
description: "Export an organised TinyImage logo package that clients can browse, resize, and download from an offline gallery."
---

# Export and share client logo packages

> Export an organised TinyImage logo package that clients can browse, resize, and download from an offline gallery.

After [preparing the logo package](/tinyimage/logos), select **Export ZIP** to validate the settings, generate every selected file, and prepare the ZIP for download. The button shows how many files the current settings will create. Controls are temporarily disabled while the loading notification reports export progress.

## Choose exported files

Select the colour schemes and file formats to include. For PNG and JPG, select one or more of the **1x**, **2x**, and **4x** scales. Scale settings do not apply to SVG or PDF exports.

You can also:

- Add equal padding around every exported variant.
- Remove the fill from selected frame, component, and instance containers.
- Organise files into folders using `/` in the [filename pattern](/tinyimage/logos-naming).
- Add [custom single-colour schemes](/tinyimage/logos-colours).

## Browse and share the package

After extracting the ZIP, open `index.html` to browse the complete package in an offline gallery. Its plain-language questions help clients find the right logo, colour, file type, and size without requiring design terminology. They can search, sort, switch between grid, light, and dark preview backgrounds, enlarge any logo without leaving the gallery, or download the original file directly.

To download a JPG or PNG at a specific width, enter the required pixel width in **Custom JPG or PNG width**, then select **Download** on the file. The gallery creates the resized copy locally, preserves the logo's proportions, and adds the width to its filename. Leave the field empty to download the original export.

SVG and PDF downloads are unchanged because they are not pixel-based. Keep or share the original ZIP when someone needs the complete one-click project download.

The ZIP also includes `README.txt` and `package-manifest.json`, which describe the package and generated files.

> **Info:** Extract the ZIP before opening `index.html` so every browser can load the local previews reliably.

---

---
url: "/tinyimage/logos-figma.md"
description: "Generate organised, editable client logo variations in Figma with matching native export settings."
---

# Generate editable logos in Figma

> Generate organised, editable client logo variations in Figma with matching native export settings.

After [preparing the logo package](/tinyimage/logos), select **Generate Logos in Figma** to add the configured variants beside the source artwork.

[Video](/assets/videos/tinyimage/compress/logos-insert-to-figma.mp4)

TinyImage creates a horizontal auto-layout package frame with one vertical auto-layout column per selected logo. The columns follow the source order shown from top to bottom in Figma's Layers panel, and each column stacks one editable layer per selected colour scheme.

The original artwork and selection remain unchanged. You can remove the complete generated package with one Figma Undo.

## Native export settings

Each generated variant receives the matching native Figma export settings:

- SVG and PDF add one setting each.
- PNG and JPG add one setting for every selected scale.
- 2x and 4x raster settings use the `@2x` and `@4x` suffixes.

For example, one **Grayscale** variant with PNG, JPG, SVG, PDF, 1x, and 2x selected receives six export settings. Padding and **Remove container backgrounds** are also applied to the generated artwork.

## Verify the generated package

Check that:

1. Each selected source logo has its own column.
2. The columns follow the original Figma layer order.
3. Every selected colour scheme appears once per logo.
4. The variant names and native export settings match the package options.
5. Knockout and strongly contrasting nested details still look correct.

You can also [export and share the complete ZIP package](/tinyimage/logos-export).

---

---
url: "/tinyimage/logos-naming.md"
description: "Name and organise logo files for a clear, consistent client handoff with TinyImage pattern tokens."
---

# Name and organise logo files

> Name and organise logo files for a clear, consistent client handoff with TinyImage pattern tokens.

A client logo package is easier to use when every file has a predictable name and folder. Use **Filename pattern** to control the structure created by **Export ZIP**. The same delivery names are also used for variants created with **Generate Logos in Figma**.

## Filename pattern tokens

| Token | Output |
| --- | --- |
| `{client}` | Client or package name |
| `{package}` | Client or package name |
| `{lockup}` | Delivery name for the selected artwork |
| `{color}` | Colour scheme name |
| `{size}` | Raster export scale, such as `1x` or `2x` |
| `{format}` | File format, such as `PNG`, `JPG`, `SVG`, or `PDF` |

Use `/` anywhere in the pattern to create a folder boundary. Add more than one slash to create nested folders. Type `-` or `_` directly wherever you want that separator; TinyImage also uses that style when cleaning token values.

For example:

```text
{lockup}/{format}/{client}-{lockup}-{color}-{size}
```

This can create:

```text
full-logo/PNG/acme-full-logo-full-color-2x.png
```

TinyImage adds the correct file extension automatically, so do not include an extension in the pattern. If you leave the field empty, TinyImage uses the displayed default pattern.

If **Client or package name** is empty, TinyImage uses the displayed placeholder value. Empty delivery-name fields fall back to the corresponding Figma layer name. TinyImage automatically adds a number when two variants would otherwise use the same path.

## Edit individual logo names

Select **Review Logo Artwork (n)**, then edit the delivery name beside each loaded logo. These names supply the `{lockup}` token and label the generated Figma columns.

The list follows the source order shown from top to bottom in Figma's Layers panel. Select the frame icon beside an item to locate its source layer in Figma.

Next, [create logo colour variants](/tinyimage/logos-colours), [generate the variants in Figma](/tinyimage/logos-figma), or [export the ZIP](/tinyimage/logos-export).

---

---
url: "/tinyimage/logos.md"
description: "Use TinyImage Logo Packager to prepare, organise, and deliver logo files for clients directly from Figma."
---

# Prepare logo files for clients in Figma

> Use TinyImage Logo Packager to prepare, organise, and deliver logo files for clients directly from Figma.

Use **Logo Packager** in TinyImage's **Logos** tab to prepare logo files for clients directly in Figma. Select approved full logos, wordmarks, and logo marks once, configure their colour variations and export formats, then generate editable Figma layers or an organised ZIP for handoff.

### Video Tutorial: Prepare a complete logo package for clients in Figma

This video shows how to prepare, organise, and deliver a complete set of client logo files with TinyImage.
[Embedded media](https://www.youtube-nocookie.com/embed/ev-zr_2l7yI)

[Video](/assets/videos/tinyimage/compress/logo-packager.mp4)

## Prepare the client logo package

1. Select the approved full logos, wordmarks, logo marks, or other logo lockups in Figma.
2. Open the **Logos** tab. TinyImage reads the current selection automatically.
3. Enter the client or package name.
4. Choose the colour schemes, file formats, scales, padding, and other output options.
5. Select **Review Logo Artwork (n)** to review the loaded logos and edit their delivery names.

The selection tip shows the number of loaded layers when the selection is ready. **Review Logo Artwork (n)** opens the per-logo list in a scrollable panel. TinyImage refreshes this list when the Figma selection changes; select the refresh icon to reread it manually. Select the frame icon beside an artwork item to jump to that node in Figma.

## Choose a delivery workflow

  - [Name and Organise Logo Files](/tinyimage/logos-naming.md): Create consistent filenames and folder structures using pattern tokens.
  - [Create Logo Colour Variants](/tinyimage/logos-colours.md): Choose built-in schemes or add custom brand colours while preserving useful shades.
  - [Generate Logos in Figma](/tinyimage/logos-figma.md): Insert organised, editable variants with native Figma export settings.
  - [Export and Share Logo Packages](/tinyimage/logos-export.md): Export a ZIP with an offline gallery for browsing and downloading every file.

> **Info:** Logo packages use RGB output. Figma cannot generate native AI or EPS files, or true CMYK vector artwork.

---

---
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-nocookie.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 a 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 of all of the Figma plugin features.

> **Warning:** 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.

> **Info:** If you ever need to use a different license key at any time (for example, 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 and 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
  - [Edit Photos](/tinyimage/editor.md): Crop, adjust colours, retouch, boost resolution and remove backgrounds
  - [TinyImage Video Tutorials](/tinyimage/tutorials.md): Full step-by-step video walkthroughs

## Frequently asked questions

- [Troubleshooting TinyImage](/tinyimage/faq/troubleshooting.md): Common 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, WebM, or MP4 files from selected layers, with optional transition effects.
- Boost image resolution and remove backgrounds with 100% local AI processing; images stay on your device.
- Edit existing GIF or MP4 files by resizing, cropping, rotating, flipping, trimming, retiming, reversing, compressing, or converting them to another animated format.
- 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).
- Automatically optimise animated GIFs to a maximum KB target by tuning lossiness and the colour palette.
- Export native Figma Motion animations as GIF, APNG, animated WebP, MP4, or WebM files.
- Supports compressing/exporting multiple sizes and formats per layer.
- Advanced custom filenames (for example, "#name_#width_x_#height_#date").
- Generate organised logo package ZIPs with custom colour schemes, formats, scales, padding, folder structures, filenames, and a package manifest.
- Organize selected Figma layers by aligning their canvas positions, matching their layer order, applying sequential names, and updating presentation pager text.
- Automatically saves multiple images as a .zip file.
- Create print-ready Figma pages with paper presets or custom sizes, margins, bleed, crop marks, fold guides, and reusable presets, then export CMYK PDFs with press profiles.

## Boost resolution and remove backgrounds with local AI

Use the **Editor** tab's **Local AI** tools to upscale images with **Boost resolution**, or create transparent cutouts with **Remove background**. Each action automatically downloads its model on first use, then processes images entirely on your device without uploading them to an external service. Boost resolution uses the Gentle model, and both tools reuse their model while the plugin is open. Insert the results into Figma or download them; choose PNG to preserve background transparency.

See [Boost resolution](/tinyimage/editor-upscale) and [Remove background](/tinyimage/editor-background) for the steps.

## Using TinyImage in Figma Buzz

TinyImage can compress and export assets from Figma Buzz. Use **File Type** to choose PNG, JPEG, SVG, or PDF. PNG and JPEG exports also support scales from `@0.5x` to `@4x`; scale selection is disabled for vector SVG and PDF output.

---

---
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 walks through how to export merged frames from Figma as compressed PDF files directly from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube-nocookie.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 walks through how to export merged frames from Figma as compressed PDF files directly from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube-nocookie.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 walks through how to export merged frames from Figma as compressed PDF files directly from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/P5PJhwtYrkM)

[Video](/assets/videos/tinyimage/compress/pdf-reorder.mp4)

TinyImage exports PDF pages in the numbered order shown in the preview list. You can sort the list automatically or drag pages into a custom order before exporting.

> **Tip:** If you move, rename, or add frames while the PDF view is open, click **Refresh Figma Frames** before checking the page order.

## Sort Pages by Custom Order

Drag the numbered frame previews up or down to set the exact page order. Hover over a thumbnail or its reorder handle to enlarge that preview temporarily without expanding every row. TinyImage automatically switches the sorting option to **Custom Order** after you move a page.

> **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 Layer Order** to match the order in your Figma layer list. Choose the down or up option to reverse the complete order.

## Sort Pages Visually by Columns

Use **Sort Frames Left to Right** to read each visual column from top to bottom before moving to the next column. Use **Sort Frames Right to Left** for the reverse order.

TinyImage uses each frame's absolute position on the Figma canvas, including frames inside different Sections, and groups frames that are only slightly misaligned.

## Sort Pages Visually by Rows

Use **Sort Frames Top to Bottom** to read each visual row from left to right before moving to the next row. Use **Sort Frames Bottom to Top** for the reverse order.

## Sort Pages by Figma Layer Name

Use **Sort by Figma Layer Name** to sort by frame names. Numbered names use natural numeric order, so `Page 2` appears before `Page 10`.

> **Info:** Visual and custom sorting only change the PDF page order. They do not rename frames or rearrange your Figma layer list.

---

---
url: "/tinyimage/pdf-print.md"
description: "Set up and export print-ready PDFs without leaving TinyImage's Print workspace."
---

# Create print-ready pages in Figma

> Set up and export print-ready PDFs without leaving TinyImage's Print workspace.

### Video Tutorial: Create Print-Ready Frames and Export CMYK PDFs

[Embedded media](https://www.youtube-nocookie.com/embed/1siseu1wh7c)

[Follow the step-by-step tutorial](/tinyimage/tutorials/how-to-create-print-ready-frames-and-export-cmyk-pdfs-using-tiny-image).

The **Print** workspace keeps page setup and PDF export together:

1. Open **Create Print Frames** to choose the page size, safe area, bleed, crop marks, and optional fold guides.
2. Select **Create Frames** to generate editable Figma frames.
3. Select the finished top-level page frames in Figma.
4. Open **Export PDF for Print** to choose the output settings, then select **Export PDF**.

You do not need to move to the separate PDF tab. Print uses TinyImage's existing PDF optimisation and colour-management pipeline from its own self-contained **Export PDF for Print** panel.

The Print tab is available in Figma Design. If you are working in FigJam or another Figma editor, open the file in Figma Design before creating print pages.

[Video](/assets/videos/tinyimage/compress/print.mp4)

## Configure the print pages

Choose a paper size and orientation, or enter a custom width and height. The setup preview identifies the trim, safe-area, bleed, crop, and fold boundaries and updates the pixel dimensions from the selected unit and DPI. TinyImage supports **72**, **150**, and **300 DPI** for generated pages.

You can also configure:

- The number of pages to create, from 1 to 100.
- The base name for the generated Figma frames. If **Document Name** is empty, TinyImage uses `TinyImage Print Set`.
- Separate safe-area/margin and bleed values for each edge.
- Crop mark weight, offset, and length.
- Whether bleed expands the page or stays within the selected page size.
- Optional bi-fold, tri-fold, or custom fold positions, with vertical or horizontal guides.

Fold positions use percentages of the finished page. Custom positions accept up to eight comma-separated values between 0 and 100, such as `33.33, 66.67`. TinyImage creates them as Figma layout guides, so they remain visible while you design but do not appear in exported files.

Margins, bleed, and crop marks are enabled by default. Turning off an option keeps its related values visible but disables them, so you can turn the option back on without re-entering the values.

Select **Reset Defaults** in the **Page Setup for Print** header to restore every frame-creation setting to its default. Resetting the setup does not delete your saved presets.

Crop marks are independent from bleed in **Page Setup for Print**. You can create pages with crop marks and no bleed; TinyImage adds the required space around the trim area for the marks.

New print frames have **Clip content** enabled. The outer frame includes the bleed and crop-mark space, so oversized artwork is clipped at the outer page edge, not at the finished trim size. Existing frames keep their current clipping setting; enable **Clip content** in Figma if needed.

> **Note:** The separate **Add Crop Marks** option in the **PDF** tab of **Export Settings** still requires **Add Bleed**. That exporter draws crop marks within its generated bleed area. Pages created by Page Setup for Print already contain their configured print elements, and TinyImage avoids adding duplicate bleed or crop marks during PDF export.

At the bottom of **Page Setup for Print**, select **Save Preset** to keep a custom print preset for later use. Choose a preset from the saved-preset selector to load it, or select **Delete Preset** to remove it. TinyImage shows a short notification after loading, saving, or deleting a preset.

If a value is invalid, TinyImage lists the affected setting and keeps **Create Frames** disabled until the setup is valid.

## Export the print PDF

In **Export PDF for Print**, use the sorting and **Maximum Image DPI** selectors directly below the export header. Print PDF exports default to CMYK. Select **PDF Print Settings** to choose the output colour; choosing CMYK also reveals the **Press Profile** and **Rendering Intent** controls.

TinyImage remembers the Print PDF page order and export settings separately from the regular **Create a PDF** workflow for each Figma page. Changing a Print PDF colour profile, password, image-downscaling option, bleed setting, or other PDF Print setting does not change the corresponding regular PDF setting.

PDF export places visible TinyImage crop marks above artwork within their frame without changing your original layer order. Marks you explicitly hide stay hidden. **Add Bleed** is not needed to reveal crop marks already built into the frame.

New crop marks use black centres with a thin white outline, making them visible over both light and dark artwork without blend modes. PDF export also adds this outline to older, unstyled TinyImage crop marks on the export copy only. Existing custom strokes are preserved.

Generated Print frames retain their configured physical size in the PDF at 72, 150, or 300 DPI. The PDF page includes any extra space created for bleed and crop marks. The **Maximum Image DPI** setting controls image optimisation, not the physical page size.

[Video](/assets/videos/tinyimage/compress/export-print-pages.mp4)

The panel includes:

- The pages included in the PDF and their order.
- An **Export each page as a separate PDF** switch. It is off by default, so TinyImage normally creates one merged PDF.
- A **Maximum Image DPI** ceiling of 72, 150, 300, or 600 DPI for PDF image optimisation.
- RGB, CMYK, or grayscale output.
- GRACoL 2013, SWOP 2013, or Generic CMYK press profiles.
- Perceptual, relative colourimetric, saturation, or absolute colourimetric rendering intent.

Turn on **Export each page as a separate PDF** when your printer or production workflow needs one file per selected page. A single selected page downloads directly as a PDF. Two or more pages download together in a ZIP, using safe, unique filenames based on the Figma page names. Each file uses the same image optimisation, password, colour-profile, and rendering-intent settings as a merged export.

> **Note:** Ask your print provider which CMYK profile and rendering intent they require. TinyImage intentionally does not offer arbitrary RGB-to-CMYK replacement tables because reliable per-colour mappings require a purpose-built DeviceLink profile.

## Choose measurement units

You can work in:

- Millimetres (default)
- Inches

Changing the unit converts the page dimensions, margins, bleed, crop-mark offset, and crop-mark length without changing their physical size.

## Existing PDF bleed workflow

The **PDF** tab in **Export Settings** also has an older workflow that adds bleed and crop marks while exporting existing Figma frames. Open the main **PDF** workspace and select **Settings** immediately before **Export PDF**. Crop marks in that workflow require bleed.

### Video Tutorial: Add Bleed and Crop Marks during PDF export

This video demonstrates the PDF tab's bleed and crop-mark workflow.
[Embedded media](https://www.youtube-nocookie.com/embed/V7YaSzZP4-k)

[Video](/assets/videos/tinyimage/compress/pdf-bleed.mp4)

---

---
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 walks through how to export password-protected PDF files directly from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube-nocookie.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.

The **Image DPI** selector remains beside the sorting selector in the **PDF** tab. To configure every other PDF export option, open the **PDF** workspace and select **Settings** immediately before **Export PDF**. TinyImage opens the **PDF** tab in the **Export Settings** panel.

### Video Tutorial: Merge frames to a compressed PDF

This video walks through how to export merged frames from Figma as compressed PDF files directly from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/P5PJhwtYrkM)

## Choose PDF Quality

[Video](/assets/videos/tinyimage/compress/pdf-quality.mp4)

Use **Image DPI** to choose **72 DPI**, **150 DPI**, or **300 DPI**. Lower DPI creates smaller files, while higher DPI preserves more image detail.

## 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.

## Add Bleed and Crop Marks

Enable **Add Bleed**, then optionally enable **Add Crop Marks**, when the selected frames do not already include those print elements.

In the PDF tab, **Add Crop Marks** requires **Add Bleed** because the exporter draws the marks within the generated bleed area. To create crop marks without bleed, use **Page Setup for Print** first, then export the generated frames from the PDF tab.

If a frame was generated by TinyImage's Print tab with bleed or crop marks, TinyImage detects those print elements and does not add a second copy during PDF export. Detection happens per frame, so ordinary frames in the same export still receive the enabled PDF settings.

## Choose PDF Color Profile

Select the **PDF Color Profile** that matches your output use case:

- RGB (Default, For Screens)
- CMYK (For Print)
- Greyscale (Black And White)

Standard PDF exports use TinyImage's default GRACoL 2013 press profile and perceptual rendering intent when **CMYK (For Print)** is selected. To choose a different **Press Profile** or **Rendering Intent**, open **Export PDF for Print** from the **Print** workspace, then select **PDF Print Settings**.

Print PDF exports default to CMYK and remember their settings separately from regular PDF exports for each Figma page.

> **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 walks through how to export merged frames from Figma as compressed PDF files directly from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/P5PJhwtYrkM)
### Video Tutorial: Add Bleed and Crop Marks to PDF exports from Figma

This video walks through how to add bleed and crop marks to PDF exports from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube-nocookie.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
  - [Create Print Pages](/tinyimage/pdf-print.md): Create editable Figma pages with margins, bleed, and optional 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: "Open settings for TinyImage image and PDF exports."
---

# Configuring TinyImage advanced settings

> Open settings for TinyImage image and PDF exports.

TinyImage places a secondary **Settings** button immediately before the primary export button in the **Compress** and **PDF** workspace headers. It opens a shared **Export Settings** panel with **Images**, **Naming**, and **PDF** tabs.

Opening **Export Settings** from PDF starts on **PDF**. Opening it from Compress starts on **Images**. You can switch between all three settings tabs without closing the panel. Workspaces with inline or task-specific controls do not show this button: GIF export controls remain in **Create a GIF/MP4**, while Page Setup for Print keeps its configuration directly in the main Print tab.

Logo Packager also keeps its package-wide naming and output options in the main tab. Use **Review Logo Artwork (n)** to open the scrollable per-logo list and edit individual delivery names.

TinyImage remembers the tab you last used and opens it again the next time you run the plugin. The **GIF** tab also remembers whether you last used **Create a GIF/MP4**, **GIF Editor**, or **Figma Motion Export**. If no preference has been saved yet, TinyImage opens the **Compress** tab with **Create a GIF/MP4** selected for GIF workflows.

Available settings include:

- [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.

Open the **Compress** workspace and select **Settings** immediately before **Export**. Use the **Images** tab in the **Export Settings** panel.

The TinyImage image conversion setting lets you 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 want 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 walks through how to export images with custom folder path names from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/OyclTDvvo64)

Open the **Compress** workspace and select **Settings** immediately before **Export**, then choose the **Naming** tab in the **Export Settings** panel.

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 (for example, "My Figma Layer Name")
- **#&lcub;scale&rcub;** The scale from the export setting (for example, "2x")
- **#&lcub;width&rcub;** The width of the image (for example, "1024")
- **#&lcub;height&rcub;** The layer height (for example, "768")
- **#&lcub;suffix&rcub;** The suffix from the export setting (for example, "\_example")
- **#&lcub;date&rcub;** Timestamp at the time of export (for example, "28-Sep-2020")
- **#&lcub;section&rcub;** The parent Figma Section layer name, if it exists (for example, "Section 1")
- **#&lcub;frame&rcub;** The parent Figma Frame layer name, if it exists (for example, "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: "Customise TinyImage PDF exports with password protection, link outlines, colour profiles, and image-fill downsizing."
---

# Setting options for PDF exports

> Customise TinyImage PDF exports with password protection, link outlines, colour profiles, and image-fill downsizing.

Open the **PDF** workspace, then select **Settings** immediately before **Export PDF**. TinyImage opens the **PDF** tab in the **Export Settings** panel.

## 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 want 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)

Standard PDF exports use TinyImage's default GRACoL 2013 press profile and perceptual rendering intent when **CMYK (For Print)** is selected. To choose a different **Press Profile** or **Rendering Intent**, open **Export PDF for Print** from the **Print** workspace, then select **PDF Print Settings**.

Print PDF exports default to CMYK and remember their settings separately from regular PDF exports for each Figma page.

> **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.

Open the **Compress** workspace and select **Settings** immediately before **Export**. Use the **Images** tab in the **Export Settings** panel.

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 'Ctrl + W' keyboard 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 'Ctrl + W' keyboard 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 clearly in the plugin exportable image list, press **Ctrl + W** while the plugin is running and focused to toggle the width of the Figma plugin window.

> **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/tidy.md"
description: "Align, reorder, rename, and number selected Figma layers using the TinyImage Tidy workspace."
---

# Organize Figma layers with Tidy

> Align, reorder, rename, and number selected Figma layers using the TinyImage Tidy workspace.

### Video Tutorial: tidy and Rename Layers Automatically

[Embedded media](https://www.youtube-nocookie.com/embed/zXv4KhSr9qY)

[Follow the step-by-step tutorial](/tinyimage/tutorials/how-to-tidy-and-rename-layers-automatically-using-tiny-image).

Use the **Tidy** tab to turn a rough group of Figma layers into an organized canvas and layer list. Tidy can detect the selection's visual flow, align layers to a spacing grid, match the layer order to their canvas position, rename frames with sequential numbers, and update presentation pager text.

[Video](/assets/videos/tinyimage/compress/tidy-layers.mp4)

## Prepare your selection

1. In a Figma Design file, select the layers you want to organize.
2. Make sure the selected layers are siblings with the same parent.
3. Open TinyImage and select the **Tidy** tab.

The selection status shows how many layers are ready and which parent contains them. Tidy does not move or reorder layers inside an Auto Layout parent; select layers on the canvas or inside a regular frame instead.

## Choose the Tidy actions

Open **Actions** and enable any combination of these options:

### Grid alignment

Detects the strongest row or column layout and aligns the selected layers using the horizontal and vertical spacing from **Preferences**. Tidy tolerates small offsets and layers with different sizes when they share a visual edge or centre. This is the only action enabled by default.

### Renaming

Adds sequential numbers based on each layer's canvas position. With the default starting number of `000`, layers are named `000`, `001`, `002`, and so on.

### Layer order

Reorders the selected layers in the Figma Layers panel to match their visual order on the canvas. The selected layers remain together at the top of their parent layer stack.

### Presentation pager

Finds matching text layers inside each selected layer and replaces their text with a one-based canvas-order number: `1`, `2`, `3`, and so on. Enable **Leading zero** in Preferences to use `01`, `02`, `03`, and so on.

## Configure Tidy preferences

Open **Preferences** to configure how the enabled actions run.

| Preference | What it controls |
| --- | --- |
| **Grid spacing** | Horizontal and vertical spacing between aligned layers. Both default to `100` px. |
| **Layout** | **Auto** detects the visual flow. Choose **Rows** or **Columns** to override it. |
| **Wrap component instances** | Places selected instances inside same-size frames when Grid alignment runs. |
| **Pager variable** | The exact name of the pager text layer to update. The default is `{current}`. |
| **Pager number** | Adds a leading zero to pager values, producing `01`, `02`, `03`, and so on. |
| **Starting frame number** | The first `{n}` value and the number width used by `{n}` and `{total}`. The default is `000`. |
| **Rename strategy** | Replaces existing names, merges the number with each name, or applies a custom pattern. |

### Automatic layout detection

The default **Auto** layout compares the existing horizontal and vertical visual bands in your selection. A horizontal list or wide grid is arranged in rows, while a vertical list or tall grid is arranged in columns. Tidy recognizes layers that share a top, centre, or bottom alignment, so slight offsets and mixed frame sizes remain grouped naturally.

Choose **Rows** or **Columns** when you want to force a particular reading order instead of using the detected flow.

### Rename strategies

- **Replace** uses the sequential number as the complete layer name, such as `000`.
- **Merge** combines the number and existing name, such as `000_Home`.
- **Custom pattern** mixes your own text with optional naming variables. Use it to control exactly where numbers and existing layer names appear.

### Naming variables

Enter any text in **Name pattern**, then add variables wherever their values should appear. The variables are optional, so you can also apply the same static name to every selected layer.

| Variable | What it adds |
| --- | --- |
| `{n}` | The sequential canvas-order number, padded to match **Starting frame number**. |
| `{total}` | The number of selected layers, padded to the same width as `{n}`. |
| `{name}` | The layer's existing name. |
| `{parent}` | The shared parent layer's name. For top-level layers, this is the Figma page name. |
| `{type}` | The layer type, such as `Frame`, `Instance`, or `Component Set`. |
| `{page}` | The current Figma page name. |
| `{row}` | The layer's one-based visual row number. |
| `{column}` | The layer's one-based visual column number. |

For example, with **Starting frame number** set to `001`:

| Name pattern | Example result |
| --- | --- |
| `{n} Client Name` | `001 Client Name` |
| `Client Name {n}` | `Client Name 001` |
| `{n} {name}` | `001 Home` |
| `{n} of {total} {name}` | `001 of 024 Home` for a 24-layer selection |
| `{parent} — {n} {name}` | `Client Screens — 001 Home` |
| `{page} / {type} / {name}` | `Presentation / Frame / Home` |
| `{n} Row {row}, Column {column}` | `001 Row 1, Column 1` |
| `Client Name` | `Client Name` for every selected layer |

## Run Tidy

After reviewing the Actions and Preferences, select **Tidy n Layers**. TinyImage applies every enabled action to the current selection and reports how many layers were tidied.

Use Figma's normal **Undo** command if you want to restore the previous positions, names, layer order, wrappers, and pager values.

> **Tip:** Auto works best when the selection already suggests a visual flow. If an intentionally irregular layout is detected differently than you expect, choose Rows or Columns in Preferences.

> **Note:** The font used by matching pager text layers must be available in Figma so TinyImage can update their characters.

---

---
url: "/tinyimage/tutorials.md"
description: "Learn how to compress, resize, optimize, edit, and export images, GIFs, SVGs, and logo packages from Figma with TinyImage."
---

# TinyImage Video Tutorials

> Learn how to compress, resize, optimize, edit, and export images, GIFs, SVGs, and logo packages from Figma with TinyImage.

## Compressing Images

- [Upscale images and boost resolution in Figma (100% local AI)](/tinyimage/tutorials/how-to-upscale-images-boost-resolution-100-local-ai-using-tiny-image)

- [Remove image backgrounds in Figma (100% local AI)](/tinyimage/tutorials/how-to-remove-image-backgrounds-in-figma-100-local-ai-using-tiny-image)

- [Edit Images in Figma (Crop, Retouch, Filters & Effects)](/tinyimage/tutorials/how-to-edit-images-in-figma-crop-retouch-filters-effects-using-tiny-image)

- [Create Print-Ready Frames and Export CMYK PDFs](/tinyimage/tutorials/how-to-create-print-ready-frames-and-export-cmyk-pdfs-using-tiny-image)

- [tidy and Rename Layers Automatically](/tinyimage/tutorials/how-to-tidy-and-rename-layers-automatically-using-tiny-image)

- [Compress JPG/PNG images](/tinyimage/tutorials/compress-jpg-png-images)
- [Compress Figma image exports to file size targets](/tinyimage/tutorials/compress-figma-image-exports-to-file-size-targets)
- [Compress SVG images](/tinyimage/tutorials/compress-svg-images)
- [Export WebP images](/tinyimage/tutorials/export-webp-images)
- [Export PNGs with custom ICC color space profiles from Figma](/tinyimage/tutorials/export-pngs-with-custom-icc-color-space-profiles-from-figma)
- [Export images with custom folder path names from Figma](/tinyimage/tutorials/export-images-with-custom-folder-path-names-from-figma)
- [Export Progressive JPEG images](/tinyimage/tutorials/export-progressive-jpeg-images)
- [Export AVIF images](/tinyimage/tutorials/export-avif-images)

## PDFs

- [Merge frames to a compressed PDF](/tinyimage/tutorials/merge-frames-to-a-compressed-pdf)
- [Export compressed PDFs in CMYK](/tinyimage/tutorials/export-compressed-pdfs-in-cmyk)
- [Add Bleed and Crop Marks to PDF exports from Figma](/tinyimage/tutorials/add-bleed-and-crop-marks-to-pdf-exports-from-figma)
- [Reduce large file sizes for heavy PDF exports from Figma](/tinyimage/tutorials/reduce-large-file-sizes-for-heavy-pdf-exports-from-figma)
- [Password protect PDF exports](/tinyimage/tutorials/password-protect-pdf-exports)
- [Remove black borders from links in Figma PDF exports](/tinyimage/tutorials/remove-black-borders-from-links-in-figma-pdf-exports)

## GIFs & Videos

- [Bulk export Figma Motion layers to GIF and MP4 video](/tinyimage/tutorials/bulk-export-figma-motion-layers-to-gif-and-mp4-video)
- [Edit animated GIFs directly in Figma](/tinyimage/tutorials/edit-animated-gifs-directly-in-figma)
- [Create animated GIFs](/tinyimage/tutorials/create-animated-gifs)
- [Add transition effects to animated GIF exports in Figma](/tinyimage/tutorials/add-transition-effects-to-animated-gif-exports-in-figma)
- [Export WebM videos from your Figma layers](/tinyimage/tutorials/export-webm-videos-from-your-figma-layers)
- [Export animated PNG (APNG) images from Figma](/tinyimage/tutorials/export-animated-png-apng-images-from-figma)
- [Export animated WebP images from Figma](/tinyimage/tutorials/export-animated-webp-images-from-figma)
- [Export animated MP4 videos from Figma](/tinyimage/tutorials/export-animated-mp4-videos-from-figma)
- [Add audio to Figma animated MP4 video exports](/tinyimage/tutorials/add-audio-to-figma-animated-mp4-video-exports)

## Figma Image Fills

- [Bulk export original image files from any Figma layer fills](/tinyimage/tutorials/bulk-export-original-image-files-from-any-figma-layer-fills)
- [Downsize Figma image fills to their layer size](/tinyimage/tutorials/downsize-figma-image-fills-to-their-layer-size)

## Logo Packaging

- [Prepare a complete logo package for clients in Figma](/tinyimage/tutorials/prepare-a-complete-logo-package-for-clients-in-figma)

## More video tutorials

- [How to compress PDF files in Figma using TinyImage](/tinyimage/tutorials/how-to-compress-pdf-files-in-figma-using-tinyimage)
- [How to create animated GIF files in Figma using TinyImage](/tinyimage/tutorials/how-to-create-animated-gif-files-in-figma-using-tinyimage)
- [How to install and uninstall Figma plugins](/tinyimage/tutorials/how-to-install-and-uninstall-figma-plugins)

---

---
url: "/tinyimage/tutorials/add-audio-to-figma-animated-mp4-video-exports.md"
description: "This tutorial shows how to use the TinyImage Figma plugin to turn selected Figma layers into an MP4 video export and add an MP3 audio track. It also demonstrates sorting frames, adjusting per-frame timing, and optionally including text inside frames before exporting."
---

# Add audio to Figma animated MP4 video exports

> This tutorial shows how to use the TinyImage Figma plugin to turn selected Figma layers into an MP4 video export and add an MP3 audio track. It also demonstrates sorting frames, adjusting per-frame timing, and optionally including text inside frames before exporting.

[← Back to TinyImage Video Tutorials](/tinyimage/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/bJI_BKzSvJU)

## What this video covers

This tutorial shows how to use the TinyImage Figma plugin to turn selected Figma layers into an MP4 video export and add an MP3 audio track. It also demonstrates sorting frames, adjusting per-frame timing, and optionally including text inside frames before exporting.

## Things you'll need

- Figma
- TinyImage Figma plugin
- An MP3 file saved on your computer

## Steps

1. [ ] Open Figma, go to the Resources icon, search for TinyImage, and run the TinyImage Figma plugin from Plugins or Saved plugins.
2. [ ] Select the Figma layers you want in the video, open the **GIF** tab, then choose the **Create a GIF/MP4** subtab to load them into the timeline.
3. [ ] Choose the frame order using the sorting options or drag thumbnails into a custom order.
4. [ ] Adjust the delay per frame with the slider or individual frame inputs.
5. [ ] Open the format dropdown, change Animated GIF to MP4 Video, and reveal the option to add an MP3 audio track.
6. [ ] Drag and drop an MP3 file into the audio footer area so it attaches to the export.
7. [ ] Click Export MP4, save the file, and play the exported MP4 to confirm the audio is included.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=bJI_BKzSvJU)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-add-audio-to-figma-animated-m-p4-video-exports-using-tiny-image)
- [Read: Creating animated MP4 videos from layers](/tinyimage/video)
- [Next: Export animated MP4 videos from Figma](/tinyimage/tutorials/export-animated-mp4-videos-from-figma)
- [Open TinyImage in the Figma Community](https://www.figma.com/community/plugin/789009980664807964)

---

---
url: "/tinyimage/tutorials/add-bleed-and-crop-marks-to-pdf-exports-from-figma.md"
description: "This tutorial shows how to use the TinyImage Figma plugin to export Figma frames as print-ready PDFs with bleed and crop marks. It also demonstrates choosing frames, setting DPI and CMYK, adjusting bleed size, and exporting PDFs with crop marks visible on different background colors."
---

# Add Bleed and Crop Marks to PDF exports from Figma

> This tutorial shows how to use the TinyImage Figma plugin to export Figma frames as print-ready PDFs with bleed and crop marks. It also demonstrates choosing frames, setting DPI and CMYK, adjusting bleed size, and exporting PDFs with crop marks visible on different background colors.

[← Back to TinyImage Video Tutorials](/tinyimage/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/V7YaSzZP4-k)

## What this video covers

This tutorial shows how to use the TinyImage Figma plugin to export Figma frames as print-ready PDFs with bleed and crop marks. It also demonstrates choosing frames, setting DPI and CMYK, adjusting bleed size, and exporting PDFs with crop marks visible on different background colors.

## Things you'll need

- A Figma file with frames ready to export.
- The TinyImage Figma plugin installed or saved in Figma.

## Steps

1. [ ] Open your Figma file and run the TinyImage plugin from the Resources icon or from Saved plugins.
2. [ ] Click "Create PDF" to fetch the top-level frames on the current page and choose how to order them.
3. [ ] Set the export options such as DPI and, if needed, CMYK for print.
4. [ ] Turn on "Add Bleed" and choose the bleed size, with 3 mm shown as the default example.
5. [ ] Keep "crop marks" enabled if you want printer cut lines, then click "Export PDF".
6. [ ] Save the PDF and open it in a PDF reader to confirm the bleed area and crop marks were added.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=V7YaSzZP4-k)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-add-bleed-and-crop-marks-to-pdf-exports-from-figma-using-tiny-image)
- [Read: Create print-ready pages in Figma](/tinyimage/pdf-print)
- [Next: Reduce large file sizes for heavy PDF exports from Figma](/tinyimage/tutorials/reduce-large-file-sizes-for-heavy-pdf-exports-from-figma)
- [Open TinyImage in the Figma Community](https://www.figma.com/community/plugin/789009980664807964)

---

---
url: "/tinyimage/tutorials/add-transition-effects-to-animated-gif-exports-in-figma.md"
description: "This tutorial shows how to use the TinyImage Figma plugin to export animated GIFs or MP4 files with transition effects between frames. It demonstrates selecting frames, choosing effects like fade, slide, and wipe, adjusting transition speed, and exporting the final file."
---

# Add transition effects to animated GIF exports in Figma

> This tutorial shows how to use the TinyImage Figma plugin to export animated GIFs or MP4 files with transition effects between frames. It demonstrates selecting frames, choosing effects like fade, slide, and wipe, adjusting transition speed, and exporting the final file.

[← Back to TinyImage Video Tutorials](/tinyimage/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/GwfVWRAS1qk)

## What this video covers

This tutorial shows how to use the TinyImage Figma plugin to export animated GIFs or MP4 files with transition effects between frames. It demonstrates selecting frames, choosing effects like fade, slide, and wipe, adjusting transition speed, and exporting the final file.

## Things you'll need

- A Figma file with the frames or layers you want to animate.
- The TinyImage Figma plugin installed or saved in Figma.

## Steps

1. [ ] Open a Figma file, find TinyImage under Resources > Plugins, and run or save the plugin from the plugins list.
2. [ ] Select the Figma frames you want to animate, open the **GIF** tab, then choose the **Create a GIF/MP4** subtab to load them into the preview.
3. [ ] In the preview, open the effect dropdown that defaults to instant and pick a transition such as fade, slide, or wipe.
4. [ ] Adjust the transition speed with the slider if you want the effect to play faster or slower.
5. [ ] Click export GIF to render and save the animation as an animated GIF, or click export MP4 to render it as a video file.
6. [ ] Open the exported file to verify the transition effect and looping animation.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=GwfVWRAS1qk)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-add-transition-effects-to-animated-gif-exports-in-figma-using-tiny-image)
- [Read: GIF Frame Transitions](/tinyimage/gif-transitions)
- [Next: Export WebM videos from your Figma layers](/tinyimage/tutorials/export-webm-videos-from-your-figma-layers)
- [Open TinyImage in the Figma Community](https://www.figma.com/community/plugin/789009980664807964)

---

---
url: "/tinyimage/tutorials/bulk-export-figma-motion-layers-to-gif-and-mp4-video.md"
description: "Learn how to bulk export Figma Motion animations as compressed GIFs or MP4 videos with TinyImage."
---

# Bulk export Figma Motion layers to GIF and MP4 video

> Learn how to bulk export Figma Motion animations as compressed GIFs or MP4 videos with TinyImage.

[← Back to TinyImage Video Tutorials](/tinyimage/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/psTuPMJpqvk)

## What this video covers

This tutorial shows how to find Figma Motion animations on the current page, select multiple frames, and export them in one batch as compressed GIFs or MP4 videos. It also covers scale, frame rate, looping, compression, size targets, video quality, ZIP downloads, and TinyImage's automatic fallback for Figma Starter-plan export limits.

## Things you'll need

- A Figma Design file with one or more top-level frames that contain Figma Motion animations
- The TinyImage Figma plugin

## Steps

1. [ ] Open TinyImage, select the **GIF** tab, and open **Figma Motion Export**.
2. [ ] Review the Motion frames found on the current page, rescan if needed, and select the animations to export.
3. [ ] For animated GIF output, configure the scale, frame rate, looping, colour count, compression, and optional size target.
4. [ ] Export the selected GIF animations. TinyImage downloads one file directly or packages multiple files in a ZIP archive.
5. [ ] For MP4 output, choose the scale, 30 or 60 FPS, and the **Low**, **Medium**, or **High** quality preset.
6. [ ] Export the selected MP4 animations and review the downloaded files.
7. [ ] If a Starter-plan render exceeds 1920 × 1080 or 30 FPS, let TinyImage retry within those limits without changing the original frame.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=psTuPMJpqvk)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-bulk-export-figma-motion-layers-to-gif-and-mp4-video-using-tiny-image)
- [Read: Export Figma Motion animations](/tinyimage/figma-motion)
- [Next: Edit animated GIFs directly in Figma](/tinyimage/tutorials/edit-animated-gifs-directly-in-figma)
- [Open TinyImage in the Figma Community](https://www.figma.com/community/plugin/789009980664807964)

---

---
url: "/tinyimage/tutorials/bulk-export-original-image-files-from-any-figma-layer-fills.md"
description: "This tutorial shows how to use the TinyImage Figma plugin to export the original image files used in Figma image fills. It demonstrates finding the plugin, selecting image fills in the Fills tab, and exporting them as a zip file for a frame or the whole file."
---

# Bulk export original image files from any Figma layer fills

> This tutorial shows how to use the TinyImage Figma plugin to export the original image files used in Figma image fills. It demonstrates finding the plugin, selecting image fills in the Fills tab, and exporting them as a zip file for a frame or the whole file.

[← Back to TinyImage Video Tutorials](/tinyimage/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/hQ5Lwtzm7NI)

## What this video covers

This tutorial shows how to use the TinyImage Figma plugin to export the original image files used in Figma image fills. It demonstrates finding the plugin, selecting image fills in the **Fills** tab, and exporting them as a zip file for a frame or the whole file.

## Things you'll need

- TinyImage installed in Figma.
- A Figma page containing one or more layers with image fills.

## Steps

1. [ ] Open the Resources icon in Figma, search for TinyImage under the Plugins tab, and run or save the plugin.
2. [ ] In the TinyImage plugin, open the **Fills** tab to view the image fills on the page.
3. [ ] Use the refresh icon whenever you need to rescan all image fills on the current page.
4. [ ] Select the image fills you want to export from the list.
5. [ ] Click Export Figma Image Fills to export the selected fills as a zip file.
6. [ ] Open the zip file to access the exported original image files.
7. [ ] Repeat the same process for other frames or the entire file if needed.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=hQ5Lwtzm7NI)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-bulk-export-original-image-files-from-any-figma-layer-fills-from-figma-using-tiny-image)
- [Read: Exporting the original image files from Figma layer fills](/tinyimage/fills)
- [Next: Downsize Figma image fills to their layer size](/tinyimage/tutorials/downsize-figma-image-fills-to-their-layer-size)
- [Open TinyImage in the Figma Community](https://www.figma.com/community/plugin/789009980664807964)

---

---
url: "/tinyimage/tutorials/compress-figma-image-exports-to-file-size-targets.md"
description: "This tutorial shows how to install TinyImage Compressor from the Figma Community and use its Size target option to compress images to a specific kilobyte limit. It also shows how to set a global file size target, override it for individual images, and export the results from Figma."
---

# Compress Figma image exports to file size targets

> This tutorial shows how to install TinyImage Compressor from the Figma Community and use its Size target option to compress images to a specific kilobyte limit. It also shows how to set a global file size target, override it for individual images, and export the results from Figma.

[← Back to TinyImage Video Tutorials](/tinyimage/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/vPV8JhZ8cq4)

## What this video covers

This tutorial shows how to install TinyImage Compressor from the Figma Community and use its Size target option to compress images to a specific kilobyte limit. It also shows how to set a global file size target, override it for individual images, and export the results from Figma.

## Things you'll need

- Figma
- TinyImage Compressor installed from the Figma Community

## Steps

1. [ ] Search the Figma Community for TinyImage and install TinyImage Compressor.
2. [ ] Open your Figma file, right-click, go to Plugins, and launch TinyImage.
3. [ ] Turn on the Size target toggle to switch from percentage-based quality to kilobyte targets.
4. [ ] Set a global maximum file size target, such as 500 kilobytes, and optionally override that target for a specific image, such as 200 kilobytes.
5. [ ] Click Export to compress the images toward the selected size targets.
6. [ ] Review the exported zip file and compare the resulting file sizes to the targets.
7. [ ] If needed, use the regular quality slider instead of Size target for non-targeted compression.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=vPV8JhZ8cq4)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-compress-figma-images-to-file-size-targets-using-tiny-image)
- [Read: Compressing your Figma image exports](/tinyimage/compress)
- [Next: Compress SVG images](/tinyimage/tutorials/compress-svg-images)
- [Open TinyImage in the Figma Community](https://www.figma.com/community/plugin/789009980664807964)

---

---
url: "/tinyimage/tutorials/compress-jpg-png-images.md"
description: "The video shows how to install and use the TinyImage JPG/PNG Compressor Figma plugin to compress exportable images directly in Figma. It demonstrates selecting image layers, adjusting compression quality, exporting compressed files as a zip, and comparing results for JPG and PNG exports."
---

# Compress JPG/PNG images

> The video shows how to install and use the TinyImage JPG/PNG Compressor Figma plugin to compress exportable images directly in Figma. It demonstrates selecting image layers, adjusting compression quality, exporting compressed files as a zip, and comparing results for JPG and PNG exports.

[← Back to TinyImage Video Tutorials](/tinyimage/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/NEXtO-RKlLs)

## What this video covers

The video shows how to install and use the TinyImage JPG/PNG Compressor Figma plugin to compress exportable images directly in Figma. It demonstrates selecting image layers, adjusting compression quality, exporting compressed files as a zip, and comparing results for JPG and PNG exports.

## Things you'll need

- Figma
- TinyImage JPG/PNG Compressor installed in Figma
- Image layers in the file with export settings

## Steps

1. [ ] Open the Figma plugin directory from the Figma icon, go to Plugins, then Browse all plugins, search for TinyImage, and install it if needed.
2. [ ] In your file, right-click and open Plugins, then choose TinyImage JPG/PNG Compressor, or run the last plugin to open it quickly.
3. [ ] Review the list of layers with export settings; only layers with export settings appear in TinyImage.
4. [ ] Select or deselect images and export sizes using the checkboxes, including the top checkbox to toggle everything.
5. [ ] Adjust the compression quality with the slider, then click Compress to process the selected JPG and PNG exports.
6. [ ] Save the generated zip file when prompted and open it to view the compressed image files.
7. [ ] Check the per-image and total savings shown in TinyImage, and rerun the plugin after changing Figma export settings if you want different sizes or formats.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=NEXtO-RKlLs)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-compresss-images-in-figma-using-tiny-image)
- [Read: Compressing your Figma image exports](/tinyimage/compress)
- [Next: Compress Figma image exports to file size targets](/tinyimage/tutorials/compress-figma-image-exports-to-file-size-targets)
- [Open TinyImage in the Figma Community](https://www.figma.com/community/plugin/789009980664807964)

---

---
url: "/tinyimage/tutorials/compress-svg-images.md"
description: "This tutorial shows how to compress SVG images directly from Figma using the TinyImage Figma plugin. It covers installing TinyImage, selecting SVG export settings, compressing one or multiple layers, and saving the result as compressed SVG files or a zip file."
---

# Compress SVG images

> This tutorial shows how to compress SVG images directly from Figma using the TinyImage Figma plugin. It covers installing TinyImage, selecting SVG export settings, compressing one or multiple layers, and saving the result as compressed SVG files or a zip file.

[← Back to TinyImage Video Tutorials](/tinyimage/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/LHaPsRtY71s)

## What this video covers

This tutorial shows how to compress SVG images directly from Figma using the TinyImage Figma plugin. It covers installing TinyImage, selecting SVG export settings, compressing one or multiple layers, and saving the result as compressed SVG files or a zip file.

## Things you'll need

- A Figma project with layers or frames that can be exported as SVG.
- The TinyImage Compressor plugin installed in Figma.

## Steps

1. [ ] Install the TinyImage Compressor Figma plugin from the Figma icon search.
2. [ ] In your Figma file, add SVG export settings to the frames or layers you want TinyImage to detect.
3. [ ] Run TinyImage from the right-click Plugins menu or from the TinyImage icon in the sidebar after it has been used once.
4. [ ] Select the SVG layers in TinyImage, adjust the global compression quality or override quality per layer, then click Compress.
5. [ ] Click Save to export the compressed SVG files.
6. [ ] When exporting multiple images, open the zip file to access the compressed SVGs and use the configured file naming format if needed.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=LHaPsRtY71s)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-compress-svg-images-in-figma-using-tiny-image)
- [Read: Compressing your Figma image exports](/tinyimage/compress)
- [Next: Export WebP images](/tinyimage/tutorials/export-webp-images)
- [Open TinyImage in the Figma Community](https://www.figma.com/community/plugin/789009980664807964)

---

---
url: "/tinyimage/tutorials/create-animated-gifs.md"
description: "This tutorial shows how to export animated GIFs from Figma using the TinyImage Figma plugin. It covers installing the plugin, selecting layers as frames, adjusting playback and export settings, and saving the finished GIF."
---

# Create animated GIFs

> This tutorial shows how to export animated GIFs from Figma using the TinyImage Figma plugin. It covers installing the plugin, selecting layers as frames, adjusting playback and export settings, and saving the finished GIF.

[← Back to TinyImage Video Tutorials](/tinyimage/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/FYlk5a69Ewc)

## What this video covers

This tutorial shows how to export animated GIFs from Figma using the TinyImage Figma plugin. It covers installing the plugin, selecting layers as frames, adjusting playback and export settings, and saving the finished GIF.

## Things you'll need

- Figma
- TinyImage Figma plugin

## Steps

1. [ ] Install the TinyImage Figma plugin from the Figma Community by searching for "TinyImage" and clicking "Install" under the "Plugins" tab.
2. [ ] In your Figma file, run the plugin from right-click > "Plugins" > "TinyImage Compressor".
3. [ ] Click "Create a GIF", then select the layers you want to use as frames and click "Use Selected Layers".
4. [ ] Adjust the GIF preview and settings, including frame order, playback speed, individual frame timing, looping, sizing, scaling, background color, transparency, image quality, and dithering.
5. [ ] When the preview looks right, click "Export GIF".
6. [ ] Save the exported GIF to your computer.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=FYlk5a69Ewc)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-gi-fs-from-figma-layers-using-tiny-image)
- [Read: Creating animated GIFs from layers](/tinyimage/gif)
- [Next: Add transition effects to animated GIF exports in Figma](/tinyimage/tutorials/add-transition-effects-to-animated-gif-exports-in-figma)
- [Open TinyImage in the Figma Community](https://www.figma.com/community/plugin/789009980664807964)

---

---
url: "/tinyimage/tutorials/downsize-figma-image-fills-to-their-layer-size.md"
description: "This tutorial shows how to use the TinyImage Compressor Figma plugin’s Downsizer feature to shrink Figma image fills to match their layer size, with an option to keep 2x retina sharpness. It explains how downsizing and light compression can reduce file size, improve performance, and keep images looking sharp on the canvas."
---

# Downsize Figma image fills to their layer size

> This tutorial shows how to use the TinyImage Compressor Figma plugin’s Downsizer feature to shrink Figma image fills to match their layer size, with an option to keep 2x retina sharpness. It explains how downsizing and light compression can reduce file size, improve performance, and keep images looking sharp on the canvas.

[← Back to TinyImage Video Tutorials](/tinyimage/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/N-GtTpEZy_A)

## What this video covers

This tutorial shows how to use the TinyImage Compressor Figma plugin’s Downsizer feature to shrink Figma image fills to match their layer size, with an option to keep 2x retina sharpness. It explains how downsizing and light compression can reduce file size, improve performance, and keep images looking sharp on the canvas.

## Things you'll need

- Figma
- TinyImage Compressor installed from the Figma Community

## Steps

1. [ ] Go to the Figma Community, search for TinyImage, open the Plugins tab, and install TinyImage Compressor.
2. [ ] In your Figma file, right-click and open Plugins > TinyImage Compressor.
3. [ ] Open the **Downsize** tab to load the image fills on the page, then select the fills you want to optimize.
4. [ ] Use the scale selector to choose **@2x** for retina sharpness or **@1x** to match the Figma layer size.
5. [ ] Click **Downsize Figma Image Fills** to replace the selected fills with smaller versions.
6. [ ] Use the preview image icon to inspect which layer each fill belongs to if needed.
7. [ ] Review the reported savings in file size after the images are replaced.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=N-GtTpEZy_A)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-downsize-figma-image-fills-to-their-layer-size-using-tiny-image)
- [Read: Downsizing your Figma layer fills](/tinyimage/downsize)
- [Next: Bulk export original image files from any Figma layer fills](/tinyimage/tutorials/bulk-export-original-image-files-from-any-figma-layer-fills)
- [Open TinyImage in the Figma Community](https://www.figma.com/community/plugin/789009980664807964)

---

---
url: "/tinyimage/tutorials/edit-animated-gifs-directly-in-figma.md"
description: "Learn how to edit, combine, trim, transform, and export animated GIFs directly in Figma with TinyImage."
---

# Edit animated GIFs directly in Figma

> Learn how to edit, combine, trim, transform, and export animated GIFs directly in Figma with TinyImage.

[← Back to TinyImage Video Tutorials](/tinyimage/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/8fcC5R915oE)

## What this video covers

This tutorial shows how to load an existing animated GIF into TinyImage, edit its size, crop, playback, timing, loop, and compression settings, then insert it into Figma or export it. It also covers combining a GIF with static Figma layers, merging multiple GIFs in one frame, and exporting an edited GIF as an MP4 video.

## Things you'll need

- A Figma file containing an animated GIF layer, or an animated GIF file saved on your computer
- The TinyImage Figma plugin

## Steps

1. [ ] Open TinyImage in your Figma file, select the **GIF** tab, and open **GIF Editor**.
2. [ ] Load an animated GIF from a selected Figma layer or choose a GIF file from your computer.
3. [ ] Resize, rotate, flip, crop, trim, reverse, or retime the GIF, then choose its loop and compression settings.
4. [ ] Select **Insert GIF to Figma** to add the edited animation to the current page, or export it to your computer as an animated GIF or MP4 video.
5. [ ] To add static Figma content, place the GIF and other layers inside one frame, select the parent frame, and load it into **GIF Editor**.
6. [ ] To combine multiple GIFs, place them in the same frame with any other layers, then load and edit the parent frame.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=8fcC5R915oE)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-edit-animated-gifs-directly-in-figma-using-tinyimage)
- [Read: Edit an existing GIF or MP4](/tinyimage/gif-editing)
- [Next: Create animated GIFs](/tinyimage/tutorials/create-animated-gifs)
- [Open TinyImage in the Figma Community](https://www.figma.com/community/plugin/789009980664807964)

---

---
url: "/tinyimage/tutorials/export-animated-mp4-videos-from-figma.md"
description: "This tutorial shows how to use the TinyImage Figma plugin to turn selected Figma image layers into an animated MP4 Video. It covers running the plugin, adjusting frame timing and sizing, switching from GIF to MP4 Video, and exporting the finished file to your computer."
---

# Export animated MP4 videos from Figma

> This tutorial shows how to use the TinyImage Figma plugin to turn selected Figma image layers into an animated MP4 Video. It covers running the plugin, adjusting frame timing and sizing, switching from GIF to MP4 Video, and exporting the finished file to your computer.

[← Back to TinyImage Video Tutorials](/tinyimage/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/sCARTYdqIrQ)

## What this video covers

This tutorial shows how to use the TinyImage Figma plugin to turn selected Figma image layers into an animated MP4 Video. It covers running the plugin, adjusting frame timing and sizing, switching from GIF to MP4 Video, and exporting the finished file to your computer.

## Things you'll need

- Figma
- The TinyImage Figma plugin

## Steps

1. [ ] Open the Resources menu in Figma, search for TinyImage in the Plugins tab, and run or save the TinyImage Figma plugin.
2. [ ] Select the image layers you want to animate in your Figma design.
3. [ ] Open the **GIF** tab, then choose the **Create a GIF/MP4** subtab to generate the preview.
4. [ ] Adjust the frame delay, any per-frame overrides, and the size mode such as Cover or Contain, plus the export scale if needed.
5. [ ] Change the export format from GIF to MP4 Video.
6. [ ] Optionally reorder the frames by sorting or drag and drop.
7. [ ] Click Export MP4 and save the .mp4 file to your computer.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=sCARTYdqIrQ)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-animated-m-p4-videos-from-figma-using-tiny-image)
- [Read: Creating animated MP4 videos from layers](/tinyimage/video)
- [Next: Add audio to Figma animated MP4 video exports](/tinyimage/tutorials/add-audio-to-figma-animated-mp4-video-exports)
- [Open TinyImage in the Figma Community](https://www.figma.com/community/plugin/789009980664807964)

---

---
url: "/tinyimage/tutorials/export-animated-png-apng-images-from-figma.md"
description: "This tutorial shows how to use the TinyImage Figma plugin to export selected Figma layers as an animated PNG (APNG) instead of a GIF. It also demonstrates adjusting frame timing, scaling, transitions, transparency, and quality before exporting the file as a .png that animates like a GIF."
---

# Export animated PNG (APNG) images from Figma

> This tutorial shows how to use the TinyImage Figma plugin to export selected Figma layers as an animated PNG (APNG) instead of a GIF. It also demonstrates adjusting frame timing, scaling, transitions, transparency, and quality before exporting the file as a .png that animates like a GIF.

[← Back to TinyImage Video Tutorials](/tinyimage/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/_XHr54EMOaU)

## What this video covers

This tutorial shows how to use the TinyImage Figma plugin to export selected Figma layers as an animated PNG (APNG) instead of a GIF. It also demonstrates adjusting frame timing, scaling, transitions, transparency, and quality before exporting the file as a .png that animates like a GIF.

## Things you'll need

- A Figma file with layers selected for export
- The TinyImage Figma plugin

## Steps

1. [ ] Open your Figma file, find TinyImage from the Actions menu, and save it to your plugins list if you want easier access later.
2. [ ] Run TinyImage from right-click > Plugins > Saved plugins > TinyImage.
3. [ ] Select the Figma layers you want to animate.
4. [ ] Open the **GIF** tab, choose the **Create a GIF/MP4** subtab, and change the format from animated GIF to animated PNG.
5. [ ] Adjust the animation settings such as frame timing, scaling, transitions, transparency, and quality as needed.
6. [ ] Click "Export APNG" and save the exported file to your computer as a .png.
7. [ ] Open the saved file to verify that it plays as an animated PNG.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=_XHr54EMOaU)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-animated-png-apng-files-from-figma-using-tinyimage)
- [Read: Creating animated PNG (APNG) images from layers](/tinyimage/apng)
- [Next: Export animated WebP images from Figma](/tinyimage/tutorials/export-animated-webp-images-from-figma)
- [Open TinyImage in the Figma Community](https://www.figma.com/community/plugin/789009980664807964)

---

---
url: "/tinyimage/tutorials/export-animated-webp-images-from-figma.md"
description: "This tutorial shows how to use the TinyImage Figma plugin to create an animation from selected Figma layers and export it as an Animated WebP file. It also demonstrates adjusting playback settings like delay, size, and quality before saving and viewing the final WebP in a browser."
---

# Export animated WebP images from Figma

> This tutorial shows how to use the TinyImage Figma plugin to create an animation from selected Figma layers and export it as an Animated WebP file. It also demonstrates adjusting playback settings like delay, size, and quality before saving and viewing the final WebP in a browser.

[← Back to TinyImage Video Tutorials](/tinyimage/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/e8EfMxu0oog)

## What this video covers

This tutorial shows how to use the TinyImage Figma plugin to create an animation from selected Figma layers and export it as an Animated WebP file. It also demonstrates adjusting playback settings like delay, size, and quality before saving and viewing the final WebP in a browser.

## Things you'll need

- Figma
- TinyImage Figma plugin

## Steps

1. [ ] Open Figma, go to the Resources icon, search for TinyImage, and run the TinyImage compressor plugin or add it to Saved plugins.
2. [ ] Open TinyImage from Plugins > Saved plugins, then select the image layers you want to include in the animation.
3. [ ] Open the **GIF** tab, choose the **Create a GIF/MP4** subtab, and review the animation settings such as frame order, duration, per-frame overrides, size, and quality.
4. [ ] Change the export format from Animated GIF to Animated WebP.
5. [ ] Click Export WebP, then save the file when prompted.
6. [ ] Open a browser and drag the saved WebP file in to view the animated image.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=e8EfMxu0oog)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-animated-web-p-images-from-figma-using-tiny-image)
- [Read: Creating animated WebP images from layers](/tinyimage/animated-webp)
- [Next: Export animated MP4 videos from Figma](/tinyimage/tutorials/export-animated-mp4-videos-from-figma)
- [Open TinyImage in the Figma Community](https://www.figma.com/community/plugin/789009980664807964)

---

---
url: "/tinyimage/tutorials/export-avif-images.md"
description: "This tutorial shows how to install the TinyImage Compressor Figma plugin and use it to convert JPG layers in Figma to AVIF. It also demonstrates adjusting export quality, applying per-image overrides, and exporting the converted files as a zip for use on the web."
---

# Export AVIF images

> This tutorial shows how to install the TinyImage Compressor Figma plugin and use it to convert JPG layers in Figma to AVIF. It also demonstrates adjusting export quality, applying per-image overrides, and exporting the converted files as a zip for use on the web.

[← Back to TinyImage Video Tutorials](/tinyimage/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/r4cfVy9H1ac)

## What this video covers

This tutorial shows how to install the TinyImage Compressor Figma plugin and use it to convert JPG layers in Figma to AVIF. It also demonstrates adjusting export quality, applying per-image overrides, and exporting the converted files as a zip for use on the web.

## Things you'll need

- Figma installed
- TinyImage Compressor installed
- Images or layers with export settings set in Figma

## Steps

1. [ ] Open Figma Community, search for TinyImage, and install the TinyImage Compressor plugin.
2. [ ] In your Figma file, make sure the images you want to export have export settings in the Export section.
3. [ ] Right-click the selection, go to Plugins, and open TinyImage Compressor.
4. [ ] Select **Settings**, use the **Images** tab in **Export Settings**, then choose Image Conversion and select Convert JPG to AVIF.
5. [ ] Set quality values or per-image overrides if needed, then select the images you want to export.
6. [ ] Click Compress Selected to convert and export the images as AVIF files, then save the result as a zip.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=r4cfVy9H1ac)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-avif-images-from-figma-using-tiny-image)
- [Read: Converting images to other image formats](/tinyimage/settings/convert)
- [Next: Export Progressive JPEG images](/tinyimage/tutorials/export-progressive-jpeg-images)
- [Open TinyImage in the Figma Community](https://www.figma.com/community/plugin/789009980664807964)

---

---
url: "/tinyimage/tutorials/export-compressed-pdfs-in-cmyk.md"
description: "The tutorial shows how to use the TinyImage Compressor Figma plugin to export PDF files from Figma in RGB, CMYK, or Grayscale, with compression for smaller file sizes. It also shows how to create a merged PDF from multiple top-level frames and how to adjust PDF color profile and DPI settings."
---

# Export compressed PDFs in CMYK

> The tutorial shows how to use the TinyImage Compressor Figma plugin to export PDF files from Figma in RGB, CMYK, or Grayscale, with compression for smaller file sizes. It also shows how to create a merged PDF from multiple top-level frames and how to adjust PDF color profile and DPI settings.

[← Back to TinyImage Video Tutorials](/tinyimage/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/YUjWSBkl24A)

## What this video covers

The tutorial shows how to use the TinyImage Compressor Figma plugin to export PDF files from Figma in RGB, CMYK, or Grayscale, with compression for smaller file sizes. It also shows how to create a merged PDF from multiple top-level frames and how to adjust PDF color profile and DPI settings.

## Things you'll need

- Figma
- TinyImage Compressor plugin

## Steps

1. [ ] Install the TinyImage Compressor plugin from Figma Community or Plugins.
2. [ ] Run TinyImage Compressor on your Figma file and make sure your frames have PDF export settings in the right-hand Export section.
3. [ ] Open the **PDF** tab and select **Settings**. In the **PDF** tab of **Export Settings**, choose a color profile such as RGB, CMYK (For Print), or Grayscale and set the DPI if needed.
4. [ ] Close the settings panel, choose the top-level frames you want to include, and arrange their order if needed.
5. [ ] Click **Export PDF** and save the combined file.
6. [ ] If you have vector paths with gradient fills, enable gradient fills for vector paths in the **PDF** settings tab before exporting.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=YUjWSBkl24A)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-compressed-pd-fs-in-cmyk-from-figma)
- [Read: Create print-ready pages in Figma](/tinyimage/pdf-print)
- [Next: Add Bleed and Crop Marks to PDF exports from Figma](/tinyimage/tutorials/add-bleed-and-crop-marks-to-pdf-exports-from-figma)
- [Open TinyImage in the Figma Community](https://www.figma.com/community/plugin/789009980664807964)

---

---
url: "/tinyimage/tutorials/export-images-with-custom-folder-path-names-from-figma.md"
description: "This tutorial shows how to use the TinyImage Figma plugin to export image layers as compressed images with customizable folder paths and file names. It demonstrates adding dynamic variables like section, frame, format, width, height, date, scale, and suffix, plus mixing in static text to organize exported assets."
---

# Export images with custom folder path names from Figma

> This tutorial shows how to use the TinyImage Figma plugin to export image layers as compressed images with customizable folder paths and file names. It demonstrates adding dynamic variables like section, frame, format, width, height, date, scale, and suffix, plus mixing in static text to organize exported assets.

[← Back to TinyImage Video Tutorials](/tinyimage/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/OyclTDvvo64)

## What this video covers

This tutorial shows how to use the TinyImage Figma plugin to export image layers as compressed images with customizable folder paths and file names. It demonstrates adding dynamic variables like section, frame, format, width, height, date, scale, and suffix, plus mixing in static text to organize exported assets.

## Things you'll need

- A Figma file with image layers selected for export
- The TinyImage Figma plugin installed or saved in Figma

## Steps

1. [ ] Open the Figma file, find TinyImage from the actions menu, and save or run the plugin.
2. [ ] Select the image layers you want to export and add export settings on the right-hand panel, including formats and scales if needed.
3. [ ] Refresh TinyImage so the exportable assets appear in the plugin.
4. [ ] Select **Settings**, choose the **Naming** tab in **Export Settings**, then edit the Custom File Name Format field.
5. [ ] Insert dynamic variables such as section, frame, format, width, height, scale, date, or suffix, and use slashes to turn them into folders.
6. [ ] Optionally add static text, such as images or assets, to mix manual labels with dynamic variables.
7. [ ] Export the assets, unzip the file, and check that the folders and file names match the custom path format.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=OyclTDvvo64)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-images-with-custom-folder-paths-from-figma-using-tinyimage)
- [Read: Setting custom filename/subfolder naming format](/tinyimage/settings/naming)
- [Next: Export Progressive JPEG images](/tinyimage/tutorials/export-progressive-jpeg-images)
- [Open TinyImage in the Figma Community](https://www.figma.com/community/plugin/789009980664807964)

---

---
url: "/tinyimage/tutorials/export-pngs-with-custom-icc-color-space-profiles-from-figma.md"
description: "This video shows how to use the TinyImage Figma plugin to export PNGs from Figma with an embedded custom ICC color space profile. It walks through selecting a PNG color profile such as P3, choosing ICC version 4 or 2, and exporting files for comparison with standard Figma exports."
---

# Export PNGs with custom ICC color space profiles from Figma

> This video shows how to use the TinyImage Figma plugin to export PNGs from Figma with an embedded custom ICC color space profile. It walks through selecting a PNG color profile such as P3, choosing ICC version 4 or 2, and exporting files for comparison with standard Figma exports.

[← Back to TinyImage Video Tutorials](/tinyimage/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/HJ2D-Rk-MmI)

## What this video covers

This video shows how to use the TinyImage Figma plugin to export PNGs from Figma with an embedded custom ICC color space profile. It walks through selecting a PNG color profile such as P3, choosing ICC version 4 or 2, and exporting files for comparison with standard Figma exports.

## Things you'll need

- Figma
- The TinyImage Figma plugin
- Figma layers already set up with PNG export settings

## Steps

1. [ ] Open Figma Resources, search for TinyImage, and run it or save it as a plugin.
2. [ ] Select the Figma layers you want to export and add PNG export settings in the right sidebar.
3. [ ] Open TinyImage and click Refresh to load the PNG export settings from Figma.
4. [ ] Select **Settings**, use the **Images** tab in **Export Settings**, and change PNG Color Profile from Figma to the desired profile, such as a Display P3 option.
5. [ ] Leave ICC version 4 enabled or switch to ICC version 2 if needed.
6. [ ] Close Settings and click Export to create PNGs with the embedded ICC profile.
7. [ ] Compare the TinyImage-exported PNGs with regular Figma exports to see the color space difference.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=HJ2D-Rk-MmI)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-pn-gs-with-custom-color-space-profiles-from-figma-using-tiny-image)
- [Read: Setting custom ICC color profile for PNG exports](/tinyimage/settings/profiles)
- [Next: Export images with custom folder path names from Figma](/tinyimage/tutorials/export-images-with-custom-folder-path-names-from-figma)
- [Open TinyImage in the Figma Community](https://www.figma.com/community/plugin/789009980664807964)

---

---
url: "/tinyimage/tutorials/export-progressive-jpeg-images.md"
description: "This tutorial shows how to export progressive JPEGs directly from Figma using the TinyImage Compressor plugin. It covers installing the plugin, setting JPG export options on layers, enabling Use Progressive JPEG Compression, and verifying the exported files with a progressive JPEG test page."
---

# Export Progressive JPEG images

> This tutorial shows how to export progressive JPEGs directly from Figma using the TinyImage Compressor plugin. It covers installing the plugin, setting JPG export options on layers, enabling Use Progressive JPEG Compression, and verifying the exported files with a progressive JPEG test page.

[← Back to TinyImage Video Tutorials](/tinyimage/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/eG3-iG-7KyE)

## What this video covers

This tutorial shows how to export progressive JPEGs directly from Figma using the TinyImage Compressor plugin. It covers installing the plugin, setting JPG export options on layers, enabling Use Progressive JPEG Compression, and verifying the exported files with a progressive JPEG test page.

## Things you'll need

- A Figma file with image layers selected for export.
- The TinyImage Compressor plugin installed in Figma.

## Steps

1. [ ] Install TinyImage Compressor from the Figma Plugins tab.
2. [ ] Open the plugin in your project from the Plugins menu or the Figma sidebar.
3. [ ] Add export settings to the image layers you want to export, and change the export format from PNG or SVG to JPG.
4. [ ] Select **Settings**, use the **Images** tab in **Export Settings**, then turn on Use Progressive JPEG Compression.
5. [ ] Click Compress, then Save the exported ZIP file.
6. [ ] Open the ZIP and confirm the output images are progressive JPEGs using a progressive JPEG test page.
7. [ ] Adjust the quality slider and repeat the export if you want a different size and quality balance.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=eG3-iG-7KyE)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-progressive-jpeg-images-from-figma-using-tiny-image)
- [Read: Compressing your Figma image exports](/tinyimage/compress)
- [Next: Export AVIF images](/tinyimage/tutorials/export-avif-images)
- [Open TinyImage in the Figma Community](https://www.figma.com/community/plugin/789009980664807964)

---

---
url: "/tinyimage/tutorials/export-webm-videos-from-your-figma-layers.md"
description: "The video shows how to use the TinyImage Compressor Figma plugin to turn selected Figma layers into an animated export and save it as a WebM video. It also demonstrates how to reorder frames, adjust timing and export settings, then preview the WebM in a web browser."
---

# Export WebM videos from your Figma layers

> The video shows how to use the TinyImage Compressor Figma plugin to turn selected Figma layers into an animated export and save it as a WebM video. It also demonstrates how to reorder frames, adjust timing and export settings, then preview the WebM in a web browser.

[← Back to TinyImage Video Tutorials](/tinyimage/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/XBIx2895HZg)

## What this video covers

The video shows how to use the TinyImage Compressor Figma plugin to turn selected Figma layers into an animated export and save it as a WebM video. It also demonstrates how to reorder frames, adjust timing and export settings, then preview the WebM in a web browser.

## Things you'll need

- Figma
- The TinyImage Compressor plugin installed

## Steps

1. [ ] Install TinyImage Compressor from the Figma Community and open it from Plugins in your Figma file.
2. [ ] Click "Create a GIF" and select the Figma layers you want to use as animation frames, then click "Use Selected Layers".
3. [ ] Reorder the frames by dragging them or by using the sorting menu, such as visual order or layer name.
4. [ ] Adjust playback settings such as frame delay, loop count, size or scale, background options, fit mode, image quality, and dithering.
5. [ ] Click "Export WebM" to generate the video file and save it when prompted.
6. [ ] Open the saved WebM file in a web browser to verify the animation playback.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=XBIx2895HZg)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-web-m-videos-from-your-figma-layers-using-tiny-image)
- [Read: Creating WebM videos from layers](/tinyimage/webm)
- [Next: Export animated PNG (APNG) images from Figma](/tinyimage/tutorials/export-animated-png-apng-images-from-figma)
- [Open TinyImage in the Figma Community](https://www.figma.com/community/plugin/789009980664807964)

---

---
url: "/tinyimage/tutorials/export-webp-images.md"
description: "This tutorial shows how to use the TinyImage Compressor Figma plugin to export images as Google's WebP format from Figma. It explains how TinyImage uses Figma export settings, how to enable the WebP conversion option, and how to compare the results against normal JPG and PNG exports."
---

# Export WebP images

> This tutorial shows how to use the TinyImage Compressor Figma plugin to export images as Google's WebP format from Figma. It explains how TinyImage uses Figma export settings, how to enable the WebP conversion option, and how to compare the results against normal JPG and PNG exports.

[← Back to TinyImage Video Tutorials](/tinyimage/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/khpzcbBWqHk)

## What this video covers

This tutorial shows how to use the TinyImage Compressor Figma plugin to export images as Google's WebP format from Figma. It explains how TinyImage uses Figma export settings, how to enable the WebP conversion option, and how to compare the results against normal JPG and PNG exports.

## Things you'll need

- Figma installed
- TinyImage Compressor plugin installed

## Steps

1. [ ] Open Figma, search for TinyImage in the Plugins tab, and install TinyImage Compressor if needed.
2. [ ] Return to your file and run TinyImage Compressor from right click > plugins > TinyImage Compressor, or reopen it from the TinyImage icon.
3. [ ] Select each image or layer and set its export format in Figma's right sidebar, using PNG for transparent artwork and JPG for photos.
4. [ ] Open the **Compress** tab, select **Settings**, then use the **Images** tab in **Export Settings** to choose **JPG and PNG to WebP** under Image Conversion.
5. [ ] Close the settings panel, choose the images and quality you want, and click **Export**.
6. [ ] Download or open the resulting files to verify that the exports are now WebP images, including transparency where the original export was PNG.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=khpzcbBWqHk)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-export-web-p-images-from-figma-using-tiny-image)
- [Read: Converting images to other image formats](/tinyimage/settings/convert)
- [Next: Export PNGs with custom ICC color space profiles from Figma](/tinyimage/tutorials/export-pngs-with-custom-icc-color-space-profiles-from-figma)
- [Open TinyImage in the Figma Community](https://www.figma.com/community/plugin/789009980664807964)

---

---
url: "/tinyimage/tutorials/how-to-compress-pdf-files-in-figma-using-tinyimage.md"
description: "The video shows how to use the TinyImage plugin in Figma to compress PDF exports, both for individual frames and for multiple frames merged into a single PDF. It also demonstrates choosing PDF quality settings like 72dpi, 150dpi, and 300dpi, then comparing the resulting file sizes against Figma’s native exports."
---

# How to compress PDF files in Figma using TinyImage

> The video shows how to use the TinyImage plugin in Figma to compress PDF exports, both for individual frames and for multiple frames merged into a single PDF. It also demonstrates choosing PDF quality settings like 72dpi, 150dpi, and 300dpi, then comparing the resulting file sizes against Figma’s native exports.

[← Back to TinyImage Video Tutorials](/tinyimage/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/bZpxfMcZuM4)

## What this video covers

The video shows how to use the TinyImage plugin in Figma to compress PDF exports, both for individual frames and for multiple frames merged into a single PDF. It also demonstrates choosing PDF quality settings like 72dpi, 150dpi, and 300dpi, then comparing the resulting file sizes against Figma’s native exports.

## Things you'll need

- Figma
- TinyImage plugin

## Steps

1. [ ] Install TinyImage from Figma Community if it is not already installed.
2. [ ] Open your Figma file, then run TinyImage from right click > Plugins > TinyImage Compressor.
3. [ ] Add PDF export settings to the frames you want in Figma’s right sidebar, then refresh TinyImage so it detects them.
4. [ ] Choose a PDF quality setting such as 72dpi, 150dpi, or 300dpi, then click Compress to export compressed PDFs.
5. [ ] For a single merged PDF, use TinyImage’s all frames to single PDF option and export the frames in the left sidebar order.
6. [ ] If needed, use TinyImage's page-order menu to sort the frames by visual position, layer order, or frame name, or drag the numbered previews into a custom order.
7. [ ] Open the saved zip file to access the compressed PDF exports and compare the reduced file sizes.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=bZpxfMcZuM4)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-compress-pdf-files-in-figma-using-tiny-image)
- [Read: Merging Figma Frames into a PDF](/tinyimage/pdf)
- [Next: Merge frames into a compressed PDF](/tinyimage/tutorials/merge-frames-to-a-compressed-pdf)
- [Open TinyImage in the Figma Community](https://www.figma.com/community/plugin/789009980664807964)

---

---
url: "/tinyimage/tutorials/how-to-create-animated-gif-files-in-figma-using-tinyimage.md"
description: "The video shows how to use the TinyImage Figma plugin to create and export animated GIFs from selected Figma layers. It also demonstrates adjusting timing, looping, size, image fit, transparency, background color, and dithering before exporting."
---

# How to create animated GIF files in Figma using TinyImage

> The video shows how to use the TinyImage Figma plugin to create and export animated GIFs from selected Figma layers. It also demonstrates adjusting timing, looping, size, image fit, transparency, background color, and dithering before exporting.

[← Back to TinyImage Video Tutorials](/tinyimage/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/JzYTVv5Cf94)

## What this video covers

The video shows how to use the TinyImage Figma plugin to create and export animated GIFs from selected Figma layers. It also demonstrates adjusting timing, looping, size, image fit, transparency, background color, and dithering before exporting.

## Things you'll need

- Figma
- The TinyImage Figma plugin

## Steps

1. [ ] Install TinyImage from Figma community plugins if needed, then open it from Plugins > TinyImage Compressor.
2. [ ] Make sure the layers you want to animate have at least one export setting such as JPG, PNG, or SVG so they appear in TinyImage.
3. [ ] Select the image or SVG exports you want to use as frames, open the **GIF** tab, then choose the **Create a GIF/MP4** subtab.
4. [ ] Adjust the GIF settings such as quality, time per frame, playback count, image fit, size, transparency, background color, and dithering.
5. [ ] Use Update Preview to refresh the animation and check the result.
6. [ ] When the preview looks right, click Export to GIF and save the animated file.
7. [ ] Repeat the process with different selected layers or settings if you want another GIF.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=JzYTVv5Cf94)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-create-animated-gif-files-in-figma-using-tiny-image)
- [Read: Creating animated GIFs from layers](/tinyimage/gif)
- [Next: Create animated GIFs](/tinyimage/tutorials/create-animated-gifs)
- [Open TinyImage in the Figma Community](https://www.figma.com/community/plugin/789009980664807964)

---

---
url: "/tinyimage/tutorials/how-to-create-print-ready-frames-and-export-cmyk-pdfs-using-tiny-image.md"
description: "Create print-ready Figma frames with safe areas, bleed, crop marks, and optional fold guides, then export production-ready CMYK PDFs with TinyImage."
---

# Create Print-Ready Frames and Export CMYK PDFs

> Create print-ready Figma frames with safe areas, bleed, crop marks, and optional fold guides, then export production-ready CMYK PDFs with TinyImage.

[← Back to Video Tutorials](/tinyimage/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/1siseu1wh7c)

## What this video covers

Create print-ready Figma frames with safe areas, bleed, crop marks, and optional fold guides, then export production-ready CMYK PDFs with TinyImage.

## Things you'll need

- A Figma Design file for your print artwork
- The TinyImage Figma plugin

## Steps

1. Open TinyImage in your Figma Design file and select the **Print** workspace.
2. Choose a print-size preset, orientation, page count, units, and DPI.
3. Configure the safe area, bleed, crop marks, and optional fold guides for your printer's requirements.
4. Create the print frames, then keep important content inside the safe area and extend background artwork through the bleed.
5. Select the finished top-level frames and open **Export PDF for Print**.
6. Choose the PDF colour profile, press profile, rendering intent, and whether to export one merged PDF or separate files.
7. Export the CMYK PDF and check its page order, bleed, and crop marks before sending it to print.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=1siseu1wh7c)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-create-print-ready-frames-and-export-cmyk-pdfs-using-tiny-image)
- [Read: Create print-ready pages in Figma](/tinyimage/pdf-print)
- [Next: Browse more video tutorials](/tinyimage/tutorials)
- [Open the plugin in Figma](https://www.figma.com/community/plugin/789009980664807964)

---

---
url: "/tinyimage/tutorials/how-to-edit-images-in-figma-crop-retouch-filters-effects-using-tiny-image.md"
description: "Learn to crop, colour-correct and retouch images in Figma, apply filters and effects, compare edits, save projects and apply a shared look to multiple image layers."
---

# Edit Images in Figma (Crop, Retouch, Filters & Effects)

> Learn to crop, colour-correct and retouch images in Figma, apply filters and effects, compare edits, save projects and apply a shared look to multiple image layers.

[← Back to Video Tutorials](/tinyimage/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/M5Q4bgZ3Yqc)

## What this video covers

Learn to crop, colour-correct and retouch images in Figma, apply filters and effects, compare edits, save projects and apply a shared look to multiple image layers.

## Things you'll need

- A Figma Design file with image layers to edit
- TinyImage installed in Figma

## Steps

1. Run TinyImage and open the Editor tab.
2. Select an image layer and choose Use selected Figma layer, or open an image from your computer.
3. Adjust exposure, contrast, colour temperature, saturation and curves; use Undo, Redo or History to revisit edits.
4. Hold Before or enable Compare to check the original against your edits.
5. Choose a filter, then add effects such as blur or film grain. Adjust, reorder or remove effects as needed.
6. Insert a new image, replace the existing fill or download the edited image to your computer.
7. Save a project, then reopen it to continue with the original image and editing settings.
8. Select multiple image layers and open Batch edit to preview the shared settings, then insert, replace or download the selected results.
9. Use Crop to adjust the framing, rotate or flip the image, then apply the crop.
10. For a small touch-up, choose Content-aware fill in Retouch, brush over the unwanted detail and choose Apply fill.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=M5Q4bgZ3Yqc)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-edit-images-in-figma-crop-retouch-filters-effects-using-tiny-image)
- [Read: Edit Images in Figma (Crop, Retouch, Filters & Effects)](/tinyimage/editor)
- [Next: Batch editing and export](/tinyimage/editor-export)
- [Open the plugin in Figma](https://www.figma.com/community/plugin/789009980664807964)

---

---
url: "/tinyimage/tutorials/how-to-install-and-uninstall-figma-plugins.md"
description: "This video shows how to install, run, and uninstall Figma plugins in the new Figma UI3 Actions menu. It also demonstrates saving plugins directly from the Figma Community and managing saved plugins from either the Actions panel or the Community page."
---

# How to install and uninstall Figma plugins

> This video shows how to install, run, and uninstall Figma plugins in the new Figma UI3 Actions menu. It also demonstrates saving plugins directly from the Figma Community and managing saved plugins from either the Actions panel or the Community page.

[← Back to TinyImage Video Tutorials](/tinyimage/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/CzjxF2Jv6PM)

## What this video covers

This video shows how to install, run, and uninstall Figma plugins in the new Figma UI3 Actions menu. It also demonstrates saving plugins directly from the Figma Community and managing saved plugins from either the Actions panel or the Community page.

## Things you'll need

- A Figma file open in the browser or Figma desktop app

## Steps

1. [ ] Open a Figma file in the browser or the Figma desktop app.
2. [ ] Click Actions in the bottom toolbar, then open the Plugins & widgets tab.
3. [ ] Search for a plugin by name, open its result, and click Save to add it to your Figma plugins list.
4. [ ] To run it, right-click on the canvas, go to Plugins, and select the plugin under Saved plugins.
5. [ ] To remove it from the Actions panel, open Plugins & widgets, click the three dots next to the saved plugin, and choose Remove.
6. [ ] To install from Figma Community, open the plugin’s Community page and click the bookmark Save icon.
7. [ ] To uninstall from Figma Community, click the bookmark icon again to Remove from saves.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=CzjxF2Jv6PM)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-install-and-uninstall-figma-plugins)
- [Read: Install and run the TinyImage Figma Plugin](/tinyimage/overview/install)
- [Next: Start with TinyImage](/tinyimage/overview/quickstart)
- [Open TinyImage in the Figma Community](https://www.figma.com/community/plugin/789009980664807964)

---

---
url: "/tinyimage/tutorials/how-to-remove-image-backgrounds-in-figma-100-local-ai-using-tiny-image.md"
description: "Remove image backgrounds in Figma with 100% local AI, then insert a transparent cutout, replace the fill or download a PNG."
---

# Remove image backgrounds in Figma (100% local AI)

> Remove image backgrounds in Figma with 100% local AI, then insert a transparent cutout, replace the fill or download a PNG.

[← Back to Video Tutorials](/tinyimage/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/2JY3dlDzYNs)

## What this video covers

Remove image backgrounds in Figma with 100% local AI, then insert a transparent cutout, replace the fill or download a PNG.

## Things you'll need

- A Figma file with an image layer, or an image on your computer
- TinyImage available from Figma’s Plugins tab

## Steps

1. Open your Figma file, search for TinyImage in Actions and run the plugin.
2. Choose the Editor tab. Select an image layer and choose Use selected Figma layer, or choose Open image from computer.
3. Choose Local AI in the tool sidebar, then select the Remove background tab.
4. Click Remove background. On first use, wait for the approximately 99 MB model to download and for processing to finish.
5. Inspect the transparent preview, including hair, thin edges and any remaining background.
6. Choose Insert image to add a new layer, Replace fill to update the existing image fill, or Download to save a PNG.
7. For another image, select its layer and choose Use selected Figma layer. Confirm discarding the previous edits when prompted; the model is reused during the same plugin session.

The video shows manually cropping empty space after insertion. The current plugin automatically trims fully transparent outer borders when you insert or download a cutout; replacing a fill preserves the full image dimensions.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=2JY3dlDzYNs)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-remove-image-backgrounds-in-figma-100-local-ai-using-tiny-image)
- [Read: Remove background guide](/tinyimage/editor-background)
- [Next: Insert, replace or download images](/tinyimage/editor-export)
- [Open the plugin in Figma](https://www.figma.com/community/plugin/789009980664807964)

---

---
url: "/tinyimage/tutorials/how-to-tidy-and-rename-layers-automatically-using-tiny-image.md"
description: "Arrange Figma layers into a grid, rename them with sequential numbers or custom patterns, update page numbers, and match layer order to the canvas using TinyImage."
---

# tidy and Rename Layers Automatically

> Arrange Figma layers into a grid, rename them with sequential numbers or custom patterns, update page numbers, and match layer order to the canvas using TinyImage.

[← Back to Video Tutorials](/tinyimage/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/zXv4KhSr9qY)

## What this video covers

Arrange Figma layers into a grid, rename them with sequential numbers or custom patterns, update page numbers, and match layer order to the canvas using TinyImage.

## Things you'll need

- TinyImage available from the Figma Actions menu or saved plugins.
- A Figma file containing the frames or layers you want to organize.

## Steps

1. Run TinyImage and open the Tidy tab.
2. Select the layers, enable Grid alignment in Actions, and click Tidy Layers.
3. In Preferences, adjust horizontal and vertical spacing and choose Auto, Rows or Columns, then run Tidy again.
4. Enable Renaming and set the starting frame number in Preferences.
5. Choose Replace for numbered names or Custom pattern to combine variables such as {n}, {total} and {name}, then click Tidy Layers.
6. To add page numbers, name the relevant text layers {current}, enable Presentation pager, and run Tidy on the selected frames.
7. Enable Layer order and click Tidy Layers to match the Layers panel order to the visual order on the canvas.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=zXv4KhSr9qY)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-tidy-and-rename-layers-automatically-using-tiny-image)
- [Read: tidy and Rename Layers Automatically](/tinyimage/tidy)
- [Next: Export Figma frames to PDF](/tinyimage/pdf-export)
- [Open the plugin in Figma](https://www.figma.com/community/plugin/789009980664807964)

---

---
url: "/tinyimage/tutorials/how-to-upscale-images-boost-resolution-100-local-ai-using-tiny-image.md"
description: "Upscale images at 2× or 4× in Figma with 100% local AI, compare the results, then insert, replace or download the enhanced image."
---

# Upscale images and boost resolution in Figma (100% local AI)

> Upscale images at 2× or 4× in Figma with 100% local AI, compare the results, then insert, replace or download the enhanced image.

[← Back to Video Tutorials](/tinyimage/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/HDDAcM6YYhA)

## What this video covers

Upscale images at 2× or 4× in Figma with 100% local AI, compare the results, then insert, replace or download the enhanced image.

## Things you'll need

- A Figma file containing an image layer or image fill
- TinyImage available from Figma’s Plugins tab

## Steps

1. Open your Figma file, search for TinyImage in Actions and run the plugin. You can save it to your plugins list for later.
2. Choose the Editor tab. Select the image layer you want to enhance and click Use selected Figma layer.
3. Choose Local AI in the left sidebar, then select Boost resolution.
4. Choose 2× resolution or 4× resolution. Zoom in to inspect the original pixelated edges before processing.
5. Click Boost resolution. On first use, wait for the approximately 5 MB model to download and for local upscaling to finish. The model is reused for other images in the same plugin session.
6. Click Insert image to add a new layer. Place it beside the original and zoom in to compare edges and detail.
7. Alternatively, select the original layer and choose Replace fill, or choose JPEG and Download to save the enhanced image to your computer.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=HDDAcM6YYhA)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-upscale-images-boost-resolution-100-local-ai-using-tiny-image)
- [Read: Boost resolution guide](/tinyimage/editor-upscale)
- [Next: Insert, replace or download images](/tinyimage/editor-export)
- [Open the plugin in Figma](https://www.figma.com/community/plugin/789009980664807964)

---

---
url: "/tinyimage/tutorials/merge-frames-to-a-compressed-pdf.md"
description: "This video shows how to use the TinyImage Figma plugin to merge visible top-level frames into a single compressed PDF. It also demonstrates sorting options, frame selection, and PDF quality settings such as 300 dpi, 150 dpi, and 72 dpi."
---

# Merge frames to a compressed PDF

> This video shows how to use the TinyImage Figma plugin to merge visible top-level frames into a single compressed PDF. It also demonstrates sorting options, frame selection, and PDF quality settings such as 300 dpi, 150 dpi, and 72 dpi.

[← Back to TinyImage Video Tutorials](/tinyimage/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/P5PJhwtYrkM)

## What this video covers

This video shows how to use the TinyImage Figma plugin to merge visible top-level frames into a single compressed PDF. It also demonstrates sorting options, frame selection, and PDF quality settings such as 300 dpi, 150 dpi, and 72 dpi.

## Things you'll need

- Figma
- TinyImage Figma plugin

## Steps

1. [ ] Install the TinyImage Figma plugin from Figma Community > Plugins, then open your file and launch TinyImage Compressor from Plugins.
2. [ ] Click Create a PDF to open the PDF export panel and review the top-level frames detected in the file.
3. [ ] Choose how the frames should be ordered using Sort by Drag & Drop, layer order, reverse layer order, left to right, right to left, top to bottom, or bottom to top.
4. [ ] Select or deselect frames to control which frames are included in the merged PDF.
5. [ ] Set **Image DPI** to 300 DPI, 150 DPI, or 72 DPI depending on the desired balance of quality and compression.
6. [ ] Click Export Frames to Merged PDF to generate the compressed PDF and save the output file.
7. [ ] Open the exported PDF to verify the frame order and compression result.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=P5PJhwtYrkM)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-merge-frames-to-a-compressed-pdf-from-figma-using-tiny-image)
- [Read: Merging Figma Frames into a PDF](/tinyimage/pdf)
- [Next: Export compressed PDFs in CMYK](/tinyimage/tutorials/export-compressed-pdfs-in-cmyk)
- [Open TinyImage in the Figma Community](https://www.figma.com/community/plugin/789009980664807964)

---

---
url: "/tinyimage/tutorials/password-protect-pdf-exports.md"
description: "The video shows how to use the TinyImage Compressor Figma plugin to export PDFs from Figma with password protection. It covers exporting individual PDF files or merging multiple frames into a single password-protected PDF."
---

# Password protect PDF exports

> The video shows how to use the TinyImage Compressor Figma plugin to export PDFs from Figma with password protection. It covers exporting individual PDF files or merging multiple frames into a single password-protected PDF.

[← Back to TinyImage Video Tutorials](/tinyimage/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/RZGcAW-eIVw)

## What this video covers

The video shows how to use the TinyImage Compressor Figma plugin to export PDFs from Figma with password protection. It covers exporting individual PDF files or merging multiple frames into a single password-protected PDF.

## Things you'll need

- Figma installed
- TinyImage Compressor plugin installed
- A Figma file with frames or layers that have PDF export settings

## Steps

1. [ ] Install the TinyImage Compressor plugin from Figma Community or Plugins.
2. [ ] Run the plugin from the right-click Plugins menu or the TinyImage icon.
3. [ ] Open the **PDF** tab and select **Settings**. TinyImage opens the **PDF** tab in **Export Settings**.
4. [ ] Enable **Require a password to open PDFs** and enter the password you want to use.
5. [ ] Close the settings panel, select the top-level frames you want to include, and click **Export PDF**.
6. [ ] Open the exported file and enter the password to view it.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=RZGcAW-eIVw)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-password-protect-pdf-exports-from-figma)
- [Read: Password Protecting PDF Exports](/tinyimage/pdf-security)
- [Next: Remove black borders from links in Figma PDF exports](/tinyimage/tutorials/remove-black-borders-from-links-in-figma-pdf-exports)
- [Open TinyImage in the Figma Community](https://www.figma.com/community/plugin/789009980664807964)

---

---
url: "/tinyimage/tutorials/prepare-a-complete-logo-package-for-clients-in-figma.md"
description: "Learn how to use TinyImage Logo Packager to create organised logo variants, export an interactive ZIP package, or generate the variants directly in Figma."
---

# Prepare a complete logo package for clients in Figma

> Learn how to use TinyImage Logo Packager to create organised logo variants, export an interactive ZIP package, or generate the variants directly in Figma.

[← Back to TinyImage Video Tutorials](/tinyimage/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/ev-zr_2l7yI)

## What this video covers

This tutorial shows how to turn approved vector artwork into a complete client logo package with TinyImage. It covers naming each logo, choosing colour and file variants, customising the folder structure, exporting an organised ZIP with a browser-based gallery, and generating editable variants directly in Figma.

## Things you'll need

- A Figma Design file containing the vector logo artwork you want to deliver
- The TinyImage Figma plugin

## Steps

1. [ ] Open TinyImage and select the **Logos** tab to open Logo Packager.
2. [ ] Select the vector logo frames or layers to include, then use **Review Logo Artwork** to check their delivery names.
3. [ ] Choose the colour schemes, file formats, raster scales, padding, and any custom colour variants you need.
4. [ ] Enter the client or package name, then customise the filename and folder pattern if required.
5. [ ] Select **Export ZIP** to generate the logo variants, organised folders, and browser-based preview.
6. [ ] Open the downloaded package and review the files and preview page before sharing it with the client.
7. [ ] If you need the generated variants on the Figma canvas, select **Generate Logos in Figma** instead and confirm their export settings.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=ev-zr_2l7yI)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-prepare-logo-files-for-clients-in-figma-complete-logo-package-using-tinyimage)
- [Read: Prepare logo files for clients in Figma](/tinyimage/logos)
- [Next: Export and share a logo package](/tinyimage/logos-export)
- [Open TinyImage in the Figma Community](https://www.figma.com/community/plugin/789009980664807964)

---

---
url: "/tinyimage/tutorials/reduce-large-file-sizes-for-heavy-pdf-exports-from-figma.md"
description: "This tutorial shows how to use the TinyImage Figma plugin to reduce heavy PDF export sizes by downscaling large image fills and adjusting PDF settings. It demonstrates exporting both merged multi-frame PDFs and individual frame PDFs, then compares file-size savings at 300 DPI and 150 DPI."
---

# Reduce large file sizes for heavy PDF exports from Figma

> This tutorial shows how to use the TinyImage Figma plugin to reduce heavy PDF export sizes by downscaling large image fills and adjusting PDF settings. It demonstrates exporting both merged multi-frame PDFs and individual frame PDFs, then compares file-size savings at 300 DPI and 150 DPI.

[← Back to TinyImage Video Tutorials](/tinyimage/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/VY5EJyuP2nk)

## What this video covers

This tutorial shows how to use the TinyImage Figma plugin to reduce heavy PDF export sizes by downscaling large image fills and adjusting PDF settings. It demonstrates exporting both merged multi-frame PDFs and individual frame PDFs, then compares file-size savings at 300 DPI and 150 DPI.

## Things you'll need

- A Figma file with frames on the page.
- TinyImage installed as a Figma plugin.

## Steps

1. [ ] Open Figma, find TinyImage from Resources or Saved plugins, and run the plugin.
2. [ ] Choose create PDF, make sure the frames you want are parent frames on the page, and refresh the layer list if needed.
3. [ ] Enable Downscale large Figma image fills and set the downscale option to 2x.
4. [ ] Export the PDF and save it to your computer to generate a much smaller merged PDF.
5. [ ] To export individual PDFs, select each frame, set its export format from PNG to PDF, then refresh exportable layers in TinyImage.
6. [ ] Select **Settings** and use the **PDF** tab in **Export Settings**, or adjust the PDF quality control in the main PDF workspace, then export again at 300 DPI or 150 DPI to compare quality and file size.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=VY5EJyuP2nk)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-reduce-large-file-sizes-for-heavy-pdf-exports-from-figma-using-tiny-image)
- [Read: Setting PDF Export Options](/tinyimage/pdf-settings)
- [Next: Password protect PDF exports](/tinyimage/tutorials/password-protect-pdf-exports)
- [Open TinyImage in the Figma Community](https://www.figma.com/community/plugin/789009980664807964)

---

---
url: "/tinyimage/tutorials/remove-black-borders-from-links-in-figma-pdf-exports.md"
description: "This tutorial shows how to use the TinyImage Figma plugin to export PDFs without the black border outlines that Figma adds around links. It also demonstrates exporting either a merged PDF from multiple frames or individual PDF files from selected frames."
---

# Remove black borders from links in Figma PDF exports

> This tutorial shows how to use the TinyImage Figma plugin to export PDFs without the black border outlines that Figma adds around links. It also demonstrates exporting either a merged PDF from multiple frames or individual PDF files from selected frames.

[← Back to TinyImage Video Tutorials](/tinyimage/tutorials)

[Embedded media](https://www.youtube-nocookie.com/embed/RNxesGuYnrU)

## What this video covers

This tutorial shows how to use the TinyImage Figma plugin to export PDFs without the black border outlines that Figma adds around links. It also demonstrates exporting either a merged PDF from multiple frames or individual PDF files from selected frames.

## Things you'll need

- A Figma file with frames and links you want to export.
- The TinyImage Figma plugin installed or saved in your Figma plugins list.

## Steps

1. [ ] Open your Figma file and use Resources to search for TinyImage under the Plugins tab, then run or save the plugin.
2. [ ] In TinyImage, click Create PDF to list the frames on the current page and choose the frames you want to export.
3. [ ] Open the settings and make sure Outline Links is turned off to remove the black link borders.
4. [ ] Click Export PDF to create a compressed PDF without the default link outline.
5. [ ] For individual PDFs, select the frames in Figma, add PDF in the Export section, and refresh the exportable layers in TinyImage.
6. [ ] Keep Outline Links turned off, then click Export to generate a zip containing separate PDF files.

## Useful links

- [Watch the full video on YouTube](https://www.youtube.com/watch?v=RNxesGuYnrU)
- [Read the full video transcript](https://www.hypermatic.com/tutorials/how-to-remove-black-borders-from-links-in-figma-pdf-exports-using-tiny-image)
- [Read: Setting PDF Export Options](/tinyimage/pdf-settings)
- [Next: Password protect PDF exports](/tinyimage/tutorials/password-protect-pdf-exports)
- [Open TinyImage in the Figma Community](https://www.figma.com/community/plugin/789009980664807964)

---

---
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 walks through how to export animated MP4 videos from your design's layers directly from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube-nocookie.com/embed/sCARTYdqIrQ)

### Add audio to Figma animated MP4 video exports

This video walks through 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-nocookie.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 walks through how to animate and export WebM videos from your design's layers directly from Figma using the TinyImage plugin.
[Embedded media](https://www.youtube-nocookie.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: "/troubleshooting/common-issues.md"
description: "Resolve license, receipt, performance, connection, and export problems before sending a reproducible support report."
---

# Troubleshoot common Hypermatic plugin issues

> Resolve license, receipt, performance, connection, and export problems before sending a reproducible support report.

Start with the section that matches the symptom. If these general steps do not resolve it, check the plugin-specific troubleshooting page before contacting support.

## License key is not accepted

Try these steps:

1. Copy the license key from the Gumroad receipt.
2. Make sure you are not copying the order ID, receipt number, or email address.
3. Paste the key into the plugin's unlock or upgrade field.
4. If you manage seats, check the [Hypermatic License Manager](https://license.hypermatic.com/).
5. If the key still does not work, email [adam@hypermatic.com](mailto:adam@hypermatic.com).

Do not paste private license keys into chat tools.

## Receipt is missing

Search your inbox for `noreply@customers.gumroad.com`. Also try [Gumroad charge lookup](https://app.gumroad.com/charge).

If you have the license key, enter it into the [Hypermatic License Manager](https://license.hypermatic.com/) to view purchase history.

See [Receipts and PDF invoices](/faq/receipts).

## Plugin is slow or stuck loading images

Large Figma files and large image fills can slow plugin workflows. Try:

1. Wait until Figma finishes loading images.
2. Move only the frames you need to a new blank Figma page.
3. Close unused Figma tabs.
4. Restart the Figma desktop app or refresh Figma in the browser.
5. Try the workflow on a smaller test file.

## Plugin cannot connect or activate

Try:

1. Turn off VPN temporarily.
2. Switch Wi-Fi network or use a mobile hotspot.
3. Ask your IT team whether company firewall rules block plugin network requests.
4. If you are in a region where some services may be blocked, try a trusted VPN.

See [Network, VPN, firewall, and regional troubleshooting](/troubleshooting/network-vpn-firewall).

## Exported output differs from Figma

Different export formats have different limitations. HTML emails, PDFs, GIFs, videos, compressed images, PowerPoint files, and code exports each have their own rendering rules.

Before reporting the issue:

1. Check the plugin-specific troubleshooting page.
2. Try a small file with only the affected frame.
3. Save the exported file or ZIP.
4. Take a screenshot of the Figma source and exported result.
5. Email [adam@hypermatic.com](mailto:adam@hypermatic.com) with the product name and files.

## You need help choosing a plugin

Start from the docs home page or product pages. If you are trying to automate multiple Figma workflows, the [Pro Bundle](https://www.hypermatic.com/bundle/) may be better value than buying several plugins separately.

For exact pricing, see [Hypermatic pricing and PDF quotes](/faq/pricing).

## Send a reproducible support report

Include:

- Product name
- Purchase email address if it is a billing/license issue
- Screenshot or short video
- Exported file or ZIP if relevant
- Figma page/frame name
- Exact error message
- Whether you are using Figma desktop or browser

---

---
url: "/troubleshooting/network-vpn-firewall.md"
description: "Test whether a network restriction is blocking Gumroad checkout, license activation, uploads, integrations, or plugin resources."
---

# Troubleshoot network, VPN, firewall, and regional issues

> Test whether a network restriction is blocking Gumroad checkout, license activation, uploads, integrations, or plugin resources.

Company firewalls, VPNs, regional restrictions, browser policies, and payment-provider checks can interrupt checkout, activation, uploads, integrations, or plugin resources.

Use a different network as the first diagnostic test. If the workflow succeeds on a mobile hotspot but fails on the company network, a network policy is likely involved.

## Gumroad checkout fails or a card is blocked

If Gumroad checkout fails or your card is blocked:

1. Turn off your VPN and retry.
2. Switch to a different Wi-Fi network or mobile hotspot.
3. Check that the ZIP code and billing location match your card.
4. Try a different card.
5. Contact [support@gumroad.com](mailto:support@gumroad.com) if Gumroad needs to review the payment.

Gumroad handles checkout and payment processing.

## License activation cannot connect

If plugin activation cannot connect:

1. Turn off VPN and retry.
2. Try another network or mobile hotspot.
3. Restart the Figma desktop app or refresh Figma in the browser.
4. Ask your IT team whether Figma plugin network requests are blocked.
5. If you are in a region where some services may be blocked, try a trusted VPN.

## Activation fails in China

Some account or activation services may be blocked by regional network restrictions. If you are in China and a valid license key fails to activate, you may need to use a VPN to complete activation.

## Uploads or integrations are blocked

Some plugins offer optional upload or third-party integration workflows. If an upload or integration warning appears, the network may be blocking the destination service.

Try:

1. Tether to a mobile hotspot.
2. Retry without VPN.
3. Retry with a trusted VPN if the local network blocks the service.
4. Ask IT whether the relevant service is blocked by firewall policy.

## Confirm whether the network is responsible

A quick test is to retry the same plugin workflow on a different network. If it works on a mobile hotspot but not on the company network, the company network is likely blocking something.

## Send useful network diagnostics

Email [adam@hypermatic.com](mailto:adam@hypermatic.com) with:

- Product name
- Screenshot of the warning or error
- Whether VPN was on or off
- Whether a mobile hotspot worked
- Whether you are using Figma desktop or browser
- The country/region if regional blocking may be involved

Do not send card numbers, passwords, or private credentials.

---

---
url: "/weblify/advanced/import-website.md"
description: "Use the free Weblify Chrome Extension to copy webpages or selected elements into Figma at desktop, tablet, mobile, or custom sizes."
---

# Import a website into Figma

> Use the free Weblify Chrome Extension to copy webpages or selected elements into Figma at desktop, tablet, mobile, or custom sizes.

The Weblify Figma plugin links to the free [Weblify Chrome Extension](https://chromewebstore.google.com/detail/weblify-copy-websites-to/dfdmkfjpaoomaiobpaggkkkbhcjccjbb?utm_source=weblify_docs&utm_medium=documentation&utm_campaign=weblify_chrome_extension) for website importing. The extension works directly in your browser, including on pages that use your current login or browser session.

## Import a website

1. Install the [Weblify Chrome Extension](https://chromewebstore.google.com/detail/weblify-copy-websites-to/dfdmkfjpaoomaiobpaggkkkbhcjccjbb?utm_source=weblify_docs&utm_medium=documentation&utm_campaign=weblify_chrome_extension).
2. Open the webpage you want to copy in Chrome.
3. Select the Weblify extension icon to open its toolbar on the page.
4. Keep **Current Window Size**, or open the size control to choose one or more capture sizes.
5. Choose **Copy page** to copy the whole page, or **Pick element** to select one element.
6. Wait for the **Copied to clipboard** confirmation. When copying a page, let Weblify finish scrolling and preparing the content.
7. Return to your Figma file and paste with Command + V on macOS or Ctrl + V on Windows.

> **Tip:** You can also open the **Import Website** tab in the Weblify Figma plugin and select the Chrome extension download link.

## Choosing capture sizes

Open the size control beside the Weblify logo to see **Capture sizes**. The control shows the selected size, or a count such as **2 sizes** when several are selected.

| Size | Browser viewport |
| --- | --- |
| **Current Window Size** | Your current browser window's content width and height. The dimensions update when you resize the window. |
| **Desktop** | 1440 × 900 pixels |
| **Tablet** | 768 × 1024 pixels |
| **Mobile** | 390 × 844 pixels |
| **Custom** | Enter a width from 280–2560 pixels and a height from 320–2400 pixels. |

Select multiple checkboxes to copy separate, named frames side by side into Figma. At least one size stays selected. Your choices remain selected when you use **Restart**, until you reload the webpage.

**Copy page** includes the full page height at each selected width. The height setting controls the viewport used to lay out the page; it does not crop the result to that height. **Pick element** copies the selected element as it appears at each chosen size.

> **Tip:** Use **Current Window Size** on its own to capture the live page as it is currently laid out. Other sizes reflow a copy of the page, so content controlled by JavaScript, embedded content, or canvas graphics may differ.

## Loading content before copying

**Copy page** automatically scrolls through the page before capturing it. This gives lazy-loaded images and sections that appear on scroll a chance to load. Weblify then restores your original scroll position and captures the prepared page at your selected sizes.

Preparation has a time and scroll limit so pages with an endless feed do not keep loading forever. Very slow content, later items in an endless feed, or content a site removes as you scroll can still be missing. **Pick element** does not automatically scroll the page first.

If something is missing, scroll to it yourself, wait for it to appear, and try **Pick element** with **Current Window Size** selected on its own.

## Choosing an element

[Video](/assets/videos/weblify/inspect/chrome-element-inspect.mp4)

Select **Pick element**, then hover over the page and click the element you want to copy. Use the up and down controls to move to a parent or child element before copying it.

If the selected element is hidden at one of your chosen sizes, Weblify reports an error instead of copying an empty frame. Choose a size where the element is visible and try again.

After a successful copy, select **Restart** to return to the toolbar with your size choices intact, or close the confirmation notice.

> **Warning:** Browser-internal pages and the Chrome Web Store do not allow extensions to inject page controls. Open a regular website tab before selecting the Weblify extension icon.

---

---
url: "/weblify/ai-agents.md"
description: "Install the Hypermatic Agent Skill for Weblify and give Codex, Claude Code, Grok, and compatible agents the correct website workflows."
---

# Use Weblify with AI agents

> Install the Hypermatic Agent Skill for Weblify and give Codex, Claude Code, Grok, and compatible agents the correct website workflows.

Hypermatic Agent Skills give your AI agent a concise Weblify playbook. The Weblify skill distinguishes full-site export, selected-layer code inspection, website import, local editing, and deployment so the agent reports each result accurately.

- [Install Hypermatic Agent Skills](https://hypermatic.ai/): Copy the terminal installer or the no-terminal prompt. One install includes all 12 Hypermatic plugin skills.

## Install the Weblify skill

1. Open [Hypermatic Agent Skills](https://hypermatic.ai/).
2. Copy the terminal command, or copy the no-terminal prompt into your agent.
3. Confirm that `hypermatic-weblify` appears in the installed skills.
4. Ask the agent to use the Weblify skill for your task.

## What the skill can help with

- Build, preview, audit, and export complete static HTML and CSS websites.
- Inspect selected Figma layers as HTML, Tailwind, React, or Vue code.
- Import public or authenticated website content into Figma safely.
- Separate generated code, local browser proof, and a real deployment.

## Keyboard Shortcuts

Use [Weblify Keyboard Shortcuts](/weblify/automation/parameters) for supported repeatable tasks with a hidden plugin panel. The reference includes plain-field examples, selection requirements and a machine-readable registry. Choose a supported action from the installed plugin’s Quick Actions list; results use normal notifications, document changes and saved files.

## Example prompts

- `Use the Weblify skill to audit and export this responsive Figma page.`
- `Use the Weblify skill to inspect this component as React code.`
- `Use the Weblify skill to validate the exported static website locally.`

## Approval and verification

The agent can guide the workflow, or use available Figma, browser, filesystem, and computer-control tools after you approve the requested changes. Clipboard import, metadata repair, repository edits, and deployment are separate actions. A generated ZIP or local preview is not proof that a website was deployed.

## Trial limits

If Weblify reports that its trial allowance is exhausted, the agent should stop retrying and send you to [Weblify pricing and purchase options](https://www.hypermatic.com/weblify/#pro). Complete checkout and license activation yourself, then tell the agent when Weblify is active.

## Keep the skill current

Return to [Hypermatic Agent Skills](https://hypermatic.ai/) and use the **Update** command to install the latest stable Weblify instructions.

---

---
url: "/weblify/automation/parameters.md"
description: "Run Weblify Quick Actions with simple named inputs and current-selection shortcuts."
---

# Weblify Keyboard Shortcuts

> Run Weblify Quick Actions with simple named inputs and current-selection shortcuts.

Run common Weblify tasks from Figma Quick Actions without opening the plugin panel. Choose a named shortcut below. Use the normal plugin panel for detailed settings and authoring.

## Run a keyboard shortcut

Every shortcut requires a verified valid license or remaining trials. If verification fails or your trials have expired, open the normal plugin panel to activate your license. Opening the panel remains available.

1. Select the layers you want to work with, if the shortcut uses a selection.
2. Open Figma Quick Actions with **Command + /** on Mac or **Ctrl + /** on Windows.
3. Search for the plugin and choose the named shortcut below.
4. Enter the fields shown. Optional fields may be skipped; use Tab to edit them. Run the shortcut and check the result or complete its save dialog.

Creation shortcuts ask for names or dimensions directly. Selected-layer shortcuts use the current selection automatically. These everyday shortcuts do not ask for Target or JSON. Choose **Open Weblify** for the normal plugin panel.

| Shortcut | Inputs |
| --- | --- |
| **Export Website…** | Export name |
| **Repair Weblify Metadata** | None; runs immediately |

Fixed-choice fields use readable labels. Search by the displayed label or the underlying value; agent inputs continue to use the values shown in the command reference.

## Run from the context menu

Select the intended layers, right-click, and choose **Plugins → Weblify** (development plugins appear under **Development**). Choose an action and its format or preset. A preset runs immediately when it needs no required input; finish the save dialog when one appears.

Each preset sets its named option. Omitted compatible options inherit the plugin’s saved settings; an explicit action or option takes priority over conflicting saved behavior. Only explicitly entered fields or the selected menu choice override them for that run. If a setting has never been saved, the normal setting or documented fallback applies. Export overrides are not saved back to your preferences. If a saved format is unavailable as a shortcut, choose a supported format explicitly or use the normal panel. To combine options, choose **Custom Settings…** within the action and enter the parameters. Actions needing text, URLs, names or dimensions still prompt for those required fields. **Open Weblify** opens the normal panel.

| Menu choice | Next step |
| --- | --- |
| **Export Website…** | Enter Export name |
| **Repair Weblify Metadata** | Runs immediately |

## Detailed editing

Use the normal plugin panel for detailed settings, longer content, bulk authoring and browsing components or templates. The shortcut menu contains only the everyday commands listed above.

Keep each pasted field below 150 characters: Figma desktop can truncate pasted input at that boundary. Longer input belongs in the normal panel.

If an older plugin shows Action, Target and Options instead, update it to use these named shortcuts. A Target value is a layer ID or selection, never the name of a new item.

## Weblify actions

| Action | What it does | Target |
| --- | --- | --- |
| [`export`](#export) | Export the current Weblify site as a static ZIP | No layer target |
| [`repair`](#repair) | Repair metadata in selected subtrees without falling back to the whole page | One or more eligible layers |

### export

Export the current Weblify site as a static ZIP. This action does not take targets.

| Option | Type | Required / default | Meaning and accepted values |
| --- | --- | --- | --- |
| `name` | string | Required | Name of the new item. Minimum 1 character; Maximum 120 characters |

Nested required fields apply when their parent object or array item is supplied. Omitted optional values use the existing operation’s behavior unless a default is listed.

Choose **Export Website…**. Enter these plain fields; no JSON is required:

- **Export name**: `My Website`

Agent host input

```json
{"command":"shortcut-export","parameters":{"name":"My Website"}}
```

### repair

Repair metadata in selected subtrees without falling back to the whole page. Select one or more eligible layers.

This shortcut has no input fields.

Choose **Repair Weblify Metadata**. It runs immediately using the current selection.

Agent host input

```json
{"command":"shortcut-repair","parameters":{}}
```

## Using shortcuts with an agent

Read the machine-readable registry linked below and choose an action offered by the installed plugin’s Quick Actions list. The registry uses Hypermatic option definitions rather than standard JSON Schema: `min` and `max` constrain string length, array length or numeric value according to the field type; nested definitions use `fields` and `item`. Unknown fields are rejected.

The agent needs a host that can invoke Figma Quick Actions and observe the normal plugin result. Parameters do not add a REST or MCP launcher. The expandable examples are input data for a compatible host, not executable API calls; shortcut inputs use plain strings in `parameters`, including numbers and format choices. Never claim that a shortcut ran from its prepared input alone.

Verify the visible outcome: the changed Figma layers, saved export, or published page. Read the normal success/error notification and any partial-export warning. Complete native save dialogs as needed; a download starting does not prove that the file was saved. Users do not need to open developer tools or read a console.

## Troubleshooting

| Symptom | Next step |
| --- | --- |
| Action is unavailable | Update the plugin and check its Quick Actions list; use the normal panel if the action is unavailable. |
| Options are invalid or may have been truncated | Use individual plain field values below 150 characters, with only fields accepted by that shortcut. |
| Target is missing or ineligible | Open the correct page, check the action’s layer requirements, and select the intended layers again. |
| A license or trial error appears | Complete the plugin’s normal activation flow before rerunning. |
| Download was requested but no saved file is visible | Check the native save dialog and download location. Inspect the actual file. |
| A command fails, times out or is cancelled | Check the document and remote destination before retrying; earlier changes or uploads may already exist. |

Commands have a five-minute deadline. Errors do not imply a full rollback. Automatically retrying a create, replacement or upload can duplicate or overwrite work.

[Machine-readable command registry](/automation/parameters/weblify.json) contains the same action IDs and option definitions.

## Current limits

Create pages, update images, compose components and publish in the normal panel. Repair Weblify Metadata repairs metadata only in selected subtrees; it does not redesign their visible layout. Export Website operates on the current Weblify site rather than the selection. Use the panel for audits, tokens and placeholder inspection.

## Related documentation

- [Install and run Weblify](/weblify/overview/install)
- [Figma plugin parameters](https://developers.figma.com/docs/plugins/plugin-parameters/)
- [Figma hidden UI options](https://developers.figma.com/docs/plugins/api/properties/figma-showui/)

---

---
url: "/weblify/build/export.md"
description: "Run Weblify's production checks and export your Figma website as an HTML and CSS ZIP."
---

# Audit and export a static website

> Run Weblify's production checks and export your Figma website as an HTML and CSS ZIP.

Weblify exports its pages as a static website containing HTML, shared CSS, local image assets, search metadata, and responsive layout rules. The exported site does not require a JavaScript framework or a Weblify hosting account.

## Run the preflight check

1. Open the **Export** tab.
2. Enter a site name.
3. Select **Check site**.
4. Review any errors or warnings.

Errors block the export. Warnings do not block it, but you should review them before publishing.

Select **Repair page data** if valid Weblify layers have missing or outdated internal metadata. Run the preflight check again after repairing or editing the affected layers.

## Download the website

When the preflight status is **Ready**, select **Download website (.zip)**. The ZIP contains:

- An HTML file for each visible Weblify page.
- Shared CSS and responsive rules.
- Images referenced by the website.
- Page titles, descriptions, and other configured metadata.

Pages inside hidden parent groups or sections are excluded from the ZIP, even if the page itself is visible. Images used only by those hidden pages are also excluded.

Non-form buttons, including hero calls to action, export as links (``). Set a destination URL before publishing; a button without a destination uses `#`. Buttons inside a form, or explicitly associated with a form, retain their button behavior.

Unzip the download before uploading it to a static host.

---

---
url: "/weblify/build/site-builder.md"
description: "Create Weblify pages from templates, sections, elements, and responsive layout primitives."
---

# Build a website in Figma

> Create Weblify pages from templates, sections, elements, and responsive layout primitives.

Weblify's **Build** tab creates website pages as editable Figma layers. The generated layers keep Weblify metadata so the plugin can preview, audit, and export them as a static website.

## Start a page

1. Open the **Build** tab.
2. In **Start**, enter a page name and select **Create page**, or select **Create page** below a starter template.
3. Select the generated page on the Figma canvas before adding content.

If nothing is selected, Weblify uses the first Weblify page it finds or creates a page named **Home**. The **Adding content to** at the top of the plugin shows where new content will be inserted.

## Add sections and elements

Use **Sections** for complete page areas such as navigation, hero, content, pricing, forms, and footers. Use **Elements** for individual components. Select **Add section** or **Add element** below an item to insert it.

Select a Weblify page, section, or content area before inserting an item. This gives Weblify a predictable parent and keeps the exported structure intact.

## Edit the structure

The **Structure** tab contains page, layout, and responsive settings. You can:

- Add pages and edit their URL and search metadata.
- Add sections, containers, rows, grids, and content areas.
- Configure responsive stacking and layout behavior for selected Weblify layers.

Page metadata includes the title, description, canonical URL, social sharing fields, favicon, Twitter card type, and robots setting.

## Apply styles and images

Open **Styles** to review the brand colors, typography, spacing, and radius tokens used by generated content. The **Images** view lists placeholder images so you can replace them with real image URLs before export.

Use **Preview site** to check the current website without leaving the builder.

---

---
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://www.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://www.hypermatic.com/weblify/#pro).

After the included Pro uses, Weblify keeps its _Free_ features available and requires a Pro license for the remaining features.

Website importing is provided separately by the free Weblify Chrome Extension and does not consume a Weblify plugin use.

  - **Weblify Free**: ### Website Builder Unlimited Usage       ### HTML/CSS Inspections Unlimited Usage       ### React Inspections Try during 25 Pro Uses       ### Tailwind Inspections Try during 25 Pro Uses       ### Vue Inspections Try during 25 Pro Uses       ### Copy Code to Clipboard Try during 25 Pro Uses       ### Component Downloads Try during 25 Pro Uses       ### Static Website Export Try during 25 Pro Uses
  - **Weblify Pro**: ### Website Builder Unlimited Usage       ### HTML/CSS Inspections Unlimited Usage       ### React Inspections Unlimited Usage       ### Tailwind Inspections Unlimited Usage       ### Vue Inspections Unlimited Usage       ### Copy Code to Clipboard Unlimited Usage       ### Component Downloads Unlimited Usage       ### Static Website Export Unlimited Usage

---

---
url: "/weblify/faq/security.md"
description: "How the Weblify Figma plugin and Chrome Extension handle Figma data, website copying, license checks, and network requests."
---

# Weblify Security

> How the Weblify Figma plugin and Chrome Extension handle Figma data, website copying, license checks, and network requests.

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 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 handles Figma data

The [Weblify Figma plugin](https://www.figma.com/community/plugin/927336249307137996) builds website layouts in Figma, previews and exports Weblify pages, and inspects selected Figma layers as code.

Website building, preview generation, code inspection, and ZIP creation run inside the plugin. Generated files are downloaded directly to your computer.

The Figma plugin does not fetch or import third-party website URLs. Its **Import Website** tab links to the Weblify Chrome Extension instead.

## Chrome extension website copying

The Weblify Chrome Extension reads the page or selected element only after you explicitly choose a copy action. It converts the page in your browser and writes the result to your clipboard so that you can paste it into Figma.

The extension may request images and fonts from the website being copied so they can be included in the Figma payload. It does not send the copied website or your Figma file contents to Hypermatic.

## Accounts and usage events

Weblify contacts Hypermatic's account service to check trial usage and validate Pro license keys. These account requests can include the Weblify plugin ID, license key, and the Figma user ID and name made available to the plugin by Figma.

Weblify also records coarse product events containing the plugin name, event name, and a numeric value. These usage events do not include Figma layer contents or generated website code.

---

---
url: "/weblify/faq/troubleshooting.md"
description: "Troubleshooting guide for website copying, code output, activation, and common Weblify errors."
---

# Troubleshooting Weblify

> Troubleshooting guide for website copying, code output, activation, and common Weblify errors.

## Missing HTML attributes, styles or frontend frameworks

Weblify supports common HTML attributes, layout styles, and frontend output formats. Some advanced Figma properties, browser CSS, embedded content, and interactive behavior may still need manual adjustment after generation or import.

## The Chrome extension does not open on a page

Browser-internal pages and the Chrome Web Store do not allow extensions to inject page controls. Open a regular website tab, refresh it after installing the extension, then select the Weblify extension icon again.

## An imported website looks different from the live website

Wait for lazy-loaded content, fonts, and images to finish appearing before copying the page. Interactive applications, embedded content, unsupported CSS, and assets blocked by the source website may still produce differences after pasting into Figma.

## Copied content does not paste into Figma

Wait for the extension to show **Copied to clipboard**, return to the Figma canvas, and paste with Command + V on macOS or Ctrl + V on Windows. If another clipboard item appears, copy the page or element again immediately before pasting.

## VPN may be required in China

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)

Open **Inspect** and select a Figma layer. Use the code-format menu above the generated files to change the output format.

## Supported code formats

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)

After running the Weblify Figma plugin, open **Inspect** and select a Figma layer on the current page. Weblify automatically generates the markup and styles for that layer. You can also [choose a code output option](/weblify/inspect/frameworks) to match your codebase.

---

---
url: "/weblify/inspect/preview.md"
description: "The Preview tab in Weblify shows how the generated website looks at different viewport sizes."
---

# Previewing generated website code

> The Preview tab in Weblify shows how the generated website looks at different viewport sizes.

[Video](/assets/videos/weblify/inspect/preview-code.mp4)

Open the **Preview** tab to render the current Weblify website as HTML and CSS. You can return to **Build** to make changes, then open **Preview** again to check the updated result.

## Changing the preview viewport width

By default, Weblify automatically sizes the preview. Use the viewport menu to select another preset width and check the responsive result.

---

---
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)

## Copy the code to your clipboard

After you've [selected a Figma layer](/weblify/inspect/layers), open **Inspect**. Select the **Copy** button beside a generated code block to copy that file to your clipboard.

## Download code and images to a .zip file

Select **Download .zip** to download all generated code files and any image assets for the 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)."
---

# 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).

### 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-nocookie.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 Weblify Pro features 25 times, you can upgrade for unlimited Pro usage or continue using the Free features."
---

# Activating Weblify Pro

> After trying Weblify Pro features 25 times, you can upgrade for unlimited Pro usage or continue using the Free features.

> **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 a 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 unlocks Weblify Pro and gives you unlimited use of the Pro features.

> **Warning:** 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 may 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 (for example, 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: "Build, preview, inspect, and export websites with Weblify, or copy existing pages into Figma with the Weblify Chrome Extension."
---

# Get started with Weblify

> Build, preview, inspect, and export websites with Weblify, or copy existing pages into Figma with the Weblify Chrome Extension.

[![Weblify Figma Plugin](https://www.hypermatic.com/weblify.jpg)](https://www.figma.com/community/plugin/927336249307137996)

## 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 and 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

  - [Build a Website](/weblify/build/site-builder.md): Create editable website pages from templates, sections, and elements
  - [Import a Website](/weblify/advanced/import-website.md): Copy a page or selected element with the free Chrome extension
  - [Audit & Export](/weblify/build/export.md): Validate and download a static HTML and CSS website
  - [Inspect Figma Layers](/weblify/inspect/layers.md): Generate HTML, Tailwind, React, or Vue code from a selected layer

## Frequently asked questions

- [Troubleshooting Weblify](/weblify/faq/troubleshooting.md): Common 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

- Create editable website pages from templates, sections, elements, and responsive layouts.
- Copy public or logged-in websites into Figma with the free Chrome extension.
- Preview generated website output at different viewport widths.
- Audit and export Weblify pages as a static HTML and CSS website.
- Inspect selected Figma layers as HTML/CSS, Tailwind, React, or Vue code.
- Copy generated code or download a component ZIP with its image assets.
- Work with Figma auto layout, wrapping, and min/max layout properties.
- Use Weblify's code inspection tools from Figma Dev Mode.

---

---
url: "/weblify/tutorials.md"
description: "Learn how to build, import, inspect, preview, and export websites with Weblify."
---

# Weblify Guides

> Learn how to build, import, inspect, preview, and export websites with Weblify.

Use these guides to get started with Weblify's main workflows:

- [Build a website in Figma](/weblify/build/site-builder)
- [Import a website with Chrome](/weblify/advanced/import-website)
- [Inspect generated HTML and CSS](/weblify/inspect/preview)
- [Preview and export a website](/weblify/build/export)

For the fastest overview, start with the [Weblify quickstart guide](/weblify/overview/quickstart).
