Skip to content

EP Email Advanced Forms

EP Email Advanced Forms extends EP Email’s JSON-defined contact forms with six extra field types: compound fields that group related inputs, layout fields that structure the form visually, and validation fields like email confirmation.

Published by ElmsPark Studio.

Field typePurpose
nameCompound field with separate first and last name inputs that save as one structured value.
addressCompound field with line 1, line 2, city, county, postcode, country.
sectionLayout element. Visible heading and description to break a long form into logical sections.
htmlArbitrary HTML block inside the form for notices, instructions, or images.
confirm_emailPaired email input — “Email” and “Confirm email” fields that must match to submit.
ratingStar rating or numeric rating input with configurable scale (1-5, 1-10).

Each field type plugs into EP Email’s form-definition JSON and renders automatically. No code changes to EP Email itself are needed.

  • PageMotor 0.8.2b or later
  • EP Email (required; this is an extension of EP Email)
  • EP Suite base class
  1. Install EP Email first.
  2. Download ep-email-advanced-forms.zip from the EP Suite downloads page.
  3. Upload via Plugins → Manage Plugins. Activate.
  4. The new field types are immediately available in EP Email form definitions.

In your EP Email form JSON, use the field type names just like built-in ones.

{
"type": "name",
"id": "full_name",
"label": "Your name",
"required": true
}

Renders two inputs (First name, Last name) that save as a structured value: { "first": "Alice", "last": "Smith" }.

{
"type": "address",
"id": "delivery_address",
"label": "Delivery address",
"required": true,
"countries": ["GB", "IE", "US"]
}

Renders a full address block. The countries array limits the country dropdown. Omit for a full country list.

{
"type": "section",
"label": "Contact details",
"description": "How can we reach you?"
}

Pure layout. Renders a heading and an optional description. No submitted value.

{
"type": "html",
"content": "<p>By submitting, you agree to our <a href=\"/terms/\">terms</a>.</p>"
}

Arbitrary HTML. Use for notices, images, or embedded media.

{
"type": "confirm_email",
"id": "email",
"label": "Email address",
"required": true
}

Renders two email inputs. Form won’t submit if they don’t match. Saved value is one email string (not both).

{
"type": "rating",
"id": "satisfaction",
"label": "How satisfied are you?",
"scale": 5,
"style": "stars"
}

scale can be 5 or 10. style is stars or numeric. Saved value is the chosen integer.

“The new field types aren’t appearing in my form”

Section titled ““The new field types aren’t appearing in my form””

Check:

  • The plugin is activated.
  • The field type in your JSON is spelled correctly (name, address, section, html, confirm_email, rating).
  • No typos in the form JSON breaking parsing.

“Confirm email validates on submit but still lets mismatched values through”

Section titled ““Confirm email validates on submit but still lets mismatched values through””

Browser extensions can interfere with form validation. Test in incognito mode. If it still misbehaves, log in the review queue with a repro.

“Address field shows a country I don’t ship to”

Section titled ““Address field shows a country I don’t ship to””

Use the countries array to restrict the list. Without it, you get every country.

Star rating touch targets can be fiddly on small screens. Use numeric style on mobile-heavy sites for a more forgiving UX.

For a quick question about this plugin, EP Support inside your admin is the fastest option. The chat widget sits on every EP plugin settings page and knows which one you’re on, with starter questions and links preloaded for that exact screen.

For anything bigger — a bug report, a feature request, or a “how do I…” that needs a real reply — open a ticket at help.elmspark.com. A real person, helped by AI, writes the reply. Usually within a few hours. Tickets don’t disappear into the void.