EmailBridge docs

Slice your Figma email and build it straight into your Klaviyo or Omnisend master template — no HTML.

Quick start

From a Figma design to a ready-to-send email in three steps:

  1. Slice your design in Figma with the Slice tool — one slice per section.
  2. Connect your platform — add your Klaviyo or Omnisend API key and pick a master template to clone.
  3. Build — EmailBridge optimizes your slices and builds them into your template, ready to send.

Install the plugin

EmailBridge runs as a Figma plugin.

Connect Klaviyo or Omnisend

Switch between platforms at the top of the panel, then add your API key.

Klaviyo

Omnisend

You can save multiple accounts per platform — handy for agencies running many brands. Your key is sent to the secure bridge only at build time and is never stored on our servers.

API access & scopes

EmailBridge uses the minimum access needed to build templates and upload images — nothing else. Your key reaches the secure bridge only at build time and is never stored.

Klaviyo — Private API key (pk_…)

ScopeWhy EmailBridge needs itAPI calls
Accounts · ReadAuto-fill your account name in the panel.GET /accounts
Images · FullUpload your optimized slices to the image library.POST /image-upload
Templates · FullRead your master, clone it, inject blocks, and clean up failed builds.GET /templates, POST /template-clone, PATCH & DELETE /templates/{id}

Create it in Klaviyo → Settings → API keys → Create Private API Key. Choose Custom Key and grant the three scopes above (a Full Access key also works).

Omnisend — API key

PermissionWhy EmailBridge needs itAPI calls
Email content / Templates · Read & WriteList your master template and create the new one.GET & POST /email-templates
Images · Read & WriteUpload your optimized slices.POST /images/upload
Brands · Read (optional)Auto-fill your store name. Skip it and EmailBridge keeps the default label.GET /brands/current

Create it in Omnisend → Store settings → Integrations & API → API keys.

What EmailBridge never asks for: no contacts, subscribers, lists, segments, campaigns, automations, or send access on either platform. It cannot email your audience — it only builds templates and uploads images.

Pick a master template

EmailBridge never builds an email from nothing — it clones your own master template and drops your design in, so your header, footer and legal blocks stay exactly as you set them.

Your master Cloned + built your design
Your design is added at the top; your header, footer and legal stay intact.

Slice your design

EmailBridge reads Figma Slice tool regions — not frames or groups. Each slice is one block in the final email.

Figma frame slice 1 Hero slice 2 slice 3
Mark each section of your email with the Slice tool.
  1. Design your full email in one Figma frame.
  2. Pick the Slice tool (shortcut S) and draw a slice over each section — hero, product, banner, footer art, and so on.
  3. Select that frame and open EmailBridge. It finds every slice inside, at any depth, and lists them.

By default every slice becomes an image block. You can turn specific slices into other block types by naming them — see Links, Editable text, and Buttons below.

What each slice name becomes

Slice nameBecomes
anything (default)image  optimized image block
a URL (e.g. https://shop.com/sale)image with a clickable link
text · body · h1h4text  editable text optional
buttonbutton  real button optional

Sizes & columns

Image width is set by how many slices share a row, not by the slice’s own size — always exported at 2× retina:

Slices in the rowExport width
1 (full width)1200px → 600px display
2 side by side600px each → 300px display
3400px each
4300px each

Place slices side by side in your design and EmailBridge builds them as real columns (a table on Klaviyo, native columns on Omnisend) — up to 4 across, retina-sharp. Stacked slices become full-width rows.

1 col 2 col 3 col 4 col 1200px 600px ea. 400px ea. 300px ea.
Slices in a row become columns — width set by how many share the row.

To make an image clickable, give EmailBridge a URL in any of these ways — it picks the first it finds:

slice (your art) https://shop.com/sale clickable image link URL hidden from the picture
A URL in the slice becomes the image link — and never shows in the image.
A URL written as text or as a hyperlink is hidden from the exported image automatically — it never shows in the picture, it only becomes the link. You can also type or override the link per slice in the build panel’s Link field.

Alt text

EmailBridge fills alt text for you: it takes the biggest text inside the slice (your headline) and uses it as the alt. Newlines collapse to spaces.

If a slice has no text, the alt falls back to your brand / company name. You can always override it in the build panel’s Alt text field.

Build & review

  1. Select the one frame that holds your slices.
  2. EmailBridge shows a pre-flight list: a thumbnail and badge for every slice, with editable Link and Alt fields. Use the × toggle to skip any slice from this build.
  3. Pick your master template and click Build.
  4. Your slices are optimized, uploaded, and built into a clone of your template. Open it in Klaviyo or Omnisend to send.
EmailBridge Klaviyo · brand Heroh1 Productimage CTAbutton Build Klaviyo template
The pre-flight panel: thumbnails, kind badges, link & alt fields, and progress.

Editable text optional

This is an optional, opt-in feature. By default text stays inside the image. To make a section a real, editable text block instead, name the slice:

h1 Big Heading text
Name a slice h1 and it becomes a real, editable heading.

The text block inherits your master template’s typography — its Body and Heading styles — so the size and font come from your template, not from Figma. Color, bold/italic, links and line breaks are kept from your design.

Use this for true text sections (a paragraph, a heading). For logos, product shots or anything with effects, keep it an image. If a slice named text has nothing to render, it safely falls back to an image.

Buttons optional

Also optional. Name a slice button and EmailBridge builds a real button instead of an image, matching your design:

button Shop now Shop now button
Matches the color, corner radius, label and link from your design.

If anything needed is missing (no label, no shape), the slice safely falls back to an image — so a “button” slice never breaks a build.

Image optimization

Every image slice is compressed in your browser (MozJPEG) with quality targeting, and exported at 2× retina for crisp 600px-wide emails. You see the source vs optimized size in the panel as it works.

Limits

Troubleshooting

“No slices found”

Mark your export regions with the Slice tool (not frames or rectangles), then re-select the frame.

“Pick a master template first”

Add your API key, hit ↻ Reload, and choose a drag-and-drop template from the dropdown.

“Build / Patch failed”

Usually a stale or restricted API key, or a master that isn’t draggable. Re-check the key’s permissions (Images + Templates on Klaviyo; Brands on Omnisend) and that the master is a drag-and-drop template.

A multi-column row came out small

If one slice in a side-by-side row can’t be exported, EmailBridge stops the build rather than shipping a half-width image — re-select the frame and try again.

FAQ

Does it change my master template?

No. EmailBridge clones your master for each build; your original is untouched.

Klaviyo and Omnisend both?

Yes — same Figma file, switch the platform, pick that platform’s master, build.

Do I need to write HTML?

Never. You design in Figma; EmailBridge does the rest.

Are text and button blocks required?

No — they’re optional. The default output is images, which works everywhere. Opt in by naming slices text/body/h1h4 or button when you want editable blocks.

Where does my design land in the template?

As a new section at the top, above your template’s header and footer.