To use the schema generator, you can provide a prompt that describes the form’s requirements. For example:
“Create a contact form with fields for name, email, and message. The name and email fields should be required, and the email field should validate for proper email formatting.”
Based on this input, the generator will produce a tailored blueprint structure that meets your needs, following all required standards for the Email Manager.
For advanced features like Captcha, Webhooks, or Rate Limiting, it can be helpful to provide the relevant documentation link or excerpt in your prompt. This gives the generator additional context about the available options and their configuration.
# Email Template Configuration Schema
# Version: 1.0.0
# Language handling (single vs. multilingual)
# • Single-language forms: use plain strings (scalars). Do NOT prefix with language codes.
# • Multilingual forms: use maps keyed by ISO 639-1 codes (e.g., `en`, `de`) for **every** i18n-capable field.
# • Mixing modes is invalid: a field must be either a string (single-language) or a language map (multilingual), never both.
# • Tooling guidance: If no language configuration is given, default to the language of the user's prompt/instruction.
# Basic Configuration
type: managed-template # Required, must be 'managed-template'
name: # Required — string (single-language) or map (multilingual)
# Form Settings
formsubmission: # Optional, anti-spam settings
mintime: 3 # Optional - Minimum time in seconds before form can be submitted, default: 3
maxtime: 7200 # Optional - Maximum time in seconds before form expires, default: 7200
# Email Settings
emails: # Required
mail: # Required - Main email settings (formerly 'receiver')
subject: # Required — string (single) or map (multi) default subject
sender: # Required — string (single) or map (multi) sender display name (shown as email sender)
reply: # Optional - Reply email settings (formerly 'confirmation')
subject: # Required if reply is used — string (single) or map (multi)
sender: # Required — string (single) or map (multi) sender display name (shown as email sender)
content: # Optional — Custom email content blocks (string in single-language, map in multilingual)
# These are text blocks that will be passed to the email templates
custom_key: # Any number of custom keys — string (single) or map (multi)
# Webhooks
webhooks: # Optional - Webhook configurations, define only if explicitly requested
- handler: name # Required - Handler identifier
events: # Required - Array of events to trigger on
- form.success # Available events: form.success, form.error
# Form Fields
fields: # Required
fieldname: # Any unique identifier
type: text # Required - Available types: text, email, tel, url, textarea, select, radio, checkbox, date, time, date-range, file, number
label: # Required — string (single) or map (multi)
required: true # Optional (default: false)
width: 1/2 # Optional - Field width (1/1, 1/2, 1/3, 2/3, 1/4, 3/4)
placeholder: # Optional — string (single) or map (multi)
validate: # Optional - Available: email, url, phone, date, minlength:X, maxlength:Y
error: # Optional — string (single) or map (multi) - Custom error message
title: # Optional — string (single) or map (multi) - Tooltip/Help text
aria: # Optional — string (single) or map (multi) - Accessibility label
help: # Optional — string (single) or map (multi) - Help text
# Type-specific attributes (use only relevant for chosen type):
# text
minlength: X # Optional - Minimum length for text input (where X is any positive int)
maxlength: Y # Optional - Maximum length for text input (where Y is any positive int larger than X)
username: true # Optional - Marks field as username, will be used for reply email and reply-to address
# email
reply: true # Optional - Send reply email to this address
replyto: true # Optional - Use as reply-to address
# select/radio/checkbox
options: # Required for these types
option_key: # Unique identifier; labels are string (single) or map (multi)
# time
min: "09:00" # Optional - 24h format
max: "17:00" # Optional - 24h format
step: 1800 # Optional - Interval in seconds (1800 = 30min)
# file
max: 3 # Optional - Maximum number of files
maxsize: 5242880 # Optional - Maximum size in bytes
extension: # Optional - Allowed file types (array; jpg, jpeg, png, gif, webp, svg, pdf, doc, docx, xls, xlsx, ppt, pptx, txt, csv, json, zip, rar, 7z)
# textarea
rows: 6 # Optional - Default height
resizable: vertical # Optional - Resize behavior
#number
min: 1 # Optional — Minimum numeric value (int/float)
max: 999 # Optional — Maximum numeric value (int/float)
step: 1 # Optional — Step for increments (e.g., 1 for integers)
# Validation Messages
validation: # Optional — define only if explicitly requested or if the target language
# is not available in the plugin defaults (en, de, fr, es, it).
# If provided, these messages override the plugin defaults.
fields: # Optional — define only for fields present in the form
required: # Optional — string (single) or map (multi)
email: # Optional — string (single) or map (multi)
name: # Optional — string (single) or map (multi)
too_short: # Optional — string (single) or map (multi) - possible variable :minlength
message:
too_short: # Optional — string (single) or map (multi) - possible variable :minlength
gdpr: # Optional — string (single) or map (multi)
date:
invalid: # Optional — string (single) or map (multi)
invalid_range: # Optional — string (single) or map (multi)
before_min: # Optional — string (single) or map (multi) - possible variable :min
after_max: # Optional — string (single) or map (multi) - possible variable :max
min: # Optional — string (single) or map (multi)
max: # Optional — string (single) or map (multi)
file:
too_large: # Optional — string (single) or map (multi) - possible variable :maxsize
invalid_type: # Optional — string (single) or map (multi) - possible variable :allowedtypes
move_error: # Optional — string (single) or map (multi)
upload_error: # Optional — string (single) or map (multi)
too_large_ini: # Optional — string (single) or map (multi)
too_large_form:# Optional — string (single) or map (multi)
partial_upload:# Optional — string (single) or map (multi)
no_upload: # Optional — string (single) or map (multi)
missing_temp: # Optional — string (single) or map (multi)
write_error: # Optional — string (single) or map (multi)
upload_stopped:# Optional — string (single) or map (multi)
unknown_error: # Optional — string (single) or map (multi)
malicious: # Optional — string (single) or map (multi)
password:
min_length: # Optional — string (single) or map (multi) - possible variable :minlength
phone: # Optional — string (single) or map (multi)
option: # Optional — string (single) or map (multi)
time:
step: # Optional — string (single) or map (multi) - possible variable :interval
before_min: # Optional — string (single) or map (multi) - possible variable :min
after_max: # Optional — string (single) or map (multi) - possible variable :max
number:
too_small: # Optional — string (single) or map (multi) - possible variable :min
too_large: # Optional — string (single) or map (multi) - possible variable :max
invalid: # Optional — string (single) or map (multi)
url: # Optional — string (single) or map (multi)
# Button-Configuration
buttons: # Optional - Form buttons
send:
label: # Required — string (single) or map (multi)
reset:
show: false # Optional (default: true)
label: # Required if show: true — string (single) or map (multi)
# If you have any questions, please ask.
Once you’ve generated your blueprint, test it thoroughly to ensure it meets your expectations. Place the configuration in the appropriate directory and verify:
By testing, you ensure that your form works seamlessly and aligns with your project’s requirements.