# Forms and email built into Easy CMS 0.20: no third party

> Editors build forms in the admin; submissions are validated, exported as CSV and kept from bots, and emails retry for a day.

URL: https://easycms.dev/blog/forms-and-email-built-in  
Published: 2026-09-29  
Updated: 2026-10-29

A contact form shouldn't need a third-party service. Easy CMS 0.20 adds email to the core and a form builder plugin.

## Email

Set `email` in the config: `smtp()` from the new `@easy-cms/email-smtp` works with Gmail, SES, Resend, Mailgun or any SMTP server, `consoleEmail()` prints messages during development, or write your own adapter. `cms.sendEmail()` queues each message in the database and retries for about a day if sending fails. On serverless hosts, `flushEmails()` waits for them before the request ends.

## Forms

With `@easy-cms/plugin-form-builder`, editors build forms in the admin from field blocks: text, long text, email, number, phone, choice, checkbox, date and message. Each form has a confirmation message or a redirect, and notification emails that can include the answers.

- Submissions are validated on the server, stored without IP addresses and exported as CSV.
- A honeypot, a minimum time, a rate limit per visitor and optional Cloudflare Turnstile keep bots out.
- `<easy-form form="contact">` renders a form on any page; `getForm()` and `submitForm()` are there for your own components.

Both packages add tables, so create a migration after installing them.
