Plugins / Pantry Contact
Pantry Contact
v1.1.1Contents: One contact form. Entries saved. Spam trapped.
36 KB, no external requests
A single contact form that works out of the box. Tick the fields you want, drop in the shortcode or block, and every message is emailed to you and kept in the dashboard. Spam is caught with a honeypot and a timing check, not a CAPTCHA.
Compared with the popular plugins

What it does
- One form with a fixed field set: name, email, phone, subject, message, consent checkbox; each can be enabled, required and relabelled
- Shortcode and a block that renders on the server with no build step
- Honeypot field, minimum-time check, nonce and a per-address rate limit
- Entries saved as a private post type with a list table showing sender, subject and date, and a CSV export
- Notification email to one or more addresses with reply-to set to the sender
- Works without JavaScript: the form posts and redirects with a success message; a small script submits inline when available
- About thirty lines of CSS that inherit the theme, loaded only on pages that show the form
What it does not do
- No second form
- No custom fields or field builder
- No file uploads
- No third-party integrations
- No CAPTCHA
Measured footprint
- Zip size
- 36 KB
- Lines of PHP
- 2,719
- Options
- pantry_contact_settings, pantry_contact_version
- Post meta
- _pantry_contact_name, _pantry_contact_email, _pantry_contact_phone, _pantry_contact_consent, _pantry_contact_source, _pantry_contact_ip, _pantry_contact_form (only when a message came from a form supplied through pantry_contact_form_config), _pantry_contact_<field key> (one per field of such a form)
- Custom tables
- none
- Post types
- pantry_entry
- Cron events
- none
- Transients
- pantry_contact_rl_<hashed address>, one hour
- Admin assets
- includes/core/assets/pantry-admin.css on the settings screen only, includes/core/assets/pantry-admin.js on the settings screen only, src/block/editor.js in the block editor only, assets/form.css in the block editor only, so the block preview matches the front end
- Front-end assets
- assets/form.css on pages that render the form, when the stylesheet setting is on, assets/form.js on pages that render the form, when inline submit is on
- External requests
- none
- Measured on
- 2026-09-12
Compatibility
- WordPress
- 6.4 or newer, tested to 7.1
- PHP
- 8.1 or newer
- Where it lives
- Plugin Pantry > Contact (and Contact entries)
- Licence
- GPLv2 or later
Documentation
Read the documentationEvery setting on the Pantry Contact screen and what each one does, with the hooks it publishes: the same text that ships in the plugin README.
Pro add-on
See Pantry Pro pricing- Multiple forms and custom fields
- File uploads
- Cloudflare Turnstile
- Webhooks and mailing list integrations
These modules ship in Pantry Pro now. None of this is in the free plugin, and none of it is switched off inside it: Pro is a separate plugin, and one key switches on every module whose free plugin is active.
Changelog
All notable changes to Pantry Contact are recorded here. The format follows Keep a Changelog, and the project uses Semantic Versioning.
1.1.1 - 2026-09-12
Fixed
- The settings screen printed "Settings saved." twice after a save: the shared core prints that notice itself, and the plugin printed it again.
- A colour workaround for the label band that the shared core no longer needs was removed.
Changed
- The README notes that pages carrying the form should be cached for less than a day, because the nonce and the signed timestamp in the form expire.
1.1.0 - 2026-09-12
Added
- Optional
formattribute on the shortcode and on the block. pantry_contact_form_configfilter: another form's fields, recipients and success message, rendered, validated, stored and emailed by this plugin.pantry_contact_form_choicesfilter behind the block's new Form control.pantry_contact_messagefilter for the wording of any rejection code.pantry_contact_settings_afteraction at the end of the settings screen.- Drop-down, checkbox group, date, number and file fields, for a form that asks for them through the configuration filter.
- One meta key per field on the entry, plus
_pantry_contact_form, so an entry is read back with the labels of the form that sent it.
Changed
- Nothing in the form on the settings screen: the same fields, wording, spam checks, entries and email as 1.0.0.
1.0.0 - 2026-09-12
Added
- One contact form with a fixed field set: name, email, phone, subject, message and a consent checkbox, each shown, required and relabelled from one screen.
- Shortcode
[pantry_contact_form]and a server-rendered Contact form block with no build step. - Honeypot field, signed minimum-time check, nonce and a per address rate limit.
- Entries stored as a private
pantry_entrypost type with a list table showing sender, subject and date, plus a nonced CSV export. - Notification email to one or more addresses with Reply-To set to the sender.
- Works without JavaScript: the form posts and redirects with a success message. A small script submits inline when JavaScript is available.
- About thirty lines of CSS that inherit the theme, loaded only on pages that show the form.