ACS Contact Form

Description

Most contact forms end at “mail sent”. The enquiry then lives in an inbox, next to newsletters and invoices, and the one that mattered gets answered four days late — or not at all.

ACS Contact Form keeps the light, dependency free form of version 1 and adds the part that comes after the send button.

Every message is kept in WordPress

Submissions are stored in your own database and listed in the admin: form name, sender, subject, category, status, when it arrived and how long it has been sitting there. Nothing depends on a mail server that may or may not deliver.

  • Status is Untouched, In progress or Done, and starts at Untouched
  • Change status and category straight from the list, or open one message for the full detail
  • Filter by form, category and status, search the saved text, and export the current view to CSV
  • The detail screen shows every field, the attachments, the reply draft and a history of your own notes

Messages sort themselves

Each submission is scored against keyword rules and filed as Estimate, Consultation, Recruiting, Sales or Spam. Anything that matches nothing becomes Consultation, so nothing disappears.

  • The rules are plain keyword lists you can edit — the defaults are written for Japanese enquiries
  • Subject, body and the sender’s mail domain are all considered
  • On a tie, the category that does not suppress the notification wins, so an ambiguous message is never quietly filed away
  • Spam signals: the honeypot field, a body full of links, and text with no Japanese in it at all

Sales and spam do not send you a notification mail by default. They still appear in the list, so you can look when you feel like it instead of every time a cold pitch arrives. Which categories notify you is a setting.

A reminder when something is left

If a message is still Untouched after three days, a single daily mail lists everything that has been forgotten, with a link to each one. The threshold is a setting, zero switches it off, and messages marked In progress are left alone.

An optional reply draft

If — and only if — you have connected an AI provider to WordPress itself under Settings > Connectors, the detail screen gains a Write a draft reply button. The draft appears in an editable box; you read it, fix it, and send it from your own mail client. The plugin asks the WordPress core AI Client for the text; it holds no API key of its own and never contacts a provider directly. With nothing connected, the button is not shown. See External services below.

Still the same form

The form builder, the shortcode, the block, the design settings and the auto-reply from version 1 all work exactly as before. Updating from 1.1.2 keeps every form and every setting.

  • Drag-free ordering of standard fields, custom fields and the attachment field
  • Text, textarea, select, radio and checkbox custom fields
  • Colours, radii and required badges per form
  • Ajax submission with no jQuery
  • Honeypot spam trap, no third-party captcha, no external request

External services

This plugin does not connect to any external service, and it stores no API key.

One optional feature, the AI reply draft, is built on the AI Client that ships with WordPress 7.0. The plugin hands the prompt to wp_ai_client_prompt() and reads the answer back. Which provider that reaches, which model it uses and where the credentials live are decided by WordPress itself, on Settings > Connectors. If no provider is connected there, the draft button is not shown and nothing is ever sent.

When you press “Write a draft reply” (or, if you switch that option on, when a submission arrives), the text handed to the AI Client contains: the subject and the field values of that one submission, the sender’s name, your site name, the name you set as the person replying, and the tone you selected. Nothing else is included, and nothing is sent for messages you do not act on.

Please read the terms of whichever provider you connect to WordPress before switching the feature on, and tell your visitors in your own privacy policy if you enable it.

Privacy

The plugin stores what a visitor typed into your form, plus the page the form was submitted from and, unless you switch that off, the sender’s IP address. Attachments are stored as files inside your uploads directory.

This data stays on your own server. It is registered with the WordPress personal data tools, so an export request includes the stored submissions of that email address and an erasure request deletes them together with their attachments. Individual messages can also be deleted from the list at any time.

Screenshots

Blocks

This plugin provides 1 block.

  • ACS Form Place a form built with ACS Contact Form.

Installation

  1. Upload the plugin ZIP under Plugins > Add New > Upload Plugin, then activate it
  2. Open ACS Forms > Add New, name the form, and switch on the fields you need
  3. Set the destination address under Mail settings, and send yourself a test mail from the box on the right
  4. Copy the shortcode from the form list, or place the ACS Form block on a page
  5. Open ACS Forms > Enquiries to see what arrives, and ACS Forms > Settings to adjust the categories, the reminder and, if you want one, the reply draft

Updating from version 1: activate as usual. Forms, mail settings and design settings are read from the same place as before; storage, classification and the reminder start with the next submission.

FAQ

Where are the submissions stored?

In your own WordPress database, as a private post type that is not readable from the front end, plus its post meta. Attachments are written to a separate folder inside your uploads directory under a random, unguessable file name, with an Apache deny rule and an index file, and the download links in the admin check both a nonce and a capability. You can switch storage off entirely and go back to mail-only behaviour.

Who can read the enquiries?

Users who can manage options — administrators by default. The capability can be changed with the acscf_manage_capability filter.

Why does the plugin not send the reply for me?

Because wp_mail() is not a reliable way to reach a customer’s inbox, and a misfired reply from a web server is worse than a late one. The draft is written for you to copy, and there is a link that opens your own mail client with the address, the subject and the draft already filled in.

The classification put a message in the wrong box.

Open Settings > Classification and edit the keyword list. You can also change the category of any single message from the list or the detail screen; the change is kept.

Will the reminder mail me forever?

It only counts messages that are still Untouched and in a category you have chosen to be notified about. Marking a message In progress or Done takes it out of the reminder immediately.

Does anything leave my site?

Nothing is sent by this plugin. The optional reply draft goes through the WordPress core AI Client, so a request leaves your site only if you have connected an AI provider to WordPress under Settings > Connectors and you press the draft button. There is no license check, no telemetry, no update server and no external font or script.

Can I keep my data when I delete the plugin?

Yes, and that is the default. Deletion of your forms, submissions and attachments happens only if you switch on “delete data on uninstall” in the settings first.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“ACS Contact Form” is open source software. The following people have contributed to this plugin.

Contributors

Translate “ACS Contact Form” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

2.0.2

  • Changed: every function, class, constant, option, post type, meta key, shortcode, hook, cron event and script handle now uses the acscf prefix, so no name is shorter than four characters. A one-time migration runs on the first admin page load and carries your settings, forms, submissions and embedded shortcodes over; the old options are left untouched so the update can be rolled back.
  • Changed: the AI reply draft now uses the WordPress core AI Client (WordPress 7.0 and later). The provider, model and API key fields have been removed from the plugin: connect a provider under Settings > Connectors instead. The plugin makes no direct provider connections.
  • Changed: requires WordPress 7.0 or later.

2.0.1

  • Fix: frontend submissions failed with a nonce error because the AJAX request did not include the frontend nonce. The nonce is now sent with every submission.

2.0.0

  • New: submissions are stored in WordPress and listed in the admin, with status, category, search, filters and CSV export
  • New: a detail screen with the full message, attachments, a reply draft, reply history notes and a “mark as replied” action
  • New: automatic classification into estimate, consultation, recruiting, sales and spam, with editable keyword rules
  • New: sales and spam no longer send a notification mail by default; which categories notify you is a setting
  • New: a daily reminder about submissions left untouched for a configurable number of days
  • New: an optional AI reply draft, off by default, using an API key you provide yourself
  • New: attachments are kept with the submission in a protected folder and served only to authorised users
  • New: personal data exporter and eraser, and an uninstall routine that only removes data if you ask it to
  • Improved: stricter attachment checks (extension allow list, real file type verification, size and count limits, random file names)
  • Improved: every screen goes through nonce and capability checks, and every output is escaped
  • Removed: the external update check of the previous distribution

1.1.2

  • Improved: test mail from the form edit screen
  • Fixed: field order handling for custom fields

1.1.1

  • Improved: design settings

1.1.0

  • New: attachment support and field ordering

1.0.0

  • First release