WP Manifestindependent plugin directory
manifest / email / lume-editor

Lume Editor – Visual Email Designer

Wordpress Email Customiser Plugin

by CartRabbit Technology · github.com/dakshu007/lume-editor · website

1stars
0forks

Install

No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:

wp plugin install https://github.com/dakshu007/lume-editor/archive/refs/heads/main.zip

A platform-level drag-and-drop email designer for WooCommerce & WordPress, built by CartRabbit Technology.
Match every YayMail 4.0 feature — and extend beyond.


✨ Features at a Glance

Category Feature
🎨 Builder WYSIWYG drag-and-drop, undo/redo, revision history, multi-select, copy/paste styles
📐 Design 14 block types, 1–4 column layouts, Global Header/Footer, Pattern Library, Custom CSS, Google Fonts
Dynamic 40+ shortcodes, Conditional Logic (Pro), Developer API, Sample Order Preview
🛒 WooCommerce All 11 WC emails + 80+ plugin integrations (Subscriptions, AST, AutomateWoo, WPML, Polylang…)
🔧 Admin Export/Import JSON, Template Mapping, Source Identifier, REST API
📧 Delivery Test email sender, Dark Mode, Responsive stacking engine
🔒 Security manage_options capability checks, prepared statements, CVE-2026-1937 patched

📁 File Structure

lume-editor/
├── lume-editor.php                       # Plugin bootstrap (PHP 8.0+ gate, HPOS compat)
├── uninstall.php
│
├── includes/
│   ├── class-plugin.php                  # Singleton – wires all subsystems
│   ├── class-installer.php               # 6 DB tables via dbDelta, cron events, seeds
│   ├── class-emailcustomizer.php         # wp_mail + WC email pipeline hooks
│   ├── class-templaterepository.php      # CRUD, revisions, mapping, logs, export/import
│   ├── class-renderer.php                # JSON → HTML, conditions, dark mode, responsive
│   ├── class-shortcodeengine.php         # {{token}} processor, 40+ built-ins
│   ├── class-globalelements.php          # Global header/footer + DarkMode, ResponsiveEngine, DeveloperApi, SourceIdentifier
│   ├── class-licensemanager.php          # CartRabbit API license + AjaxHandlers
│   │
│   ├── blocks/
│   │   └── class-blockregistry.php       # 14 blocks: logo, image, header, text, button,
│   │                                     # social, video, html, columns, divider, spacer,
│   │                                     # footer, product_card, coupon
│   ├── api/
│   │   └── class-restcontroller.php      # 20+ REST routes (namespace lume-editor/v1)
│   │
│   ├── admin/
│   │   └── class-admin.php               # 8 admin pages, asset enqueue, settings save
│   │
│   └── integrations/
│       └── class-woocommerceintegration.php  # WC + Subscriptions + ShipmentTracking +
│                                             # ProductBundle + AutomateWoo + Wpml + CheckoutFields
│
├── admin/
│   ├── css/lume-editor.css               # Complete design system (~700 lines)
│   ├── js/
│   │   ├── lume-blocks.js                # Block canvas renderers & definitions
│   │   ├── lume-editor.js                # Full editor engine (~700 lines)
│   │   └── lume-admin.js                 # Admin list, mapping, export/import JS
│   └── views/
│       ├── templates.php, editor.php, settings.php, logs.php
│       ├── mapping.php, global-elements.php, patterns.php, export-import.php
│
└── tests/
    ├── bootstrap.php
    └── RendererTest.php

🚀 Installation

# Drop into wp-content/plugins/
git clone https://github.com/cartrabbit/lume-editor.git wp-content/plugins/lume-editor

# Activate
wp plugin activate lume-editor

Or upload the ZIP via WP Admin → Plugins → Add New → Upload Plugin.


🗄 Database Tables

Table Purpose
lume_templates JSON blocks + settings per template
lume_revisions Rolling save history (max 30 per template)
lume_logs Sent-email audit trail (auto-pruned, configurable days)
lume_template_map Maps WC email ID → Lume template ID
lume_global_elements Single header / footer block set
lume_patterns Reusable layout pattern library

🔌 REST API

Base: /wp-json/lume-editor/v1/
Auth: WordPress Cookie (X-WP-Nonce) or Application Passwords.

Method Endpoint Description
GET/POST /templates List / Create
GET/PUT/DELETE /templates/{id} Read / Update / Soft-delete
POST /templates/{id}/duplicate Duplicate
GET /templates/{id}/revisions List revisions
POST /templates/{id}/revisions/{rid}/restore Restore
POST /preview Render JSON → HTML
POST /test-email Send test
GET/POST /global-elements/{header\|footer} Read / Save
GET/POST /mapping Read / Save template mapping
GET /patterns List patterns
GET /export Export JSON
POST /import Import JSON
GET /shortcodes Grouped shortcode list
GET /blocks Block palette
GET /logs Sent email log
GET /sample-order Sample preview context
GET /wc-emails WC email list with Source Identifier

🪝 Developer Hooks

Register a Custom Block

add_action('lume_editor_init', function(\LumeEditor\DeveloperApi $api) {
    $api->register_block('countdown', [
        'label'    => 'Countdown Timer',
        'icon'     => '⏱',
        'category' => 'dynamic',
        'defaults' => ['end_date' => '', 'label' => 'Sale ends in:'],
        'schema'   => [
            ['key' => 'end_date', 'label' => 'End Date', 'type' => 'text'],
            ['key' => 'label',    'label' => 'Label',    'type' => 'text'],
        ],
        'render' => function(array $block): string {
            return '<table width="100%"><tr><td style="text-align:center;padding:20px;">⏱ Countdown</td></tr></table>';
        },
    ]);
});

Register a Custom Shortcode

add_action('lume_editor_init', function(\LumeEditor\DeveloperApi $api) {
    $api->register_shortcode(
        'my_custom_field',
        fn($ctx) => esc_html(get_user_meta($ctx['customer_id'] ?? 0, 'my_field', true)),
        'My Custom Field',
        'custom'
    );
});

Enrich Render Context

add_filter('lume_editor_wc_context', function(array $ctx, \WC_Email $email): array {
    $ctx['my_token'] = 'Hello!';
    return $ctx;
}, 10, 2);

⌨️ Editor Keyboard Shortcuts

Shortcut Action
Ctrl/⌘ + S Save template
Ctrl/⌘ + Z Undo
Ctrl/⌘ + Y / ⌘⇧Z Redo
Ctrl/⌘ + D Duplicate selected block
Delete / Backspace Delete selected block
Esc Deselect all
Shift + Click Multi-select

🔒 Security

  • All REST routes require manage_options capability
  • All inputs sanitized (sanitize_text_field, sanitize_key, wp_kses_post)
  • All DB queries use $wpdb->prepare() (no raw interpolation)
  • Nonces on all AJAX requests
  • CVE-2026-1937 capability escalation patches applied

🏢 About CartRabbit Technology

Built and maintained by the CartRabbit team — specialists in WooCommerce growth tools, email optimization, and conversion-focused WordPress plugins.

🌐 cartrabbit.io · 📧 dev@cartrabbit.io