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
1
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.2
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.
3
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.
4
HTML Generation
If you choose to export as HTML, Email Love translates the generated MJML code into clean and well-formatted HTML. This HTML code incorporates the necessary tags and attributes to render your email design across different email clients.
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.

