The Role of Frames and Layers
- Frames: In Figma, frames represent individual design elements or sections within your email layout. These frames become the building blocks for your email in MJML.
- Layers: Each element within a frame is built using layers. Layers can be text, images, shapes, or even nested frames. Email Love analyzes the properties and positioning of these layers to understand how to structure the MJML code.
Conversion Process Breakdown
Frame Analysis
Email Love identifies each frame in your Figma design and determines its role within the email structure. For instance, a frame might be converted into an
mj-section element in MJML, representing a distinct visual block within your email.Layer Interpretation
Within each frame, Email Love examines the individual layers. It extracts information like text content, image source, button styles, and the relative positioning of these elements.
MJML Code Generation
Based on the analysis of frames and layers, Email Love generates the corresponding MJML code. This code defines the structure and styling of your email using MJML tags and attributes. Here’s an example:
- A Figma text layer is converted into an
mj-textelement in MJML. The plugin applies your font size, weight, color, and alignment as inline CSS styles on a<div>element in the final HTML, not as semantic heading tags like<h1>or<h2>. - A Figma image layer linked to an image file is converted into an
mj-imageelement with thesrcattribute pointing to the image source.
Layer Names in the Figma Panel
Not everyone on your team knows MJML, and they shouldn’t have to. The plugin now uses plain English layer names so that designers, marketers, and anyone working in Figma can understand the email structure at a glance. When you add new components, your layers panel will show names like Wrapper, Row, Column, Text Block, and Button instead of technical MJML tags likemj-wrapper or mj-section.
Structural layers also include a helpful hint in parentheses explaining what they do:
- Wrapper (Groups rows and sets the background for this section)
- Row (Contains columns that sit side by side)
- Column (Your images, text, buttons, and other content go in here)
- Group (Groups columns together for responsive stacking)
Existing Templates with MJML Layer Names
If you have existing templates that use the older MJML-style layer names (likemj-wrapper, mj-section, mj-column), they will continue to work and export correctly. No changes needed on your end. The plugin fully supports both naming styles. Old templates keep their original layer names and are not automatically renamed. Only new components you add going forward will use the simplified names.
MJML Components supported by the Plugin
| Layer Name | Description | Use Cases |
|---|---|---|
| Button | Creates a clickable button | Call to action (CTA) buttons, social media buttons, etc. |
| Column | Defines a column within the email layout | Structures your email content into multiple columns for responsive design |
| Group | Groups multiple columns together for responsive stacking | Organizes related content blocks or layouts within your email |
| Image Block | Inserts an image into your email | Hero images, product images, logos, etc. |
| Row | A horizontal row that contains columns | Represents a distinct visual block within your email content |
| Text Block | Defines text content within your email | Paragraphs, headings, captions, etc. |
| Wrapper | Top-level container for rows. Can be renamed for organization | Group related rows, apply shared backgrounds, and organize your email structure |
| Hero Block | Creates a full-width background image section with overlaid content | Hero banners, promotional headers, background image sections with text overlays |
| Divider | Inserts a horizontal divider line | Visual separation between content sections, spacing elements |
| Spacer | Adds vertical spacing between elements | Controlling whitespace between sections and components |
| Social | Renders social media icon links | Social media links in footers, follow-us sections |

