Enquiries handles contact forms you build yourself. You write the markup in Twig, and Enquiries takes care of everything after the visitor clicks Send: validating the fields, blocking spam, storing the submission and passing it on to your inbox, your team's Slack channel and your CRM.
There's no form builder, so you keep full control of your front end. Each form is a handle and a short list of fields, saved to project config so it deploys like sections do.
Features
Forms in your own templates
- One Twig tag adds the hidden inputs and spam traps a form needs:
{{ craft.enquiries.inputs('contact') }} - Each field is validated by its type: text, multi-line text, email, phone, number, URL, date, checkbox or multiple values
- After a failed submit, entered values and errors come back to the page
- AJAX works out of the box: send
Accept: application/jsonand get back JSON with errors listed by field - Several forms can share one page
Submissions in the Control Panel
- Every submission is stored and searchable, with a list for each form
- Statuses are New, Read and Spam, with an unread count in the nav
- Bulk actions: mark as read or new, mark as spam, resend, delete
- CSV and Excel export with one column per field
Notifications and integrations, each switched on per form:
- Email notification to one or more recipients, with reply-to set to the person who filled in the form
- Auto-reply confirming receipt to the person who submitted the form
- Slack message per submission, with a default channel and per-form overrides
- GoHighLevel: creates or updates the contact, maps standard and custom fields, adds tags without removing existing ones, and saves the full enquiry as a note
- Brevo: creates or updates the contact, maps fields to attributes and adds the contact to lists
- Webhook: sends the submission as JSON to Zapier, Make, n8n or your own endpoint, with optional HMAC signing
Consent-aware
- Any integration can be set to only send when a chosen field is ticked, such as a marketing consent checkbox
Reliable delivery
- Each integration runs as its own queue job, sent straight after the visitor's response so nothing waits for a Control Panel visit
- Timeouts, rate limits and server errors are retried automatically with increasing delays. Bad credentials and rejected data fail straight away with the reason logged.
- A delivery log on every submission shows what was sent where, with Retry and Resend buttons
Spam protection
- A hidden honeypot field and a signed minimum-time check, both silent so bots get a normal success response
- Optional Cloudflare Turnstile, per form
- Spam is stored separately and never sent anywhere, and a false positive can be released with one click
Privacy and housekeeping
- Separate automatic deletion periods for submissions and for spam
- Storing IP addresses and user agents is optional
- Permissions for viewing and deleting submissions
Built to extend
- Credentials support environment variables and config-file overrides
- Add more CRMs by registering your own integration class
- Before and after submit events let you add your own validation or spam rules
Requires Craft CMS 5.0+ and PHP 8.2+.
To install this plugin, copy the command above to your terminal.
This plugin doesn't have any reviews.