The Email Love Figma Plugin connects directly to Zapier via a Catch Hook trigger — so you can take a Figma email design and pipe it into anything Zapier supports: Gmail drafts, an ESP that doesn't have a built-in integration, a CMS, Slack notifications, a Google Sheet, whatever you can build a Zap for.
How it works
- You create a Zap with Webhooks by Zapier → Catch Hook as the trigger
- Zapier gives you a webhook URL
- You paste that URL into the Email Love plugin's Zapier export
- When you click Export, the plugin POSTs each selected email (name, subject, preheader, HTML) to the Zap, which then runs whatever actions you set up
Prerequisites
- A Zapier account
- The Email Love Figma plugin installed
- At least one email designed in Figma using the plugin
- An Email Love Footer with an Unsubscribe link in your design
Step 1: Create the Zap and Get a Webhook URL
There's a How to get a Zapier webhook URL link in the export panel that jumps straight to Zapier's docs. The short version:
- In Zapier, click Create Zap
- For the trigger, choose Webhooks by Zapier
- Select the Catch Hook event and click Continue
- Leave Pick off a Child Key blank — we send a flat JSON object
- Click Continue and Zapier shows you a Custom Webhook URL like
https://hooks.zapier.com/hooks/catch/12345/abcdef/
- Copy that URL
Step 2: Set Up the Export in the Plugin
- Select the email frame(s) you want to export. Multi-select to fire several templates through the same Zap.
- Click the Export button in the top right of the plugin
- Pick Zapier from the Export dropdown
- Paste the Zapier webhook URL into the Zapier Webhook URL field
- (Optional) Custom headers — JSON object merged into request headers (e.g. auth tokens). Most Zapier Catch Hooks don't need this.
- (Optional) Extra JSON data — JSON object merged into the payload body, e.g. tags or workspace IDs
- Give it a name in the Zapier connection name field so you can reuse this config later
- Click Save Connection
The saved connection appears under API Connections → Connect with an existing API Key so you can switch between Zaps without re-entering URLs.
Step 3: Set Output Options
Two toggles at the bottom of the panel:
- Upload hosted images URLs (on by default) — Uploads your images to Email Love's CDN and references them as
srcURLs in the HTML payload, so the email renders in any inbox. Leave on.
- HTML Minification (off by default) — Strips whitespace from the output HTML. Optional, mainly for smaller payloads.
Step 4: Set Subject and Preheader per Frame
Each selected frame has its own Email Subject line and Preheader text inputs at the bottom of the export panel, with a Preview icon to see them in context. These values are sent in the payload as the subject and preheader fields — set them before exporting.
If you multi-select multiple frames, each frame gets its own subject and preheader inputs, so you can customise each one before a batch export.
Step 5: Test the Zap Trigger
Before exporting for real, send Zapier a sample payload so it can show you the data shape when setting up later steps.
- In the plugin, click Export to ZAPIER
- Switch back to Zapier and click Test trigger
- You should see your template's
name,subject,preheader, andhtmlfields. Pick that record and continue building the Zap.
Step 6: Build the Rest of Your Zap
Add whatever action(s) you need — a few common ones:
- Gmail → Create Draft with
htmlas the body
- HTTP → POST to push the HTML into an ESP without a native Email Love integration
- Google Sheets → Create Row to log every export
- Slack → Send Channel Message to notify a #email channel when a new design ships
Map the fields from Step 5 into your action. The html field is the full ready-to-send email.
Step 7: Publish the Zap
Turn the Zap on. From then on, every time you click Export to ZAPIER in the plugin, your Zap fires.
Payload Format
Each template is sent as its own POST request:
{
"name": "Frame name from Figma",
"subject": "Email subject line",
"preheader": "Preheader text",
"html": "<html><head>...</head><body>...</body></html>"
}If you multi-select multiple frames, each one is POSTed individually — your Zap fires once per template.
Adding Custom Fields or Headers
The Custom headers and Extra JSON data fields work the same way as in the Custom Webhook export. Use them to send auth headers, tags, workspace IDs, or any other data your Zap needs.
Troubleshooting
Zapier never received the test: Make sure you copied the exact webhook URL from the Catch Hook step. The URL should start with https://hooks.zapier.com/hooks/catch/.
Zap fires but html is empty: Make sure your design has at least one Email Love section/component. Empty frames don't generate HTML.
Subject or preheader is empty in Zapier: Each frame has its own Subject and Preheader inputs at the bottom of the export panel. Scroll down to the frame's section and fill them in before clicking Export.
"Pick off a Child Key" is set in Zapier: Leave it blank — we send a flat object, not a wrapped one.
Got several runs from one export: Each frame is sent as its own request, so each frame triggers the Zap once. If you only wanted one, select a single frame before exporting.
Multi-step Zap is hitting Zapier's task limit: Each export = one task per Zap step. For high-volume sends, export fewer frames at a time or move to a paid Zapier plan.
Unsubscribe link not working: Make sure your design includes an Email Love Footer with an Unsubscribe link.
Need help? Reach out at hello@emaillove.com or join our Discord community.
Related Articles
- Upload your email to a Custom Webhook — Generic webhook export with full config reference
- Upload your email to Make — The Make equivalent of this flow
- Export Overview — All export options
