Skip to content
Plugin PantryPlugins

Plugins / Pantry Contact

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

The Pantry Contact settings screen in the WordPress admin, at Plugin Pantry > Contact (and Contact entries).

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

Every 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.

  • 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.

Read the module documentation

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 form attribute on the shortcode and on the block.
  • pantry_contact_form_config filter: another form's fields, recipients and success message, rendered, validated, stored and emailed by this plugin.
  • pantry_contact_form_choices filter behind the block's new Form control.
  • pantry_contact_message filter for the wording of any rejection code.
  • pantry_contact_settings_after action 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_entry post 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.