First, work out which of the two you’re saving
Everything you save is one of two shapes, and the shape decides which route you use. Getting this wrong is the most common reason a saved block doesn’t behave the way people expect. A module is one Wrapper. A Wrapper is the outermost band of an email: a header, a hero, a product block, a testimonial, a footer. Everything inside it (Sections, Columns, text, images, buttons) rides along. In the underlying markup a Wrapper is anmj-wrapper, which is why its Figma layer name carries (mjml:mj-wrapper). A module is a piece of an email, never the email.
An email template is the whole email frame. That’s the outer frame the plugin made for you. It holds every Wrapper inside it, plus the settings that belong to the email itself: subject line, preview text, UTM parameter, fonts, and the theme colours.
Rule of thumb: if your team will drop it into lots of different emails, it’s a module. If it’s a finished send you want to start the next one from, it’s an email template.
Each shape has its own save route
What each route turns away
Upload won’t take anything smaller than a Wrapper. The Upload button only becomes clickable when your selection is a Wrapper, a whole email frame, or several of those at once. Select a Section inside a Wrapper, a Column, a hero frame, a button or a text layer and the button stays greyed out. There’s no error message to read, so a dead Upload button almost always means you’ve selected one level too deep. Click the Wrapper that contains it and the button comes alive. Add New Template won’t take anything that isn’t a whole email. Try to save a Wrapper this way and Figma shows a red “Please select valid email template” notification, with “Select an Email Template” in the plugin. Customs only accepts the outer frame.Why a module saved as a one-block email costs you later
When Upload is greyed out, the tempting fix is to drop the module into an empty email frame on its own and save that to Customs instead. It works. It’s also the wrong shape, and you find out weeks later. It isn’t part of your design system. It sits in Customs, which is a shelf of finished emails. It won’t show up in the Header or Hero or Footer section where your team goes looking for it, and because it isn’t in a design system it isn’t included when you sync. Generate from Brief, the Email Love MCP and the Builder never see it. It stops tracking Figma. Only components uploaded into a design system section keep a link back to their source component, shown by the blue chain icon. A Customs template is a snapshot. Update the master component in Figma and the saved copy stays exactly as it was until someone deletes it and saves it again. It repaints whatever email you put it in. This is the one that hurts. An email template carries the email’s own settings, and inserting it applies them to the frame you insert it into. Anything the saved email had set overwrites what’s already there: background, content, text, link and button colours, their light theme counterparts, subject line, preview text, UTM parameter and fallback font. So a one-block “template” saved out of a dark email will flip a light email dark the moment a teammate inserts it. A module saved the right way is appended and reflowed to the frame width, and nothing else moves.Theme colours belong to the email, not the module
Select the email frame and the Colors panel gives you Background Color alongside content, text, link and button colours. Select a Wrapper and Background Color isn’t there. That’s on purpose. The page background is a property of the email, so there’s exactly one of it per send. A Wrapper can set its own content colour and the colours of the text, links and buttons inside it, and those do travel with the module when you save it. The page background doesn’t, because it was never the module’s to carry. In practice: set the theme once on the email frame, then let modules override only what genuinely differs, like a dark band inside a light email. Modules that don’t fight the email theme drop cleanly into any email built on the same design system.Saving Custom Components
Custom components are your go-to email building blocks - think branded headers, styled CTAs, or perfectly crafted content sections that you’ll want to use again and again. Each one is a module, so what you select is a single Wrapper.1
Design your component
Get it looking exactly how you want.
2
Select the Wrapper
Click the Wrapper on the Figma canvas, not a Section or Column inside it. If the Upload button stays greyed out, you’re a level too deep.
3
Open the plugin
Navigate to the appropriate section (Two Column, Buttons, Reviews, etc.).
4
Click Upload
The button sits at the top of the section. Confirm in the dialog that names the design system and section you’re uploading to.
5
Voila!
Your component now appears at the top of that section.
Component Linking: Stay in Sync with Figma
When you save a Figma Component or Instance, the plugin automatically links the saved version to its source component. You’ll see a small blue chain icon on the thumbnail, confirming the link is active. This means:- Native instances on the canvas. When you click a linked component to place it in your email, the plugin creates a real Figma instance (not a static copy). Changes to the parent component instantly propagate to every instance. That’s Figma’s native behavior, no extra steps needed.
- Auto-syncing thumbnails. When you open an asset folder with linked components, the plugin automatically checks each one against its Figma source. If anything changed (colors, text, spacing, images), the thumbnail and JSON update silently in the background.
- Cross-file support. If your source component is published to a Figma Team Library, the link works from any Figma file. For local (unpublished) components, the link only works within the same file. You’ll see a notification about this at save time.
- Backward compatible. Components saved before this feature still work exactly as before. They just won’t have a link badge or auto-sync behavior.
Visual Badges
Look for these indicators on your saved component thumbnails:- Blue chain icon: Component is linked to a Figma source
- Orange refresh icon: Update available (click to sync manually if auto-sync didn’t catch it)
- Red warning icon: Source component was deleted or can’t be found
- Spinning gray icon: Currently checking for updates
- Create a new email frame
- Navigate to the plugin section where you saved your component
- Click on your custom component to instantly add it to your email
- Linked components are placed as native Figma instances that stay connected to the source
- Remove any component by clicking the small “X” icon next to it
- Save as many components as you like - there’s no limit!
- Custom components work across all plugin sections (Four Column, Buttons, Reviews, and more)
Saving Full Email Templates
Got a killer email design that you want to reuse? Save the entire template and create a personal library of email designs that perfectly match your brand. This route is for whole emails only. If what you have is a single Wrapper, it belongs in a design system section instead.1
Complete your email design
Make sure everything looks perfect.
2
Select the whole email frame
Select the outer frame in Figma, not a Wrapper inside it.
3
Open the Customs tab
Open the plugin and click on the “Customs” tab in the top left.
4
Create a category
Click “Create Category” and give it a descriptive name (like “Newsletters,” “Sales,” or “Transactional”). Your new category is ready to go!
5
Save your template
Click “Add New Template”, select the right category, then click “Add Template”.
6
Done!
Your template is now saved and ready for future campaigns.
- Create a new email frame
- Go to the Customs tab in the plugin
- Browse your categories to find the perfect template
- Click on it and watch as the plugin builds out each section automatically
- Customize the images, text, and links for your new campaign
Organizing Your Template Library
Smart organization makes finding the right template a breeze. Here are some category ideas:- Newsletters - For your regular email communications
- Promotions - Sales, discounts, and special offers
- Transactional - Order confirmations, welcome emails, password resets
- Seasonal - Holiday campaigns and event-specific designs
- Product Updates - Feature announcements and company news
Pro Tips for Success
For Components:- Save your most-used elements like branded headers, footers, and signature CTAs
- Test components in different email contexts to ensure they work perfectly
- Keep your component names clear and descriptive
- Use specific category names that make sense for your workflow
- Save template variations for different campaign types
- Regularly update your saved templates to reflect current brand guidelines
Troubleshooting
The Upload button is greyed out. Your selection is too deep. Upload only accepts a Wrapper, a whole email frame, or several of those at once. Selecting a Section, Column, hero frame, button or text layer leaves the button disabled with no error. Click the parent Wrapper and try again. “Please select valid email template” when saving to Customs. You had a Wrapper selected. Customs only takes the whole email frame. If the thing you’re saving is a Wrapper, upload it into a design system section rather than wrapping it in an email frame of its own. A saved block changed the colours of the email I put it in. It was saved as an email template, not a module. Email templates carry the email’s own theme, subject line and preview text, and inserting one applies them to the frame. Re-save it as a module: select its Wrapper and upload it into a design system section. Template not appearing? Double-check that you selected the entire email frame before saving and confirm you’re looking in the right category. Need to update a saved component? If it’s linked (blue chain icon), just update the source Figma component. The saved version in the plugin will auto-sync the next time you open that folder. No need to delete and re-save. For unlinked (legacy) components, you’ll still need to delete the old version and save the updated one. This custom save feature transforms the Email Love plugin into your personal design system, making it faster and easier to create beautiful, on-brand emails every time. Happy designing!Related Articles
- Creating and Managing Design Systems: Where modules live, and how to sync them for AI Studio, the MCP and the Builder
- Add wrappers, sections, and content: How Wrappers, Sections and Columns nest inside an email
- The Customs tab & Community templates: Browsing and inserting the email templates you’ve saved

