{"id":4302,"external_id":"plugins_6a739f43c3b48191b1281a9b2d48b409","name":"email-love","display_name":"Email Love","developer":"Email Love","category":"Creativity","listing_language":"en","listing_language_details":{"method":"cld-0.13.0/listing-v1","reliable":true,"detected_at":"2026-10-01T13:22:04Z","input_sha256":"1bac48add94b5bd39e92a482d91c4bdd55afbc366700544b43bbc7d685fbf097","source_fields":["release.description","release.interface.short_description","release.interface.long_description"]},"version":"4.11.3","skill_count":14,"first_seen_at":"2026-09-30T22:02:35.000Z","last_seen_at":"2026-10-02T06:00:01.935Z","last_changed_at":"2026-09-30T22:02:35.000Z","install_count":null,"research_summary":null,"research_reviewed_at":null,"metadata":{"id":"plugins_6a739f43c3b48191b1281a9b2d48b409","name":"email-love","scope":"GLOBAL","status":"ENABLED","release":{"id":"pluginrel_a4208edcde408191a91de04e28d8d5e9","skills":[{"name":"braze-liquid","interface":{"brand_color":null,"iconography":"code","display_name":"Braze Liquid","default_prompt":"Use $braze-liquid to review this Braze message for anything that renders blank or aborts the send.","icon_large_url":null,"icon_small_url":null,"short_description":"Write and debug Braze Liquid personalization"},"description":"Write, review, and debug Liquid personalization in Braze email, push, in-app message, SMS, WhatsApp, Content Card, and Banner templates. Use this skill whenever someone is writing Braze personalization tags or Liquid logic, asks why a Braze message rendered blank or was aborted, is building abandoned-cart or catalog product loops, is working with Connected Content, Content Blocks, catalogs, or Canvas entry properties, hits an \"Unexpected end token\" error or an unexplained abort in the Message Activity Log, or shares Braze template code and wants it checked. Trigger on \"Braze Liquid\", \"custom_attribute\", \"connected_content\", \"abort_message\", \"Canvas entry property\", or Braze campaign and Canvas personalization questions even when Liquid is not named. Braze-only, and do not apply it to Shopify, Customer.io, or other Liquid platforms, whose tag sets and variable syntax differ. Works on any email HTML, not only Email Love exports; also covers Braze emails built in Figma with the Email Love plugin.","plugin_release_skill_id":"pluginrsk_6a9c5482008481919a77f30dc8dcbefd"},{"name":"customerio-liquid","interface":{"brand_color":null,"iconography":"code","display_name":"Customer.io Liquid","default_prompt":"Use $customerio-liquid to review this Customer.io message for anything that would fail the delivery.","icon_large_url":null,"icon_small_url":null,"short_description":"Write and debug Customer.io Liquid templates"},"description":"Write, review, and debug Liquid personalization in Customer.io emails, SMS, push, in-app messages, webhooks, and snippets. Use this skill whenever someone is writing Liquid for Customer.io, asks why a Customer.io message shows as Failed or Undeliverable, is building loops over event or object data, is working with snippets, layouts, journey attributes, collections, or trigger data, hits a composer error like \"if tag was never closed\" or \"Unidentified method\", or shares Customer.io template code and wants it checked. Trigger on \"Customer.io liquid\", \"customer.attribute\", \"trigger data\", \"journey attribute\", \"cio_link\", or Customer.io campaign and broadcast personalization questions even when Liquid is not named. Customer.io-only, and do not apply it to Braze, Shopify, or Klaviyo, whose namespaces, tags, and error behavior differ. Works on any email HTML, not only Email Love exports; also covers Customer.io emails built in Figma with the Email Love plugin.","plugin_release_skill_id":"pluginrsk_6a9c548386808191944734af5591f61b"},{"name":"email-love-design-system-migration","interface":{"brand_color":null,"iconography":"hierarchy","display_name":"Email Love Design System Migration","default_prompt":"Use $email-love-design-system-migration to audit and migrate this legacy email design system.","icon_large_url":null,"icon_small_url":null,"short_description":"Migrate legacy email systems into Email Love"},"description":"Audit and migrate an entire legacy email design system or library into an Email Love Figma design system. Use when the user asks to assess migration readiness, inventory legacy email modules, determine source fidelity or scale, create Email Love foundations, convert a legacy library in batches, or migrate templates from Figma, a local folder, cloud storage, or a supported ESP. The source remains read-only and all conversion happens in a separate target Figma file. Do not use for building one campaign email; use email-love-figma-builder for that.","plugin_release_skill_id":"pluginrsk_6a9c5485c490819192d64dba95f05984"},{"name":"email-love-figma-builder","interface":{"brand_color":null,"iconography":"pen","display_name":"Email Love Figma Builder","default_prompt":"Use $email-love-figma-builder to build an export-ready email in my Figma file.","icon_large_url":null,"icon_small_url":null,"short_description":"Build export-ready marketing emails in Figma"},"description":"Build export-ready marketing and lifecycle emails inside Figma using Email Love components or the Email Love design-converter workflow. Use whenever the user asks to create, assemble, draft, convert, or build an email or email campaign in Figma; mentions Email Love, email design systems, mj-wrapper frames, ESP export, or AI Import; shares an email campaign brief with a Figma file; or asks to turn an existing email or Figma comp into an exportable email. Supports both customers with an existing Email Love design system and customers creating their first email without one. Do not use for migrating an entire legacy email design system; use email-love-design-system-migration for that.","plugin_release_skill_id":"pluginrsk_6a9c5485b2f88191881672eba59e575c"},{"name":"email-love-figma-quality-gates","interface":{"brand_color":null,"iconography":"radar","display_name":"Email Love Figma Quality Gates","default_prompt":"Use $email-love-figma-quality-gates to audit this migration batch before approval.","icon_large_url":null,"icon_small_url":null,"short_description":"Audit Email Love libraries before approval"},"description":"Audit an Email Love Figma design-system migration batch or reusable module before it is approved. Use for independent QA, completion review, or regression checks involving mobile icon geometry, real image fills, cropped social icons, component-property semantics, source fidelity, Email Love structure, or differences between the Figma canvas and the Email Love plugin Preview/export. Do not use this skill to build, migrate, or repair the modules themselves; route those tasks to the Email Love Builder, Design System Migration, or Template Repair skill first, then return here for acceptance.","plugin_release_skill_id":"pluginrsk_6a9c5483d27c8191a5067daeec510018"},{"name":"email-love-template-repair","interface":{"brand_color":null,"iconography":"code","display_name":"Email Love Template Repair","default_prompt":"Use $email-love-template-repair to diagnose and repair this broken Email Love template.","icon_large_url":null,"icon_small_url":null,"short_description":"Diagnose and repair broken email templates"},"description":"Diagnose and repair an existing Email Love email template or reusable module in Figma when the plugin rejects it, the canvas and export disagree, content flattens into images, Outlook clips text, mobile stacking or spacing is wrong, links or images fail, dark mode breaks, or component properties stop working. Use for targeted repair of Email Love structures that already exist. Do not use to create a new campaign, convert an ordinary Figma comp, or migrate a legacy library; route those to email-love-figma-builder or email-love-design-system-migration.","plugin_release_skill_id":"pluginrsk_6a9c54828764819197455de0f4724ad2"},{"name":"hubspot-hubl","interface":{"brand_color":null,"iconography":"code","display_name":"HubSpot HubL","default_prompt":"Use $hubspot-hubl to review this HubSpot email template for anything that renders blank or drops the recipient.","icon_large_url":null,"icon_small_url":null,"short_description":"Write and debug HubL in HubSpot email"},"description":"Write, review, and debug HubL personalization in HubSpot marketing email — coded templates, custom modules, and programmable email. Use whenever someone writes HubSpot personalization tokens or HubL logic, asks why a token rendered blank, why a filter on a contact token did nothing in an email, or why an email template will not publish, is building crm_object / crm_objects / crm_associations loops, is working with programmable email, single-send API customProperties, smart content, or the CAN-SPAM footer tokens, or shares HubSpot template code to be checked. Trigger on \"HubL\", \"personalization_token\", \"crm_objects\", \"isEnabledForEmailV3Rendering\", \"programmable email\", or \"Jinjava\", even when HubL is not named. HubL is Jinjava, HubSpot's Java fork of Jinja2 — it reads like Jinja2 or Liquid but is neither. HubSpot-only; not for MoEngage Jinja, Braze or Shopify Liquid, or Customer.io. Works on any email HTML, not only Email Love exports; also covers HubSpot emails built in Figma with the Email Love plugin.","plugin_release_skill_id":"pluginrsk_6a9c5484dea08191bc20b4383f8b000f"},{"name":"iterable-handlebars","interface":{"brand_color":null,"iconography":"code","display_name":"Iterable Handlebars","default_prompt":"Use $iterable-handlebars to review this Iterable template for anything that renders blank or skips the send.","icon_large_url":null,"icon_small_url":null,"short_description":"Write and debug Iterable Handlebars templates"},"description":"Write, review, and debug Handlebars personalization code for Iterable email, SMS, push, in-app, and snippet templates. Use whenever someone writes merge tags or dynamic content for Iterable, asks why a personalization renders blank or shows raw {{curly braces}} in a sent message, is building abandoned-cart or product-recommendation loops over shoppingCartItems, catalogs, collections, or data feeds, needs conditional or date-based content in an Iterable template, hits a HandlebarsExecutionError or an unexplained send skip, or shares an Iterable template snippet and wants it checked. Trigger even when the user just says \"Iterable merge tag\", \"why isn't my first name showing\", \"dynamic content in Iterable\", or pastes Handlebars alongside an Iterable question, without naming Handlebars. Iterable-only — do not use it for Klaviyo, Customer.io, or Braze, which use Liquid-style templating. Works on any email HTML, not only Email Love exports; also covers Iterable emails built in Figma with the Email Love plugin.","plugin_release_skill_id":"pluginrsk_6a9c548485bc8191988786cc1dd7678e"},{"name":"klaviyo-django","interface":{"brand_color":null,"iconography":"code","display_name":"Klaviyo Personalization","default_prompt":"Use $klaviyo-django to review this Klaviyo template for anything that renders blank or fails to preview.","icon_large_url":null,"icon_small_url":null,"short_description":"Write and debug Klaviyo Django templates"},"description":"Write, review, and debug personalization code in Klaviyo email, SMS, and push templates. Use this skill whenever someone is writing merge tags, conditionals, or dynamic blocks in Klaviyo, asks why a personalization renders blank or why a template will not preview, is building abandoned-cart or product loops over event data or catalog items, needs conditional show/hide logic or date formatting in a Klaviyo template, hits \"Could not parse the remainder\" or a skipped send, or shares Klaviyo template code and wants it checked. Trigger on \"Klaviyo variable\", \"Klaviyo personalization\", \"Klaviyo dynamic block\", \"event.extra.line_items\", or Klaviyo flow and campaign template questions, even when the templating language is not named. Klaviyo-only, and note that Klaviyo uses Django templates, NOT Liquid, so do not apply this skill to Braze, Customer.io, Shopify, or other Liquid platforms. Works on any email HTML, not only Email Love exports; also covers Klaviyo emails built in Figma with the Email Love plugin.","plugin_release_skill_id":"pluginrsk_6a9c54849be88191b410003ca544a94c"},{"name":"marketo-velocity","interface":{"brand_color":null,"iconography":"code","display_name":"Marketo Personalization","default_prompt":"Use $marketo-velocity to review this Marketo email for tokens or Velocity that would fail at send time.","icon_large_url":null,"icon_small_url":null,"short_description":"Write and debug Marketo tokens and Velocity"},"description":"Write, review, and debug personalization in Adobe Marketo Engage emails — tokens and Velocity email scripting. Use this skill whenever someone is writing Marketo tokens or an Email Script token, asks why a token renders literally or a default value is ignored, is looping over custom objects or opportunities, needs conditional or date-formatted content in a Marketo email, hits a Velocity compile error or an email that fails to send, or shares Marketo template code and wants it checked. Trigger on \"Marketo token\", \"my token\", \"Velocity\", \"email script token\", \"{{lead.\", \"$lead\", \"custom object in Marketo\", or Marketo email personalization questions even when the mechanism is not named. Marketo Engage only — do not apply it to Salesforce Marketing Cloud, Iterable, Klaviyo, Braze, or Customer.io. Works on any email HTML, not only Email Love exports; also covers Marketo emails built in Figma with the Email Love plugin.","plugin_release_skill_id":"pluginrsk_6a9c5483758c81919f1fb0463fa78708"},{"name":"moengage-jinja","interface":{"brand_color":null,"iconography":"code","display_name":"MoEngage Jinja","default_prompt":"Use $moengage-jinja to review this MoEngage template for anything that would drop users from the send.","icon_large_url":null,"icon_small_url":null,"short_description":"Write and debug MoEngage Jinja personalization"},"description":"Write, review, and debug Jinja personalization in MoEngage email campaigns, plus push, SMS, WhatsApp, and on-site messages where the behaviour differs. Use this skill whenever someone is writing MoEngage Jinja, asks why a MoEngage campaign reached fewer users than the segment, says users dropped from a campaign or the message was not sent to some users, is choosing a fallback, is looping a ProductSet or recommendation, or is calling a Content API. Trigger on \"MOE_NOT_SEND\", \"UserAttribute\", \"EventAttribute\", \"ProductSet\", \"ContentApi\", \"getAuxData\", \"personalization failed\", \"After Personalization Removal\", or MoEngage campaign personalization questions even when Jinja is not named. MoEngage-only. It looks like stock Jinja2 and like HubSpot HubL, so do not apply it to HubSpot, Braze, or Customer.io, whose namespaces, fallback forms, and null handling are different. Works on any email HTML, not only Email Love exports; also covers MoEngage emails built in Figma with the Email Love plugin.","plugin_release_skill_id":"pluginrsk_6a9c5484a1408191ba1b1c8788f8726d"},{"name":"sailthru-zephyr","interface":{"brand_color":null,"iconography":"code","display_name":"Sailthru Zephyr","default_prompt":"Use $sailthru-zephyr to review this Sailthru template for anything that renders empty or silently cancels the send.","icon_large_url":null,"icon_small_url":null,"short_description":"Write and debug Sailthru Zephyr templates"},"description":"Write, review, and debug Zephyr personalization in Zeta Engage by Sailthru — HTML and Visual templates, campaigns, transactional and triggered sends, subject lines, code snippets, hosted pages, and Lifecycle Optimizer. Use whenever someone writes Sailthru template code, asks why a Sailthru email went out empty or never went out at all, is looping over or filtering a data feed, or shares Sailthru template code and wants it checked. Trigger on \"Zephyr\", \"Sailthru template\", \"content library\", \"Lifecycle Optimizer\", \"empty email sent\", `{foreach}`, `{if}`, `{* *}`, `assert()`, `cancel()`, `filter_content()`, `personalize()`, or `profile.vars` even when the language is not named. Zephyr and Sailthru only. Do not apply it to Zeta Marketing Platform, whose ZML language is Liquid-derived and uses double braces and percent tags, and do not apply it to Liquid, Handlebars, or Django platforms. Works on any email HTML, not only Email Love exports; also covers Sailthru emails built in Figma with the Email Love plugin.","plugin_release_skill_id":"pluginrsk_6a9c548285c881919c0d3113cc27b9ea"},{"name":"sfmc-ampscript","interface":{"brand_color":null,"iconography":"code","display_name":"Marketing Cloud AMPscript","default_prompt":"Use $sfmc-ampscript to review this Marketing Cloud content for anything that would error the send.","icon_large_url":null,"icon_small_url":null,"short_description":"Write and debug AMPscript in Marketing Cloud"},"description":"Write, review, and debug AMPscript, Guide Template Language, and personalization strings in Salesforce Marketing Cloud emails, CloudPages, SMS, and push. Use whenever someone writes SFMC personalization or dynamic content, asks why subscribers show as Errored or NotSent, is building Data Extension lookups or product loops, is working with Journey Builder data bindings, content blocks, or sendable Data Extensions, hits an error code like 100, 103, 104, or 111, or shares SFMC template code and wants it checked. Trigger on \"AMPscript\", \"SFMC\", \"Marketing Cloud personalization\", \"LookupRows\", \"personalization string\", \"Journey Builder data binding\", \"%%=\", or Salesforce Marketing Cloud email content questions even when the language is not named. Salesforce Marketing Cloud only — do not apply it to Iterable, Klaviyo, Braze, or Customer.io, whose syntax is unrelated. Works on any email HTML, not only Email Love exports; also covers Salesforce Marketing Cloud emails built in Figma with the Email Love plugin.","plugin_release_skill_id":"pluginrsk_6a9c54825e8c8191aba0d5cf2c993a7c"},{"name":"zeta-zml","interface":{"brand_color":null,"iconography":"code","display_name":"Zeta ZML","default_prompt":"Use $zeta-zml to review this Zeta Marketing Platform template for anything that renders blank, errors, or skips the message.","icon_large_url":null,"icon_small_url":null,"short_description":"Write and debug Zeta Marketing Platform ZML"},"description":"Write, review, and debug ZML (Zeta Markup Language) personalization in Zeta Marketing Platform email, SMS, and push templates. Use whenever someone writes or pastes ZMP template code, asks why a Zeta campaign errored or why messages were skipped, or is working with {% resources %}, {% recommendation %}, {% event %}, {% feeds %}, {% media_asset %}, {% coupon %}, {% segments %}, or {% skip_message %}. Trigger on \"Zeta campaign error\", \"message skipped\", liquid_internal, custom_skip, email_subject_missing, elsif, or a resource query returning wrong rows. Zeta ships two email platforms with different languages; routing matters. This skill is Zeta Marketing Platform (ZMP) and ZML only. Zeta Engage by Sailthru uses Zephyr, whose single-brace {if} and {foreach} syntax has no filters, never route Sailthru here. Not for Shopify, Braze, or Customer.io Liquid, which ZML resembles but is not. Works on any email HTML, not only Email Love exports; also covers Zeta emails built in Figma with the Email Love plugin.","plugin_release_skill_id":"pluginrsk_6a9c54859ca08191b0e970b57087b42a"}],"app_ids":[],"version":"4.11.3","keywords":["email","figma","email-design-system","mjml","email-love","esp","liquid","ampscript","handlebars","jinja","velocity","hubl","zephyr","klaviyo","braze","iterable","sfmc"],"interface":{"category":"Creativity","logo_url":"https://files.openai.com/content?id=file_0000000009f482309f6c24e684fbdadf","brand_color":"#EE2461","website_url":"https://emaillove.com","capabilities":["Interactive","Write"],"logo_url_dark":null,"default_prompt":"Build an export-ready email in my Figma file.","developer_name":"Email Love","default_prompts":["Build an export-ready email in my Figma file.","Repair this broken Email Love template in Figma.","Add personalization for my ESP to this email HTML."],"screenshot_urls":[],"long_description":"Four Figma skills cover Email Love email building, template repair, design-system migration, and quality gates. Ten ESP skills cover Braze Liquid, Customer.io Liquid, HubSpot HubL, Iterable Handlebars, Klaviyo Django, Marketo Velocity, MoEngage Jinja, Sailthru Zephyr, Salesforce Marketing Cloud AMPscript, and Zeta ZML. The ESP skills write, review, and debug personalization in any email HTML, whether or not it came from Email Love, without requiring an MCP connection. This is a skills-only package and does not bundle MCP configuration. Canvas work requires compatible Figma write tools connected separately. Inspiration research, conversion, design-system access, headless export verification, and previews require the relevant Email Love MCP tools connected and authenticated separately. Available Figma workflows depend on the tools exposed in your environment. Conversion begins with a Figma design or supplied screenshot; it is not a free-form HTML generator for chat.","composer_icon_url":"https://files.openai.com/content?id=file_00000000498c82309420867436b6e608","short_description":"Build HTML Emails in Figma","plugin_category_id":"creativity","privacy_policy_url":"https://emaillove.com/privacy-policy","terms_of_service_url":"https://emaillove.com/terms","composer_icon_dark_url":null},"description":"Build, repair, migrate, and review Email Love emails in Figma, and write or troubleshoot personalization in any email HTML with ten ESP templating skills.","app_manifest":null,"display_name":"Email Love","app_templates":[],"onboarding_skill_name":null,"requires_local_executor":false},"created_at":"2026-08-05T21:01:04.807573Z","is_template":false,"connector_id":null,"discoverability":"UNLISTED","canonical_app_id":null},"research":null,"package_metadata":{"name":"email-love","author":{"url":"https://emaillove.com","name":"Email Love"},"license":"MIT","sources":[{"path":".codex-plugin/plugin.json","sha256":"19f8ec93fcb822947eff3f21a89e3bf25374ee0005335eed12ba28b5f40840d9"}],"version":"4.11.3","homepage":"https://help.emaillove.com/plugin/ai/agents-in-figma","keywords":["email","figma","email-design-system","mjml","email-love","esp","liquid","ampscript","handlebars","jinja","velocity","hubl","zephyr","klaviyo","braze","iterable","sfmc"],"repository":"https://github.com/email-love/codex-agents","artifact_id":11143,"observed_at":"2026-10-02T00:29:57Z","capabilities":["Interactive","Write"],"field_sources":{"name":0,"author":0,"license":0,"version":0,"homepage":0,"keywords":0,"repository":0,"capabilities":0},"extraction_version":1,"conflicts_or_errors":[]}}