Plugins / Pantry Subscribe
Plugin Pantry
Pantry Subscribe
v1.0.0Contents: An email sign-up form with double opt-in.
37 KB, no external requests
Collect subscribers properly and keep them yourself. A sign-up block or shortcode, a confirmation email with a signed link, a list of confirmed subscribers in the dashboard, and a CSV export. It builds the list and stops there; sending is a different job.

What it does
- Sign-up form as a block and a shortcode: email, optional name, optional consent checkbox with your wording
- Double opt-in: a confirmation email with a signed link that expires, and the subscriber only counts once confirmed
- Subscribers kept as a private post type with status pending, confirmed or unsubscribed, listed under the Plugin Pantry menu with search and a status filter
- Signed unsubscribe link handling, so any email you send later can carry one
- Honeypot, timing check and per-address rate limit, the same approach as Pantry Contact
- CSV export of confirmed subscribers, and deletion from the list
- Optional notification to you when someone confirms
What it does not do
- No newsletter sending, campaigns or templates
- No integrations with email services
- No segments, tags or automation
- No tracking pixels or open rates
- No CAPTCHA
Measured footprint
- Zip size
- 37 KB
- Lines of PHP
- 2,750
- Options
- pantry_subscribe_settings, pantry_subscribe_version
- Post meta
- _pantry_subscribe_status, _pantry_subscribe_name, _pantry_subscribe_source, _pantry_subscribe_ip, _pantry_subscribe_consent (only when the consent box is in use), _pantry_subscribe_confirmed (only once the address is confirmed)
- Custom tables
- none
- Post types
- pantry_subscriber
- Cron events
- none
- Transients
- pantry_subscribe_rl_<hashed address>, one hour, pantry_subscribe_resend_<subscriber id>, 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
- 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 > Subscribe (and Subscribers)
- Licence
- GPLv2 or later
Documentation
Read the documentationEvery setting on the Pantry Subscribe screen and what each one does, with the hooks it publishes: the same text that ships in the plugin README.
Pro add-on (planned)
See Pantry Pro pricing- Hand-off of confirmed subscribers to Mailchimp, Kit, MailerLite or Resend audiences
- Plain-text campaigns sent in batches through Pantry Mail with an unsubscribe link
None of this is in the free plugin, and none of it is switched off inside it. Pro would be a separate plugin.
Changelog
All notable changes to Pantry Subscribe are recorded here. The format follows Keep a Changelog, and the project uses Semantic Versioning.
1.0.0 - 2026-09-12
Added
- Sign-up form as the shortcode
[pantry_subscribe_form]and a server-rendered Sign-up form block, with an address field, an optional name field and an optional consent box with your own wording. - Double opt-in: a plain-text confirmation email carrying a signed link that expires after seven days, and a subscriber who only counts once confirmed.
- Signed unsubscribe links that never expire, published on each subscriber's screen and in the CSV export, so any email you send later can carry one.
- Subscribers kept as a private
pantry_subscriberpost type with the status pending, confirmed or unsubscribed, listed under the Plugin Pantry menu with search and a status filter. - CSV export of confirmed subscribers, nonced and capability checked, with the unsubscribe link on every row.
- Optional email to you when somebody confirms.
- Honeypot field, signed minimum-time check, nonce and a per address rate limit, the same approach as Pantry Contact. A pending address is sent at most one confirmation an hour.
- The same answer whether an address is new, pending or already confirmed, so the form never says who is on the list.
- Works without JavaScript: the form posts and redirects with the message. No front-end script at all, and about thirty lines of CSS that inherit the theme, loaded only on pages that show the form.