moca-nz / craft-post-office
A contact form builder for Craft CMS. Build forms in the control panel, store submissions as elements, and send notifications from your own Twig templates.
Package info
github.com/MOCA-nz/craft-post-office
Type:craft-plugin
pkg:composer/moca-nz/craft-post-office
Requires
- php: ^8.2
- craftcms/cms: ^5.5.0
Requires (Dev)
- craftcms/ecs: dev-main
- craftcms/phpstan: dev-main
- markhuot/craft-pest-core: ^3.2
- phpstan/phpstan: ^2.2
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
Post Office, a Plugin for Craft CMS
Contact forms that store submissions as elements and email from your own templates.
Post Office is a free plugin for Craft CMS for building contact forms in the control panel. Submissions are stored as Craft elements, so they get the element index, search, filtering and CSV export for free. Notification emails render from your own Twig templates, and form definitions live in project config, so a form you build locally deploys to production.
{{ craft.postOffice.form('contact') }}
That renders the whole form. If you would rather write the markup yourself, post to the plugin's endpoint and it returns JSON with errors keyed by field handle.
Requirements
This plugin requires Craft CMS 5.5.0 or later, and PHP 8.2 or later.
Installation
To install the plugin, search for "Post Office" in the Craft Plugin Store, or install manually using composer.
composer require moca-nz/craft-post-office php craft plugin/install post-office
What you get
- A form builder with 11 field types. Each field has a label, handle, placeholder, a required toggle, a custom validation message, and a switch for whether it appears in email.
- Submissions as elements, with a source per form, search, sorting, filtering, bulk actions, CSV export and the trash.
- Notifications as a repeatable list of recipients, each with its own email template, plus a built-in autoresponder that replies to whatever the submitter typed in the form's email field.
- A record of every email, sent or failed, with the reason it failed.
- Spam protection: a honeypot with a minimum time-to-submit, reCAPTCHA and Turnstile, each switched on or off per form.
- Project config, so forms deploy between environments instead of being rebuilt by hand.
Documentation
| Guide | Covers |
|---|---|
| Field types | Every field type, its settings and its validation |
| Submissions | The index, the detail screen, export, trash, permissions, querying |
| Form settings | From and reply-to, success behaviour, redirect vs no-reload |
| Notifications | Recipients, the autoresponder, email templates and their variables |
| Spam protection | Honeypot, timing, reCAPTCHA and Turnstile |
| Templating | Rendering, hand-written markup, the JSON response, template overrides |
License
This plugin is licensed for free under the MIT License.
Created by MOCA.