1. Introduction
Welcome to EPD Product Designer! This documentation will help you get started and make the most of the plugin.
What is EPD Product Designer?
EPD Product Designer is a lightweight, user-friendly product customization plugin for WordPress. It allows your customers to personalize products by adding custom text and images using an intuitive drag-and-drop canvas editor.
Drag & Drop Editor
Intuitive canvas-based editor powered by Fabric.js for smooth interactions.
Flexible Masks
Rectangle and ellipse shapes for precise editable areas. Custom SVG shapes available with Pro.
Mobile Friendly
Fully responsive design with touch support for mobile devices.
CF7 Compatible
Integrates seamlessly with Contact Form 7 or uses built-in form.
Product Colors
Let customers preview products in different colors with real-time tinting.
Google Fonts
Optional Google Fonts integration with 25+ curated font choices.
Keyboard Shortcuts
Copy, paste, duplicate, and delete with familiar keyboard shortcuts.
Download & Print
Let customers download or print their design directly from the browser.
Layer Controls
Move objects up/down with floating layer toolbar for precise layering.
CSV Export
Export all submissions to a spreadsheet for easy order management.
Translation Ready
Fully translatable with Loco Translate, Polylang, WPML, and more.
Mask Coloring
Optional feature to let users fill editable areas with custom background colors.
Pro Features
Upgrade to Pro for advanced functionality:
Custom SVG Mask Shapes
Use any SVG shape as an editable area — hearts, stars, badges, logos, or any custom outline. Go beyond rectangles and ellipses.
Product Bundles
Design multiple perspectives of a product (front, back, sleeve) — each with its own editable areas, shapes, and constraints. Submit everything as one order.
Synchronized Colors
Sync product colors across all items in a bundle for consistent designs.
Customer SVG Uploads
Let customers upload their own SVG files (with automatic security sanitization).
Image Quality Checks
Warn customers when their images are too low resolution for printing.
Per-Area Image Source
Control each area independently: library only, upload only, both, or none. Works with the free Image Library feature.
WooCommerce Addon (Sold Separately)
Connect EPD Product Designer to your WooCommerce store:
Cart Integration
Customers add customized designs directly to their WooCommerce cart.
Design Fees
Charge extra for design customization based on areas used.
Order Design Preview
Composite design images, individual uploaded files, and fonts used are visible in WooCommerce orders.
Variable Products
Full support for WooCommerce variable products including all variations.
2. Requirements
| Requirement |
Minimum |
Recommended |
| WordPress |
5.8+ |
6.0+ |
| PHP |
7.4+ |
8.0+ |
| MySQL |
5.6+ |
8.0+ |
| Browser |
Chrome, Firefox, Safari, Edge (latest versions) |
Optional
- Contact Form 7 - For advanced form customization (plugin works without it)
- WooCommerce - Required if using the WooCommerce Addon (sold separately)
3. Installation
Method 1: WordPress Admin (Recommended)
1
Upload Plugin
Go to Plugins → Add New → Upload Plugin in your WordPress admin.
2
Select ZIP File
Click "Choose File" and select the epd-product-designer.zip file you downloaded.
3
Install & Activate
Click "Install Now" and then "Activate Plugin".
Method 2: FTP Upload
- Unzip the downloaded file on your computer
- Upload the
epd-product-designer folder to /wp-content/plugins/
- Go to Plugins in WordPress admin and activate "EPD Product Designer"
Success! After activation, you'll see a new menu item called "EP Designer" in your WordPress admin sidebar.
4. Quick Start Guide
Get your first product designer running in 5 minutes:
1
Create a Product
Go to EP Designer → Add New Product. Enter a title like "Custom T-Shirt".
2
Upload Base Image
Click "Upload Image" and select your product photo. The canvas dimensions will auto-fill.
3
Add Editable Area
Click "+ Add Area" and use the sliders to position the mask where customers can add designs.
4
Publish & Copy Shortcode
Click "Publish", then copy the shortcode shown (e.g., [epdesigner product_id="123"]).
5
Add to Page
Paste the shortcode into any page or post. Done!
5. Creating Products
Admin Interface
The product editor features a clean, organized layout with collapsible sections:
- Visual Editor - Always visible at the top with image upload, canvas size, and live preview
- Editable Areas - Expanded by default with a tabbed interface for easy navigation between areas
- Image Library - Assign predefined images for customers to choose from
- Mask Appearance - Stroke settings and mask coloring options
- Object Constraints - Max upload size, overflow, scale, and layer opacity
- Product Colors - Color swatches or free picker options
- Font Colors - Restrict text colors if needed (e.g., for specific ink colors)
- Allowed Fonts - Select which fonts are available to users
- Shortcode & Output - Shortcode, layout override, and form selection
Tip: Click any section header to expand or collapse it. Most settings sections are collapsed by default to reduce clutter. Hover over option labels to see helpful tooltips.
Product Settings
Base Image
Upload the product photo that customers will see. This becomes the background of the design canvas. Recommended dimensions: 800x800 to 1200x1200 pixels.
Canvas Size
The canvas dimensions are automatically set from your uploaded image. You can adjust them manually if needed. The canvas scales responsively on mobile devices.
Visual Preview
The preview area shows your product with all editable areas overlaid. Use the toggle button to switch between views:
- Fit to Window (default) - Scales the preview to fit the admin panel
- 1:1 Original - Shows the preview at actual pixel dimensions (scrollable for large images)
Tip: Use 1:1 mode for precise mask positioning, especially when working with complex shapes or when pixel-perfect alignment matters.
Editable Areas (Masks)
Masks define where customers can place their designs. Multiple editable areas per product are supported in both the free and Pro versions.
The Editable Areas section uses a tabbed interface for easy navigation:
- Each tab shows the area name (or "Area #1", "Area #2" if unnamed)
- Click the + button to add a new area
- Click the ✕ on a tab to remove that area
- A count badge shows how many areas you've created
| Setting |
Description |
| Name |
Label shown to customers (e.g., "Front", "Back", "Sleeve") |
| Image Source (Pro) |
Controls which image tools customers see for this area: Both, Library Only, Upload Only, or None |
| Shape |
Rectangle, Ellipse, or Custom SVG (Pro) |
| X / Y Position |
Position from top-left corner (use sliders for precision) |
| Width / Height |
Size of the editable area |
| Rotation |
Rotate the mask from 0° to 360° |
| Corner Radius |
Round the corners of rectangle masks (0 = sharp corners). Only visible for rectangle shapes. |
| SVG File |
Upload a custom SVG shape file. Only visible when "Custom SVG" shape is selected. |
Tip: Use the live preview to see exactly how your masks appear on the product image. The preview updates in real-time as you adjust settings.
Custom SVG Shapes (Pro)
With Pro, you can upload custom SVG files for unique mask shapes beyond rectangles and ellipses:
- What works best: Simple filled shapes (hearts, stars, badges, custom logos)
- Upload: Select "Custom SVG" from the Shape dropdown, then click "Upload SVG"
- Validation: The plugin automatically validates your SVG and shows warnings for potential issues
SVG Requirements:
- Use solid filled shapes (the fill color is ignored - only the shape matters)
- Avoid stroke-only shapes without fills
- Avoid complex features like gradients, filters, or embedded images
- If using text in your SVG, convert it to outlines first
Tip: In Illustrator or Inkscape, create a shape with a solid fill and export as SVG.
Image Library
The Image Library lets you assign a set of predefined images to each product. Customers can browse and select from these images using the “Choose Design” button in the frontend designer, which opens a modal gallery.
- Adding Images: Click “+ Add Images” to open the WordPress Media Library and select one or more images (JPG, PNG, SVG)
- Removing Images: Hover over a thumbnail and click the × button to remove it
- Supported Formats: Raster images (JPG, PNG) are placed as bitmap objects. SVG images are loaded as vector objects, preserving quality at any size
- Frontend: When images are assigned, a “Choose Design” button appears next to the upload button in all layouts (two-column, stacked, compact, and mobile tabs)
- Shared Library: All editable areas of a product share the same image library
Tip: The image library works well for offering pre-made design templates, brand logos, or approved artwork that customers can place on their products. SVGs are ideal for logos and vector artwork since they stay crisp at any size.
Per-Area Image Source (Pro)
With Pro, you can control which image tools are available for each editable area independently:
| Option |
Description |
| Both (Upload + Library) |
Customers can upload their own images and choose from the library (default) |
| Library Only |
Only the library is shown — customers cannot upload their own images |
| Upload Only |
Only the upload button is shown — the library is hidden for this area |
| None |
No image tools available for this area (text only) |
Example: On a t-shirt with front and back areas, set the front to "Both" so customers can upload or pick from the library, and set the back to "Library Only" if you only want to allow pre-approved designs there.
Upload Settings
- Max Image Size - Limit customer uploads (1-10 MB)
Allowed Fonts
Select which fonts customers can use for text:
- System Fonts - Arial, Helvetica, Georgia, Times New Roman, Verdana, Tahoma, Trebuchet MS, Courier New
- Google Fonts - If enabled in plugin settings, 25+ popular fonts like Roboto, Open Sans, Montserrat, Poppins, and more
Product Colors
Enable color options to let customers preview the product in different colors. This uses a color tinting system that works best with white or light-colored product images with transparent backgrounds (PNG).
- Enable Colors - Turn on/off color selection for this product
- Color Selection Type - Choose how users select colors:
- Predefined Swatches - Users choose from colors you define (default)
- Free Color Picker - Users can select any color with a color picker
- Color List - Add unlimited colors with names and hex codes (only used in Swatches mode)
- Color Intensity - Adjust tint intensity (10-100%) for realistic color blending
Best Practice: For product colors to work well, use a white or light-gray product image with a transparent background (PNG format). The color tinting multiplies with the base image, so lighter base colors produce more vibrant results.
When to use each mode: Use Predefined Swatches when you only offer specific colors (e.g., branded colors, available inventory). Use Free Color Picker when customers can order any color (e.g., custom printing, made-to-order items).
Font Colors
Restrict text colors to specific options. Useful for print shops with limited ink colors (e.g., black-only printing, or specific PMS colors).
- Restrict font colors - Enable to replace the free color picker with predefined color swatches
- Color List - Add the allowed font colors with names and hex codes
Example: If you only offer black and white printing, add "Black" (#000000) and "White" (#FFFFFF) as the only font color options. Customers will only see these two choices instead of a full color picker.
Object Constraints
Control how customers can position, scale, and style their designs (located in the "Object Constraints" section):
- Max Upload - Maximum file size for customer image uploads (1-10 MB). Default is 5 MB.
- Max Overflow - How far objects can extend beyond the mask boundary (0-100%). Default is 50%.
- Max Scale - Maximum zoom factor for uploaded images (1x-10x). Default is 2x.
- Layer Opacity - Transparency of user-added content (10-100%). Lower values let the product texture show through. Default is 100% (fully opaque).
These settings are useful for different product types - for example, pens need minimal overflow, t-shirts need more flexibility, and textured products benefit from lower layer opacity.
Mask Appearance
Customize how editable areas look in the designer (located in the "Mask Appearance" section):
- Stroke Width - Border thickness of editable areas (1-5px). Default is 1px.
- Stroke Color - Border color of editable areas. Default is blue (#0073aa).
- Hide Strokes - When checked, the dashed border lines around editable areas are hidden on the frontend. Users can still interact with the areas, but won't see visible outlines.
- Allow Mask Coloring - Enable/disable mask fill colors for this product.
- Default Color - Optional. When enabled (checkbox + color picker), all editable areas start pre-filled with this color. Users can still change or clear the color individually. If disabled, areas start transparent as usual.
- Fill Intensity - Transparency of mask fill colors (10-100%). Lower values let the product show through. Only visible when mask coloring is enabled.
These settings help you match the designer appearance to your site's design or make editable areas more visible for complex product images.
Tip: Use "Hide Strokes" for a cleaner look when your product image already has clear visual boundaries, or when combined with mask coloring to create a seamless appearance.
Mask Coloring (Frontend Feature)
When enabled per-product (in the Mask Appearance settings), users see a color picker next to the mask selector:
- Users can fill any editable area with a background color
- Each mask can have its own color
- A "clear" button removes the fill (back to transparent)
- Fill colors are included in the exported design image
- If a default color is set, all areas start pre-filled and the color picker shows that color initially
Use Case: Great for products where customers might want a colored background behind their text or image, such as badges, labels, or promotional items.
Shortcode & Output
Located in the "Shortcode & Output" section at the bottom of each product. All settings default to your global configuration but can be overridden per product:
| Setting |
Description |
Available in |
| Shortcode |
Copy-ready shortcode to embed this product's designer |
Free & Pro |
| Image Upload |
Override the global image upload setting (Global / Enabled / Disabled) |
Free & Pro |
| Custom Text |
Override the global text setting (Global / Enabled / Disabled) |
Free & Pro |
| Layout |
Override the global layout (Global / Two Columns / Stacked / Compact) |
Pro |
| Form |
Override which form to use: Global setting, Fallback form, No Form, or a specific Contact Form 7 form |
Pro |
| Min. Resolution |
Override the global minimum image resolution per product (Global / No minimum / Custom e.g. 800x800) |
Pro |
Flexibility: Per-product overrides let you configure each product differently. For example, a business card product might need text-only (image upload disabled), while a photo canvas product needs image-only (custom text disabled). Pro users can also assign different forms or layouts per product.
6. Shortcode Usage
Basic Shortcode
[epdesigner product_id="123"]
Displays the designer for a specific product. Replace 123 with your product's ID.
Layout Override
[epdesigner product_id="123" layout="compact"]
Override the layout for this specific shortcode. Options: beside (Two Columns), below (Stacked), compact.
Layout Priority: Shortcode attribute → Product setting (Pro) → Global setting. The shortcode attribute always wins if specified.
Product Selector (All Products)
[epdesigner]
Lets customers choose from all published products. The display style can be configured in plugin settings:
- Dropdown - Traditional select menu (default)
- Visual Grid - Image-based grid showing product thumbnails. Add a short description by filling in the "Excerpt" field when editing a product.
Filtered Product Selector
[epdesigner products="123,456,789"]
Show a selector with only specific products. Use comma-separated product IDs. Products appear in the order you specify them.
Product Order: By default (without the products attribute), products are sorted alphabetically by title. When using the products attribute, they appear in the exact order you list them.
Product Category Filter
[epdesigner category="t-shirts"]
Show products from a specific product category. Use the category slug or ID. Categories can be created and managed in EP Designer → Products → Categories.
[epdesigner products="123,456" category="apparel"]
Combine with products to further filter specific product IDs within a category.
Bundle Shortcode (Pro)
[epdesigner bundle_id="123"]
Display a specific product bundle (Pro feature). Customers can design all products in the bundle and submit them together.
Bundle Selector (Pro)
[epdesigner bundles="true"]
Display a selector showing all published bundles. Customers choose a bundle before designing. Uses the same display style (dropdown or grid) as the product selector.
Filtered Bundle Selector
[epdesigner bundles="5,8,12"]
Show a selector with only specific bundles. Use comma-separated bundle IDs.
Bundle Category Filter
[epdesigner bundles="true" bundle_category="uniforms"]
Filter bundles by category. Use the category slug or ID. Categories can be created in EP Designer → Bundles → Categories.
Bundle Display: For best results with the grid display, add a Featured Image and Excerpt to your bundles (via the standard WordPress sidebar when editing a bundle).
Finding Product ID
The product ID is shown in the shortcode box when editing a product. You can also find it in the URL when editing: post.php?post=123&action=edit
Page Builder Usage
The shortcode works with all major page builders:
- Elementor: Use Shortcode widget
- Gutenberg: Use Shortcode block
- WPBakery: Use Raw HTML or Text Block element
- Divi: Use Code module
Product Selector Navigation
When using the product selector shortcode ([epdesigner]), customers who select a product will see a "← Change Product" link above the designer canvas. Clicking it returns to the product selector. The same applies for bundles ("← Change Bundle").
Admin Bar Quick Edit
When a logged-in administrator or editor views a page with the designer, an "Edit Designer" (or "Edit Bundle") link appears in the WordPress admin bar. This provides one-click access to edit the product's settings directly.
Limitations
One Designer Per Page: Only one product designer can be displayed per page. If you add multiple shortcodes with different products on the same page, only the first designer will load. The additional shortcodes will show a notice: "Only one designer can be displayed per page."
This limitation exists to prevent JavaScript conflicts between multiple canvas instances. If you need customers to design multiple products, use separate pages or the product selector shortcode ([epdesigner]) to let them switch between products.
7. Plugin Settings
Access settings via EP Designer → Settings.
Designer Layout
| Option |
Description |
| Two Columns |
Canvas on left, form on right (desktop default) |
| Stacked |
Form appears below the canvas (better for narrow layouts) |
| Compact |
Canvas left, controls in a row on right with form below - 50/50 split (great for sidebars or constrained spaces) |
Designer Features
- Enable Image Upload - Allow customers to upload images
- Enable Custom Text - Allow customers to add text
- Enable Google Fonts - Add 25+ popular Google Fonts to font selection (loads dynamically)
- Enable Download Button - Let customers download their design as a PNG image
- Enable Print Button - Let customers print their design directly
- Mobile Tab Layout (Pro) - Show Image/Text/Actions tools as tabs on mobile devices to save vertical space and reduce scrolling
You can disable features if your use case only requires specific functionality.
Product Selector Style
When using [epdesigner] without a product ID:
- Dropdown - Simple select menu (faster for many products)
- Visual Grid - Image grid with thumbnails (more engaging for customers)
Form Settings
Choose the default form for design submissions:
- Fallback Form - The built-in submission form with name, email, and message fields
- Contact Form 7 - Select any CF7 form (requires CF7 plugin)
- No Form (Designer Only) - Display only the designer canvas without any submission form. Useful for display-only or preview purposes. (Note: When using the WooCommerce Addon in "Add to Cart" mode, the form is automatically hidden — you don't need to set this manually.)
Notifications
- Admin Email - The email address that receives submission notifications
- Email Attachments - Attach design images to notification emails. When disabled, images are still saved in the Media Library and viewable in submission details. Disable for bundles with many products to avoid large emails.
Redirects
- Success Redirect URL - Redirect to a custom page after successful submission (e.g. a thank-you page). Leave empty to stay on the same page and show a success message.
Spam Protection (Fallback Form Only)
- Honeypot Protection - Blocks spam bots automatically
- Rate Limiting - Prevents rapid-fire submissions (configurable seconds between submissions)
- Rate Limit Redirect URL - Redirect to a custom page when a user submits too quickly. Leave empty to show an error message.
Note: These spam protection features only apply to the built-in fallback form. If using Contact Form 7, configure spam protection through CF7's own settings (reCAPTCHA, Akismet, etc.).
Translation
EPD Product Designer is fully translation-ready. All frontend text strings use WordPress's internationalization system and work with popular translation plugins:
- Loco Translate
- Polylang
- WPML
- TranslatePress
8. Pro Features
The Pro version unlocks powerful features for professional use.
Product Bundles
Bundles let you offer multiple perspectives of a product — or a set of related products — as a single design experience. Each perspective is its own designer product with its own base image, editable areas, mask shapes, and constraints. Customers design each one and submit everything together.
Why Bundles?
A single designer product shows one view. But real products have multiple sides. A t-shirt has a front and a back. A mug has a wrap-around surface. A uniform set has a shirt, pants, and cap. Bundles solve this by combining separate products into one seamless flow — each with fully independent editing areas.
Example: Create a "T-Shirt Front" product with a large rectangle mask on the chest area, and a "T-Shirt Back" product with a smaller ellipse mask between the shoulders. Bundle them together. Your customer sees two tabs — "Front" and "Back" — and designs both sides before submitting a single order.
- Independent editing areas: Each product in the bundle has its own masks, shapes (rectangle, ellipse, SVG), positions, and size constraints
- Tab navigation: Customers switch between products using an inline tab bar
- Design persistence: Designs are kept when switching between products
- Single submission: All designs are submitted together as one order
- Synchronized colors: Optionally sync product colors across all items in a bundle — select a color on the front and the back matches automatically
Creating a Bundle
- Go to EP Designer → Bundles → Add New
- Give your bundle a title (e.g., "T-Shirt Front & Back")
- Add products to the bundle using the dropdown
- Optionally customize tab names and enable color sync
- Publish and use the shortcode:
[epdesigner bundle_id="123"]
Bundle Settings
| Setting |
Description |
| Navigation |
Override the global navigation position for this bundle. Options: Use Global Setting (default), Top only, Bottom only, Top and Bottom, or Disable Navigation. Disabling navigation hides all navigation controls (tabs, prev/next arrows) — useful for single-product bundles that should behave like standalone products. |
| Synchronize product colors |
When enabled, the color selected in the first product applies to all products in the bundle. Works with both predefined color swatches and the free color picker. |
| Form Position |
With Controls - form appears beside/below canvas based on layout setting. Below Bundle - form appears full-width at the bottom (legacy behavior). |
| Submission Form |
Choose which form to use for submissions. Ignored when WooCommerce addon uses "Add to Cart" mode. |
Tip: Create individual products first (Front, Back, Sleeve), then combine them into a bundle. Each product keeps its own per-product settings (layout, form, image upload, etc.), while the bundle adds its own layer of overrides for navigation, color sync, form position, and submission form.
Customer SVG Uploads
Allow customers to upload their own SVG files (logos, vector artwork):
- Security: All SVG files are automatically sanitized on upload
- Size limits: Set a maximum file size to control uploads
- Complexity check: Warns customers about SVGs that may not work well
How to Enable
- Go to EP Designer → Settings
- Enable "Allow Customer SVG Uploads" under Pro Features
- Optionally set a separate max file size for SVG uploads
Note: Only simple, well-formed SVGs work reliably. The plugin warns customers if their SVG appears too complex.
Image Quality Warnings
Help customers avoid low-quality prints by warning them about low-resolution images:
- Set a minimum resolution requirement (e.g., 300 DPI)
- Warning appears when images are too small for the design area
- Non-blocking: customers can still use the image if they wish
- Configure globally or per-product
Per-Area Image Source Control
Fine-tune which image tools are available for each editable area. This works in combination with the product-level Image Library (available in the free version).
- Both (Upload + Library): Customers can upload their own images and choose from the library (default)
- Library Only: Only the image library is available — useful for areas where you only want pre-approved designs
- Upload Only: Only the upload button is shown — the library is hidden for this area
- None: No image tools at all for this area (text only)
How to Use
- Open a designer product in the admin
- In the Editable Areas section, click on an area tab
- Set the “Image Source” dropdown to your preferred option
- Repeat for each area as needed
Note: The product-level “Image Upload” setting (in Shortcode & Output) acts as a master switch. If it is set to “Disabled”, no image tools appear regardless of per-area settings.
WooCommerce Addon (Sold Separately)
The WooCommerce Addon is a separate plugin that connects EPD Product Designer to your store:
- Link products: Connect any WooCommerce product to a designer product or bundle
- Design fees: Add pricing per editable area used
- Add to Cart: Customers add their customized design directly to cart
- Order management: Design images are attached to WooCommerce orders
- Design details in orders: Store owners see the composite design image, individual uploaded files, and fonts used by the customer — all visible in the order admin screen
- Variable products: Full support for WooCommerce variable products
- HPOS compatible: Works with WooCommerce High-Performance Order Storage
What Store Owners See in Orders
When a customer places an order with a customized design, the order details include:
- Custom Designs: The final composite design image for each product
- Uploaded Images: Individual files the customer uploaded (shown separately for reference)
- Fonts Used: A list of all fonts the customer selected for their text elements
- Price Breakdown: Detailed breakdown of base price and per-area design fees
Note: The WooCommerce Addon is sold separately from the Pro version. You can use EPD Product Designer (Free or Pro) without WooCommerce - designs are submitted via the built-in form or Contact Form 7.
Add to Cart Position
The WooCommerce product settings include an "Add to Cart Position" dropdown that controls where the pricing box and "Add to Cart" button appear:
| Option |
Description |
| Below Designer (full width) |
The Add to Cart section appears below the entire designer as a full-width section. This is the default. |
| With Controls (follows layout) |
The Add to Cart section appears inside the controls panel, following your layout setting (Two Columns, Stacked, or Compact). This creates a more integrated look. |
This setting works consistently for both single designer products and bundles. When a WooCommerce product is linked to a bundle, this setting overrides the bundle's own "Form Position" setting for that specific WooCommerce product page.
Tip: The bundle's "Form Position" setting still applies when the bundle is used outside WooCommerce (e.g., via shortcode with CF7 or fallback form).
9. Contact Form 7 Integration
EPD Product Designer works seamlessly with Contact Form 7 for advanced form customization.
Setup Steps
- Install and activate Contact Form 7
- Create a new CF7 form with your desired fields
- Go to EP Designer → Settings
- Select your CF7 form from the "Default Form" dropdown
- Save settings
Recommended CF7 Fields
<label>Your Name
[text* your-name]</label>
<label>Your Email
[email* your-email]</label>
<label>Message
[textarea your-message]</label>
[submit "Submit Design"]
Important: Use field names your-name, your-email, and your-message for best compatibility. These three fields are automatically captured and stored in the Submissions list.
Flexible Field Names
The plugin automatically recognizes several common CF7 field name variants:
| Purpose |
Recognized Field Names |
| Customer Name |
your-name, name, customer-name, full-name |
| Customer Email |
your-email, email, customer-email |
| Message |
your-message, message, comments, notes |
You can use any of these names in your CF7 form — the plugin will find and store the values automatically.
How It Works
- The design image is automatically attached to CF7 emails
- Submissions are saved to the Submissions menu
- Configure CF7's own spam protection (reCAPTCHA, etc.)
Note about custom fields: If your CF7 form includes additional fields (dropdowns, checkboxes, etc.), these values are included in the CF7 email notification but are not stored in the EP Designer Submissions list. For full form data storage, consider using a CF7 database plugin like Flamingo alongside EP Designer.
10. Managing Submissions
All design submissions are stored in EP Designer → Submissions.
Submission Details
- Customer name and email
- Selected product
- Customer message/notes
- Design preview image
- Full-size download link
Status Workflow
| Status |
Use Case |
| Pending Review |
New submissions (default) |
| In Progress |
Being processed/manufactured |
| Completed |
Order fulfilled |
| Trash |
Archived/deleted |
Email Notifications
When a submission is received:
- Admin receives email with customer details
- Design image is attached to the email (configurable under Settings → Notifications)
- Link to view submission in WordPress is included
CSV Export
Click the "Export CSV" button on the submissions list to download all submissions as a spreadsheet. The export includes submission ID, date, status, customer name, email, product, message, design URL, and form source. The export is UTF-8 encoded (Excel-compatible) and protected against spreadsheet formula injection.
11. Customization
CSS Styling
Add custom CSS to your theme's customizer or a custom CSS plugin. All elements use the .epdesigner- prefix.
Main CSS Classes
.epdesigner-designer-wrapper | Main designer wrapper |
.epdesigner-canvas-wrapper | Canvas area container |
.epdesigner-canvas-container | Canvas element container |
.epdesigner-controls-wrapper | Controls panel wrapper |
.epdesigner-control-group | Individual control section |
.epdesigner-tools-row | Row containing tool groups |
.epdesigner-tool-image | Image upload tool section |
.epdesigner-text-options | Text input and styling section |
.epdesigner-btn | All buttons |
.epdesigner-btn-secondary | Secondary buttons (reset, clear) |
.epdesigner-btn-submit | Form submit button |
.epdesigner-upload-btn | Upload button (icon + text) |
.epdesigner-product-selector | Product selector wrapper |
.epdesigner-product-grid | Visual grid selector |
.epdesigner-grid-item | Grid product card |
.epdesigner-color-swatches | Product color swatches |
.epdesigner-color-swatch | Individual color swatch |
.epdesigner-mask-tabs | Editable area tabs |
.epdesigner-mask-tab | Individual area tab |
.epdesigner-layer-toolbar | Floating layer controls |
.epdesigner-form-row | Form field row |
.epdesigner-success | Success message |
.epdesigner-error | Error message |
.epdesigner-notice | Notice/info message |
Layout Classes
.epdesigner-form-beside | Two-column layout (default) |
.epdesigner-form-below | Stacked layout |
.epdesigner-form-compact | Compact layout |
.epdesigner-mobile-tabs | Mobile tab mode enabled |
Bundle Classes (Pro)
.epdesigner-bundle-wrapper | Bundle main wrapper |
.epdesigner-bundle-navigation | Bundle tab navigation bar |
.epdesigner-bundle-tabs | Bundle product tabs container |
.epdesigner-bundle-tab | Individual bundle product tab |
.epdesigner-bundle-product | Single product within bundle |
.epdesigner-bundle-form-wrapper | Bundle shared form wrapper |
Use browser Developer Tools to inspect elements for additional classes.
Example Overrides
/* Change primary button color */
.epdesigner-btn {
background: #your-color;
}
/* Style the canvas container */
.epdesigner-canvas-container {
border: 2px solid #your-color;
border-radius: 10px;
}
/* Customize the upload button */
.epdesigner-upload-btn {
background: #f8f8f8;
border-color: #your-color;
}
/* Style color swatches */
.epdesigner-color-swatch {
border-radius: 50%;
}
/* Customize bundle tabs (Pro) */
.epdesigner-bundle-tab.active {
background: #your-color;
}
Developer Hooks
For developers, the plugin provides filters and actions:
// Modify product data before rendering
add_filter( 'epdesigner_product_data', function( $data, $product_id ) {
// Your modifications
return $data;
}, 10, 2 );
// Add content before designer
add_action( 'epdesigner_before_designer_render', function( $product_id ) {
echo '<div class="my-custom-header">...</div>';
} );
// Add content after designer
add_action( 'epdesigner_after_designer_render', function( $product_id ) {
echo '<div class="my-custom-footer">...</div>';
} );
// Add content inside the controls panel (after tools, before form)
add_action( 'epdesigner_controls_after', function( $product_id ) {
echo '<div class="my-inline-content">...</div>';
} );
// Modify system fonts
add_filter( 'epdesigner_system_fonts', function( $fonts ) {
$fonts[] = 'Comic Sans MS';
return $fonts;
} );
// Modify Google Fonts list
add_filter( 'epdesigner_google_fonts', function( $fonts ) {
$fonts[] = 'Caveat';
$fonts[] = 'Satisfy';
return $fonts;
} );
// Control user access
add_filter( 'epdesigner_user_can_use_designer', function( $can, $product_id ) {
// Only logged-in users
return is_user_logged_in();
}, 10, 2 );
// Control upload permission
add_filter( 'epdesigner_can_upload_image', function( $can ) {
// Restrict uploads to logged-in users
return is_user_logged_in();
} );
// Trust proxy headers for client IP detection (e.g. behind Cloudflare)
add_filter( 'epdesigner_trust_proxy_headers', '__return_true' );
// Override CF7 form per product (use a different form for specific products)
add_filter( 'epdesigner_cf7_shortcode', function( $shortcode, $product_id ) {
if ( $product_id === 42 ) {
return '[contact-form-7 id="99"]';
}
return $shortcode;
}, 10, 2 );
// Hook into submissions
add_action( 'epdesigner_before_submission', function( $data ) {
// $data contains: product_id, customer_name, customer_email
} );
add_action( 'epdesigner_after_submission', function( $submission_id, $data ) {
// Runs after a single-product submission is saved
}, 10, 2 );
// Bundle submission hooks
add_action( 'epdesigner_before_bundle_submission', function( $data ) {
// $data contains: bundle_id, customer_name, customer_email
} );
add_action( 'epdesigner_after_bundle_submission', function( $submission_id, $data ) {
// Runs after a bundle submission is saved
}, 10, 2 );
// Add content before/after bundle rendering
add_action( 'epdesigner_before_bundle_render', function( $bundle_id ) {
echo '<div class="my-bundle-header">...</div>';
} );
add_action( 'epdesigner_after_bundle_render', function( $bundle_id ) {
echo '<div class="my-bundle-footer">...</div>';
} );
// Override bundle form position (e.g., force inline for a specific bundle)
add_filter( 'epdesigner_bundle_form_position', function( $position, $bundle_id ) {
return $position; // 'inline' or 'below'
}, 10, 2 );
// Extend admin script data (add custom data to admin JS)
add_filter( 'epdesigner_admin_script_data', function( $data ) {
$data['myCustomKey'] = 'value';
return $data;
} );
JavaScript Events
The designer dispatches custom events on the document for frontend integration:
// Designer initialized (canvas ready)
document.addEventListener('epdesigner_designer_initialized', function(e) {
console.log('Product ID:', e.detail.productId);
console.log('Canvas:', e.detail.canvas);
});
// Design content changed (image/text added, modified, or removed)
document.addEventListener('epdesigner_design_changed', function(e) {
console.log('Area:', e.detail.areaIndex);
});
// Content added to an area
document.addEventListener('epdesigner_area_content_added', function(e) {
console.log('Type:', e.detail.contentType); // 'image', 'text', 'svg', 'fill_color'
});
// Content removed from an area
document.addEventListener('epdesigner_area_content_removed', function(e) {
console.log('Area cleared:', e.detail.areaIndex);
});
// All areas reset
document.addEventListener('epdesigner_design_reset', function(e) {
console.log('Design was reset');
});
// Bundle: product tab switched
document.addEventListener('epdesigner_bundle_product_switched', function(e) {
console.log('Switched from', e.detail.fromIndex, 'to', e.detail.toIndex);
});
REST API Endpoints
The plugin exposes REST API endpoints under the epdesigner/v1 namespace:
| Method |
Endpoint |
Description |
| GET |
/wp-json/epdesigner/v1/products |
List all published designer products (public, used by the product selector) |
| GET |
/wp-json/epdesigner/v1/product/{id} |
Get a single product's configuration (public) |
| POST |
/wp-json/epdesigner/v1/save-draft |
Save a design draft (requires nonce authentication) |
12. Frequently Asked Questions
General
Q: Does this work with WooCommerce?
A: Yes! The WooCommerce Addon (sold separately) lets you link designs to WooCommerce products, add design fees, and let customers add customized products to cart. Without the addon, you can still use the designer shortcode on WooCommerce product pages for quote requests via form submission.
Q: Can customers save their designs and come back later?
A: Currently, designs are submitted immediately. Draft saving may be added in a future version.
Q: What image formats can customers upload?
A: JPG and PNG files are supported in the free version. Pro users can also enable SVG uploads for customers.
Q: Is there a limit to how many products I can create?
A: No, create unlimited products.
Q: How do product colors work?
A: The color tinting uses a multiply blend mode. For best results, use a white or light-colored product image with a transparent PNG background. The selected color will tint the product, and you can adjust the intensity with the opacity slider.
Q: Can customers rearrange layers?
A: Yes! When multiple objects are on the canvas, a floating toolbar appears with up/down arrows to change the layer order.
Q: How do I make text bold or italic?
A: Next to the font color picker, there are B (bold) and I (italic) toggle buttons. Click them before adding text to apply the style.
Q: Can I have multiple designers on the same page?
A: No, only one designer can be displayed per page due to JavaScript limitations. Use the product selector shortcode ([epdesigner]) to let customers switch between products, or create separate pages for each product.
Q: What are Product Bundles? (Pro)
A: Bundles combine multiple designer products into one session — typically different perspectives of the same item (front/back of a t-shirt, multiple sides of a box) or a matching set (shirt + cap). Each product in the bundle keeps its own base image, editable areas, mask shapes, and constraints, so you have full control over what customers can design on each side. All designs are submitted together as one order.
Q: Can customers upload vector files? (Pro)
A: Yes, Pro users can enable SVG uploads. All SVGs are automatically scanned and sanitized for security. Complex SVGs may show a warning.
Technical
Q: The designer looks broken or doesn't load
A: Check for JavaScript conflicts with other plugins. Try disabling other plugins temporarily. Ensure your theme doesn't have conflicting CSS.
Q: Images are not attaching to emails
A: Check your server's upload directory permissions. The wp-content/uploads folder must be writable.
Q: Can I use Google Fonts?
A: Yes! Enable Google Fonts in EP Designer → Settings → Designer Features. Once enabled, you can select from 25+ popular Google Fonts per product. Fonts load dynamically only when needed.
Q: Does it work with caching plugins?
A: Yes, but exclude the designer page from caching if you experience issues with nonces.
13. Support
Getting Help
If you need assistance:
- Check this documentation first
- Review the FAQ section above
- Contact us at help@easypluginswp.com
When Contacting Support
Please include:
- WordPress version
- Plugin version
- PHP version
- Description of the issue
- Steps to reproduce
- Screenshots if applicable
- Any error messages from browser console
Support Policy
- Support included with active Pro license
- Response within 2-3 workdays
- Support covers bugs, installation help, and usage questions
- Customization beyond plugin scope may require additional fee
14. Changelog
Version 1.4.1
- New: Image Library – assign predefined images per product that customers can browse and select from via a “Choose Design” modal
- New: Per-area Image Source control – configure each area to show library only, upload only, both, or none (Pro)
Version 1.4.0
- Improved: Settings page reorganized into tabbed sections for better navigation
- Improved: Premium features now highlighted with star indicators in settings (premium only)
- Improved: Active editable area is now visually highlighted in the product editor preview
- Improved: Product editor settings now use interactive tooltips instead of browser-only title attributes
- Improved: Upload button now shows a spinner during image upload for visual feedback
- Improved: Accessibility – ARIA labels added to all icon-only buttons, canvas elements, and color inputs
- Improved: Accessibility – Color contrast increased to meet WCAG AA requirements
- Improved: Accessibility – Keyboard focus indicators added to all interactive elements
- Improved: Accessibility – Mobile tool tabs and bundle tabs now use proper ARIA tab roles
- Improved: Accessibility – Bold/Italic toggles announce pressed state to screen readers
- Improved: Accessibility – Dynamic notices and bundle progress announced to screen readers
Version 1.3.9
- Improved: Designer now loads smoothly without visible layout flash during initialization
- Improved: Product and bundle selectors now transition smoothly to the designer with fade animations
- Improved: Page scrolls to the designer position when selecting a product, so users stay in place
- Fixed: Editable area index collision when adding new areas to existing products
Version 1.3.8
- Fixed: Editable area tabs no longer show multiple panels simultaneously when working with custom SVG shapes
- Fixed: SVG uploader no longer creates duplicate media frames when switching between areas
- Fixed: Mobile bundle navigation arrows hidden when navigation is disabled per bundle
Version 1.3.7
- Improved: Mobile tool tabs now scroll horizontally when all tools are enabled, preventing cramped layout
- Fixed: Add to Cart section no longer appears above design tools on mobile with "With Controls" layout
Version 1.3.6
- New (Pro): Per-bundle navigation override — choose navigation position per bundle or disable navigation entirely
- New: Add to Cart position setting for WooCommerce addon — place pricing and cart below the designer or inline with controls
- New: Developer hooks for extensibility (
epdesigner_controls_after, epdesigner_bundle_form_position filter)
- Improved: Documentation updated with new features and developer reference
Version 1.3.5
- New: Default fill color option for editable areas — optionally pre-fill all masks with a color
- Fixed: Bundle color synchronization now works with the free color picker (not just predefined swatches)
- Fixed: Editable area data is now reliably saved when using custom SVG shapes
- Fixed: JSON handling for editable areas improved to prevent silent data loss on save
Version 1.3.4
- Improved: Image uploads are now sent to the server first, producing lightweight URL references instead of inline base64 data — significantly reduces memory usage and improves performance for all integrations (WooCommerce, CF7, fallback form)
- New: Server-side image upload endpoint with strict file-type, MIME, and size validation
- Security: Temp upload directory hardened with .htaccess to prevent PHP execution
- Security: Filterable upload permission via
epdesigner_can_upload_image hook
- Compliance: Replaced
move_uploaded_file() with wp_handle_upload() for WordPress.org compliance
- Fixed: Image resolution warning no longer appears in the free version (premium-only feature)
Version 1.3.3
- Removed: Unused minified asset files that contained unstripped code
- Improved: WordPress.org plugin directory compliance
Version 1.3.2
- Improved: WordPress.org plugin directory compliance
- Cleaned: Removed all premium-related references from free version code and comments
- Cleaned: Translation template updated to match current codebase
Version 1.3.1
- Fixed: Bundle color synchronization now works without requiring manual color selection
- Fixed: Branding consistency - all admin labels now show "EP Designer"
- Fixed: Missing directory listing protection in vendor directories
- Updated: Documentation updated to reflect current shortcodes, CSS classes, and hook names
- Updated: Translation template (POT) with all current strings
Version 1.3.0
- Changed: Plugin renamed to EPD Product Designer
- Changed: All internal prefixes unified to epdesigner_ for WordPress.org compliance
- Changed: Primary shortcode is now [epdesigner]
- Improved: WordPress.org plugin directory compliance
- Improved: Cleaner free/premium feature separation
- Improved: Free version is now fully functional with no locked features
- Removed: Deprecated PHP function calls
Version 1.2.2
- Improved: Better security for design submissions via Contact Form 7
- Improved: Safer CSV export with protection against spreadsheet formula issues
- Improved: More precise permission checks for bundle editing
- Fixed: Rare edge case with form settings not saving correctly
Version 1.2.1
- New: Product Categories - organize designer products into categories for easier management
- New: Category filter for product selector - use
category="slug" in shortcode
- New (Pro): Bundle Selector - show all bundles with
bundles="true" shortcode attribute
- New (Pro): Bundle Category filter - filter bundles by category with
bundle_category="slug"
- New (Pro): "Change Bundle" link - navigate back to bundle selection (mirrors "Change Product" behavior)
- Improved: Firefox color picker compatibility fix
- Improved: Clear fill icon now works for logged-out users (no Dashicons dependency)
Version 1.2.0
- New: Tabbed interface for Editable Areas - easier to manage multiple design areas
- New: Area count badge shows how many editable areas you've created
- New: Helpful tooltips on admin options - hover to see what each setting does
- New (Pro): Bundle Form Position setting - choose "With Controls" (follows layout) or "Below Bundle" (full width)
- New (Pro): Customer SVG uploads with automatic security sanitization
- New (Pro): Image quality warnings for low-resolution uploads
- New (Pro): Synchronized product colors across bundle items
- Improved: Product Colors and Font Colors sections now full width for consistency
- Improved: Faster loading with better code organization
- Improved: Better security with enhanced form validation
- Improved: Prevention of accidental double submissions
- Improved: Clearer bundle settings labels (renamed "Form Override" to "Submission Form")
- Fixed: Bundle fallback form now shows confirmation message after submission
- Fixed: "Add to Bundle" AJAX now saves data in correct format
Version 1.1.0
- New (Pro): Product Bundles - combine multiple products into one design session
- New: WooCommerce Addon available (sold separately) for cart integration and pricing
- Improved: Code quality and performance improvements
Version 1.0.6
- Changed: Plugin renamed and rebranded
- Improved: Freemius SDK integration with proper free/premium version switching
- Improved: Code quality improvements for WordPress coding standards compliance
Version 1.0.5
- Fixed: Gutenberg block editor compatibility - resolved horizontal overflow issue when using shortcode blocks
- Fixed: Canvas ResizeObserver error when initializing in certain page builders
- Fixed: Image upload container CSS specificity causing layout issues
Version 1.0.4
- New: 1:1 Original Size preview toggle in admin - view masks at actual pixel dimensions for precise positioning
- New: Hide mask strokes option - hide the dashed border lines on the frontend for a cleaner look
- Improved: Thinner, more transparent mask overlays in admin preview for better visibility
- Fixed: Mask color picker now correctly applies to the selected mask when using multiple SVG shapes
- Fixed: Multiple shortcodes on same page now show notice instead of conflicting (only one designer per page supported)
Version 1.0.3
- New: Filtered product selector - use
products="123,456" attribute to show only specific products
- New: Fill Opacity setting - control transparency of mask fill colors (admin-defined)
- Improved: Reorganized admin interface for better usability:
- New "Mask Appearance" section groups all visual settings (stroke, mask coloring)
- Renamed "Design Limits" to "Object Constraints" for clarity
- Simplified "Shortcode & Output" section (appearance settings moved to Mask Appearance)
- Improved: Centralized constants file for better maintainability
- Improved: Code quality improvements (deprecated method fixes, conditional debugging)
- Improved: Updated shortcode display
Version 1.0.2
- New: Mask coloring - users can fill editable areas with custom background colors
- New: Customizable mask stroke width (1-5px) per product
- New: Customizable mask stroke color per product
- New: Global setting to enable/disable mask coloring
- New: Per-product override for mask coloring
- Improved: SVG masks now preserve original aspect ratio (circles stay circles)
- Improved: Consistent stroke appearance across all mask types (rectangle, ellipse, SVG)
- Improved: Multiple SVGs from the same Illustrator artboard now align perfectly
- Fixed: Stroke rendering differences between active and inactive masks
- Fixed: SVG mask strokes appearing thinner than basic shapes
Version 1.0.1
- Tested with WordPress 6.9
- Minor documentation improvements
Version 1.0.0 (Initial Release)
- Canvas-based product designer with Fabric.js 7.x
- Custom text with font, color, bold, and italic options
- Image upload with validation and size limits
- Mask-based editable areas (rectangle, ellipse, custom SVG shapes)
- Custom SVG mask upload with validation and helpful feedback
- Contact Form 7 integration with automatic design attachment
- Built-in fallback form with honeypot and rate limit spam protection
- Submission management system (stores all submissions)
- Email notifications with design attachments
- Responsive design with mobile touch support (pinch-to-zoom, double-tap reset)
- Optional mobile tab layout (Image/Text/Actions tabs) for reduced scrolling
- Layer ordering controls with floating up/down toolbar
- Live admin preview of editable areas with range sliders
- Collapsible admin sections with two-column layout for a cleaner interface
- Three layout options: Two Columns, Stacked, and Compact
- Optional image upload and custom text features
- Product color options with color tinting and opacity control (swatches or free color picker)
- Font color restrictions for limited ink/printing options
- Optional Google Fonts integration (25+ curated fonts)
- Product selector with dropdown or visual grid display
- Per-product object constraint settings (max overflow, max scale)
- Translation-ready with standard WordPress i18n
- Compatible with Elementor, Gutenberg, WPBakery, Divi